{"version":3,"sources":["webpack://website/./site/js/utils/functions.ts","webpack://website/./site/js/others.ts","webpack://website/./site/js/app/lazysizes/index.ts","webpack://website/./site/js/app/newsletterPopup/CookieService.ts","webpack://website/./site/js/app/newsletterPopup/BounceWatcher.ts","webpack://website/./site/js/app/newsletterPopup/Bouncer.ts","webpack://website/./site/js/app/newsletterPopup/index.ts","webpack://website/./site/js/site.ts","webpack://website/./site/js/utils/larchSys.ts","webpack://website/./site/js/app/slider.ts","webpack://website/./site/js/app/objectFit.ts","webpack://website/./site/js/app/gotoLink.ts","webpack://website/./site/js/app/cookieconsent/index.ts","webpack://website/./site/js/app/fancybox/index.ts","webpack://website/./site/js/app/marquee/index.ts","webpack://website/./site/js/app/modules/newsletterblock.ts","webpack://website/./site/js/app/modules/navbar.ts","webpack://website/./site/js/app/modules/projectsblock.ts","webpack://website/./site/js/app/modules/crosses.ts","webpack://website/./site/js/app/cookieconsent/cookieconsent.js","webpack://website/./site/js/app/fancybox/jquery.fancybox.js","webpack://website/./site/js/app/lazysizes/lazysizes.js","webpack://website/./site/js/app/lazysizes/ls.bgset.min.js","webpack://website/./site/js/app/lazysizes/ls.respimg.js"],"names":["ready","cb","document","readyState","addEventListener","recaptcha","Promise","resolve","reject","key","getAttribute","action","input","createElement","type","name","parentElement","replaceChild","src","head","getElementsByTagName","async","onload","scope","g","grecaptcha","execute","then","token","value","insertBefore","e","Object","assign","$","jQuery","lazySizesConfig","parents","removeClass","window","HTMLPictureElement","cookieService","v","cookie","match","days","d","Date","setTime","getTime","toUTCString","this","setCookie","BounceWatcher","cookieName","callback","isEnabled","getCookie","run","show","once","condition","when","test","navigator","userAgent","toLowerCase","onGoingBack","onMouseLeave","wait","deleteCookie","querySelector","target","from","relatedTarget","tagName","isOut","nodeName","isPos","clientY","history","pushState","stateProp","replaceState","state","title","console","info","delay","start","delta","setTimeout","defaults","fieldClass","errorClass","fieldPrefix","errorPrefix","patterns","email","url","number","color","date","time","month","customValidations","customMessages","messageAfterField","messageCustom","messageTarget","messages","missingValue","checkbox","radio","select","default","patternMismatch","outOfRange","over","under","wrongLength","fallback","disableSubmit","emitEvents","forEach","arr","Array","prototype","call","extend","args","merged","obj","hasOwnProperty","toString","emitEvent","elem","details","CustomEvent","event","bubbles","detail","dispatchEvent","field","hasAttribute","checked","length","filter","form","querySelectorAll","escapeCharacters","btn","settings","pattern","RegExp","max","min","num","parseFloat","hasErrors","errors","id","codeUnit","string","String","index","result","firstCodeUnit","charCodeAt","Error","charAt","getFieldID","create","Math","floor","random","addErrorAttributes","error","classList","add","setAttribute","showError","className","fieldTarget","group","closest","getErrorField","location","selector","firstChild","appendChild","createTextNode","nextSibling","parentNode","getErrorLocation","createError","textContent","replace","msg","getErrorMessage","button","showErrorAttributes","removeAttributes","remove","removeAttribute","removeError","removeChild","removeErrorAttributes","Bouncer","options","publicAPIs","formTouched","validate","disabled","readOnly","_settings","runValidations","validations","valid","getErrors","validateAll","map","blurHandler","matches","inputHandler","contains","submitHandler","preventDefault","focus","submit","destroy","removeEventListener","removeAllErrors","removeNoValidate","addNoValidate","NewsletterPopup","bounce","$popup","init","bind","$form","find","hideError","loading","fetch","method","body","FormData","response","ok","showSuccess","disable","text","json","_","JSON","parse","catch","finally","showForm","style","display","requestAnimationFrame","innerHTML","larchSys","lang","isTouchDevice","$factories","$instances","addClass","on","innerWidth","trigger","de","it","en","features","feature","factory","service","load","each","i","element","autoPlay","$element","children","resistance","resistanceRatio","effect","autoplay","undefined","loop","loopedSlides","fadeEffect","crossFade","navigation","nextEl","prevEl","pagination","el","next","clickable","slideChange","preloadImages","updateOnImagesReady","initSlider","documentElement","img","div","a","css","one","href","link","click","open","HTMLImageElement","ev","lazyloaded","dataset","srcset","indexOf","cookieconsent","initialise","language","theme","onInitialise","status","hasConsented","onStatusChange","chosenBefore","fancybox","animationEffect","afterLoad","instance","current","width","height","innerHeight","elements","wrapper","first","append","childNodes","second","cloneNode","paddingRight","animation","draw","done","resize","fraction","reminder","abs","getWidth","oldValue","x","lerp","toFixed","transform","getBoundingClientRect","ticks","newsletterPopup","popup","$module","hide","html","data","success","$navbar","render","scrollY","parent","toggleClass","$column1","$column2","$column3","$teasers","teaser","handler","vhFactor","pageYOffset","setProperty","cc","hasInitialised","util","escapeRegExp","str","hasClass","s","nodeType","regex","interpolateString","arguments","parts","split","pop","shift","expiryDays","domain","path","exdate","setDate","getDate","push","join","deepExtend","source","prop","isPlainObject","throttle","limit","apply","hash","len","normaliseHex","hex","substr","getContrast","parseInt","getLuminance","R","B","G","slice","isMobile","constructor","deny","allow","dismiss","transitionEnd","trans","t","OT","msT","MozT","WebkitT","prefix","hasTransition","__allowedStatuses","keys","customStyles","Popup","defaultOptions","enabled","container","onPopupOpen","onPopupClose","onRevokeChoice","content","header","message","close","contenten","contentit","contentfr","messagelink","revokeBtn","compliance","layouts","layout","position","static","palette","revokable","animateRevokable","showLink","dismissOnScroll","dismissOnTimeout","autoOpen","autoAttach","whitelistPage","blacklistPage","overrideHTML","CookiePopup","afterFadeIn","openingTimeout","afterFadeOut","afterTransition","checkCallbackHooks","complete","cookieEnabled","CookiesOK","allowed","answer","getStatus","getPositionClasses","positions","classes","cur","getPopupClasses","opts","positionStyle","attachCustomPalette","customStyleSelector","getPopupInnerMarkup","interpolated","complianceType","basic","appendMarkup","markup","cont","onButtonClick","handleButtonClick","targ","setStatus","revokeChoice","stringify","isValid","references","colorStyles","highlight","background","border","padding","hover","sheet","ruleIndex","insertRule","addCustomStyle","arrayContainsMatches","array","search","l","applyAutoDismiss","dismissTimeout","scrollRange","onWindowScroll","evt","applyRevokeButton","onMouseMove","active","maxY","pathname","cookiePopup","customHTML","clearTimeout","customStyle","styleNode","ownerNode","removeCustomStyle","isOpen","fadeIn","toggleRevokeButton","showRevoke","fadeOut","clientHeight","maxHeight","preventOpen","clearStatus","hasAnswered","val","c","Location","timeout","services","serviceDefinitions","freegeoip","isScript","toError","code","country_code","err","ipinfo","headers","country","ipinfodb","statusCode","statusMessage","countryCode","maxmind","geoip2","iso_code","currentServiceIndex","getScript","timeoutIdx","onreadystatechange","makeAsyncRequest","onComplete","postData","requestHeaders","xhr","XMLHttpRequest","ActiveXObject","setRequestHeader","isArray","send","getNextService","getServiceByIdx","idx","serviceOption","dynamicOpts","locate","callbackComplete","callbackError","runService","runNextServiceOnError","setupUrl","serviceOpts","getCurrentServiceOpts","param","tempName","now","res","__JSONP_DATA","interpolateUrl","self","responseText","runServiceCallback","asyncResult","onServiceResult","logError","nextService","completeService","fn","Law","regionalLaw","hasLaw","explicitAction","get","applyLaw","law","getCountryCode","serviceResult","utils","stuff","gutter","keyboard","arrows","infobar","smallBtn","toolbar","buttons","idleTime","protect","modal","image","preload","ajax","iframe","tpl","attr","scrolling","defaultType","animationDuration","zoomOpacity","transitionEffect","transitionDuration","slideClass","baseClass","baseTpl","spinnerTpl","errorTpl","btnTpl","download","zoom","arrowLeft","arrowRight","parentEl","autoFocus","backFocus","trapFocus","fullScreen","autoStart","touch","vertical","momentum","media","slideShow","speed","thumbs","hideOnClose","axis","wheel","onInit","noop","beforeLoad","beforeShow","afterShow","beforeClose","afterClose","onActivate","onDeactivate","clickContent","clickSlide","clickOutside","dblclickContent","dblclickSlide","dblclickOutside","mobile","i18n","CLOSE","NEXT","PREV","ERROR","PLAY_START","PLAY_STOP","FULL_SCREEN","THUMBS","DOWNLOAD","SHARE","ZOOM","$W","$D","called","requestAFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","transitions","transition","OTransition","MozTransition","WebkitTransition","forceRedraw","$el","offsetHeight","mergeOpts","opts1","opts2","rez","FancyBox","currIndex","prevIndex","prevPos","currPos","firstRun","slides","addContent","$lastFocus","activeElement","$scrollDiv","$container","buttonStr","firstItemOpts","scrollbarWidth","getInstance","hideScrollbar","scrollHeight","appendTo","offsetWidth","clientWidth","translate","$refs","item","activate","jumpTo","n","items","makeArray","$item","found","srcParts","$orig","videoFormat","contentType","inArray","$trigger","$thumb","caption","updateControls","Thumbs","isActive","addEvents","removeEvents","stopPropagation","previous","isScaledDown","originalEvent","update","stage","isClosing","is","has","keycode","keyCode","which","ctrlKey","altKey","shiftKey","idleSecondsCounter","isIdle","showControls","idleInterval","setInterval","isDragging","hideControls","off","clearInterval","duration","pos","canvasWidth","currentPos","transitionProps","groupLen","isAnimating","createSlide","getTranslate","$slide","isMoved","left","top","forcedDuration","isNumeric","loadSlide","slide","stop","round","animate","removeAttr","isLoaded","revealContent","isComplete","updateSlide","scaleToActual","y","imgPos","posX","posY","scaleX","scaleY","$content","canvasHeight","newImgWidth","newImgHeight","hasError","updateCursor","SlideShow","scaleToFit","end","getFitPos","maxWidth","minRatio","margin","aspectRatio","right","bottom","ratio","setTranslate","centerSlide","opacity","nextWidth","nextHeight","isZoomable","isFunction","fitPos","canPan","ajaxLoad","isLoading","setImage","setIframe","setContent","setError","showLoading","textStatus","jqXHR","abort","thumbSrc","temp","pxRatio","windowWidth","timouts","$img","$image","devicePixelRatio","ret","trim","substring","postfix","sort","b","j","thumb","$ghost","setBigImage","sizes","resolveImageSlideSize","naturalWidth","naturalHeight","hideLoading","imgWidth","imgHeight","$iframe","isReady","$body","frameWidth","frameHeight","contents","ignore","ceil","outerWidth","outerHeight","unbind","empty","$placeholder","insertAfter","tmp_src","playtime","currentTime","after","$smallBtn","wrap","$spinner","prependTo","effectClassName","getThumbPos","slidePos","thumbPos","ownerDocument","offset","elementRect","parentRects","every","parentRect","visiblePixelX","visiblePixelY","isElementVisible","siblings","prev","isVisible","domRect","cleanUp","unshift","force","$caption","isHiddenControls","toggleControls","version","command","all","createTouch","use3d","getComputedStyle","getPropertyValue","documentMode","props","to","leaveAnimationName","final","propertyName","_run","$target","currentTarget","eq","isDefaultPrevented","format","params","youtube","matcher","autohide","fs","rel","hd","wmode","enablejsapi","html5","paramPlace","vimeo","show_title","show_byline","show_portrait","fullscreen","api","instagram","gmap_place","gmap_search","urlParams","paramObj","provider","providerName","providerOpts","m","p","decodeURIComponent","p1","origSrc","contentSource","cancelAFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","getPointerXY","touches","changedTouches","pageX","pageY","clientX","distance","point2","point1","what","sqrt","pow","isClickable","onclick","atts","attributes","isScrollable","overflowY","overflowX","horizontal","scrollWidth","Guestures","$bg","bg","$stage","proxy","ontouchstart","realPoints","startPoints","startEvent","canTap","isPanning","isSwiping","isZooming","isScrolling","startTime","distanceX","distanceY","contentLastPos","contentStartPos","sliderStartPos","sliderLastPos","stagePos","onscroll","centerPointStartX","scrollLeft","centerPointStartY","scrollTop","percentageOfImageAtPinchPointX","percentageOfImageAtPinchPointY","startDistanceBetweenFingers","ontouchmove","newPoints","onSwipe","onPan","onZoom","ontouchend","angle","swiping","requestId","atan2","PI","inTransition","limitMovement","minTranslateX","minTranslateY","maxTranslateX","maxTranslateY","newOffsetX","newOffsetY","currentOffsetX","currentOffsetY","currentWidth","currentHeight","limitPosition","newWidth","newHeight","pinchRatio","translateFromZoomingX","translateFromZoomingY","centerPointEndX","centerPointEndY","translateFromTranslatingX","newPos","dMs","panning","zooming","endPoints","onTap","velocityX","velocityY","speedX","endPanning","endZooming","endSwiping","reset","where","tapX","tapY","process","addBack","tapped","timer","$button","toggle","set","clear","keypress","hidden","fnMap","FullScreen","request","requestFullscreen","ALLOW_KEYBOARD_INPUT","exit","exitFullscreen","isFullscreen","Boolean","fullscreenElement","fullscreenEnabled","fullscreenchange","CLASS","CLASS_ACTIVE","FancyThumbs","$grid","$list","list","that","share","currentHash","entityMap","encodeURIComponent","shareInstance","shareCurrent","parseUrl","gallery","triggerFromUrl","escapeSelector","getGalleryID","sel","ch","asCodePoint","origHash","hashTimer","hasCreatedHistory","back","fb","reverse","tmp","prevTime","currTime","deltaY","deltaX","wheelDelta","module","exports","lazySizes","IntersectionObserver","getElementsByClassName","MutationObserver","lazysizes","lazySizesCfg","running","waiting","fns","inviewObserver","preloadObserver","lazyloadElems","resetPreloadingTimer","regImg","regIframe","supportScroll","isPreloadLoading","resetPreloading","switchLoadingClass","rafedSwitchLoadingClass","rafSwitchLoadingClass","handleSources","lazyUnveil","unveilElement","unveilElements","lazyQuedElements","lazyUnveilElement","removeLazyClassElements","removeLazyClass","addElements","autosizesElems","sizeElement","getSizeElement","debouncedUpdateElementsSizes","docElem","supportPicture","requestIdleCallback","regPicture","loadEvents","ele","cls","addRemoveLoadEvents","dom","triggerEvent","noBubbles","noCancelable","createEvent","initCustomEvent","updatePolyfill","full","polyfill","picturefill","pf","reevaluate","minSize","_lazysizesWidth","rAF","rAFIt","simple","loader","loadedClass","loadingClass","customMedia","sourceSrcset","srcsetAttr","isAuto","isImg","isPicture","firesLoad","defaultPrevented","autosizesClass","srcAttr","contentWindow","changeIframeSrc","_lazyRace","lazyWaitClass","sizesAttr","autoSizer","updateElem","splice","unobserve","change","isIntersecting","lazyClass","_lazyAdd","runLazyRemove","observe","rootMargin","expand","hFac","childList","subtree","unveil","sources","dataAttr","checkElems","func","timestamp","later","last","debounce","lazySizesDefaults","preloadClass","loadMode","lazysizesConfig","cfg","uP","aC","rC","hC","fire","gW","contain","cover","f","h","_lazybgset","defineProperty","writable","$1","$2","currentSrc","backgroundImage","_lazybgsetLoading","alt","backgroundSize","_lazysizesParentFit","regDescriptors","candidates","regWCandidates","regMultiple","addCandidate","ascendingSort","regPxLength","parseWsrcset","runMatchMedia","createSrcset","matchesMedia","getCandidate","sels","supportSrcset","regHDesc","fixEdgeHDescriptor","removeHDescriptors","picture","onerror","supportsType","hasHDescriptorFix","msElementsFromPoint","w","candidate","wDescriptor","u","matchMediaElems","isImage","parsedSet","srcSet","_lazypolyfill","_set","toUpperCase","matchMedia","srces","dpr","optimum","getX","lowerCandidate","bonusFactor","cached","reduceCandidate"],"mappings":"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","file":"main.js","sourcesContent":["\r\n\r\nexport function hasTouch() {\r\n return 'ontouchstart' in window;\r\n}\r\n\r\nexport function queryParams() {\r\n const o = {} as { [key: string]: any };\r\n const queryParms = window.location.search\r\n .replace(/^\\?/, '')\r\n .split('&');\r\n\r\n for (let i = 0; i < queryParms.length; i++) {\r\n const param = queryParms[i].split('=').map(decodeURIComponent);\r\n const key = param[0];\r\n const value = parseValue(param[1] || null);\r\n if (o[key]) {\r\n if (!o[key].push) {\r\n o[key] = [o[key]];\r\n }\r\n o[key].push(value);\r\n } else {\r\n o[key] = value;\r\n }\r\n }\r\n\r\n return o;\r\n\r\n function parseValue(value: string) {\r\n if (isNumeric(value)) {\r\n return parseFloat(value);\r\n }\r\n else if (typeof value === 'string') {\r\n let match = value.match(/(\\d{4})-(\\d\\d?)-(\\d\\d?)/);\r\n if (match && match.length > 3) {\r\n return new Date(+match[1], +match[2] - 1, +match[3]);\r\n } else {\r\n match = value.match(/(\\d\\d?)[-.](\\d\\d?)[-.](\\d{4})/);\r\n if (match && match.length > 3) {\r\n return new Date(+match[3], +match[2] - 1, +match[1]);\r\n }\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n\r\nexport function selectText(el: HTMLElement, win: Window = window) {\r\n const doc = win.document;\r\n if (win.getSelection && doc.createRange) {\r\n const sel = win.getSelection();\r\n const range = doc.createRange();\r\n range.selectNodeContents(el);\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n }\r\n\r\n try {\r\n document.execCommand('copy');\r\n }\r\n catch (e) {\r\n // ignored\r\n }\r\n}\r\n\r\n\r\nexport function isNumeric(value: string) {\r\n return !Number.isNaN(parseFloat(value)) && Number.isFinite(+value);\r\n}\r\n\r\n\r\nexport function detectTouchDevices(callback: (isTouchDevice: boolean) => void) {\r\n window.addEventListener('touchstart', () => {\r\n callback(true);\r\n });\r\n $(window).on(\"resize\", () => {\r\n // such small devices are most likely touch devices\r\n if (window.innerWidth < 1199) {\r\n callback(true);\r\n }\r\n });\r\n}\r\n\r\n\r\nexport function ready(cb: () => void) {\r\n if (document.readyState !== 'loading') cb();\r\n else document.addEventListener('DOMContentLoaded', cb);\r\n}\r\n\r\n\r\nexport function recaptcha(recaptcha: Element) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n if (!recaptcha) {\r\n // on second call..\r\n resolve(null);\r\n return;\r\n }\r\n\r\n const key = recaptcha.getAttribute(\"key\");\r\n const action = recaptcha.getAttribute(\"action\");\r\n\r\n if (key && action) {\r\n const input = document.createElement('input');\r\n input.type = 'hidden';\r\n input.name = 'recaptchaToken';\r\n recaptcha.parentElement.replaceChild(input, recaptcha);\r\n\r\n const src = document.createElement('script');\r\n const head = document.head || document.getElementsByTagName('head')[0];\r\n src.src = `https://www.google.com/recaptcha/api.js?render=${key}`;\r\n src.async = false;\r\n src.onload = () => {\r\n const scope = global as any as { grecaptcha: GRecaptcha };\r\n scope.grecaptcha.ready(() => scope.grecaptcha.execute(key, { action: action }).then(token => {\r\n input.value = token;\r\n resolve(token);\r\n }));\r\n };\r\n head.insertBefore(src, null);\r\n }\r\n else {\r\n resolve(null);\r\n }\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n\r\n type GRecaptcha = {\r\n ready(cb: () => void): void,\r\n execute(key: string, config: { action: string }): Promise,\r\n }\r\n}\r\n","\r\n\r\n// TODO migrate to DOM7 -> https://framework7.io/docs/dom7.html\r\nimport * as $ from 'jquery';\r\nObject.assign(global, { $, jQuery: $ });\r\n","import { LarchSys } from '../../utils/larchSys';\r\n\r\n\r\nObject.assign(global, {\r\n lazySizesConfig: {\r\n lazyloaded(e: HTMLElement) {\r\n $(e).parents('.img-spinner').removeClass('img-spinner');\r\n }\r\n }\r\n});\r\n\r\n\r\n//import './ls.bgset.min.js';\r\n//import './lazysizes.js'; // this is a fork of lazysizes with added 'lazyloaded' callback\r\n\r\nif (!window.HTMLPictureElement) {\r\n // iOS fix for lazysizes\r\n require('./ls.respimg.js');\r\n}\r\n\r\n\r\n\r\nexport function lazysizesFeature(larchSys: LarchSys) {\r\n\r\n if ('loading' in HTMLImageElement.prototype) {\r\n const images = document.querySelectorAll(\"img.lazyload\");\r\n images.forEach((img: HTMLImageElement) => {\r\n\r\n // var t1 = new Date();\r\n\r\n img.classList.add(\"lazyloading\");\r\n img.classList.remove(\"lazyload\");\r\n\r\n img.onload = ev => {\r\n // var t2 = new Date();\r\n // console.log('load', img.className, 'took', (t2.getTime() - t1.getTime()) / 1000);\r\n img.classList.add(\"lazyloaded\");\r\n img.classList.remove(\"lazyloading\");\r\n\r\n (global as any).lazySizesConfig.lazyloaded(img);\r\n }\r\n\r\n img.src = img.dataset.src;\r\n img.srcset = img.dataset.srcset;\r\n });\r\n }\r\n else {\r\n require(\"./ls.bgset.min.js\");\r\n const lazysizes = require(\"./lazysizes.js\");\r\n lazysizes.init();\r\n }\r\n\r\n}\r\n","\r\n\r\nclass CookieService {\r\n\r\n getCookie(name: string) {\r\n const v = document.cookie.match(`(^|;) ?${name}=([^;]*)(;|$)`);\r\n return v ? v[2] : null;\r\n }\r\n\r\n setCookie(name: string, value: any, days: number) {\r\n let cookie = `${name}=${value};path=/`;\r\n if (days) {\r\n const d = new Date;\r\n d.setTime(d.getTime() + 24 * 60 * 60 * 1000 * days);\r\n cookie += `;expires=${d.toUTCString()}`;\r\n }\r\n document.cookie = cookie;\r\n }\r\n\r\n deleteCookie(name: string) {\r\n this.setCookie(name, '', -1);\r\n }\r\n}\r\n\r\n\r\nexport var cookieService = new CookieService();\r\n","import { ready } from '../../utils/functions';\r\nimport { cookieService } from './CookieService';\r\n\r\n\r\nexport class BounceWatcher {\r\n\r\n constructor(\r\n private readonly cookieName: string\r\n ) { }\r\n\r\n init(callback: () => void) {\r\n const isEnabled = () => !cookieService.getCookie(this.cookieName);\r\n\r\n if (!isEnabled()) return;\r\n\r\n const run = once(\r\n when(isEnabled,\r\n callback\r\n )\r\n );\r\n\r\n if (isMobile()) this.onGoingBack(\r\n run\r\n );\r\n\r\n else this.onMouseLeave(\r\n wait(3_000, run)\r\n );\r\n\r\n wait(10_000, run)();\r\n }\r\n\r\n disable(days: number) {\r\n // don't overwrite a previously created cookie\r\n const exists = cookieService.getCookie(this.cookieName);\r\n if (!exists) {\r\n cookieService.setCookie(this.cookieName, true, days);\r\n }\r\n }\r\n\r\n enable() {\r\n cookieService.deleteCookie(this.cookieName);\r\n }\r\n\r\n private onMouseLeave(callback: () => void) {\r\n // # Links\r\n // - https://github.com/beeker1121/exit-intent-popup/blob/master/js/bioep.js#L222\r\n // - https://www.thepolyglotdeveloper.com/2018/11/using-exit-intent-listener-manage-popups-page/\r\n // - https://github.com/AMKohn/bounceback/blob/master/lib/bounceback.js\r\n // FF triggers no mouseleave on document\r\n // Chrome triggers mouseleave only after user interaction\r\n document.querySelector(\"body\").addEventListener('mouseleave', e => {\r\n var target = e.target as HTMLElement;\r\n var from = e.relatedTarget as HTMLElement;\r\n\r\n if (target.tagName.toLowerCase() === \"input\") {\r\n return;\r\n }\r\n\r\n var trackOnlyAbove = true;\r\n\r\n var isOut = !from || from.nodeName === \"HTML\";\r\n var isPos = !trackOnlyAbove || (!e.clientY || (e.clientY <= 0));\r\n if (isOut && isPos) {\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n private onGoingBack(callback: () => void) {\r\n if (!window.history || !window.history.pushState) return;\r\n\r\n // manipulate browser history only after page ready, so scripts are able to skip\r\n ready(() => {\r\n const stateProp = `bounceWatcher-${this.cookieName}`;\r\n\r\n history.replaceState(Object.assign({}, history.state, { [stateProp]: 1 }), document.title);\r\n\r\n window.history.pushState({ [stateProp]: 2 }, document.title);\r\n\r\n window.addEventListener(\"popstate\", e => {\r\n if (e.state && e.state[stateProp] === 1) {\r\n callback();\r\n }\r\n });\r\n\r\n console.info(`registered: BounceWatcher ${this.cookieName}`);\r\n\r\n //function destroy() {\r\n // // TODO removeEventListener('popstate')\r\n // if (window.history.state[stateProp] === 2) {\r\n // window.history.back();\r\n // }\r\n //}\r\n });\r\n }\r\n}\r\n\r\n\r\nfunction isMobile() {\r\n return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase());\r\n}\r\n\r\n\r\nfunction when(condition: () => boolean, callback: () => void) {\r\n return () => condition() && callback();;\r\n}\r\n\r\nfunction once(callback: () => void) {\r\n let show = true;\r\n return () => {\r\n if (show) {\r\n show = false;\r\n callback();\r\n }\r\n };\r\n}\r\n\r\n\r\nfunction wait(delay: number, callback: () => void) {\r\n const start = new Date().getTime();\r\n return () => {\r\n const now = new Date().getTime();\r\n const delta = now - start;\r\n if (delta >= delay) callback();\r\n else setTimeout(callback, delay - delta);\r\n }\r\n}\r\n","//\r\n// Variables\r\n//\r\n\r\nvar defaults: Options = {\r\n\r\n\t// Classes & IDs\r\n\r\n\tfieldClass: 'error',\r\n\terrorClass: 'error-message',\r\n\tfieldPrefix: 'bouncer-field_',\r\n\terrorPrefix: 'bouncer-error_',\r\n\r\n\t// Patterns\r\n\tpatterns: {\r\n\t\temail: /^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*(\\.\\w{2,})+$/,\r\n\t\turl: /^(?:(?:https?|HTTPS?|ftp|FTP):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-zA-Z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/,\r\n\t\tnumber: /^(?:[-+]?[0-9]*[.,]?[0-9]+)$/,\r\n\t\tcolor: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,\r\n\t\tdate: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))/,\r\n\t\ttime: /^(?:(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]))$/,\r\n\t\tmonth: /^(?:(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])))$/\r\n\t},\r\n\r\n\t// Custom Validations\r\n customValidations: {},\r\n customMessages: {},\r\n\r\n\t// Messages\r\n\tmessageAfterField: true,\r\n\tmessageCustom: 'data-bouncer-message',\r\n\tmessageTarget: 'data-bouncer-target',\r\n\tmessages: {\r\n\t\tmissingValue: {\r\n\t\t\tcheckbox: 'This field is required.',\r\n\t\t\tradio: 'Please select a value.',\r\n\t\t\tselect: 'Please select a value.',\r\n\t\t\t'select-multiple': 'Please select at least one value.',\r\n\t\t\tdefault: 'Please fill out this field.'\r\n\t\t},\r\n\t\tpatternMismatch: {\r\n\t\t\temail: 'Please enter a valid email address.',\r\n\t\t\turl: 'Please enter a URL.',\r\n\t\t\tnumber: 'Please enter a number',\r\n\t\t\tcolor: 'Please match the following format: #rrggbb',\r\n\t\t\tdate: 'Please use the YYYY-MM-DD format',\r\n\t\t\ttime: 'Please use the 24-hour time format. Ex. 23:00',\r\n\t\t\tmonth: 'Please use the YYYY-MM format',\r\n\t\t\tdefault: 'Please match the requested format.'\r\n\t\t},\r\n\t\toutOfRange: {\r\n\t\t\tover: 'Please select a value that is no more than {max}.',\r\n\t\t\tunder: 'Please select a value that is no less than {min}.'\r\n\t\t},\r\n\t\twrongLength: {\r\n\t\t\tover: 'Please shorten this text to no more than {maxLength} characters. You are currently using {length} characters.',\r\n\t\t\tunder: 'Please lengthen this text to {minLength} characters or more. You are currently using {length} characters.'\r\n\t\t},\r\n\t\tfallback: 'There was an error with this field.'\r\n\t},\r\n\r\n\t// Form Submission\r\n\tdisableSubmit: false,\r\n\r\n\t// Custom Events\r\n\temitEvents: true\r\n\r\n};\r\n\r\n\r\n//\r\n// Methods\r\n//\r\n\r\n/**\r\n * A wrapper for Array.prototype.forEach() for non-arrays\r\n * @param {Array-like} arr The array-like object\r\n * @param {Function} callback The callback to run\r\n */\r\nvar forEach = (arr: ArrayLike, callback: (_: T) => void) => {\r\n Array.prototype.forEach.call(arr, callback);\r\n};\r\n\r\n/**\r\n * Merge two or more objects together.\r\n * @param {Object} objects The objects to merge together\r\n * @returns {Object} Merged values of defaults and options\r\n */\r\nvar extend = (...args: object[]): object => {\r\n type Option = { [key: string]: Option | object };\r\n var merged: Option = {};\r\n forEach(args, ((obj: Option) => {\r\n for (var key in obj) {\r\n if (!obj.hasOwnProperty(key)) return;\r\n if (Object.prototype.toString.call(obj[key]) === '[object Object]') {\r\n merged[key] = extend(merged[key] as Option, obj[key] as Option);\r\n } else {\r\n merged[key] = obj[key];\r\n }\r\n }\r\n }));\r\n return merged;\r\n};\r\n\r\n/**\r\n * Emit a custom event\r\n * @param {String} type The event type\r\n * @param {Object} options The settings object\r\n * @param {Node} anchor The anchor element\r\n * @param {Node} toggle The toggle element\r\n */\r\nvar emitEvent = (elem: Node, type: string, details?: object) => {\r\n if (typeof global.CustomEvent !== 'function') return;\r\n var event = new CustomEvent(type, {\r\n bubbles: true,\r\n detail: details || {}\r\n });\r\n elem.dispatchEvent(event);\r\n};\r\n\r\n/**\r\n * Add the `novalidate` attribute to all forms\r\n * @param {Boolean} remove If true, remove the `novalidate` attribute\r\n */\r\nvar addNoValidate = (selector: string) => {\r\n forEach(document.querySelectorAll(selector), ((form: Element) => {\r\n form.setAttribute('novalidate', true.toString());\r\n }));\r\n};\r\n\r\n/**\r\n * Remove the `novalidate` attribute to all forms\r\n */\r\nvar removeNoValidate = (selector: string) => {\r\n forEach(document.querySelectorAll(selector), ((form: Element) => {\r\n form.removeAttribute('novalidate');\r\n }));\r\n};\r\n\r\n/**\r\n * Check if a required field is missing its value\r\n * @param {Node} field The field to check\r\n * @return {Boolean} It true, field is missing it's value\r\n */\r\nvar missingValue = (field: HTMLInputElement) => {\r\n\r\n // If not required, bail\r\n if (!field.hasAttribute('required')) return false;\r\n\r\n // Handle checkboxes\r\n if (field.type === 'checkbox') {\r\n return !field.checked;\r\n }\r\n\r\n // Get the field value length\r\n var length = field.value.length;\r\n\r\n // Handle radio buttons\r\n if (field.type === 'radio') {\r\n length = Array.prototype.filter.call(field.form.querySelectorAll(`[name=\"${escapeCharacters(field.name)}\"]`), ((btn: HTMLInputElement) => btn.checked)).length;\r\n }\r\n\r\n // Check for value\r\n return length < 1;\r\n\r\n};\r\n\r\n/**\r\n * Check if field value doesn't match a patter.\r\n * @param {Node} field The field to check\r\n * @param {Object} settings The plugin settings\r\n * @see https://www.w3.org/TR/html51/sec-forms.html#the-pattern-attribute\r\n * @return {Boolean} If true, there's a pattern mismatch\r\n */\r\nvar patternMismatch = (field: HTMLInputElement, settings: Options) => {\r\n\r\n // Check if there's a pattern to match\r\n var pattern = field.getAttribute('pattern') as string | RegExp;\r\n pattern = pattern ? new RegExp(`^(?:${pattern})$`) : settings.patterns[field.type];\r\n if (!pattern || !field.value || field.value.length < 1) return false;\r\n\r\n // Validate the pattern\r\n return field.value.match(pattern) ? false : true;\r\n\r\n};\r\n\r\n/**\r\n * Check if field value is out-of-range\r\n * @param {Node} field The field to check\r\n * @return {String} Returns 'over', 'under', or false\r\n */\r\nvar outOfRange = (field: HTMLInputElement) => {\r\n\r\n // Make sure field has value\r\n if (!field.value || field.value.length < 1) return false;\r\n\r\n // Check for range\r\n var max = +field.getAttribute('max');\r\n var min = +field.getAttribute('min');\r\n\r\n // Check validity\r\n var num = parseFloat(field.value);\r\n if (max && num > max) return 'over';\r\n if (min && num < min) return 'under';\r\n return false;\r\n\r\n};\r\n\r\n/**\r\n * Check if the field value is too long or too short\r\n * @param {Node} field The field to check\r\n * @return {String} Returns 'over', 'under', or false\r\n */\r\nvar wrongLength = (field: HTMLInputElement) => {\r\n\r\n // Make sure field has value\r\n if (!field.value || field.value.length < 1) return false;\r\n\r\n // Check for min/max length\r\n var max = +field.getAttribute('maxlength');\r\n var min = +field.getAttribute('minlength');\r\n\r\n // Check validity\r\n var length = field.value.length;\r\n if (max && length > max) return 'over';\r\n if (min && length < min) return 'under';\r\n return false;\r\n\r\n};\r\n\r\n/**\r\n * Test for standard field validations\r\n * @param {Node} field The field to test\r\n * @param {Object} settings The plugin settings\r\n * @return {Object} The tests and their results\r\n */\r\nvar runValidations = (field: HTMLInputElement, settings: Options): ValidationErrors => ({\r\n missingValue: missingValue(field),\r\n patternMismatch: patternMismatch(field, settings),\r\n outOfRange: outOfRange(field),\r\n wrongLength: wrongLength(field)\r\n});\r\n\r\n/**\r\n * Run any provided custom validations\r\n * @param {Node} field The field to test\r\n * @param {Object} errors The existing errors\r\n * @param {Object} validations The custom validations to run\r\n * @param {Object} settings The plugin settings\r\n * @return {Object} The tests and their results\r\n */\r\nvar customValidations = (field: HTMLInputElement, errors: ValidationErrors, validations: CustomValidations, settings: Options) => {\r\n for (var test in validations) {\r\n if (validations.hasOwnProperty(test)) {\r\n errors[test] = validations[test](field, settings);\r\n }\r\n }\r\n return errors;\r\n};\r\n\r\n/**\r\n * Check if a field has any errors\r\n * @param {Object} errors The validation test results\r\n * @return {Boolean} Returns true if there are errors\r\n */\r\nvar hasErrors = (errors: ValidationErrors) => {\r\n for (var type in errors) {\r\n if (errors[type]) return true;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Check a field for errors\r\n * @param {Node} field The field to test\r\n * @param {Object} settings The plugin settings\r\n * @return {Object} The field validity and errors\r\n */\r\nvar getErrors = (field: HTMLInputElement, settings: Options): ValidationResult => {\r\n\r\n // Get standard validation errors\r\n var errors = runValidations(field,settings);\r\n\r\n // Check for custom validations\r\n errors = customValidations(field, errors, settings.customValidations, settings);\r\n\r\n return {\r\n field: field,\r\n valid: !hasErrors(errors),\r\n errors: errors\r\n };\r\n\r\n};\r\n\r\n/**\r\n * Escape special characters for use with querySelector\r\n * @author Mathias Bynens\r\n * @link https://github.com/mathiasbynens/CSS.escape\r\n * @param {String} id The anchor ID to escape\r\n */\r\nvar escapeCharacters = (id: string) => {\r\n\r\n var string = String(id);\r\n var length = string.length;\r\n var index = -1;\r\n var codeUnit: number;\r\n var result = '';\r\n var firstCodeUnit = string.charCodeAt(0);\r\n while (++index < length) {\r\n codeUnit = string.charCodeAt(index);\r\n // Note: there’s no need to special-case astral symbols, surrogate\r\n // pairs, or lone surrogates.\r\n\r\n // If the character is NULL (U+0000), then throw an\r\n // `InvalidCharacterError` exception and terminate these steps.\r\n if (codeUnit === 0x0000) {\r\n throw new Error('Invalid character: the input contains U+0000.');\r\n }\r\n\r\n if (\r\n // If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\r\n // U+007F, […]\r\n (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\r\n // If the character is the first character and is in the range [0-9]\r\n // (U+0030 to U+0039), […]\r\n (index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\r\n // If the character is the second character and is in the range [0-9]\r\n // (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\r\n (\r\n index === 1 &&\r\n codeUnit >= 0x0030 && codeUnit <= 0x0039 &&\r\n firstCodeUnit === 0x002D\r\n )\r\n ) {\r\n // http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point\r\n result += `\\\\${codeUnit.toString(16)} `;\r\n continue;\r\n }\r\n\r\n // If the character is not handled by one of the above rules and is\r\n // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\r\n // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\r\n // U+005A), or [a-z] (U+0061 to U+007A), […]\r\n if (\r\n codeUnit >= 0x0080 ||\r\n codeUnit === 0x002D ||\r\n codeUnit === 0x005F ||\r\n codeUnit >= 0x0030 && codeUnit <= 0x0039 ||\r\n codeUnit >= 0x0041 && codeUnit <= 0x005A ||\r\n codeUnit >= 0x0061 && codeUnit <= 0x007A\r\n ) {\r\n // the character itself\r\n result += string.charAt(index);\r\n continue;\r\n }\r\n\r\n // Otherwise, the escaped character.\r\n // http://dev.w3.org/csswg/cssom/#escape-a-character\r\n result += `\\\\${string.charAt(index)}`;\r\n\r\n }\r\n\r\n // Return sanitized hash\r\n return result;\r\n\r\n};\r\n\r\n/**\r\n * Get or create an ID for a field\r\n * @param {Node} field The field\r\n * @param {Object} settings The plugin settings\r\n * @param {Boolean} create If true, create an ID if there isn't one\r\n * @return {String} The field ID\r\n */\r\nvar getFieldID = (field: HTMLInputElement, settings: Options, create?: boolean) => {\r\n var id = field.name ? field.name : field.id;\r\n if (!id && create) {\r\n id = settings.fieldPrefix + Math.floor(Math.random() * 999);\r\n field.id = id;\r\n }\r\n if (field.type === 'checkbox') {\r\n id += '_' + (field.value || field.id);\r\n }\r\n return id;\r\n};\r\n\r\n/**\r\n * Special handling for radio buttons and checkboxes wrapped in labels.\r\n * @param {Node} field The field with the error\r\n * @return {Node} The field to show the error on\r\n */\r\nvar getErrorField = (field: HTMLInputElement) => {\r\n let result: HTMLElement = field;\r\n\r\n // If the field is a radio button, get the last item in the radio group\r\n // @todo if location is before, get first item\r\n if (field.type === 'radio' && field.name) {\r\n var group = field.form.querySelectorAll('[name=\"' + escapeCharacters(field.name) + '\"]');\r\n result = group[group.length - 1] as HTMLElement;\r\n }\r\n\r\n // Get the associated label for radio button or checkbox\r\n if (field.type === 'radio' || field.type === 'checkbox') {\r\n var label = field.closest('label') || field.form.querySelector('[for=\"' + field.id + '\"]');\r\n result = label || field;\r\n }\r\n\r\n return result;\r\n\r\n};\r\n\r\n/**\r\n * Get the location for a field's error message\r\n * @param {Node} field The field\r\n * @param {Node} target The target for error message\r\n * @param {Object} settings The plugin settings\r\n * @return {Node} The error location\r\n */\r\nvar getErrorLocation = (field: HTMLInputElement, target: HTMLElement, settings: Options) => {\r\n\r\n // Check for a custom error message\r\n var selector = field.getAttribute(settings.messageTarget);\r\n if (selector) {\r\n var location = field.form.querySelector(selector);\r\n if (location) {\r\n // @bugfix by @HaroldPutman\r\n // https://github.com/cferdinandi/bouncer/pull/28\r\n return location.firstChild || location.appendChild(document.createTextNode(''));\r\n }\r\n }\r\n\r\n // If the message should come after the field\r\n if (settings.messageAfterField) {\r\n\r\n // If there's no next sibling, create one\r\n if (!target.nextSibling) {\r\n target.parentNode.appendChild(document.createTextNode(''));\r\n }\r\n\r\n return target.nextSibling;\r\n\r\n }\r\n\r\n // If it should come before\r\n return target;\r\n\r\n};\r\n\r\n/**\r\n * Create a validation error message node\r\n * @param {Node} field The field\r\n * @param {Object} settings The plugin settings\r\n * @return {Node} The error message node\r\n */\r\nvar createError = (field: HTMLInputElement, settings: Options) => {\r\n\r\n // Create the error message\r\n var error = document.createElement('div');\r\n error.className = settings.errorClass;\r\n error.id = settings.errorPrefix + getFieldID(field, settings, true);\r\n\r\n // If the field is a radio button or checkbox, grab the last field label\r\n var fieldTarget = getErrorField(field);\r\n\r\n // Inject the error message into the DOM\r\n var location = getErrorLocation(field, fieldTarget, settings);\r\n location.parentNode.insertBefore(error, location);\r\n\r\n return error;\r\n\r\n};\r\n\r\n\r\n/**\r\n * Get the error message text\r\n * @param {Node} field The field to get an error message for\r\n * @param {Object} errors The errors on the field\r\n * @param {Object} settings The plugin settings\r\n * @return {String|Function} The error message\r\n */\r\nvar getErrorMessage = (field: HTMLInputElement, errors: ValidationErrors, settings: Options): string => {\r\n\r\n // Variables\r\n var messages = settings.messages;\r\n\r\n // Missing value error\r\n if (errors.missingValue) {\r\n return field.getAttribute(settings.messageCustom + '-missing-value')\r\n || messages.missingValue[field.type]\r\n || messages.missingValue.default;\r\n }\r\n\r\n // Numbers that are out of range\r\n if (errors.outOfRange) {\r\n const msg = field.getAttribute(settings.messageCustom + '-out-of-range-' + errors.outOfRange)\r\n || field.getAttribute(settings.messageCustom + '-out-of-range')\r\n || messages.outOfRange[errors.outOfRange]\r\n || messages.fallback;\r\n\r\n return msg\r\n .replace('{max}', field.getAttribute('max'))\r\n .replace('{min}', field.getAttribute('min'))\r\n .replace('{length}', field.value.length.toString());\r\n }\r\n\r\n // Values that are too long or short\r\n if (errors.wrongLength) {\r\n const msg = field.getAttribute(settings.messageCustom + '-wrong-length-' + errors.wrongLength)\r\n || field.getAttribute(settings.messageCustom + '-wrong-length')\r\n || messages.wrongLength[errors.wrongLength]\r\n || messages.fallback;\r\n\r\n return msg\r\n .replace('{maxLength}', field.getAttribute('maxlength'))\r\n .replace('{minLength}', field.getAttribute('minlength'))\r\n .replace('{length}', field.value.length.toString());\r\n }\r\n\r\n // Pattern mismatch error\r\n if (errors.patternMismatch) {\r\n return field.getAttribute(settings.messageCustom + '-pattern-mismatch')\r\n || field.getAttribute(settings.messageCustom)\r\n || messages.patternMismatch[field.type]\r\n || messages.patternMismatch.default;\r\n }\r\n\r\n // Custom validations\r\n for (var test in settings.customValidations) {\r\n if (settings.customValidations.hasOwnProperty(test)) {\r\n if (errors[test]) {\r\n let msg = settings.customMessages[test];\r\n msg = typeof msg === 'function' ? msg(field, settings) : msg;\r\n return msg || messages.fallback;\r\n }\r\n }\r\n }\r\n\r\n // Fallback error message\r\n return messages.fallback;\r\n\r\n};\r\n\r\n/**\r\n * Add error attributes to a field\r\n * @param {Node} field The field with the error message\r\n * @param {Node} error The error message\r\n * @param {Object} settings The plugin settings\r\n */\r\nvar addErrorAttributes = (field: HTMLInputElement, error: ValidationErrors, settings: Options) => {\r\n field.classList.add(settings.fieldClass);\r\n field.setAttribute('aria-describedby', error.id);\r\n field.setAttribute('aria-invalid', true.toString());\r\n};\r\n\r\n/**\r\n * Show error attributes on a field or radio/checkbox group\r\n * @param {Node} field The field with the error message\r\n * @param {Node} error The error message\r\n * @param {Object} settings The plugin settings\r\n */\r\nvar showErrorAttributes = (field: HTMLInputElement, error: ValidationErrors, settings: Options) => {\r\n\r\n // If field is a radio button, add attributes to every button in the group\r\n if (field.type === 'radio' && field.name) {\r\n Array.prototype.forEach.call(document.querySelectorAll('[name=\"' + field.name + '\"]'), ((button: HTMLInputElement) => {\r\n addErrorAttributes(button, error, settings);\r\n }));\r\n }\r\n\r\n // Otherwise, add an error class and aria attribute to the field\r\n addErrorAttributes(field, error, settings);\r\n\r\n};\r\n\r\n/**\r\n * Show an error message in the DOM\r\n * @param {Node} field The field to show an error message for\r\n * @param {Object} errors The errors on the field\r\n * @param {Object} settings The plugin settings\r\n */\r\nvar showError = (field: HTMLInputElement, errors: ValidationErrors, settings: Options) => {\r\n\r\n // Get/create an error message\r\n var error = field.form.querySelector('#' + escapeCharacters(settings.errorPrefix + getFieldID(field, settings))) || createError(field, settings);\r\n error.textContent = getErrorMessage(field, errors, settings);\r\n\r\n // Add error attributes\r\n showErrorAttributes(field, error, settings);\r\n\r\n // Emit custom event\r\n if (settings.emitEvents) {\r\n emitEvent(field, 'bouncerShowError', {\r\n errors: errors\r\n });\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Remove error attributes from a field\r\n * @param {Node} field The field with the error message\r\n * @param {Node} error The error message\r\n * @param {Object} settings The plugin settings\r\n */\r\nvar removeAttributes = (field: HTMLInputElement, settings: Options) => {\r\n field.classList.remove(settings.fieldClass);\r\n field.removeAttribute('aria-describedby');\r\n field.removeAttribute('aria-invalid');\r\n};\r\n\r\n/**\r\n * Remove error attributes from the field or radio group\r\n * @param {Node} field The field with the error message\r\n * @param {Node} error The error message\r\n * @param {Object} settings The plugin settings\r\n */\r\nvar removeErrorAttributes = (field: HTMLInputElement, settings: Options) => {\r\n\r\n // If field is a radio button, remove attributes from every button in the group\r\n if (field.type === 'radio' && field.name) {\r\n Array.prototype.forEach.call(document.querySelectorAll('[name=\"' + field.name + '\"]'), ((button: HTMLInputElement) => {\r\n removeAttributes(button, settings);\r\n }));\r\n return;\r\n }\r\n\r\n // Otherwise, add an error class and aria attribute to the field\r\n removeAttributes(field, settings);\r\n\r\n};\r\n\r\n/**\r\n * Remove an error message from the DOM\r\n * @param {Node} field The field with the error message\r\n * @param {Object} settings The plugin settings\r\n */\r\nvar removeError = (field: HTMLInputElement, settings: Options) => {\r\n\r\n // Get the error message for this field\r\n var error = field.form.querySelector('#' + escapeCharacters(settings.errorPrefix + getFieldID(field, settings)));\r\n if (!error) return;\r\n\r\n // Remove the error\r\n error.parentNode.removeChild(error);\r\n\r\n // Remove error and a11y from the field\r\n removeErrorAttributes(field, settings);\r\n\r\n // Emit custom event\r\n if (settings.emitEvents) {\r\n emitEvent(field, 'bouncerRemoveError');\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Remove errors from all fields\r\n * @param {String} selector The selector for the form\r\n * @param {Object} settings The plugin settings\r\n */\r\nvar removeAllErrors = (selector: string, settings: Options) => {\r\n forEach(document.querySelectorAll(selector), ((form: Element) => {\r\n forEach(form.querySelectorAll('input, select, textarea'), ((field: HTMLInputElement) => {\r\n removeError(field, settings);\r\n }));\r\n }));\r\n};\r\n\r\n/**\r\n * The plugin constructor\r\n * @param {String} selector The selector to use for forms to be validated\r\n * @param {Object} options User settings [optional]\r\n */\r\nexport const Bouncer = (selector: string, options: Part) => {\r\n\r\n //\r\n // Variables\r\n //\r\n\r\n var publicAPIs: BouncerInstance = {} as any;\r\n\r\n var settings: Options;\r\n var formTouched = false;\r\n\r\n //\r\n // Methods\r\n //\r\n\r\n /**\r\n\t * Validate a field\r\n\t * @param {Node} field The field to validate\r\n\t * @param {Object} options Validation options\r\n\t * @return {Object} The validity state and errors\r\n\t */\r\n publicAPIs.validate = (field: HTMLInputElement, options: Part): ValidationResult | null => {\r\n\r\n // Don't validate submits, buttons, file and reset inputs, and disabled and readonly fields\r\n if (field.disabled || field.readOnly || field.type === 'reset' || field.type === 'submit' || field.type === 'button') {\r\n return null;\r\n }\r\n\r\n // Local settings\r\n var _settings = extend(settings, options || {}) as Options;\r\n\r\n // Check for errors\r\n var state = getErrors(field, _settings);\r\n\r\n // If valid, remove any error messages\r\n if (state.valid) {\r\n removeError(field, _settings);\r\n return {\r\n valid: true,\r\n field: field,\r\n errors: {}\r\n };\r\n }\r\n\r\n // Otherwise, show an error message\r\n showError(field, state.errors, _settings);\r\n\r\n return state;\r\n\r\n };\r\n\r\n /**\r\n\t * Validate all fields in a form or section\r\n\t * @param {Node} target The form or section to validate fields in\r\n\t * @return {Array} An array of fields with errors\r\n\t */\r\n publicAPIs.validateAll = (target: HTMLFormElement, options?: Part): ValidationResult[] =>\r\n Array.from(target.querySelectorAll('input, select, textarea'))\r\n .map(field => publicAPIs.validate(field, options))\r\n .filter(state => state && !state.valid);\r\n\r\n /**\r\n\t * Run a validation on field blur\r\n\t */\r\n var blurHandler = (event: InputEvent & { target: HTMLInputElement }) => {\r\n\r\n // Only run if the field is in a form to be validated\r\n if (!event.target.form || !event.target.form.matches(selector)) return;\r\n\r\n // Only run blur validation after user interaction\r\n // This prevents strange flickering when some input with 'autofocus' losses focus\r\n if (formTouched) {\r\n // Validate the field\r\n publicAPIs.validate(event.target);\r\n }\r\n };\r\n\r\n /**\r\n\t * Run a validation on a fields with errors when the value changes\r\n\t */\r\n var inputHandler = (event: InputEvent & { target: HTMLInputElement }) => {\r\n\r\n // Only run if the field is in a form to be validated\r\n if (!event.target.form || !event.target.form.matches(selector)) return;\r\n\r\n // Mark form as touched after user input happened\r\n formTouched = true;\r\n\r\n // Only run on fields with errors\r\n if (!event.target.classList.contains(settings.fieldClass)) return;\r\n\r\n // Validate the field\r\n publicAPIs.validate(event.target);\r\n\r\n };\r\n\r\n /**\r\n\t * Validate an entire form when it's submitted\r\n\t */\r\n var submitHandler = (event: InputEvent & { target: HTMLFormElement }) => {\r\n\r\n // Only run on matching elements\r\n if (!event.target.matches(selector)) return;\r\n\r\n // Prevent form submission\r\n event.preventDefault();\r\n\r\n // Mark form as touched after submit was pressed\r\n formTouched = true;\r\n\r\n // Validate each field\r\n var errors = publicAPIs.validateAll(event.target);\r\n\r\n // If there are errors, focus on the first one\r\n if (errors.length > 0) {\r\n errors[0].field.focus();\r\n emitEvent(event.target, 'bouncerFormInvalid', {errors: errors});\r\n return;\r\n }\r\n\r\n // Otherwise, submit if not disabled\r\n if (!settings.disableSubmit) {\r\n event.target.submit();\r\n }\r\n\r\n // Emit custom event\r\n if (settings.emitEvents) {\r\n emitEvent(event.target, 'bouncerFormValid');\r\n }\r\n\r\n };\r\n\r\n /**\r\n\t * Instantiate a new instance of the plugin\r\n\t */\r\n var init = () => {\r\n\r\n // Create settings\r\n settings = extend(defaults, options || {}) as Options;\r\n\r\n // Add novalidate attribute\r\n addNoValidate(selector);\r\n\r\n // Event Listeners\r\n document.addEventListener('blur', blurHandler, true);\r\n document.addEventListener('change', blurHandler, true); // input:checkbox doesn't emit input events, so we need to listen for change events too!\r\n document.addEventListener('input', inputHandler, false);\r\n document.addEventListener('click', inputHandler, false);\r\n document.addEventListener('submit', submitHandler, false);\r\n\r\n // Emit custom event\r\n if (settings.emitEvents) {\r\n emitEvent(document, 'bouncerInitialized', {\r\n settings: settings\r\n });\r\n }\r\n\r\n };\r\n\r\n /**\r\n * Destroy the current plugin instantiation\r\n */\r\n publicAPIs.destroy = () => {\r\n\r\n // Remove event listeners\r\n document.removeEventListener('blur', blurHandler, true);\r\n document.removeEventListener('change', blurHandler, true);\r\n document.removeEventListener('input', inputHandler, false);\r\n document.removeEventListener('click', inputHandler, false);\r\n document.removeEventListener('submit', submitHandler, false);\r\n\r\n // Remove all errors\r\n removeAllErrors(selector, settings);\r\n\r\n // Remove novalidate attribute\r\n removeNoValidate(selector);\r\n\r\n // Emit custom event\r\n if (settings.emitEvents) {\r\n emitEvent(document, 'bouncerDestroyed', {\r\n settings: settings\r\n });\r\n }\r\n\r\n // Reset settings\r\n settings = null as Options;\r\n\r\n };\r\n\r\n //\r\n // Inits & Event Listeners\r\n //\r\n\r\n init();\r\n return publicAPIs;\r\n\r\n};\r\n\r\n\r\nexport type BouncerInstance = {\r\n // new (selector: string, options?: Options): Bouncer;\r\n\r\n validateAll(target: HTMLFormElement, options?: Part): ValidationResult[];\r\n validate(field: Node, options?: Part): ValidationResult | null;\r\n\r\n destroy(): void;\r\n}\r\n\r\n\r\ntype ValidationResult = {\r\n field: HTMLInputElement,\r\n valid: boolean,\r\n errors: { [fieldName: string]: ValidationErrors }\r\n};\r\n\r\n\r\ntype CustomValidations = {\r\n [fieldName: string]: ((field: Node, options?: Options) => ValidationErrors)\r\n};\r\n\r\ntype CustomValidationMessage = string | ((field: Node, options?: Options) => string);\r\n\r\n//type Full = {\r\n// [TProp in keyof T]-?: Full;\r\n//};\r\n\r\ntype Part = {\r\n [TProp in keyof T]?: Part;\r\n};\r\n\r\n\r\ntype Options = {\r\n\r\n // Classes & IDs\r\n\r\n fieldClass: string,\r\n errorClass: string,\r\n fieldPrefix: string,\r\n errorPrefix: string,\r\n\r\n // Patterns\r\n patterns: {\r\n [inputType: string]: RegExp,\r\n },\r\n\r\n // Custom Validations\r\n customValidations: CustomValidations,\r\n customMessages: {\r\n [validatorName: string]: CustomValidationMessage,\r\n },\r\n\r\n // Messages\r\n messageAfterField: boolean,\r\n messageCustom: string,\r\n messageTarget: string,\r\n messages: {\r\n missingValue: {\r\n default: string,\r\n [inputType: string]: string,\r\n },\r\n patternMismatch: {\r\n default: string,\r\n [inputType: string]: string,\r\n },\r\n outOfRange: {[P in keyof RangeMessages]: RangeMessages[P]},\r\n wrongLength: {[P in keyof RangeMessages]: RangeMessages[P]},\r\n fallback: string,\r\n },\r\n\r\n // Form Submission\r\n disableSubmit: boolean,\r\n\r\n // Custom Events\r\n emitEvents: boolean,\r\n\r\n}\r\n\r\n\r\ntype ValidationErrors = {\r\n missingValue?: boolean,\r\n patternMismatch?: boolean,\r\n outOfRange?: keyof RangeMessages | false,\r\n wrongLength?: keyof RangeMessages | false,\r\n [validatorName: string]: any,\r\n};\r\n\r\n\r\ntype RangeMessages = {\r\n over: string,\r\n under: string,\r\n}\r\n","import { ready, recaptcha } from '../../utils/functions';\r\nimport { BounceWatcher } from './BounceWatcher';\r\nimport { Bouncer } from './Bouncer';\r\nimport { LarchSys } from '../../utils/larchSys';\r\n\r\n\r\nexport class NewsletterPopup {\r\n private bounce = new BounceWatcher('nlppp-disabled');\r\n private $popup = document.querySelector('.nlppp') as HTMLElement;\r\n\r\n init() {\r\n if (!this.$popup) {\r\n return;\r\n }\r\n\r\n this.bounce.init(this.show.bind(this));\r\n\r\n const $form = this.find('.nlppp-form');\r\n Bouncer('.nlppp .nlppp-form', { disableSubmit: true });\r\n\r\n $form.addEventListener('bouncerFormValid', e => {\r\n e.preventDefault();\r\n\r\n this.hideError();\r\n this.loading(true);\r\n\r\n recaptcha(this.find('grecaptcha')).then(() => {\r\n\r\n window.fetch($form.action, { method: $form.method, body: new FormData($form) })\r\n .then(response => {\r\n if (response.ok) {\r\n this.showSuccess();\r\n this.bounce.disable(365);\r\n }\r\n else {\r\n response.text()\r\n .then(json => Promise.resolve().then(_ => JSON.parse(json).error as string).catch(_ => json))\r\n .then(error => this.showError(error || 'Error'));\r\n }\r\n })\r\n .catch(error => {\r\n this.showError(error || 'Error');\r\n })\r\n .finally(() => {\r\n this.loading(false);\r\n });\r\n\r\n });\r\n });\r\n }\r\n\r\n show() {\r\n if (!this.$popup) {\r\n console.info('nl popup disabled');\r\n return;\r\n }\r\n\r\n this.loading(false);\r\n this.showForm();\r\n\r\n // show without fancybox: =========================================\\\r\n this.$popup.style.display = '';\r\n this.find('.fancybox-close-small').addEventListener('click', () => {\r\n this.$popup.classList.remove('show');\r\n this.bounce.disable(1);\r\n });\r\n\r\n document.body.appendChild(this.$popup);\r\n\r\n requestAnimationFrame(() => this.$popup.classList.add('show'));\r\n // ===========================================================/\r\n\r\n //$.fancybox.open({\r\n // src: '.nlppp',\r\n // type: 'inline',\r\n // afterClose: () => {\r\n // this.bounce.disable(1);\r\n // }\r\n //});\r\n }\r\n\r\n\r\n private showForm() {\r\n this.find('.nlppp-success').style.display = 'none';\r\n this.find('.nlppp-errors').style.display = 'none';\r\n this.find('.nlppp-form').style.display = '';\r\n }\r\n\r\n private showSuccess() {\r\n this.find('.nlppp-success').style.display = '';\r\n this.find('.nlppp-errors').style.display = 'none';\r\n this.find('.nlppp-form').style.display = 'none';\r\n }\r\n\r\n private showError(error: string) {\r\n this.find('.nlppp-errors').style.display = '';\r\n this.find('.nlppp-errors').innerHTML = error;\r\n }\r\n\r\n private hideError() {\r\n this.find('.nlppp-errors').style.display = 'none';\r\n this.find('.nlppp-errors').innerHTML = '';\r\n }\r\n\r\n private loading(show: boolean) {\r\n const btn = this.find('.nlppp-submit');\r\n if (show) {\r\n btn.querySelector('.load-spinner').classList.add('spin');\r\n btn.disabled = true;\r\n }\r\n else {\r\n btn.querySelector('.load-spinner').classList.remove('spin');\r\n btn.disabled = false;\r\n }\r\n }\r\n\r\n\r\n private find(selector: string) {\r\n return this.$popup.querySelector(selector) as T;\r\n }\r\n}\r\n\r\n\r\nexport function newsletterPopupFeature(larchSys: LarchSys) {\r\n\r\n const newsletterPopup = new NewsletterPopup();\r\n\r\n // export global\r\n Object.assign(global, {\r\n popup: () => newsletterPopup.show()\r\n });\r\n\r\n ready(() => {\r\n newsletterPopup.init();\r\n });\r\n\r\n}","import './others.ts';\r\n\r\nimport { LarchSys } from './utils/larchSys';\r\nimport { sliderFeature } from './app/slider';\r\nimport { objectFitFeature } from './app/objectFit';\r\nimport { gotoLinkFeature } from './app/gotoLink';\r\nimport { lazysizesFeature } from './app/lazysizes';\r\nimport { cookieConsentFeature } from './app/cookieconsent';\r\nimport { fancyboxFeature } from './app/fancybox';\r\nimport { marqueeFeature } from './app/marquee';\r\nimport { newsletterPopupFeature } from './app/newsletterPopup';\r\n\r\nimport { navbarBlock } from './app/modules/navbar';\r\nimport { projectsBlock } from './app/modules/projectsblock';\r\nimport { crossesBlock } from './app/modules/crosses';\r\nimport { newsletterBlock } from './app/modules/newsletterblock';\r\n\r\n\r\nconst larchSys = new LarchSys();\r\n\r\n\r\nlarchSys.load([\r\n sliderFeature,\r\n objectFitFeature,\r\n gotoLinkFeature,\r\n\r\n lazysizesFeature,\r\n cookieConsentFeature,\r\n fancyboxFeature,\r\n marqueeFeature,\r\n\r\n newsletterPopupFeature,\r\n newsletterBlock,\r\n\r\n navbarBlock,\r\n projectsBlock,\r\n crossesBlock,\r\n]);\r\n\r\n\r\n// export global\r\nObject.assign(global, { larchSys });\r\n","import { detectTouchDevices } from './functions';\r\n\r\n\r\nexport class LarchSys {\r\n\r\n lang = document.getElementsByTagName('html')[0].getAttribute('lang');\r\n isTouchDevice = false;\r\n\r\n // a simple services container:\r\n $factories: { [key: string]: LarchSysFunction } = {};\r\n $instances: { [key: string]: any } = {};\r\n\r\n constructor() {\r\n detectTouchDevices(isTouchDevice => {\r\n if (isTouchDevice) {\r\n $('body').addClass('use-touch');\r\n this.isTouchDevice = true;\r\n }\r\n });\r\n\r\n $(window).on(\"load\", () => {\r\n $(window).trigger(\"resize\");\r\n //$(window).trigger(\"scroll\");\r\n });\r\n }\r\n\r\n map(de: T, it: T, en: T): T {\r\n switch (this.lang) {\r\n default:\r\n case 'de': return de;\r\n case 'it': return it;\r\n case 'en': return en;\r\n }\r\n }\r\n\r\n load(features: LarchSysFeature[]) {\r\n for (const feature of features) {\r\n feature(this);\r\n }\r\n }\r\n\r\n\r\n registerService(name: string, factory: LarchSysFunction) {\r\n this.$factories[name] = factory;\r\n };\r\n\r\n getService(name: string): T {\r\n let service = this.$instances[name];\r\n if (!service) {\r\n const factory = this.$factories[name];\r\n if (!factory) throw new Error(`No service for '${name}' registered!`);\r\n this.$instances[name] = service = factory(this);\r\n }\r\n\r\n return service as T;\r\n };\r\n}\r\n\r\nexport type LarchSysFeature = (\r\n LarchSysFunction\r\n);\r\n\r\nexport type LarchSysFunction = (larchSys: LarchSys) => void;","import * as $ from 'jquery';\r\nimport { Swiper, SwiperOptions } from 'swiper';\r\nimport { LarchSys } from '../utils/larchSys';\r\n\r\nimport 'swiper/swiper-bundle.css';\r\n\r\n\r\nexport function sliderFeature(larchSys: LarchSys) {\r\n\r\n $('[slider]').each((i, element) => {\r\n const autoPlay = element.hasAttribute('slider-autoplay');\r\n const name = element.getAttribute('slider');\r\n\r\n initSlider(name, element, autoPlay);\r\n });\r\n\r\n function initSlider(name: string, element: HTMLElement, autoPlay: boolean) {\r\n const $element = $(element);\r\n\r\n switch (name) {\r\n\r\n case \"header\": {\r\n\r\n if ($element.find('.swiper-wrapper').children().length <= 1) {\r\n $element.find('.slider-arrows').remove();\r\n return;\r\n }\r\n\r\n const _ = new Swiper($element[0], {\r\n // for better swipe / click\r\n resistance: true,\r\n resistanceRatio: 0.99,\r\n\r\n // cssMode: true,\r\n effect: 'fade',\r\n\r\n autoplay: +autoPlay ? { delay: +autoPlay } : undefined,\r\n loop: true,\r\n loopedSlides: 2,\r\n\r\n fadeEffect: { crossFade: true },\r\n\r\n navigation: {\r\n nextEl: '.slider-next',\r\n prevEl: '.slider-prev',\r\n }\r\n });\r\n\r\n break;\r\n }\r\n\r\n case \"packages\": {\r\n\r\n if ($element.find('.swiper-wrapper').children().length <= 1) {\r\n $element.find('.slider-arrows').remove();\r\n return;\r\n }\r\n\r\n function update(swiper: Swiper) {\r\n //console.log(swiper.activeIndex);\r\n //if (swiper.activeIndex > 0) {\r\n // $element.css('padding-left', '20px');\r\n //}\r\n //else {\r\n // $element.css('padding-left', '0');\r\n //}\r\n }\r\n\r\n const _ = new Swiper($element[0], {\r\n // for better swipe / click\r\n resistance: true,\r\n resistanceRatio: 0.99,\r\n\r\n // slidesPerView: 'auto',\r\n\r\n // cssMode: true,\r\n // effect: 'fade',\r\n\r\n autoplay: +autoPlay ? { delay: +autoPlay } : undefined,\r\n loop: true,\r\n loopedSlides: 2,\r\n\r\n // fadeEffect: { crossFade: true },\r\n\r\n navigation: {\r\n nextEl: '.slider-next',\r\n prevEl: '.slider-prev',\r\n },\r\n\r\n pagination: {\r\n el: $element.next('.swiper-pagination')[0],\r\n clickable: true,\r\n },\r\n on: {\r\n init() {\r\n $element.find('.lazyloading').removeClass('lazyloading').addClass('lazyload');\r\n },\r\n slideChange: function () {\r\n update(this);\r\n }\r\n }\r\n } as Object);\r\n\r\n break;\r\n }\r\n\r\n case \"content\": {\r\n\r\n if ($element.find('.swiper-wrapper').children().length <= 1) {\r\n $element.find('.slider-arrows').remove();\r\n return;\r\n }\r\n\r\n const _ = new Swiper($element[0], {\r\n // for better swipe / click\r\n resistance: true,\r\n resistanceRatio: 0.99,\r\n\r\n effect: 'fade',\r\n autoplay: +autoPlay ? { delay: +autoPlay } : undefined,\r\n loop: true,\r\n loopedSlides: 2,\r\n\r\n // disabled because it produces a fatal BUG in css-grid on fireFox where all slides get extreme big!\r\n preloadImages: false,\r\n updateOnImagesReady: false,\r\n\r\n navigation: {\r\n nextEl: '.slider-next',\r\n prevEl: '.slider-prev',\r\n },\r\n\r\n pagination: {\r\n el: $element.find('.swiper-pagination')[0],\r\n clickable: true,\r\n },\r\n on: {\r\n init() {\r\n $element.find('.lazyloading').removeClass('lazyloading').addClass('lazyload');\r\n },\r\n slideChange() {\r\n // update(this);\r\n }\r\n }\r\n } as Object);\r\n\r\n break;\r\n }\r\n\r\n default: {\r\n console.error(new Error('Slider ' + name + ' not defined!'));\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n/**\r\n * @param {any} mediaBreakpoint '(max-width: 991px)'\r\n * @param {{onMatch: function, onUnmatch: function}} obj actions\r\n */\r\nfunction media(mediaBreakpoint: string, obj: { onMatch: () => void, onUnmatch: () => void }) {\r\n var breakpoint = window.matchMedia(mediaBreakpoint);\r\n var match = false;\r\n const check = () => {\r\n if (breakpoint.matches === true) {\r\n if (!match) {\r\n obj.onMatch();\r\n match = true;\r\n }\r\n } else if (breakpoint.matches === false) {\r\n if (match) {\r\n obj.onUnmatch();\r\n match = false;\r\n }\r\n }\r\n };\r\n breakpoint.addListener(check);\r\n check();\r\n}\r\n\r\n\r\nexport function reinitSlider(element: HTMLElement) {\r\n var $element = $(element);\r\n\r\n // we need to wait until the browser knows all dimensions.\r\n requestAnimationFrame(() => {\r\n if ($element.is('.swiper-container')) {\r\n reinit($element[0]);\r\n }\r\n $element.find(\".swiper-container\").each((i, element) => {\r\n reinit(element);\r\n });\r\n\r\n // force slider to recalculate sizes; is sometimes required\r\n $(window).trigger('resize');\r\n });\r\n\r\n function reinit(element: HTMLElement) {\r\n let swiper = (element as any).swiper as any;\r\n if (swiper) {\r\n const options = swiper.passedParams as SwiperOptions;\r\n\r\n swiper.destroy(true, true);\r\n\r\n swiper = new Swiper(element, options as Object);\r\n }\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\nimport { LarchSys } from '../utils/larchSys';\r\n\r\n\r\nexport function objectFitFeature(larchSys: LarchSys) {\r\n\r\n // polyfill for: img { object-fit: cover; }\r\n if ('objectFit' in document.documentElement.style === false) {\r\n $('.img-fit').each(function () {\r\n const img = this as any as HTMLImageElement;\r\n\r\n var type = 'cover';\r\n if (/img-fit-contain/ig.test(img.className)) {\r\n type = 'contain';\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.className = `object-fit-ie-fix lazyload img-${type} ${img.className}`;\r\n div.setAttribute('data-bgset', img.getAttribute('data-srcset') || img.getAttribute('data-src'));\r\n\r\n img.parentNode.replaceChild(div, img);\r\n });\r\n }\r\n\r\n}","import * as $ from 'jquery';\r\nimport { LarchSys } from '../utils/larchSys';\r\n\r\n\r\nexport function gotoLinkFeature(larchSys: LarchSys) {\r\n\r\n $('[goto-link]').each(function () {\r\n const $element = $(this);\r\n\r\n var a = $element.find('a[href]:not([href=\"\"])')[0] as HTMLAnchorElement;\r\n if (!a) {\r\n $element.css('cursor', 'auto');\r\n return;\r\n }\r\n else {\r\n $element.css('cursor', 'pointer');\r\n }\r\n\r\n $element.one(\"click\", () => {\r\n\r\n const href = a.href;\r\n const target = a.getAttribute(\"target\");\r\n\r\n if (/MSIE (\\d+\\.\\d+);/.test(navigator.userAgent)) {\r\n const link = document.createElement('a');\r\n link.href = href;\r\n link.target = target;\r\n document.body.appendChild(link);\r\n link.click();\r\n }\r\n else if (target === \"_blank\") {\r\n window.open(href);\r\n }\r\n else {\r\n location.href = href;\r\n }\r\n\r\n });\r\n });\r\n\r\n}","import { LarchSys } from '../../utils/larchSys';\r\n\r\nimport './cookieconsent.js';\r\nimport './cookieconsent.scss';\r\n\r\n\r\nexport function cookieConsentFeature(larchSys: LarchSys) {\r\n\r\n function optInOut(didConsent: boolean) {\r\n //document.cookie = 'ga-opt-out=' + !didConsent + '; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/; SameSite=None; Secure';\r\n // TODO gtag.js -> window['ga-disable-GA_MEASUREMENT_ID'] = true\r\n }\r\n\r\n // activate GA if the user hasn't opted out jet.\r\n if (!document.cookie || document.cookie.indexOf('cookieconsent_status') === -1 || document.cookie.indexOf('cookieconsent_status=dismiss') !== -1) {\r\n optInOut(true);\r\n }\r\n\r\n const { cookieconsent } = window as any;\r\n\r\n cookieconsent.initialise({\r\n language: larchSys.lang,\r\n href: '@Model.StartPage.PrivacyUrl.IfNotNull(x => x.Url)',\r\n theme: \"block\", // [block|edgeless|classic]\r\n \"palette\": {\r\n \"popup\": {\r\n \"background\": \"#fff\",\r\n \"text\": \"#000\"\r\n },\r\n \"button\": {\r\n \"background\": \"#c5b999\",\r\n \"text\": \"#000\"\r\n }\r\n },\r\n \"type\": \"opt-out\",\r\n \"revokable\": true,\r\n onInitialise: function (status: any) {\r\n const didConsent = this.hasConsented();\r\n optInOut(didConsent);\r\n },\r\n onStatusChange: function (status: any, chosenBefore: any) {\r\n const didConsent = this.hasConsented();\r\n optInOut(didConsent);\r\n },\r\n onRevokeChoice() {\r\n optInOut(false);\r\n }\r\n });\r\n\r\n}","import { LarchSys } from '../../utils/larchSys';\r\n\r\n//import * as $ from 'jquery';\r\n//Object.assign(global, { $, jQuery: $ });\r\n\r\nimport './jquery.fancybox.js';\r\nimport './jquery.fancybox.scss';\r\n\r\n\r\nexport function fancyboxFeature(larchSys: LarchSys) {\r\n\r\n $.fancybox.defaults.animationEffect = 'fade';\r\n\r\n $.fancybox.defaults.afterLoad = (instance: Fancybox, current: any) => {\r\n\r\n if (/\\.svg/.test(current.src)) {\r\n current.width = window.innerWidth * .8;\r\n current.height = window.innerHeight * .8;\r\n }\r\n\r\n }\r\n\r\n}\r\n","import { LarchSys } from '../../utils/larchSys';\r\nimport \"./_marquee.scss\";\r\n\r\n\r\nexport function marqueeFeature(larchSys: LarchSys) {\r\n\r\n // const element = document.querySelector('.marquee');\r\n\r\n const elements = document.querySelectorAll('.marquee');\r\n\r\n Array.prototype.forEach.call(elements,\r\n (element: HTMLElement) => {\r\n const wrapper = document.createElement('div');\r\n wrapper.className = 'marquee-contents';\r\n\r\n const first = document.createElement('div');\r\n first.className = 'marquee-inner';\r\n first.append(...element.childNodes as any);\r\n wrapper.appendChild(first);\r\n\r\n const second = first.cloneNode(true) as HTMLElement;\r\n second.style.paddingRight = '0.2em';\r\n wrapper.appendChild(second);\r\n\r\n element.appendChild(wrapper);\r\n\r\n {\r\n const delay = 500;\r\n const duration = 13000;\r\n\r\n const animation = (\r\n wait(delay,\r\n animate(duration,\r\n draw()\r\n )\r\n )\r\n );\r\n\r\n requestAnimationFrame(animation);\r\n }\r\n\r\n\r\n function draw() {\r\n\r\n const width = getWidth();\r\n const linear = (t: number) => t;\r\n\r\n let oldValue: string = null;\r\n\r\n return (fraction: number) => {\r\n const x = lerp(0, width(fraction), linear(fraction)).toFixed(1);\r\n\r\n if (oldValue !== x) {\r\n oldValue = x;\r\n wrapper.style.transform = `translateX(-${x}px)`;\r\n }\r\n };\r\n\r\n function getWidth() {\r\n let done = false;\r\n let width = resize();;\r\n\r\n return (fraction: number) => {\r\n\r\n const reminder = Math.abs(fraction * 10 % 1);\r\n\r\n if (!done && reminder < 0.1) {\r\n width = resize();\r\n done = true;\r\n }\r\n else {\r\n done = false;\r\n }\r\n\r\n return width;\r\n }\r\n }\r\n\r\n function resize() {\r\n const { width } = second.getBoundingClientRect();\r\n first.style.transform = `translateX(${width.toFixed(2)}px)`;\r\n return width;\r\n }\r\n\r\n function lerp(min: number, max: number, fraction: number) { return (max - min) * fraction + min; };\r\n }\r\n });\r\n\r\n\r\n function animate(duration: number, draw: (fraction: number) => void) {\r\n return (start: number) => requestAnimationFrame(function loop(ticks: number) {\r\n\r\n const fraction = (ticks - start) / duration;\r\n\r\n draw(fraction);\r\n\r\n if (fraction >= 1) start = ticks;\r\n\r\n requestAnimationFrame(loop);\r\n });\r\n }\r\n\r\n\r\n function wait(delay: number, next: (start: number) => void) {\r\n return (start: number) => requestAnimationFrame(function loop(ticks: number) {\r\n if (ticks - start > delay) next(ticks);\r\n else requestAnimationFrame(loop);\r\n });\r\n }\r\n\r\n}\r\n","import * as $ from 'jquery';\r\nimport { Bouncer as bouncer } from '../newsletterPopup/Bouncer';\r\nimport { recaptcha } from '../../utils/functions';\r\nimport { LarchSys } from '../../utils/larchSys';\r\nimport { BounceWatcher } from '../newsletterPopup/BounceWatcher';\r\n\r\n\r\nexport function newsletterBlock(larchSys: LarchSys) {\r\n\r\n $('.module-newsletterblock').each(function () {\r\n var $module = $(this);\r\n var $form = $module.find('.nl-form');\r\n\r\n loading(false);\r\n showForm();\r\n\r\n bouncer('.module-newsletterblock .nl-form', { disableSubmit: true });\r\n\r\n $form.on(\"bouncerFormValid\", e => {\r\n e.preventDefault();\r\n\r\n hideError();\r\n loading(true);\r\n\r\n recaptcha($form.find('grecaptcha')[0]).then(() => {\r\n const form = $form[0];\r\n\r\n window.fetch(form.action, { method: form.method, body: new FormData(form) })\r\n .then(response => {\r\n if (response.ok) return response.json();\r\n else return response.text()\r\n .then(json => Promise.resolve().then(_ => JSON.parse(json).error as string).catch(_ => json))\r\n .then(error => { throw error; });\r\n })\r\n .then(data => {\r\n if (data.success) {\r\n showSuccess();\r\n new BounceWatcher('nlppp-disabled').disable(365);\r\n }\r\n else {\r\n throw data.error;\r\n }\r\n })\r\n .catch(error => {\r\n showError(error || 'Error');\r\n })\r\n .finally(() => {\r\n loading(false);\r\n });\r\n\r\n });\r\n });\r\n\r\n\r\n function showForm() {\r\n $module.find('.nl-success').hide();\r\n $module.find('.nl-errors').hide();\r\n $module.find('.nl-form').show();\r\n }\r\n\r\n function showSuccess() {\r\n $module.find('.nl-success').show();\r\n $module.find('.nl-errors').hide();\r\n $module.find('.nl-form').hide();\r\n }\r\n\r\n function showError(error: string) {\r\n $module.find('.nl-errors').show();\r\n $module.find('.nl-errors').html(error);\r\n }\r\n\r\n function hideError() {\r\n $module.find('.nl-errors').hide();\r\n $module.find('.nl-errors').html('');\r\n }\r\n\r\n function loading(show: boolean) {\r\n const btn = $module.find('.nl-submit')[0];\r\n if(show) {\r\n btn.querySelector('.load-spinner').classList.add('spin');\r\n btn.disabled = true;\r\n }\r\n else {\r\n btn.querySelector('.load-spinner').classList.remove('spin');\r\n btn.disabled = false;\r\n }\r\n }\r\n\r\n });\r\n\r\n}","import * as $ from 'jquery';\r\nimport { LarchSys } from '../../utils/larchSys';\r\n\r\n\r\nexport function navbarBlock(larchSys: LarchSys) {\r\n\r\n $('.navbar').each(function () {\r\n var $navbar = $(this);\r\n\r\n $navbar.find('.navbar-btn').on('click', () => {\r\n $navbar.toggleClass('open').toggleClass('mix-blend');\r\n });\r\n\r\n\r\n function render() {\r\n if (window.scrollY > 1) { $navbar.addClass('fixed').parent().addClass('fixed'); }\r\n else { $navbar.removeClass('fixed').parent().removeClass('fixed'); }\r\n }\r\n $(document).on('scroll', render);\r\n render();\r\n });\r\n\r\n}","import * as $ from 'jquery';\r\nimport { LarchSys } from '../../utils/larchSys';\r\n\r\n\r\nexport function projectsBlock(larchSys: LarchSys) {\r\n\r\n $('.module-projectsblock').each(function () {\r\n var $element = $(this);\r\n var $column1 = $element.find('.project-list .column:nth-child(1)');\r\n var $column2 = $element.find('.project-list .column:nth-child(2)');\r\n var $column3 = $element.find('.project-list .column:nth-child(3)');\r\n var $teasers: JQuery = null;\r\n\r\n function resize() {\r\n\r\n if (window.innerWidth < 992) {\r\n if ($teasers == null) {\r\n $teasers = $column3.find('.project-teaser');\r\n $teasers.each((i, teaser) => {\r\n const $col = [$column1, $column2][i % 2];\r\n $col.append(teaser);\r\n });\r\n }\r\n } else {\r\n if ($teasers) {\r\n $teasers.each((i, teaser) => {\r\n $column3.append(teaser);\r\n });\r\n $teasers = null;\r\n }\r\n }\r\n\r\n }\r\n\r\n $(window).on('resize', resize);\r\n resize();\r\n\r\n });\r\n\r\n}","import * as $ from 'jquery';\r\nimport { LarchSys } from '../../utils/larchSys';\r\n\r\n\r\nexport function crossesBlock(larchSys: LarchSys) {\r\n\r\n let innerHeight = window.innerHeight;\r\n const handler = () => {\r\n requestAnimationFrame(() => {\r\n if (Math.abs(innerHeight - window.innerHeight) > 100) {\r\n innerHeight = window.innerHeight;\r\n }\r\n const vhFactor = window.pageYOffset / innerHeight;\r\n document.body.style.setProperty('--vh-factor', `${vhFactor}`);\r\n });\r\n };\r\n window.addEventListener('scroll', handler, false);\r\n handler();\r\n\r\n}\r\n\r\n\r\n//const Easing = {\r\n// // no easing, no acceleration\r\n// linear(t: number) { return t; },\r\n// // accelerating from zero velocity\r\n// easeInQuad(t: number) { return t * t; },\r\n// // decelerating to zero velocity\r\n// easeOutQuad(t: number) { return t * (2 - t); },\r\n// // acceleration until halfway, then deceleration\r\n// easeInOutQuad(t: number) { return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t; },\r\n// // accelerating from zero velocity\r\n// easeInCubic(t: number) { return t * t * t; },\r\n// // decelerating to zero velocity\r\n// easeOutCubic(t: number) { return (--t) * t * t + 1; },\r\n// // acceleration until halfway, then deceleration\r\n// easeInOutCubic(t: number) { return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; },\r\n// // accelerating from zero velocity\r\n// easeInQuart(t: number) { return t * t * t * t; },\r\n// // decelerating to zero velocity\r\n// easeOutQuart(t: number) { return 1 - (--t) * t * t * t; },\r\n// // acceleration until halfway, then deceleration\r\n// easeInOutQuart(t: number) { return t < .5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t; },\r\n// // accelerating from zero velocity\r\n// easeInQuint(t: number) { return t * t * t * t * t; },\r\n// // decelerating to zero velocity\r\n// easeOutQuint(t: number) { return 1 + (--t) * t * t * t * t; },\r\n// // acceleration until halfway, then deceleration\r\n// easeInOutQuint(t: number) { return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t; }\r\n//};\r\n\r\n\r\n//function animate(duration: number, obj: {\r\n// from: () => number,\r\n// to: () => number,\r\n// timing: (n: number) => number,\r\n// draw: (n: number) => void,\r\n//}) {\r\n// var start = new Date().getTime();\r\n\r\n// var fraction = 0, current = 0, running = true, finish = false;\r\n// requestAnimationFrame(function loop() {\r\n\r\n// current = lerp(obj.from(), obj.to(), obj.timing(fraction));\r\n\r\n// obj.draw(current);\r\n\r\n// const now = new Date().getTime();\r\n// const diff = (now - start) / duration;\r\n// fraction = diff;\r\n\r\n// if (finish) {\r\n// return;\r\n// }\r\n\r\n// if (running) {\r\n// fraction = Math.min(fraction, 1);\r\n// if (fraction === 1) {\r\n// finish = true;\r\n// }\r\n// requestAnimationFrame(loop);\r\n// }\r\n// });\r\n\r\n// return {\r\n// cancel() {\r\n// running = false;\r\n// }\r\n// };\r\n//}\r\n\r\n//function lerp(min: number, max: number, fraction: number) { return (max - min) * fraction + min; };\r\n\r\n\r\n//let currentValue = 0;\r\n//animate(10, {\r\n// from: () => currentValue,\r\n// to: () => window.pageYOffset / window.innerHeight,\r\n// timing: Easing.easeInCubic,\r\n// draw: output => {\r\n// currentValue = output;\r\n// document.body.style.setProperty('--vh-factor', `${output}`);\r\n// }\r\n//});\r\n","(function (cc) {\r\n // stop from running again, if accidently included more than once.\r\n if (cc.hasInitialised) return;\r\n\r\n var util = {\r\n // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\r\n escapeRegExp: function (str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\r\n },\r\n\r\n hasClass: function (element, selector) {\r\n var s = ' ';\r\n return element.nodeType === 1 &&\r\n (s + element.className + s).replace(/[\\n\\t]/g, s).indexOf(s + selector + s) >= 0;\r\n },\r\n\r\n addClass: function (element, className) {\r\n element.className += ' ' + className;\r\n },\r\n\r\n removeClass: function (element, className) {\r\n var regex = new RegExp('\\\\b' + this.escapeRegExp(className) + '\\\\b');\r\n element.className = element.className.replace(regex, '');\r\n },\r\n\r\n interpolateString: function (str, callback) {\r\n var marker = /{{([a-z][a-z0-9\\-_]*)}}/ig;\r\n return str.replace(marker, function (matches) {\r\n return callback(arguments[1]) || '';\r\n })\r\n },\r\n\r\n getCookie: function (name) {\r\n var value = '; ' + document.cookie;\r\n var parts = value.split('; ' + name + '=');\r\n return parts.length != 2 ?\r\n undefined : parts.pop().split(';').shift();\r\n },\r\n\r\n setCookie: function (name, value, expiryDays, domain, path) {\r\n var exdate = new Date();\r\n exdate.setDate(exdate.getDate() + (expiryDays || 365));\r\n\r\n var cookie = [\r\n name + '=' + value,\r\n 'expires=' + exdate.toUTCString(),\r\n 'path=' + (path || '/')\r\n ];\r\n\r\n if (domain) {\r\n cookie.push('domain=' + domain);\r\n }\r\n document.cookie = cookie.join(';');\r\n },\r\n\r\n // only used for extending the initial options\r\n deepExtend: function (target, source) {\r\n for (var prop in source) {\r\n if (source.hasOwnProperty(prop)) {\r\n if (prop in target && this.isPlainObject(target[prop]) && this.isPlainObject(source[prop])) {\r\n this.deepExtend(target[prop], source[prop]);\r\n } else {\r\n target[prop] = source[prop];\r\n }\r\n }\r\n }\r\n return target;\r\n },\r\n\r\n // only used for throttling the 'mousemove' event (used for animating the revoke button when `animateRevokable` is true)\r\n throttle: function (callback, limit) {\r\n var wait = false;\r\n return function () {\r\n if (!wait) {\r\n callback.apply(this, arguments);\r\n wait = true;\r\n setTimeout(function () {\r\n wait = false;\r\n }, limit);\r\n }\r\n }\r\n },\r\n\r\n // only used for hashing json objects (used for hash mapping palette objects, used when custom colours are passed through JavaScript)\r\n hash: function (str) {\r\n var hash = 0,\r\n i,\r\n chr,\r\n len;\r\n if (str.length === 0) return hash;\r\n for (i = 0, len = str.length; i < len; ++i) {\r\n chr = str.charCodeAt(i);\r\n hash = (hash << 5) - hash + chr;\r\n hash |= 0;\r\n }\r\n return hash;\r\n },\r\n\r\n normaliseHex: function (hex) {\r\n if (hex[0] == '#') {\r\n hex = hex.substr(1);\r\n }\r\n if (hex.length == 3) {\r\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\r\n }\r\n return hex;\r\n },\r\n\r\n // used to get text colors if not set\r\n getContrast: function (hex) {\r\n hex = this.normaliseHex(hex);\r\n var r = parseInt(hex.substr(0, 2), 16);\r\n var g = parseInt(hex.substr(2, 2), 16);\r\n var b = parseInt(hex.substr(4, 2), 16);\r\n var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;\r\n return (yiq >= 128) ? '#000' : '#fff';\r\n },\r\n\r\n // used to change color on highlight\r\n getLuminance: function (hex) {\r\n var num = parseInt(this.normaliseHex(hex), 16),\r\n amt = 38,\r\n R = (num >> 16) + amt,\r\n B = (num >> 8 & 0x00FF) + amt,\r\n G = (num & 0x0000FF) + amt;\r\n var newColour = (0x1000000 + (R < 255 ? R < 1 ? 0 : R : 255) * 0x10000 + (B < 255 ? B < 1 ? 0 : B : 255) * 0x100 + (G < 255 ? G < 1 ? 0 : G : 255)).toString(16).slice(1);\r\n return '#' + newColour;\r\n },\r\n\r\n isMobile: function () {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n },\r\n\r\n isPlainObject: function (obj) {\r\n // The code \"typeof obj === 'object' && obj !== null\" allows Array objects\r\n return typeof obj === 'object' && obj !== null && obj.constructor == Object;\r\n }\r\n };\r\n\r\n // valid cookie values\r\n cc.status = {\r\n deny: 'deny',\r\n allow: 'allow',\r\n dismiss: 'dismiss'\r\n };\r\n\r\n // detects the `transitionend` event name\r\n cc.transitionEnd = (function () {\r\n var el = document.createElement('div');\r\n var trans = {\r\n t: \"transitionend\",\r\n OT: \"oTransitionEnd\",\r\n msT: \"MSTransitionEnd\",\r\n MozT: \"transitionend\",\r\n WebkitT: \"webkitTransitionEnd\",\r\n };\r\n\r\n for (var prefix in trans) {\r\n if (trans.hasOwnProperty(prefix) && typeof el.style[prefix + 'ransition'] != 'undefined') {\r\n return trans[prefix];\r\n }\r\n }\r\n return '';\r\n }());\r\n\r\n cc.hasTransition = !!cc.transitionEnd;\r\n\r\n // array of valid regexp escaped statuses\r\n var __allowedStatuses = Object.keys(cc.status).map(util.escapeRegExp);\r\n\r\n // contains references to the custom \"\r\n );\r\n\r\n $(\"body\").addClass(\"compensate-for-scrollbar\");\r\n }\r\n }\r\n\r\n // Build html markup and set references\r\n // ====================================\r\n\r\n // Build html code for buttons and insert into main template\r\n buttonStr = \"\";\r\n\r\n $.each(firstItemOpts.buttons, function(index, value) {\r\n buttonStr += firstItemOpts.btnTpl[value] || \"\";\r\n });\r\n\r\n // Create markup from base template, it will be initially hidden to\r\n // avoid unnecessary work like painting while initializing is not complete\r\n $container = $(\r\n self.translate(\r\n self,\r\n firstItemOpts.baseTpl\r\n .replace(\"{{buttons}}\", buttonStr)\r\n .replace(\"{{arrows}}\", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight)\r\n )\r\n )\r\n .attr(\"id\", \"fancybox-container-\" + self.id)\r\n .addClass(\"fancybox-is-hidden\")\r\n .addClass(firstItemOpts.baseClass)\r\n .data(\"FancyBox\", self)\r\n .appendTo(firstItemOpts.parentEl);\r\n\r\n // Create object holding references to jQuery wrapped nodes\r\n self.$refs = {\r\n container: $container\r\n };\r\n\r\n [\"bg\", \"inner\", \"infobar\", \"toolbar\", \"stage\", \"caption\", \"navigation\"].forEach(function(item) {\r\n self.$refs[item] = $container.find(\".fancybox-\" + item);\r\n });\r\n\r\n self.trigger(\"onInit\");\r\n\r\n // Enable events, deactive previous instances\r\n self.activate();\r\n\r\n // Build slides, load and reveal content\r\n self.jumpTo(self.currIndex);\r\n },\r\n\r\n // Simple i18n support - replaces object keys found in template\r\n // with corresponding values\r\n // ============================================================\r\n\r\n translate: function(obj, str) {\r\n var arr = obj.opts.i18n[obj.opts.lang];\r\n\r\n return str.replace(/\\{\\{(\\w+)\\}\\}/g, function(match, n) {\r\n var value = arr[n];\r\n\r\n if (value === undefined) {\r\n return match;\r\n }\r\n\r\n return value;\r\n });\r\n },\r\n\r\n // Populate current group with fresh content\r\n // Check if each object has valid type and content\r\n // ===============================================\r\n\r\n addContent: function(content) {\r\n var self = this,\r\n items = $.makeArray(content),\r\n thumbs;\r\n\r\n $.each(items, function(i, item) {\r\n var obj = {},\r\n opts = {},\r\n $item,\r\n type,\r\n found,\r\n src,\r\n srcParts;\r\n\r\n // Step 1 - Make sure we have an object\r\n // ====================================\r\n\r\n if ($.isPlainObject(item)) {\r\n // We probably have manual usage here, something like\r\n // $.fancybox.open( [ { src : \"image.jpg\", type : \"image\" } ] )\r\n\r\n obj = item;\r\n opts = item.opts || item;\r\n } else if ($.type(item) === \"object\" && $(item).length) {\r\n // Here we probably have jQuery collection returned by some selector\r\n $item = $(item);\r\n\r\n // Support attributes like `data-options='{\"touch\" : false}'` and `data-touch='false'`\r\n opts = $item.data() || {};\r\n opts = $.extend(true, {}, opts, opts.options);\r\n\r\n // Here we store clicked element\r\n opts.$orig = $item;\r\n\r\n obj.src = self.opts.src || opts.src || $item.attr(\"href\");\r\n\r\n // Assume that simple syntax is used, for example:\r\n // `$.fancybox.open( $(\"#test\"), {} );`\r\n if (!obj.type && !obj.src) {\r\n obj.type = \"inline\";\r\n obj.src = item;\r\n }\r\n } else {\r\n // Assume we have a simple html code, for example:\r\n // $.fancybox.open( '

Hi!

' );\r\n obj = {\r\n type: \"html\",\r\n src: item + \"\"\r\n };\r\n }\r\n\r\n // Each gallery object has full collection of options\r\n obj.opts = $.extend(true, {}, self.opts, opts);\r\n\r\n // Do not merge buttons array\r\n if ($.isArray(opts.buttons)) {\r\n obj.opts.buttons = opts.buttons;\r\n }\r\n\r\n // Step 2 - Make sure we have content type, if not - try to guess\r\n // ==============================================================\r\n\r\n type = obj.type || obj.opts.type;\r\n src = obj.src || \"\";\r\n\r\n if (!type && src) {\r\n var mime = {\r\n '.3g2': 'video/3gpp2',\r\n '.3gp': 'video/3gpp',\r\n '.3gp2': 'video/3gpp2',\r\n '.3gpp': 'video/3gpp',\r\n '.m1v': 'video/mpeg',\r\n '.m4a': 'audio/mp4',\r\n '.m4v': 'video/mp4',\r\n '.mov': 'video/quicktime',\r\n '.mp2': 'video/mpeg',\r\n '.mp3': 'audio/mpeg',\r\n '.mp4': 'video/mp4',\r\n '.mp4v': 'video/mp4',\r\n '.mpa': 'video/mpeg',\r\n '.mpe': 'video/mpeg',\r\n '.mpeg': 'video/mpeg',\r\n '.mpg': 'video/mpeg',\r\n '.mpp': 'application/vnd.ms-project',\r\n '.mpv2': 'video/mpeg',\r\n '.oga': 'audio/ogg',\r\n '.ogg': 'video/ogg',\r\n '.ogv': 'video/ogg',\r\n '.qt': 'video/quicktime',\r\n '.webm': 'video/webm',\r\n }\r\n // if ((found = src.match(/\\.(mp4|mov|ogv)((\\?|#).*)?$/i))) {\r\n if ((found = src.match(/\\.(3g2|3gp|3gp2|3gpp|m4v|mp4|mp4v|mp2|mp4|mp4v|mpa|mpe|mpeg|mpg|mpv2|m1v|ogg|ogv|mov|qt|webm)((\\?|#).*)?$/i))) {\r\n type = \"video\";\r\n\r\n if (!obj.opts.videoFormat) {\r\n obj.opts.videoFormat = mime['.' + found[1]];\r\n }\r\n } else if (src.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)) {\r\n type = \"image\";\r\n } else if (src.match(/\\.(pdf)((\\?|#).*)?$/i)) {\r\n type = \"iframe\";\r\n } else if (src.charAt(0) === \"#\") {\r\n type = \"inline\";\r\n }\r\n }\r\n\r\n if (type) {\r\n obj.type = type;\r\n } else {\r\n self.trigger(\"objectNeedsType\", obj);\r\n }\r\n\r\n if (!obj.contentType) {\r\n obj.contentType = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1 ? \"html\" : obj.type;\r\n }\r\n\r\n // Step 3 - Some adjustments\r\n // =========================\r\n\r\n obj.index = self.group.length;\r\n\r\n if (obj.opts.smallBtn == \"auto\") {\r\n obj.opts.smallBtn = $.inArray(obj.type, [\"html\", \"inline\", \"ajax\"]) > -1;\r\n }\r\n\r\n if (obj.opts.toolbar === \"auto\") {\r\n obj.opts.toolbar = !obj.opts.smallBtn;\r\n }\r\n\r\n // Find thumbnail image\r\n if (obj.opts.$trigger && obj.index === self.opts.index) {\r\n obj.opts.$thumb = obj.opts.$trigger.find(\"img:first\");\r\n }\r\n\r\n if ((!obj.opts.$thumb || !obj.opts.$thumb.length) && obj.opts.$orig) {\r\n obj.opts.$thumb = obj.opts.$orig.find(\"img:first\");\r\n }\r\n\r\n // \"caption\" is a \"special\" option, it can be used to customize caption per gallery item ..\r\n if ($.type(obj.opts.caption) === \"function\") {\r\n obj.opts.caption = obj.opts.caption.apply(item, [self, obj]);\r\n }\r\n\r\n if ($.type(self.opts.caption) === \"function\") {\r\n obj.opts.caption = self.opts.caption.apply(item, [self, obj]);\r\n }\r\n\r\n // Make sure we have caption as a string or jQuery object\r\n if (!(obj.opts.caption instanceof $)) {\r\n obj.opts.caption = obj.opts.caption === undefined ? \"\" : obj.opts.caption + \"\";\r\n }\r\n\r\n // Check if url contains \"filter\" used to filter the content\r\n // Example: \"ajax.html #something\"\r\n if (obj.type === \"ajax\") {\r\n srcParts = src.split(/\\s+/, 2);\r\n\r\n if (srcParts.length > 1) {\r\n obj.src = srcParts.shift();\r\n\r\n obj.opts.filter = srcParts.shift();\r\n }\r\n }\r\n\r\n // Hide all buttons and disable interactivity for modal items\r\n if (obj.opts.modal) {\r\n obj.opts = $.extend(true, obj.opts, {\r\n // Remove buttons\r\n infobar: 0,\r\n toolbar: 0,\r\n\r\n smallBtn: 0,\r\n\r\n // Disable keyboard navigation\r\n keyboard: 0,\r\n\r\n // Disable some modules\r\n slideShow: 0,\r\n fullScreen: 0,\r\n thumbs: 0,\r\n touch: 0,\r\n\r\n // Disable click event handlers\r\n clickContent: false,\r\n clickSlide: false,\r\n clickOutside: false,\r\n dblclickContent: false,\r\n dblclickSlide: false,\r\n dblclickOutside: false\r\n });\r\n }\r\n\r\n // Step 4 - Add processed object to group\r\n // ======================================\r\n\r\n self.group.push(obj);\r\n });\r\n\r\n // Update controls if gallery is already opened\r\n if (Object.keys(self.slides).length) {\r\n self.updateControls();\r\n\r\n // Update thumbnails, if needed\r\n thumbs = self.Thumbs;\r\n\r\n if (thumbs && thumbs.isActive) {\r\n thumbs.create();\r\n\r\n thumbs.focus();\r\n }\r\n }\r\n },\r\n\r\n // Attach an event handler functions for:\r\n // - navigation buttons\r\n // - browser scrolling, resizing;\r\n // - focusing\r\n // - keyboard\r\n // - detect idle\r\n // ======================================\r\n\r\n addEvents: function() {\r\n var self = this;\r\n\r\n self.removeEvents();\r\n\r\n // Make navigation elements clickable\r\n self.$refs.container\r\n .on(\"click.fb-close\", \"[data-fancybox-close]\", function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.close(e);\r\n })\r\n .on(\"touchstart.fb-prev click.fb-prev\", \"[data-fancybox-prev]\", function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.previous();\r\n })\r\n .on(\"touchstart.fb-next click.fb-next\", \"[data-fancybox-next]\", function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n self.next();\r\n })\r\n .on(\"click.fb\", \"[data-fancybox-zoom]\", function(e) {\r\n // Click handler for zoom button\r\n self[self.isScaledDown() ? \"scaleToActual\" : \"scaleToFit\"]();\r\n });\r\n\r\n // Handle page scrolling and browser resizing\r\n $W.on(\"orientationchange.fb resize.fb\", function(e) {\r\n if (e && e.originalEvent && e.originalEvent.type === \"resize\") {\r\n requestAFrame(function() {\r\n self.update();\r\n });\r\n } else {\r\n self.$refs.stage.hide();\r\n\r\n setTimeout(function() {\r\n self.$refs.stage.show();\r\n\r\n self.update();\r\n }, $.fancybox.isMobile ? 600 : 250);\r\n }\r\n });\r\n\r\n // Trap keyboard focus inside of the modal, so the user does not accidentally tab outside of the modal\r\n // (a.k.a. \"escaping the modal\")\r\n $D.on(\"focusin.fb\", function(e) {\r\n var instance = $.fancybox ? $.fancybox.getInstance() : null;\r\n\r\n if (\r\n instance.isClosing ||\r\n !instance.current ||\r\n !instance.current.opts.trapFocus ||\r\n $(e.target).hasClass(\"fancybox-container\") ||\r\n $(e.target).is(document)\r\n ) {\r\n return;\r\n }\r\n\r\n if (instance && $(e.target).css(\"position\") !== \"fixed\" && !instance.$refs.container.has(e.target).length) {\r\n e.stopPropagation();\r\n\r\n instance.focus();\r\n }\r\n });\r\n\r\n // Enable keyboard navigation\r\n $D.on(\"keydown.fb\", function(e) {\r\n var current = self.current,\r\n keycode = e.keyCode || e.which;\r\n\r\n if (!current || !current.opts.keyboard) {\r\n return;\r\n }\r\n\r\n if (e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is(\"input\") || $(e.target).is(\"textarea\")) {\r\n return;\r\n }\r\n\r\n // Backspace and Esc keys\r\n if (keycode === 8 || keycode === 27) {\r\n e.preventDefault();\r\n\r\n self.close(e);\r\n\r\n return;\r\n }\r\n\r\n // Left arrow and Up arrow\r\n if (keycode === 37 || keycode === 38) {\r\n e.preventDefault();\r\n\r\n self.previous();\r\n\r\n return;\r\n }\r\n\r\n // Righ arrow and Down arrow\r\n if (keycode === 39 || keycode === 40) {\r\n e.preventDefault();\r\n\r\n self.next();\r\n\r\n return;\r\n }\r\n\r\n self.trigger(\"afterKeydown\", e, keycode);\r\n });\r\n\r\n // Hide controls after some inactivity period\r\n if (self.group[self.currIndex].opts.idleTime) {\r\n self.idleSecondsCounter = 0;\r\n\r\n $D.on(\r\n \"mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle\",\r\n function(e) {\r\n self.idleSecondsCounter = 0;\r\n\r\n if (self.isIdle) {\r\n self.showControls();\r\n }\r\n\r\n self.isIdle = false;\r\n }\r\n );\r\n\r\n self.idleInterval = window.setInterval(function() {\r\n self.idleSecondsCounter++;\r\n\r\n if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) {\r\n self.isIdle = true;\r\n self.idleSecondsCounter = 0;\r\n\r\n self.hideControls();\r\n }\r\n }, 1000);\r\n }\r\n },\r\n\r\n // Remove events added by the core\r\n // ===============================\r\n\r\n removeEvents: function() {\r\n var self = this;\r\n\r\n $W.off(\"orientationchange.fb resize.fb\");\r\n $D.off(\"focusin.fb keydown.fb .fb-idle\");\r\n\r\n this.$refs.container.off(\".fb-close .fb-prev .fb-next\");\r\n\r\n if (self.idleInterval) {\r\n window.clearInterval(self.idleInterval);\r\n\r\n self.idleInterval = null;\r\n }\r\n },\r\n\r\n // Change to previous gallery item\r\n // ===============================\r\n\r\n previous: function(duration) {\r\n return this.jumpTo(this.currPos - 1, duration);\r\n },\r\n\r\n // Change to next gallery item\r\n // ===========================\r\n\r\n next: function(duration) {\r\n return this.jumpTo(this.currPos + 1, duration);\r\n },\r\n\r\n // Switch to selected gallery item\r\n // ===============================\r\n\r\n jumpTo: function(pos, duration) {\r\n var self = this,\r\n groupLen = self.group.length,\r\n firstRun,\r\n loop,\r\n current,\r\n previous,\r\n canvasWidth,\r\n currentPos,\r\n transitionProps;\r\n\r\n if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) {\r\n return;\r\n }\r\n\r\n pos = parseInt(pos, 10);\r\n\r\n // Should loop?\r\n loop = self.current ? self.current.opts.loop : self.opts.loop;\r\n\r\n if (!loop && (pos < 0 || pos >= groupLen)) {\r\n return false;\r\n }\r\n\r\n firstRun = self.firstRun = !Object.keys(self.slides).length;\r\n\r\n if (groupLen < 2 && !firstRun && !!self.isDragging) {\r\n return;\r\n }\r\n\r\n previous = self.current;\r\n\r\n self.prevIndex = self.currIndex;\r\n self.prevPos = self.currPos;\r\n\r\n // Create slides\r\n current = self.createSlide(pos);\r\n\r\n if (groupLen > 1) {\r\n if (loop || current.index > 0) {\r\n self.createSlide(pos - 1);\r\n }\r\n\r\n if (loop || current.index < groupLen - 1) {\r\n self.createSlide(pos + 1);\r\n }\r\n }\r\n\r\n self.current = current;\r\n self.currIndex = current.index;\r\n self.currPos = current.pos;\r\n\r\n self.trigger(\"beforeShow\", firstRun);\r\n\r\n self.updateControls();\r\n\r\n currentPos = $.fancybox.getTranslate(current.$slide);\r\n\r\n current.isMoved = (currentPos.left !== 0 || currentPos.top !== 0) && !current.$slide.hasClass(\"fancybox-animated\");\r\n\r\n // Validate duration length\r\n current.forcedDuration = undefined;\r\n\r\n if ($.isNumeric(duration)) {\r\n current.forcedDuration = duration;\r\n } else {\r\n duration = current.opts[firstRun ? \"animationDuration\" : \"transitionDuration\"];\r\n }\r\n\r\n duration = parseInt(duration, 10);\r\n\r\n // Fresh start - reveal container, current slide and start loading content\r\n if (firstRun) {\r\n if (current.opts.animationEffect && duration) {\r\n self.$refs.container.css(\"transition-duration\", duration + \"ms\");\r\n }\r\n\r\n self.$refs.container.removeClass(\"fancybox-is-hidden\");\r\n\r\n forceRedraw(self.$refs.container);\r\n\r\n self.$refs.container.addClass(\"fancybox-is-open\");\r\n\r\n forceRedraw(self.$refs.container);\r\n\r\n // Make current slide visible\r\n current.$slide.addClass(\"fancybox-slide--previous\");\r\n\r\n // Attempt to load content into slide;\r\n // at this point image would start loading, but inline/html content would load immediately\r\n self.loadSlide(current);\r\n\r\n current.$slide.removeClass(\"fancybox-slide--previous\").addClass(\"fancybox-slide--current\");\r\n\r\n self.preload(\"image\");\r\n\r\n return;\r\n }\r\n\r\n // Clean up\r\n $.each(self.slides, function(index, slide) {\r\n $.fancybox.stop(slide.$slide);\r\n });\r\n\r\n // Make current that slide is visible even if content is still loading\r\n current.$slide.removeClass(\"fancybox-slide--next fancybox-slide--previous\").addClass(\"fancybox-slide--current\");\r\n\r\n // If slides have been dragged, animate them to correct position\r\n if (current.isMoved) {\r\n canvasWidth = Math.round(current.$slide.width());\r\n\r\n $.each(self.slides, function(index, slide) {\r\n var pos = slide.pos - current.pos;\r\n\r\n $.fancybox.animate(\r\n slide.$slide,\r\n {\r\n top: 0,\r\n left: pos * canvasWidth + pos * slide.opts.gutter\r\n },\r\n duration,\r\n function() {\r\n slide.$slide.removeAttr(\"style\").removeClass(\"fancybox-slide--next fancybox-slide--previous\");\r\n\r\n if (slide.pos === self.currPos) {\r\n current.isMoved = false;\r\n\r\n self.complete();\r\n }\r\n }\r\n );\r\n });\r\n } else {\r\n self.$refs.stage.children().removeAttr(\"style\");\r\n }\r\n\r\n // Start transition that reveals current content\r\n // or wait when it will be loaded\r\n\r\n if (current.isLoaded) {\r\n self.revealContent(current);\r\n } else {\r\n self.loadSlide(current);\r\n }\r\n\r\n self.preload(\"image\");\r\n\r\n if (previous.pos === current.pos) {\r\n return;\r\n }\r\n\r\n // Handle previous slide\r\n // =====================\r\n\r\n transitionProps = \"fancybox-slide--\" + (previous.pos > current.pos ? \"next\" : \"previous\");\r\n\r\n previous.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous\");\r\n\r\n previous.isComplete = false;\r\n\r\n if (!duration || (!current.isMoved && !current.opts.transitionEffect)) {\r\n return;\r\n }\r\n\r\n if (current.isMoved) {\r\n previous.$slide.addClass(transitionProps);\r\n } else {\r\n transitionProps = \"fancybox-animated \" + transitionProps + \" fancybox-fx-\" + current.opts.transitionEffect;\r\n\r\n $.fancybox.animate(previous.$slide, transitionProps, duration, function() {\r\n previous.$slide.removeClass(transitionProps).removeAttr(\"style\");\r\n });\r\n }\r\n },\r\n\r\n // Create new \"slide\" element\r\n // These are gallery items that are actually added to DOM\r\n // =======================================================\r\n\r\n createSlide: function(pos) {\r\n var self = this,\r\n $slide,\r\n index;\r\n\r\n index = pos % self.group.length;\r\n index = index < 0 ? self.group.length + index : index;\r\n\r\n if (!self.slides[pos] && self.group[index]) {\r\n $slide = $('
').appendTo(self.$refs.stage);\r\n\r\n self.slides[pos] = $.extend(true, {}, self.group[index], {\r\n pos: pos,\r\n $slide: $slide,\r\n isLoaded: false\r\n });\r\n\r\n self.updateSlide(self.slides[pos]);\r\n }\r\n\r\n return self.slides[pos];\r\n },\r\n\r\n // Scale image to the actual size of the image;\r\n // x and y values should be relative to the slide\r\n // ==============================================\r\n\r\n scaleToActual: function(x, y, duration) {\r\n var self = this,\r\n current = self.current,\r\n $content = current.$content,\r\n canvasWidth = $.fancybox.getTranslate(current.$slide).width,\r\n canvasHeight = $.fancybox.getTranslate(current.$slide).height,\r\n newImgWidth = current.width,\r\n newImgHeight = current.height,\r\n imgPos,\r\n posX,\r\n posY,\r\n scaleX,\r\n scaleY;\r\n\r\n if (self.isAnimating || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n return;\r\n }\r\n\r\n $.fancybox.stop($content);\r\n\r\n self.isAnimating = true;\r\n\r\n x = x === undefined ? canvasWidth * 0.5 : x;\r\n y = y === undefined ? canvasHeight * 0.5 : y;\r\n\r\n imgPos = $.fancybox.getTranslate($content);\r\n\r\n imgPos.top -= $.fancybox.getTranslate(current.$slide).top;\r\n imgPos.left -= $.fancybox.getTranslate(current.$slide).left;\r\n\r\n scaleX = newImgWidth / imgPos.width;\r\n scaleY = newImgHeight / imgPos.height;\r\n\r\n // Get center position for original image\r\n posX = canvasWidth * 0.5 - newImgWidth * 0.5;\r\n posY = canvasHeight * 0.5 - newImgHeight * 0.5;\r\n\r\n // Make sure image does not move away from edges\r\n if (newImgWidth > canvasWidth) {\r\n posX = imgPos.left * scaleX - (x * scaleX - x);\r\n\r\n if (posX > 0) {\r\n posX = 0;\r\n }\r\n\r\n if (posX < canvasWidth - newImgWidth) {\r\n posX = canvasWidth - newImgWidth;\r\n }\r\n }\r\n\r\n if (newImgHeight > canvasHeight) {\r\n posY = imgPos.top * scaleY - (y * scaleY - y);\r\n\r\n if (posY > 0) {\r\n posY = 0;\r\n }\r\n\r\n if (posY < canvasHeight - newImgHeight) {\r\n posY = canvasHeight - newImgHeight;\r\n }\r\n }\r\n\r\n self.updateCursor(newImgWidth, newImgHeight);\r\n\r\n $.fancybox.animate(\r\n $content,\r\n {\r\n top: posY,\r\n left: posX,\r\n scaleX: scaleX,\r\n scaleY: scaleY\r\n },\r\n duration || 330,\r\n function() {\r\n self.isAnimating = false;\r\n }\r\n );\r\n\r\n // Stop slideshow\r\n if (self.SlideShow && self.SlideShow.isActive) {\r\n self.SlideShow.stop();\r\n }\r\n },\r\n\r\n // Scale image to fit inside parent element\r\n // ========================================\r\n\r\n scaleToFit: function(duration) {\r\n var self = this,\r\n current = self.current,\r\n $content = current.$content,\r\n end;\r\n\r\n if (self.isAnimating || !$content || !(current.type == \"image\" && current.isLoaded && !current.hasError)) {\r\n return;\r\n }\r\n\r\n $.fancybox.stop($content);\r\n\r\n self.isAnimating = true;\r\n\r\n end = self.getFitPos(current);\r\n\r\n self.updateCursor(end.width, end.height);\r\n\r\n $.fancybox.animate(\r\n $content,\r\n {\r\n top: end.top,\r\n left: end.left,\r\n scaleX: end.width / $content.width(),\r\n scaleY: end.height / $content.height()\r\n },\r\n duration || 330,\r\n function() {\r\n self.isAnimating = false;\r\n }\r\n );\r\n },\r\n\r\n // Calculate image size to fit inside viewport\r\n // ===========================================\r\n\r\n getFitPos: function(slide) {\r\n var self = this,\r\n $content = slide.$content,\r\n width = slide.width || slide.opts.width,\r\n height = slide.height || slide.opts.height,\r\n maxWidth,\r\n maxHeight,\r\n minRatio,\r\n margin,\r\n aspectRatio,\r\n rez = {};\r\n\r\n if (!slide.isLoaded || !$content || !$content.length) {\r\n return false;\r\n }\r\n\r\n margin = {\r\n top: parseInt(slide.$slide.css(\"paddingTop\"), 10),\r\n right: parseInt(slide.$slide.css(\"paddingRight\"), 10),\r\n bottom: parseInt(slide.$slide.css(\"paddingBottom\"), 10),\r\n left: parseInt(slide.$slide.css(\"paddingLeft\"), 10)\r\n };\r\n\r\n // We can not use $slide width here, because it can have different diemensions while in transiton\r\n maxWidth = parseInt(self.$refs.stage.width(), 10) - (margin.left + margin.right);\r\n maxHeight = parseInt(self.$refs.stage.height(), 10) - (margin.top + margin.bottom);\r\n\r\n if (!width || !height) {\r\n width = maxWidth;\r\n height = maxHeight;\r\n }\r\n\r\n minRatio = Math.min(1, maxWidth / width, maxHeight / height);\r\n\r\n // Use floor rounding to make sure it really fits\r\n width = Math.floor(minRatio * width);\r\n height = Math.floor(minRatio * height);\r\n\r\n if (slide.type === \"image\") {\r\n rez.top = Math.floor((maxHeight - height) * 0.5) + margin.top;\r\n rez.left = Math.floor((maxWidth - width) * 0.5) + margin.left;\r\n } else if (slide.contentType === \"video\") {\r\n // Force aspect ratio for the video\r\n // \"I say the whole world must learn of our peaceful ways… by force!\"\r\n aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9;\r\n\r\n if (height > width / aspectRatio) {\r\n height = width / aspectRatio;\r\n } else if (width > height * aspectRatio) {\r\n width = height * aspectRatio;\r\n }\r\n }\r\n\r\n rez.width = width;\r\n rez.height = height;\r\n\r\n return rez;\r\n },\r\n\r\n // Update content size and position for all slides\r\n // ==============================================\r\n\r\n update: function() {\r\n var self = this;\r\n\r\n $.each(self.slides, function(key, slide) {\r\n self.updateSlide(slide);\r\n });\r\n },\r\n\r\n // Update slide content position and size\r\n // ======================================\r\n\r\n updateSlide: function(slide, duration) {\r\n var self = this,\r\n $content = slide && slide.$content,\r\n width = slide.width || slide.opts.width,\r\n height = slide.height || slide.opts.height;\r\n\r\n if ($content && (width || height || slide.contentType === \"video\") && !slide.hasError) {\r\n $.fancybox.stop($content);\r\n\r\n $.fancybox.setTranslate($content, self.getFitPos(slide));\r\n\r\n if (slide.pos === self.currPos) {\r\n self.isAnimating = false;\r\n\r\n self.updateCursor();\r\n }\r\n }\r\n\r\n slide.$slide.trigger(\"refresh\");\r\n\r\n self.$refs.toolbar.toggleClass(\"compensate-for-scrollbar\", slide.$slide.get(0).scrollHeight > slide.$slide.get(0).clientHeight);\r\n\r\n self.trigger(\"onUpdate\", slide);\r\n },\r\n\r\n // Horizontally center slide\r\n // =========================\r\n\r\n centerSlide: function(slide, duration) {\r\n var self = this,\r\n canvasWidth,\r\n pos;\r\n\r\n if (self.current) {\r\n canvasWidth = Math.round(slide.$slide.width());\r\n pos = slide.pos - self.current.pos;\r\n\r\n $.fancybox.animate(\r\n slide.$slide,\r\n {\r\n top: 0,\r\n left: pos * canvasWidth + pos * slide.opts.gutter,\r\n opacity: 1\r\n },\r\n duration === undefined ? 0 : duration,\r\n null,\r\n false\r\n );\r\n }\r\n },\r\n\r\n // Update cursor style depending if content can be zoomed\r\n // ======================================================\r\n\r\n updateCursor: function(nextWidth, nextHeight) {\r\n var self = this,\r\n current = self.current,\r\n $container = self.$refs.container.removeClass(\"fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut\"),\r\n isZoomable;\r\n\r\n if (!current || self.isClosing) {\r\n return;\r\n }\r\n\r\n isZoomable = self.isZoomable();\r\n\r\n $container.toggleClass(\"fancybox-is-zoomable\", isZoomable);\r\n\r\n $(\"[data-fancybox-zoom]\").prop(\"disabled\", !isZoomable);\r\n\r\n // Set cursor to zoom in/out if click event is 'zoom'\r\n if (\r\n isZoomable &&\r\n (current.opts.clickContent === \"zoom\" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) === \"zoom\"))\r\n ) {\r\n if (self.isScaledDown(nextWidth, nextHeight)) {\r\n // If image is scaled down, then, obviously, it can be zoomed to full size\r\n $container.addClass(\"fancybox-can-zoomIn\");\r\n } else {\r\n if (current.opts.touch) {\r\n // If image size ir largen than available available and touch module is not disable,\r\n // then user can do panning\r\n $container.addClass(\"fancybox-can-drag\");\r\n } else {\r\n $container.addClass(\"fancybox-can-zoomOut\");\r\n }\r\n }\r\n } else if (current.opts.touch && current.contentType !== \"video\") {\r\n $container.addClass(\"fancybox-can-drag\");\r\n }\r\n },\r\n\r\n // Check if current slide is zoomable\r\n // ==================================\r\n\r\n isZoomable: function() {\r\n var self = this,\r\n current = self.current,\r\n fitPos;\r\n\r\n // Assume that slide is zoomable if:\r\n // - image is still loading\r\n // - actual size of the image is smaller than available area\r\n if (current && !self.isClosing && current.type === \"image\" && !current.hasError) {\r\n if (!current.isLoaded) {\r\n return true;\r\n }\r\n\r\n fitPos = self.getFitPos(current);\r\n\r\n if (current.width > fitPos.width || current.height > fitPos.height) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n\r\n // Check if current image dimensions are smaller than actual\r\n // =========================================================\r\n\r\n isScaledDown: function(nextWidth, nextHeight) {\r\n var self = this,\r\n rez = false,\r\n current = self.current,\r\n $content = current.$content;\r\n\r\n if (nextWidth !== undefined && nextHeight !== undefined) {\r\n rez = nextWidth < current.width && nextHeight < current.height;\r\n } else if ($content) {\r\n rez = $.fancybox.getTranslate($content);\r\n rez = rez.width < current.width && rez.height < current.height;\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n // Check if image dimensions exceed parent element\r\n // ===============================================\r\n\r\n canPan: function() {\r\n var self = this,\r\n rez = false,\r\n current = self.current,\r\n $content;\r\n\r\n if (current.type === \"image\" && ($content = current.$content) && !current.hasError) {\r\n rez = self.getFitPos(current);\r\n rez = Math.abs($content.width() - rez.width) > 1 || Math.abs($content.height() - rez.height) > 1;\r\n }\r\n\r\n return rez;\r\n },\r\n\r\n // Load content into the slide\r\n // ===========================\r\n\r\n loadSlide: function(slide) {\r\n var self = this,\r\n type,\r\n $slide,\r\n ajaxLoad;\r\n\r\n if (slide.isLoading || slide.isLoaded) {\r\n return;\r\n }\r\n\r\n slide.isLoading = true;\r\n\r\n self.trigger(\"beforeLoad\", slide);\r\n\r\n type = slide.type;\r\n $slide = slide.$slide;\r\n\r\n $slide\r\n .off(\"refresh\")\r\n .trigger(\"onReset\")\r\n .addClass(slide.opts.slideClass);\r\n\r\n // Create content depending on the type\r\n switch (type) {\r\n case \"image\":\r\n self.setImage(slide);\r\n\r\n break;\r\n\r\n case \"iframe\":\r\n self.setIframe(slide);\r\n\r\n break;\r\n\r\n case \"html\":\r\n self.setContent(slide, slide.src || slide.content);\r\n\r\n break;\r\n\r\n case \"video\":\r\n self.setContent(\r\n slide,\r\n '