{"version":3,"sources":["webpack:///./node_modules/lazyload/lazyload.js","webpack:///./resources/js/site/global/scrollHandler.js","webpack:///./node_modules/process/browser.js","webpack:///./resources/js/site/components/shareButtonsHandler.js","webpack:///./resources/js/site/components/heroSliderHandler.js","webpack:///./resources/js/site/components/overlayMenuHandler.js","webpack:///./resources/js/site/components/youtubeHandler.js","webpack:///./resources/js/site/components/imageRackHandler.js","webpack:///./resources/js/site/components/scrollToHandler.js","webpack:///./resources/js/global/polyfills/promise.js","webpack:///./resources/js/global/polyfills/isInteger.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///(webpack)/buildin/module.js","webpack:///./resources/js/site/components/mapsHandler.js","webpack:///./resources/js/site/components/chocolateFactory.js","webpack:///./resources/js/site/components/projectorHandler.js","webpack:///./resources/js/site/app.js","webpack:///./resources/js/site/global/browserHandler.js","webpack:///./resources/js/global/polyfills/symbol-es6.min.js","webpack:///./resources/js/site/global/helpers.js","webpack:///(webpack)/buildin/global.js","webpack:///./resources/js/site/components/cookieHandler.js"],"names":["root","global","this","window","module","exports","defaults","src","srcset","selector","rootMargin","threshold","extend","extended","deep","i","length","arguments","Object","prototype","toString","call","merge","obj","prop","hasOwnProperty","LazyLoad","images","options","settings","document","querySelectorAll","observer","init","IntersectionObserver","loadImages","self","observerConfig","entries","Array","forEach","entry","isIntersecting","unobserve","target","getAttribute","tagName","toLowerCase","style","backgroundImage","image","observe","loadAndDestroy","destroy","disconnect","lazyload","jQuery","$","fn","attribute","makeArray","factory","ScrollHandler","time","Date","now","timeout","waitThrottle","waitDebounce","lastScrollTopPosition","scrollDirectionDown","scrollDirectionUp","triggerOnInit","addEventListener","triggerThrottle","triggerSmooth","isset","clearTimeout","setTimeout","triggerDebounce","triggerElementInViewportAnimation","detectScrollDirection","toggleStickyHeader","detectIfElementIsPartlyInViewport","el","rect","getBoundingClientRect","windowHeight","innerHeight","documentElement","clientHeight","windowWidth","innerWidth","clientWidth","verticalInView","top","height","horizontalInView","left","width","detectIfElementIsFullyInViewport","bottom","scrollTopPosition","pageYOffset","scrollTop","Math","abs","elements","elementsLength","e","element","classList","remove","stickyHeader","querySelector","hidden","body","add","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","push","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","ShareButtonsHandler","shareButtonsElement","shareMessageElement","shareMessage","getElementById","convertShareMessageToObject","items","buttons","buttonsLength","button","item","social","functionName","capitalizeFirstLetter","console","log","messageObject","attributes","attributesLength","attributeName","replace","snakeToCamel","value","clickFacebookButton","FB","ui","method","mobile_iframe","href","url","response","clickTwitterButton","open","encodeName","encodeUrl","clickLinkedinButton","encodeSummary","clickMailButton","clickLinkButton","select","copyToClipboard","flashMessage","Sliders","sliderContainers","sliderContainersLength","sliderId","Slidersetting","SliderSetting","slideQuery","navigationButtons","dots","Slider","prepareParameters","settingsObject","definedPreviousNext","autoSlider","sliderInterval","setSliderId","string","setDefinedPreviousNext","boolean","setAutoSlider","setSliderInterval","integer","setSlideQuery","setNavigationButtons","setDots","getSliderId","getDefinedPreviousNext","getAutoSlider","getSliderInterval","getSlideQuery","getNavigationButtons","getDots","fill","settingsObjectKeys","keys","settingsObjectLength","key","sliderObject","activeSlideId","previousSlideId","nextSlideId","availableSlides","slides","autoSliderInterval","setPreviousAndNextSlide","setSlide","swipeGestures","Hammer","resetAutoSlider","nextSlide","previousSlide","navigationButtonsLength","clickNavigationButton","dotsLength","clickDot","clearInterval","Number","isInteger","setInterval","slidesLength","slide","pointerEvents","slideOrder","parseInt","setActiveDot","navButton","next","previous","setAttribute","clickedDot","dot","dotOrder","tabIndex","bodyScrollLock","require","OverlayMenuHandler","overlayMenuTriggerList","overlayMenuTriggerListCount","overlayMenuTrigger","initOverlayMenu","toggleOverlayMenu","event","overlayMenuNav","enableBodyScroll","contains","elem","disableBodyScroll","toggle","YoutubeHandler","youtubeClass","players","youtubePlayers","youtubePlayersAmount","youtubePlayer","youtubeElement","id","link","autoPlay","initYoutube","YT","Player","onYouTubePlayerAPIReady","loadPlayers","getScript","player","videoId","host","playerVars","modestbranding","rel","disablekb","autoplay","events","onStateChange","onReady","playerContainerId","getIframe","data","PlayerState","ENDED","playVideo","ImageRackHandler","imageRackElements","imageRackElementsLength","ImageRack","imageRack","rack","slideArea","imageLoaded","currentItem","maxItemPosition","maxTranslated","offset","previousButton","nextButton","calculateSteps","previousItem","setImageRack","nextItem","swipeLeft","swipeRight","debounceTimeout","bodyOffset","availableViewArea","offsetWidth","rackWidth","offsetLeft","maxItemCalculated","imagesLoaded","offsetFromLeftSide","warn","nextOffsetPosition","transform","ScrollToHandler","duration","start","change","currentTime","allowAnimation","scrollToAnimation","easing","anchorLinks","anchorLinksAmount","prepareScrollTo","preventDefault","elementId","substr","indexOf","scrollToElementPosition","max","startTime","performance","getTime","requestAnimationFrame","animateScroll","abortScrollAnimation","timestamp","progress","min","EasingFunctions","newScrollTop","cancelAnimationFrame","finallyConstructor","callback","constructor","then","resolve","reason","reject","setTimeoutFunc","Promise","TypeError","_state","_handled","_value","undefined","_deferreds","doResolve","handle","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","promise","newValue","finale","thisArg","_unhandledRejectionFn","Handler","done","ex","prom","all","arr","slice","remaining","res","val","race","values","setImmediate","err","globalNS","define","isFinite","floor","Function","Timeout","clearFn","_id","_clearFn","scope","close","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","registerImmediate","html","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","createElement","script","onreadystatechange","removeChild","appendChild","random","source","attachEvent","task","webpackPolyfill","deprecate","paths","children","defineProperty","enumerable","get","l","MapsHandler","maps","map","hasAttribute","lat","parseFloat","lng","node","location","styles","setCustomStyling","google","drawMaps","googleMap","Map","zoom","center","disableDefaultUI","Marker","position","icon","ChocolateFactory","bannedVisitor","enter","chocolateFactories","amountOfChocolateFactories","ChocolateBar","_flashTicket","chocolateBar","goldenTicket","enjoyTheTour","chocolateFactory","tourGroup","oompaLoompas","amountOfOompaLoompas","tourGroupSize","visitor","visitorName","_isVisitorBanned","_getArrangement","_finishTour","nodeName","group","_addWillieWonka","Ajax","post","HttpRequest","JSON","parse","status","_thanksForVisiting","redirectUrl","_giveFeedbackToMembers","errors","_unknownGapInFactory","_willie","feedbackArea","innerHTML","_clearPreviousMarkedJackets","jacket","visitorFeedbackArea","visitorNode","_grabVisitorJacket","visitorFeedback","visitorFeedbackAmount","visitorFeedbackLine","currentFeedbackArea","markedJackets","markedJacketsAmount","currentLayer","safetyBreak","parentNode","nextStop","projectors","projectorContainers","projectorContainersLength","projectorId","projectorSetting","ProjectorSetting","autoSlide","Projector","captions","setProjectorId","setAutoSlide","setCaptions","getProjectorId","getAutoSlide","getCaptions","autoSlideInterval","resetAutoSlide","setActiveCaption","captionsLength","caption","captionOrder","BrowserHandler","userAgent","browserInfo","navigator","getBrowserInfo","handleIE","handleSafari","msie","ielt11","ie11","match","substring","getElementsByTagName","tem","ua","M","test","exec","appName","appVersion","splice","defineProperties","symbolHiddenCounter","globalSymbolRegistry","ES6","isArray","objectToString","emptyFunction","simpleFunction","arg","isCallable","Iterator","ArrayIterator","flag","_array","_flag","_nextIndex","StringIterator","_string","isObject","appendArray","array1","array2","length1","length2","simpleInheritance","child","parent","create","Symbol","desc","String","symbol","_description","_isSymbol","setupSymbolInternals","for","record","registryLength","writable","configurable","keyFor","isSymbol","hasInstance","isConcatSpreadable","iterator","toStringTag","valueOf","nextValue","stringObject","SpreadOperatorImpl","_target","_values","_thisArg","spread","iterable","forOf","temp","returnValue","instanceOf","object","hasInstanceSymbolProp","iterationResult","spreadOperator","instance","targets","outputs","unshift","arrayLike","mapFn","linear","t","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","async","scripts","prior","onload","_","isAbort","readyState","insertBefore","debounce","func","wait","immediate","context","later","callNow","Cookie","set","days","domain","domainParts","date","expires","setTime","toGMTString","split","cookie","shift","join","nameEQ","ca","c","charAt","erase","number_format","number","decimals","dec_point","thousands_sep","n","prec","sep","dec","s","k","pow","round","toFixedFix","Element","closest","matches","msMatchesSelector","webkitMatchesSelector","ancestor","parentElement","xhr","XMLHttpRequest","token","content","setRequestHeader","send","stringify","toUpperCase","m","indexInParent","childNodes","num","nodeType","editable","contentEditable","readOnly","range","createRange","selectNodeContents","selection","getSelection","removeAllRanges","addRange","setSelectionRange","execCommand","scrollLeft","pageXOffset","g","CookieHandler","cookieBar","cookieOverlay","cookieMessage","cookieSwitch","cookieFadeOutAnimationDuration","acceptTracking","initCookieBar","initCookieOverlay","checkForCookieSettings","initCookieSwitch","closeButton","closeCookieMessage","openCookieSettingsButton","openCookieSettings","toggleTrackingInput","checked","toggleTrackingSetting","acceptButton","setCookieSettings","saveButton","reload"],"mappings":"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","file":"/js/site/app.js","sourcesContent":["/*!\n * Lazy Load - JavaScript plugin for lazy loading images\n *\n * Copyright (c) 2007-2019 Mika Tuupola\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n * Project home:\n * https://appelsiini.net/projects/lazyload\n *\n * Version: 2.0.0-rc.2\n *\n */\n\n(function (root, factory) {\n if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else if (typeof define === \"function\" && define.amd) {\n define([], factory);\n } else {\n root.LazyLoad = factory(root);\n }\n}) (typeof global !== \"undefined\" ? global : this.window || this.global, function (root) {\n\n \"use strict\";\n\n if (typeof define === \"function\" && define.amd){\n root = window;\n }\n\n const defaults = {\n src: \"data-src\",\n srcset: \"data-srcset\",\n selector: \".lazyload\",\n root: null,\n rootMargin: \"0px\",\n threshold: 0\n };\n\n /**\n * Merge two or more objects. Returns a new object.\n * @private\n * @param {Boolean} deep If true, do a deep (or recursive) merge [optional]\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n const extend = function () {\n\n let extended = {};\n let deep = false;\n let i = 0;\n let length = arguments.length;\n\n /* Check if a deep merge */\n if (Object.prototype.toString.call(arguments[0]) === \"[object Boolean]\") {\n deep = arguments[0];\n i++;\n }\n\n /* Merge the object into the extended object */\n let merge = function (obj) {\n for (let prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n /* If deep merge and property is an object, merge properties */\n if (deep && Object.prototype.toString.call(obj[prop]) === \"[object Object]\") {\n extended[prop] = extend(true, extended[prop], obj[prop]);\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n /* Loop through each object and conduct a merge */\n for (; i < length; i++) {\n let obj = arguments[i];\n merge(obj);\n }\n\n return extended;\n };\n\n function LazyLoad(images, options) {\n this.settings = extend(defaults, options || {});\n this.images = images || document.querySelectorAll(this.settings.selector);\n this.observer = null;\n this.init();\n }\n\n LazyLoad.prototype = {\n init: function() {\n\n /* Without observers load everything and bail out early. */\n if (!root.IntersectionObserver) {\n this.loadImages();\n return;\n }\n\n let self = this;\n let observerConfig = {\n root: this.settings.root,\n rootMargin: this.settings.rootMargin,\n threshold: [this.settings.threshold]\n };\n\n this.observer = new IntersectionObserver(function(entries) {\n Array.prototype.forEach.call(entries, function (entry) {\n if (entry.isIntersecting) {\n self.observer.unobserve(entry.target);\n let src = entry.target.getAttribute(self.settings.src);\n let srcset = entry.target.getAttribute(self.settings.srcset);\n if (\"img\" === entry.target.tagName.toLowerCase()) {\n if (src) {\n entry.target.src = src;\n }\n if (srcset) {\n entry.target.srcset = srcset;\n }\n } else {\n entry.target.style.backgroundImage = \"url(\" + src + \")\";\n }\n }\n });\n }, observerConfig);\n\n Array.prototype.forEach.call(this.images, function (image) {\n self.observer.observe(image);\n });\n },\n\n loadAndDestroy: function () {\n if (!this.settings) { return; }\n this.loadImages();\n this.destroy();\n },\n\n loadImages: function () {\n if (!this.settings) { return; }\n\n let self = this;\n Array.prototype.forEach.call(this.images, function (image) {\n let src = image.getAttribute(self.settings.src);\n let srcset = image.getAttribute(self.settings.srcset);\n if (\"img\" === image.tagName.toLowerCase()) {\n if (src) {\n image.src = src;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n } else {\n image.style.backgroundImage = \"url('\" + src + \"')\";\n }\n });\n },\n\n destroy: function () {\n if (!this.settings) { return; }\n this.observer.disconnect();\n this.settings = null;\n }\n };\n\n root.lazyload = function(images, options) {\n return new LazyLoad(images, options);\n };\n\n if (root.jQuery) {\n const $ = root.jQuery;\n $.fn.lazyload = function (options) {\n options = options || {};\n options.attribute = options.attribute || \"data-src\";\n new LazyLoad($.makeArray(this), options);\n return this;\n };\n }\n\n return LazyLoad;\n});\n","/* ==========================================================================\n Scroll handler\n - Handler the objects which are bind on scroll events or visible in viewport\n ========================================================================== */\n\nconst ScrollHandler = {\n\n // Variables for debounce and throttle effects\n time: Date.now(),\n timeout: null,\n waitThrottle: 1000,\n waitDebounce: 300,\n\n // Variables for scroll direction\n lastScrollTopPosition: 0,\n scrollDirectionDown: true,\n scrollDirectionUp: false,\n\n //Initialisation\n init: function () {\n\n // Trigger start on start up\n ScrollHandler.triggerOnInit();\n\n // Throttle scroll\n window.addEventListener('scroll', function () {\n if ((ScrollHandler.time + ScrollHandler.waitThrottle - Date.now()) < 0) {\n ScrollHandler.triggerThrottle();\n ScrollHandler.time = Date.now();\n }\n });\n\n // Smooth scroll\n window.addEventListener('scroll', function () {\n ScrollHandler.triggerSmooth();\n });\n\n // Debounce scroll\n window.addEventListener('scroll', function () {\n if(isset(ScrollHandler.timeout)) clearTimeout(ScrollHandler.timeout);\n ScrollHandler.timeout = setTimeout(ScrollHandler.triggerDebounce, ScrollHandler.waitDebounce);\n });\n },\n\n // Trigger on start up\n triggerOnInit: function () {\n ScrollHandler.triggerElementInViewportAnimation();\n },\n\n // Trigger scroll functions with throttle (preferred)\n triggerThrottle: function () {\n // console.log('Throttled scroll');\n ScrollHandler.triggerElementInViewportAnimation();\n },\n\n // Trigger scroll on debounce\n triggerDebounce: function () {\n // console.log('Debounce scroll');\n },\n\n // Trigger scroll on the flight\n triggerSmooth: function () {\n // console.log('Smooth scroll');\n ScrollHandler.detectScrollDirection();\n ScrollHandler.toggleStickyHeader();\n },\n\n // Detect if part of a given element is visible in the viewport\n // El must be a node element\n detectIfElementIsPartlyInViewport: function(el)\n {\n if(isset(el)){\n\n const rect = el.getBoundingClientRect();\n // DOMRect { x: 8, y: 8, width: 100, height: 100, top: 8, right: 108, bottom: 108, left: 8 }\n const windowHeight = (window.innerHeight || document.documentElement.clientHeight);\n const windowWidth = (window.innerWidth || document.documentElement.clientWidth);\n\n const verticalInView = (rect.top <= (windowHeight)) && ((rect.top + rect.height) >= 0);\n const horizontalInView = (rect.left <= windowWidth) && ((rect.left + rect.width) >= 0);\n\n return (verticalInView && horizontalInView);\n }\n },\n\n // Detect if a given element is fully visible in the viewport\n // El must be a node element\n detectIfElementIsFullyInViewport: function(el)\n {\n if(isset(el)){\n const rect = el.getBoundingClientRect();\n\n return (\n rect.top >= 0 &&\n rect.bottom <= window.innerHeight\n );\n }\n },\n\n detectScrollDirection: function () {\n const scrollTopPosition = window.pageYOffset || document.documentElement.scrollTop; // Credits: \"https://github.com/qeremy/so/blob/master/so.dom.js#L426\"\n const minimalScrollAmount = 96;\n\n if (scrollTopPosition >= ScrollHandler.lastScrollTopPosition){\n if(Math.abs(scrollTopPosition - ScrollHandler.lastScrollTopPosition) < minimalScrollAmount) return\n ScrollHandler.scrollDirectionDown = true;\n ScrollHandler.scrollDirectionUp = false;\n } else {\n if(Math.abs(scrollTopPosition - ScrollHandler.lastScrollTopPosition) < minimalScrollAmount) return\n ScrollHandler.scrollDirectionDown = false;\n ScrollHandler.scrollDirectionUp = true;\n }\n ScrollHandler.lastScrollTopPosition = scrollTopPosition;\n },\n\n // Trigger animation on elements that have 'element-in-viewport' and that are in the viewport\n // These animation can only be triggered once, if you want more then that you should write an specific function for this\n triggerElementInViewportAnimation: function () {\n const elements = document.querySelectorAll('.element-in-viewport');\n const elementsLength = elements.length;\n\n for(let e = 0; e < elementsLength; e++){\n\n const element = elements[e];\n if(ScrollHandler.detectIfElementIsPartlyInViewport(element)){\n element.classList.remove('element-in-viewport');\n }\n }\n\n },\n\n // ------------------------------ CUSTOM SCROLL HANDLERS ------------------------------------\n\n // Hide or show sticky navigation when header isn't visible\n toggleStickyHeader: function () {\n const stickyHeader = document.querySelector('.js-sticky-header');\n const visibleStickyHeaderClass = 'is-sticky-header-visible';\n if (stickyHeader) stickyHeader.hidden = false;\n\n if(isset(stickyHeader)){\n // Hide when scrolling DOWN (OR within offset)\n if(ScrollHandler.scrollDirectionDown || ScrollHandler.lastScrollTopPosition < 110){\n document.body.classList.remove(visibleStickyHeaderClass);\n }\n // Show when scrolling UP and outside of offset\n else {\n document.body.classList.add(visibleStickyHeaderClass);\n }\n }\n },\n\n};\n\nScrollHandler.init();","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/* ==========================================================================\n Share buttons handler\n ========================================================================== */\n\nconst ShareButtonsHandler = {\n\n shareButtonsElement: null,\n shareMessageElement: null,\n shareMessage: null,\n\n init: function () {\n // Get the youtube players containers\n ShareButtonsHandler.shareButtonsElement = document.getElementById('js-shareButtons');\n ShareButtonsHandler.shareMessageElement = document.getElementById('js-shareButtonData');\n\n if (isset(ShareButtonsHandler.shareButtonsElement) && isset(ShareButtonsHandler.shareMessageElement)) {\n ShareButtonsHandler.convertShareMessageToObject();\n\n const items = ShareButtonsHandler.shareButtonsElement.querySelectorAll('.js-social-media-item');\n const buttons = ShareButtonsHandler.shareButtonsElement.querySelectorAll('.js-social-media-button');\n const buttonsLength = buttons.length;\n\n for (let i = 0; i < buttonsLength; i++) {\n const button = buttons[i];\n const item = items[i];\n\n button.addEventListener('click', function () {\n const social = item.getAttribute('data-social');\n let functionName = 'click' + capitalizeFirstLetter(social) + 'Button';\n\n if(typeof ShareButtonsHandler[functionName] === 'function'){\n ShareButtonsHandler[functionName]();\n }\n else{\n console.log('Method not build yet: ' + functionName);\n }\n });\n }\n }\n },\n\n convertShareMessageToObject: function () {\n let messageObject = {};\n for (let i = 0, attributes = ShareButtonsHandler.shareMessageElement.attributes, attributesLength = attributes.length; i < attributesLength; i++) {\n const attribute = attributes[i];\n let attributeName = attribute.name;\n attributeName = attributeName.replace(/data-/g, '');\n attributeName = snakeToCamel(attributeName);\n\n messageObject[attributeName] = attribute.value;\n }\n ShareButtonsHandler.shareMessage = messageObject;\n },\n\n clickFacebookButton: function () {\n FB.ui({\n method: 'share',\n mobile_iframe: true,\n href: ShareButtonsHandler.shareMessage.url,\n }, function (response) {\n });\n },\n\n clickTwitterButton: function () {\n window.open('https://twitter.com/intent/tweet?text=' + ShareButtonsHandler.shareMessage.encodeName + '&url=' + ShareButtonsHandler.shareMessage.encodeUrl , 'newwindow', 'width=500, height=600');\n },\n\n clickLinkedinButton: function () {\n window.open('https://www.linkedin.com/shareArticle?mini=true&url='+ ShareButtonsHandler.shareMessage.encodeUrl +'&title='+ ShareButtonsHandler.shareMessage.encodeName +'&summary=' + ShareButtonsHandler.shareMessage.encodeSummary, 'newwindow', 'width=500, height=600');\n },\n\n clickMailButton: function () {\n window.open('mailto:?subject='+ShareButtonsHandler.shareMessage.name+'&body='+ShareButtonsHandler.shareMessage.url, '_self');\n },\n\n clickLinkButton: function () {\n ShareButtonsHandler.shareMessageElement.select();\n copyToClipboard('#js-shareButtonData');\n\n const flashMessage = ShareButtonsHandler.shareButtonsElement.querySelector('.js-link-copied-message');\n flashMessage.classList.add('clicked');\n\n setTimeout(function () {\n flashMessage.classList.remove('clicked');\n }, 2000);\n\n },\n\n};\n\nShareButtonsHandler.init();","\n/* Example\n\nconst headerImageSliderSetting = new SliderProjectorSetting({\n sliderProjectorId: 'header-image-slider',\n slideQuery: '#header-image-slider .placeholder figure',\n dots: '#header-image-slider .slider-navigation-labels .navigation span',\n autoSlider: true,\n sliderInterval: 4000\n});\nheaderImageSliderSetting = headerImageSliderSetting.prepareParameters();\n\nconst headerImageSlider = new SliderProjector(headerImageSliderSetting).init();\n\n */\n\n\nlet Sliders = [];\n\nconst sliderContainers = document.querySelectorAll('.js-slider');\nconst sliderContainersLength = sliderContainers.length;\n\nfor(let i =0; i < sliderContainersLength; i++){\n\n const slider = sliderContainers[i];\n const sliderId = slider.getAttribute('id');\n\n if(sliderId !== null){\n\n const Slidersetting = new SliderSetting({\n sliderId: sliderId,\n slideQuery: '#' + sliderId +' .js-slider-slide',\n navigationButtons: '#' + sliderId +' .js-slider-button',\n dots: '#' + sliderId +' .js-slider-indicator',\n });\n\n Sliders.push( new Slider(Slidersetting.prepareParameters()).init() );\n }\n else console.log('An image slider has no id...');\n}\n\n\nfunction SliderSetting(settingsObject) {\n\n const self = this;\n\n this.sliderId = '';\n this.definedPreviousNext = true;\n this.autoSlider = false;\n this.sliderInterval = 4000;\n this.navigationButtons = '';\n this.dots = '';\n this.slideQuery = '';\n\n this.setSliderId = function (string) {\n this.sliderId = string;\n return this;\n };\n this.setDefinedPreviousNext = function (boolean) {\n this.definedPreviousNext = boolean;\n return this;\n };\n this.setAutoSlider = function (boolean) {\n this.autoSlider = boolean;\n return this;\n };\n this.setSliderInterval = function (integer) {\n this.sliderInterval = integer;\n return this;\n };\n this.setSlideQuery = function (string) {\n this.slideQuery = string;\n return this;\n };\n this.setNavigationButtons = function (string) {\n this.navigationButtons = string;\n return this;\n };\n this.setDots = function (string) {\n this.dots = string;\n return this;\n };\n this.getSliderId = function () {\n return this.sliderId;\n };\n this.getDefinedPreviousNext = function () {\n return this.definedPreviousNext;\n };\n this.getAutoSlider = function () {\n return this.autoSlider;\n };\n this.getSliderInterval = function () {\n return this.sliderInterval;\n };\n this.getSlideQuery = function () {\n return this.slideQuery;\n };\n this.getNavigationButtons = function () {\n return this.navigationButtons;\n };\n this.getDots = function () {\n return this.dots;\n };\n\n // Invert setters to getters\n this.prepareParameters = function () {\n\n return {\n sliderId: self.getSliderId(),\n definedPreviousNext: self.getDefinedPreviousNext(),\n autoSlider: self.getAutoSlider(),\n sliderInterval: self.getSliderInterval(),\n navigationButtons: self.getNavigationButtons(),\n dots: self.getDots(),\n slideQuery: self.getSlideQuery()\n }\n\n };\n\n // Mass assign settings\n this.fill = function () {\n // Object.keys(settingsObject).forEach(function (key) {\n // self[key] = settingsObject[key];\n // });\n\n const settingsObjectKeys = Object.keys(settingsObject);\n const settingsObjectLength = settingsObjectKeys.length;\n\n for(let i = 0; i < settingsObjectLength; i++){\n const key = settingsObjectKeys[i];\n self[key] = settingsObject[key];\n }\n\n };\n\n this.fill();\n\n return {\n sliderId: self.setSliderId,\n definedPreviousNext: self.setDefinedPreviousNext,\n autoSlider: self.setAutoSlider,\n sliderInterval: self.setSliderInterval,\n navigationButtons: self.setNavigationButtons,\n dots: self.setDots,\n slideQuery: self.setSlideQuery,\n prepareParameters: self.prepareParameters\n };\n}\n\nfunction Slider(settings) {\n //Define Slider object\n const self = this;\n this.sliderObject = '';\n\n //SlideParameters\n this.activeSlideId = 0;\n this.previousSlideId = 0;\n this.nextSlideId = 0;\n this.availableSlides = 1;\n this.slides = [];\n this.autoSliderInterval = null;\n\n this.settings = {};\n\n this.init = function () {\n\n //Append settings to self\n this.settings = settings;\n\n //Assign needed elements and calculations\n this.sliderObject = document.getElementById(this.settings.sliderId);\n this.slides = document.querySelectorAll(this.settings.slideQuery);\n this.availableSlides = this.slides.length;\n this.activeSlideId = 0;\n\n //Define previous and next if we want to use those\n if (self.settings.definedPreviousNext) this.setPreviousAndNextSlide();\n\n // Set active slide (and possible previous and next classes)\n this.setSlide();\n\n // Swipe interaction\n const swipeGestures = new Hammer(this.sliderObject);\n swipeGestures.on('swipeleft', function () {\n self.resetAutoSlider();\n self.nextSlide();\n self.setSlide();\n });\n swipeGestures.on('swiperight', function () {\n self.resetAutoSlider();\n self.previousSlide();\n self.setSlide();\n });\n\n\n\n if (this.settings.navigationButtons !== '') {\n\n // Click interaction\n const navigationButtons = document.querySelectorAll(this.settings.navigationButtons);\n const navigationButtonsLength = navigationButtons.length;\n for(let i = 0; i < navigationButtonsLength; i++){\n const navigationButton = navigationButtons[i];\n navigationButton.addEventListener('click', function () {\n self.clickNavigationButton(this);\n });\n }\n\n }\n\n if (this.settings.dots !== '') {\n // Click interaction\n const dots = document.querySelectorAll(this.settings.dots);\n const dotsLength = dots.length;\n\n for(let i = 0; i < dotsLength; i++){\n const dot = dots[i];\n dot.addEventListener('click', function () {\n self.clickDot(this);\n });\n }\n\n }\n\n self.autoSlider();\n };\n\n\n this.autoSlider = function (){\n\n if(this.autoSliderInterval !== null) clearInterval(this.autoSliderInterval);\n\n if(this.settings.autoSlider && Number.isInteger(this.settings.sliderInterval) ){\n\n this.autoSliderInterval = setInterval(function() {\n self.nextSlide();\n self.setSlide();\n }, this.settings.sliderInterval\n );\n }\n };\n\n this.resetAutoSlider = self.autoSlider;\n\n\n this.nextSlide = function () {\n this.activeSlideId++;\n if (this.activeSlideId >= this.availableSlides) this.activeSlideId = 0;\n\n if (self.settings.definedPreviousNext) this.setPreviousAndNextSlide();\n };\n\n this.previousSlide = function () {\n this.activeSlideId--;\n if (this.activeSlideId < 0) this.activeSlideId = this.availableSlides - 1;\n\n if (self.settings.definedPreviousNext) this.setPreviousAndNextSlide();\n };\n\n this.setPreviousAndNextSlide = function () {\n this.nextSlideId = this.activeSlideId + 1;\n if (this.nextSlideId >= this.availableSlides) this.nextSlideId = 0;\n\n this.previousSlideId = this.activeSlideId - 1;\n if (this.previousSlideId < 0) this.previousSlideId = this.availableSlides - 1;\n };\n\n this.setSlide = function () {\n\n // Loop through the form elements\n const slidesLength = self.slides.length;\n for(let i = 0; i < slidesLength; i++){\n const slide = self.slides[i];\n\n slide.style.pointerEvents = \"none\"; // Needed for swipe functionality\n\n // Convert data set attribute to desired type\n const slideOrder = parseInt(slide.getAttribute('data-order'));\n\n // Remove and set active for all slides\n if (slideOrder !== self.activeSlideId) slide.classList.remove('is-active');\n else slide.classList.add('is-active');\n\n // If we use the previous and next, also set those classes\n if (self.settings.definedPreviousNext) {\n\n if (slideOrder !== self.previousSlideId) slide.classList.remove('previous');\n else slide.classList.add('previous');\n\n if (slideOrder !== self.nextSlideId) slide.classList.remove('next');\n else slide.classList.add('next');\n }\n }\n\n if (self.settings.dots !== '') { self.setActiveDot(); }\n };\n\n this.clickNavigationButton = function (navButton) {\n self.activeSlideId = parseInt(navButton.getAttribute('data-order'));\n if (self.settings.definedPreviousNext) self.setPreviousAndNextSlide();\n self.setSlide();\n\n const next = document.querySelector(self.settings.navigationButtons + '.next');\n const previous = document.querySelector(self.settings.navigationButtons + '.previous');\n\n next.setAttribute('data-order', self.nextSlideId);\n previous.setAttribute('data-order', self.previousSlideId);\n\n self.resetAutoSlider();\n\n // next.querySelector('p').innerHTML = self.slides[self.nextSlideId].dataset.name;\n // previous.querySelector('p').innerHTML = self.slides[self.previousSlideId].dataset.name;\n };\n\n this.clickDot = function (clickedDot) {\n self.activeSlideId = parseInt(clickedDot.getAttribute('data-order'));\n self.setSlide();\n self.resetAutoSlider();\n };\n\n this.setActiveDot = function () {\n\n const dots = document.querySelectorAll(this.settings.dots);\n const dotsLength = dots.length;\n for(let i = 0; i < dotsLength; i++){\n const dot = dots[i];\n dotOrder = parseInt(dot.getAttribute('data-order'));\n\n if(dotOrder !== self.activeSlideId) {\n dot.classList.remove('is-active');\n dot.tabIndex = 0;\n }\n else {\n dot.classList.add('is-active');\n dot.tabIndex = -1;\n }\n }\n };\n}","/* ==========================================================================\n Navigation handler\n - Handles the showing and hiding of the overlay-menu component which has the proper classes.\n ========================================================================== */\n\nconst bodyScrollLock = require('body-scroll-lock');\n\nconst OverlayMenuHandler = {\n\n // init: function () {\n // const overlayMenuTrigger = document.querySelector('.js-overlay-menu-trigger');\n // OverlayMenuHandler.initOverlayMenu(overlayMenuTrigger);\n // },\n\n init: function () {\n\n const overlayMenuTriggerList = document.querySelectorAll('.js-overlay-menu-trigger');\n const overlayMenuTriggerListCount = overlayMenuTriggerList.length;\n\n if(isset(overlayMenuTriggerList) && overlayMenuTriggerListCount !== 0){\n for(let i = 0; i < overlayMenuTriggerListCount; i++){\n const overlayMenuTrigger = overlayMenuTriggerList[i];\n OverlayMenuHandler.initOverlayMenu(overlayMenuTrigger);\n }\n }\n },\n\n initOverlayMenu: function (overlayMenuTrigger) {\n overlayMenuTrigger.addEventListener('click', OverlayMenuHandler.toggleOverlayMenu, false);\n },\n\n toggleOverlayMenu: function (event) {\n const overlayMenuNav = document.querySelector('.js-overlay-menu');\n console.log(overlayMenuNav)\n // const overlayMenuBody = overlayMenu.querySelector('.js-overlay-menu-persist-scrolling');\n\n // Bail if overlayMenu doesn't exist\n if (!overlayMenuNav) return;\n\n // Clear previously locked scroll on the body\n bodyScrollLock.enableBodyScroll(overlayMenuNav);\n\n // If the overlayMenu is already active, collapse it and quit\n if (document.body.classList.contains('is-overlay-menu-active')) {\n overlayMenuNav.querySelectorAll('[tabindex=\"0\"]').forEach(function(elem) {\n elem.tabIndex = -1;\n });\n\n document.body.classList.remove('is-overlay-menu-active');\n return;\n }\n\n // Lock scrolling on the body\n bodyScrollLock.disableBodyScroll(overlayMenuNav);\n\n overlayMenuNav.querySelectorAll('[tabindex=\"-1\"]').forEach(function(elem) {\n elem.tabIndex = 0;\n });\n\n // Toggle active overlayMenu by setting a class on the body\n document.body.classList.toggle('is-overlay-menu-active');\n overlayMenuNav.hidden = false;\n }\n};\n\nOverlayMenuHandler.init();","/* ==========================================================================\n Youtube handler\n ========================================================================== */\n\nconst YoutubeHandler = {\n\n youtubeClass : '.js-youtube-player',\n players: [],\n\n init : function()\n {\n // Get the youtube players containers\n const youtubePlayers = document.querySelectorAll(YoutubeHandler.youtubeClass);\n const youtubePlayersAmount = youtubePlayers.length;\n\n for(let i = 0; i < youtubePlayersAmount; i++){\n\n const youtubePlayer = youtubePlayers[i];\n\n\n const youtubePlayerId = youtubePlayer.getAttribute('id');\n if(youtubePlayerId !== null )\n {\n // Strip the necessary data from the html and create objects from it\n const youtubeElement = {\n id: youtubePlayer.getAttribute('id'),\n link: youtubePlayer.getAttribute('data-youtube-link'),\n autoPlay: parseInt(youtubePlayer.getAttribute('data-auto-play')),\n };\n\n YoutubeHandler.players.push(youtubeElement);\n }\n else{\n console.log(\"Element not include because there isn't a id on the player\");\n console.log(youtubePlayer);\n }\n }\n\n if(youtubePlayersAmount >= 1) YoutubeHandler.initYoutube();\n\n },\n\n /**\n * Check if external script is loaded\n *\n */\n initYoutube: function() {\n // See if YT variable exists\n if (typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined') {\n // Setup API ready function\n window.onYouTubePlayerAPIReady = function() {\n YoutubeHandler.loadPlayers();\n };\n // Load external script\n getScript('https://www.youtube.com/iframe_api');\n // If YT already exists load player\n } else {\n YoutubeHandler.loadPlayers();\n }\n },\n\n /**\n * Create the Youtube player(s) with parameters\n * And rewrite the players to key them by the element id\n *\n */\n loadPlayers: function() {\n\n let players = [];\n\n const youtubePlayersAmount = YoutubeHandler.players.length;\n for(let i = 0; i < youtubePlayersAmount; i++){\n\n let youtubePlayer = YoutubeHandler.players[i];\n\n // Load player\n youtubePlayer.player = new YT.Player(youtubePlayer.id,{\n height: 200,\n width: 200,\n videoId: youtubePlayer.link,\n host: 'https://www.youtube-nocookie.com',\n playerVars: {\n modestbranding: 0,\n rel: 0,\n disablekb: 1,\n autoplay: youtubePlayer.autoPlay\n },\n events: {\n // 'onReady': YoutubeHandler.onReady,\n 'onStateChange': YoutubeHandler.onStateChange\n }\n });\n\n players[youtubePlayer.id] = youtubePlayer;\n\n }\n\n YoutubeHandler.players = players;\n\n },\n\n /**\n * When player is ready to play\n */\n onReady : function(event) {\n\n const playerContainerId = event.target.getIframe().getAttribute('id');\n const player = YoutubeHandler.players[playerContainerId].player;\n\n // Show video\n // setTimeout(function(){ $('#' + playerContainerId).stop().animate({ opacity: 1 },1000) },800);\n\n // If not on tablet or mobile, play on high quality\n // player.mute();\n // player.playVideo();\n // player.setPlaybackQuality('hd1080');\n },\n\n /**\n * Listener for Youtube state change\n */\n onStateChange : function(event) {\n\n const playerContainerId = event.target.getIframe().getAttribute('id');\n const player = YoutubeHandler.players[playerContainerId].player;\n\n const videoState = event.data;\n\n // Loop video\n if (event.data === YT.PlayerState.ENDED ) {\n player.playVideo();\n }\n }\n};\n\nYoutubeHandler.init();","require('hammerjs');\n\nconst ImageRackHandler = {\n\n init: function () {\n const imageRackElements = document.querySelectorAll('.js-image-rack');\n const imageRackElementsLength = imageRackElements.length;\n\n for(let i = 0; i < imageRackElementsLength; i++){\n new ImageRack(imageRackElements[i]);\n }\n }\n};\n\n\nclass ImageRack {\n\n constructor(imageRack) {\n\n const self = this;\n\n this.rack = imageRack;\n this.slideArea = this.rack.querySelector('.js-image-rack-slide');\n this.items = this.rack.querySelectorAll('.js-image-rack-item');\n\n this.imageLoaded = false;\n\n this.currentItem = 0;\n this.maxItemPosition = this.items.length;\n this.maxTranslated = 0;\n\n this.offset = [];\n\n this.previousButton = this.rack.querySelector('.js-image-rack-button.previous');\n this.nextButton = this.rack.querySelector('.js-image-rack-button.next');\n\n this.calculateSteps();\n\n this.previousButton.addEventListener('click', function () {\n self.previousItem();\n self.setImageRack();\n });\n\n this.nextButton.addEventListener('click', function () {\n self.nextItem();\n self.setImageRack();\n });\n\n // Swipe interaction\n const swipeGestures = new Hammer(this.rack);\n swipeGestures.on('swipeleft', function () {\n self.swipeLeft();\n self.setImageRack();\n });\n swipeGestures.on('swiperight', function () {\n self.swipeRight();\n self.setImageRack();\n });\n\n this.debounceTimeout = null;\n this.waitDebounce = 500;\n\n // Debounce Resize\n window.addEventListener('resize', function () {\n if(isset(self.debounceTimeout)) clearTimeout(self.debounceTimeout);\n self.debounceTimeout = setTimeout(function() {\n self.calculateSteps();\n self.setImageRack();\n }, self.waitDebounce);\n });\n }\n\n calculateSteps() {\n //Reset the steps array\n this.offset = [];\n\n // Calculated the offset of the whole rack to know how much we may translate at most\n // const bodyOffset = window.bodyOffset(this.rack);\n const bodyOffset = window.bodyOffset(this.slideArea);\n\n // Calculated the available view area of the rack\n let availableViewArea = document.body.offsetWidth - bodyOffset.left;\n\n // Get the racket Width\n let rackWidth = this.items[this.items.length - 1].offsetLeft + this.items[this.items.length - 1].offsetWidth;\n this.maxTranslated = rackWidth - availableViewArea;\n\n let maxItemCalculated = false;\n let imagesLoaded = true;\n\n // Calculated for each item the offset in the rack\n for(let i = 0; i < this.items.length; i++) {\n const item = this.items[i];\n\n if(item.offsetWidth === 0) imagesLoaded = false;\n\n let offsetFromLeftSide = item.offsetLeft;\n\n // Append the offset to the offset position array\n this.offset.push(\n offsetFromLeftSide\n );\n\n // If the max translated is smaller and isn't already defined\n if(this.maxTranslated < offsetFromLeftSide && !maxItemCalculated) {\n this.maxItemPosition = (i + 1);\n maxItemCalculated = true;\n }\n }\n\n // Recalculated when the images aren't loaded\n if(imagesLoaded) this.imageLoaded = true;\n\n }\n\n nextItem() {\n this.currentItem++;\n if(this.currentItem >= this.maxItemPosition) this.currentItem = this.maxItemPosition;\n }\n\n previousItem() {\n this.currentItem--;\n if(this.currentItem < 0) this.currentItem = 0;\n }\n\n swipeLeft() {\n this.nextItem();\n }\n\n swipeRight() {\n this.previousItem();\n }\n\n setImageRack() {\n // Check if image are load when interaction\n if(!this.imageLoaded){\n console.warn(\"ImageRack: Recalculated because images weren't loaded yet.\");\n this.calculateSteps();\n }\n\n let nextOffsetPosition = '-' + this.offset[this.currentItem];\n this.slideArea.style.transform = 'translateX(' + nextOffsetPosition + 'px)';\n }\n}\n\nImageRackHandler.init();","/* ==========================================================================\n Scroll To Click handler\n ========================================================================== */\n\nconst ScrollToHandler = {\n\n // Animation settings\n offset : 60, //pixel\n duration : 1200, //ms\n\n // Animation variables\n body : null,\n start : 0,\n change : 0,\n currentTime : 0,\n allowAnimation : false,\n scrollToAnimation : null,\n\n // Watch the EasingFunction helper for the available methods\n easing: 'easeInOutQuad',\n\n init : function(){\n\n const anchorLinks = document.querySelectorAll('.js-scroll-to-target');\n const anchorLinksAmount = anchorLinks.length;\n\n for(let i = 0; i < anchorLinksAmount; i++) {\n\n const anchorLink = anchorLinks[i];\n\n anchorLink.addEventListener('click', function (event) {\n ScrollToHandler.prepareScrollTo(this.getAttribute('href'));\n event.preventDefault();\n });\n }\n },\n\n /**\n * Prepare the Handler for the animation\n */\n prepareScrollTo : function(elementId){\n\n // Get the scroll to element\n elementId = elementId.substr(elementId.indexOf('#')+1);\n const scrollToElement = document.getElementById(elementId);\n const scrollToElementPosition = scrollToElement.getBoundingClientRect();\n\n // Reset or define the Handler variables\n ScrollToHandler.body = document.documentElement;\n ScrollToHandler.start = Math.max(ScrollToHandler.body.scrollTop, document.body.scrollTop, window.pageYOffset); //Use Math.max because safari doesn't support document.documentElement.scrollTop\n ScrollToHandler.change = ((scrollToElementPosition.top + ScrollToHandler.start) - ScrollToHandler.start) - ScrollToHandler.offset;\n ScrollToHandler.startTime = 'now' in window.performance ? performance.now() : new Date().getTime();\n ScrollToHandler.allowAnimation = true;\n\n // Trigger animation\n scrollToAnimation = requestAnimationFrame(ScrollToHandler.animateScroll);\n\n // Stop on scroll\n window.addEventListener('mousedown', ScrollToHandler.abortScrollAnimation);\n window.addEventListener('wheel', ScrollToHandler.abortScrollAnimation);\n window.addEventListener('DOMMouseScroll', ScrollToHandler.abortScrollAnimation);\n window.addEventListener('mousewheel', ScrollToHandler.abortScrollAnimation);\n window.addEventListener('keyup', ScrollToHandler.abortScrollAnimation);\n window.addEventListener('touchmove', ScrollToHandler.abortScrollAnimation);\n\n },\n\n /*\n * Animate the scroll position\n */\n animateScroll : function (timestamp) {\n\n // Calculate progress from 0 - 1\n let progress = Math.min(1, (timestamp - ScrollToHandler.startTime) / ScrollToHandler.duration);\n if(progress < 0) progress = 0;\n\n // Convert progress with easing function\n progress = EasingFunctions[ScrollToHandler.easing](progress);\n\n const newScrollTop = ScrollToHandler.start + ( ScrollToHandler.change * progress );\n\n ScrollToHandler.body.scrollTop = newScrollTop;\n if( ScrollToHandler.body.scrollTop === 0 ) document.body.scrollTop = newScrollTop; // Safari doesn't support so if ScrollToHandler.body.scrollTop is 0 force the scroll position through document.body.scrollTop\n\n if(progress < 1 && ScrollToHandler.allowAnimation){\n scrollToAnimation = requestAnimationFrame(ScrollToHandler.animateScroll);\n }\n\n },\n\n /*\n * Abort the scroll animation\n */\n abortScrollAnimation : function (event) {\n ScrollToHandler.allowAnimation = false;\n cancelAnimationFrame(ScrollToHandler.scrollToAnimation);\n }\n\n};\n\nScrollToHandler.init();","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * @this {Promise}\n */\n function finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n }\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\n var setTimeoutFunc = setTimeout;\n\n function noop() {}\n\n// Polyfill for Function.prototype.bind\n function bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n }\n\n /**\n * @constructor\n * @param {Function} fn\n */\n function Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n }\n\n function handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n }\n\n function resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n }\n\n function reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n }\n\n function finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n }\n\n /**\n * @constructor\n */\n function Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n }\n\n /**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\n function doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n }\n\n Promise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n };\n\n Promise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n };\n\n Promise.prototype['finally'] = finallyConstructor;\n\n Promise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n };\n\n Promise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n };\n\n Promise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n };\n\n Promise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n };\n\n// Use polyfill for setImmediate for performance gains\n Promise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\n Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n };\n\n /** @suppress {undefinedVars} */\n var globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n })();\n\n if (!('Promise' in globalNS)) {\n globalNS['Promise'] = Promise;\n } else if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = finallyConstructor;\n }\n\n})));","Number.isInteger = Number.isInteger || function(value) {\n return typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value;\n};","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a