File: D:/HostingSpaces/SBogers10/vangogh.komma.pro/wwwroot/js/site/app.js.map
{"version":3,"sources":["webpack:///./resources/js/site/global/scrollHandler.js","webpack:///./node_modules/process/browser.js","webpack:///./resources/js/site/components/overlayMenuHandler.js","webpack:///./resources/js/site/components/youtubeHandler.js","webpack:///./resources/js/site/components/scrollToHandler.js","webpack:///./resources/js/global/polyfills/promise.js","webpack:///./resources/js/global/polyfills/isInteger.js","webpack:///./resources/js/site/components/sliderHandler.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/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:///./resources/js/site/components/tabsliderHandler.js","webpack:///(webpack)/buildin/global.js","webpack:///./resources/js/site/components/cookieHandler.js"],"names":["ScrollHandler","time","Date","now","timeout","waitThrottle","waitDebounce","lastScrollTopPosition","scrollDirectionDown","scrollDirectionUp","init","triggerOnInit","window","addEventListener","triggerThrottle","triggerSmooth","isset","clearTimeout","setTimeout","triggerDebounce","triggerElementInViewportAnimation","detectScrollDirection","toggleStickyHeader","detectIfElementIsPartlyInViewport","el","rect","getBoundingClientRect","windowHeight","innerHeight","document","documentElement","clientHeight","windowWidth","innerWidth","clientWidth","verticalInView","top","height","horizontalInView","left","width","detectIfElementIsFullyInViewport","bottom","scrollTopPosition","pageYOffset","scrollTop","elements","querySelectorAll","elementsLength","length","e","element","classList","remove","stickyHeader","querySelector","subnavList","subNavIsVisible","hidden","i","getComputedStyle","visibility","body","add","cachedSetTimeout","cachedClearTimeout","process","module","exports","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","call","this","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","arguments","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","bodyScrollLock","require","OverlayMenuHandler","overlayMenuTriggerList","overlayMenuTriggerListCount","overlayMenuTrigger","initOverlayMenu","toggleOverlayMenu","event","overlayMenuNav","enableBodyScroll","contains","forEach","elem","tabIndex","disableBodyScroll","toggle","YoutubeHandler","youtubeClass","players","youtubePlayers","youtubePlayersAmount","youtubePlayer","getAttribute","youtubeElement","id","link","autoPlay","parseInt","console","log","initYoutube","YT","Player","onYouTubePlayerAPIReady","loadPlayers","getScript","player","videoId","host","playerVars","modestbranding","rel","disablekb","autoplay","events","onStateChange","onReady","playerContainerId","target","getIframe","data","PlayerState","ENDED","playVideo","ScrollToHandler","offset","duration","start","change","currentTime","allowAnimation","scrollToAnimation","easing","anchorLinks","anchorLinksAmount","prepareScrollTo","preventDefault","elementId","substr","indexOf","scrollToElementPosition","getElementById","Math","max","startTime","performance","getTime","requestAnimationFrame","animateScroll","abortScrollAnimation","timestamp","progress","min","EasingFunctions","newScrollTop","cancelAnimationFrame","factory","finallyConstructor","callback","constructor","then","value","resolve","reason","reject","setTimeoutFunc","Promise","fn","TypeError","_state","_handled","_value","undefined","_deferreds","doResolve","handle","self","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","warn","globalNS","global","define","Number","isInteger","isFinite","floor","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","Object","keys","settingsObjectLength","key","settings","sliderObject","activeSlideId","previousSlideId","nextSlideId","availableSlides","slides","autoSliderInterval","setPreviousAndNextSlide","setSlide","swipeGestures","Hammer","resetAutoSlider","nextSlide","previousSlide","navigationButtonsLength","clickNavigationButton","dotsLength","clickDot","clearInterval","setInterval","slidesLength","slide","style","pointerEvents","slideOrder","setActiveDot","navButton","next","previous","setAttribute","clickedDot","dot","dotOrder","Function","Timeout","clearFn","_id","_clearFn","scope","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","registerImmediate","html","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","toString","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","map","location","lat","lng","styling","hasAttribute","parseFloat","setCustomStyling","google","maps","drawMap","Map","zoom","center","disableDefaultUI","styles","contentString","infowindow","InfoWindow","content","Marker","position","open","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","response","JSON","parse","status","_thanksForVisiting","redirectUrl","_giveFeedbackToMembers","errors","_unknownGapInFactory","_willie","feedbackArea","innerHTML","_clearPreviousMarkedJackets","jacket","visitorFeedbackArea","visitorNode","_grabVisitorJacket","visitorFeedback","visitorFeedbackAmount","visitorFeedbackLine","currentFeedbackArea","capitalizeFirstLetter","markedJackets","markedJacketsAmount","currentLayer","safetyBreak","parentNode","tagName","nextStop","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","hasOwnProperty","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","obj","linear","t","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","async","scripts","prior","onload","_","isAbort","readyState","src","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","replace","n","prec","abs","sep","dec","s","k","pow","round","toFixedFix","Element","closest","matches","msMatchesSelector","webkitMatchesSelector","ancestor","parentElement","url","xhr","XMLHttpRequest","token","setRequestHeader","send","stringify","toUpperCase","snakeToCamel","m","indexInParent","node","childNodes","num","nodeType","copyToClipboard","editable","contentEditable","readOnly","range","createRange","selectNodeContents","selection","getSelection","removeAllRanges","addRange","setSelectionRange","select","execCommand","bodyOffset","scrollLeft","pageXOffset","TabsliderHandler","tabsliderList","tabslider","tabsliderListCount","initTabslider","container","triggers","tabs","error","stepTabslider","toggleTabslider","dataset","tabId","tabsliderTab","tabsliderTrigger","triggerCount","activeId","newId","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 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 if (scrollTopPosition >= ScrollHandler.lastScrollTopPosition){\n ScrollHandler.scrollDirectionDown = true;\n ScrollHandler.scrollDirectionUp = false;\n } else {\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 const subnavList = document.querySelectorAll('.js-subnav');\n var subNavIsVisible = false;\n stickyHeader.hidden = false;\n\n for (let i = 0; i < subnavList.length; i++) {\n if (window.getComputedStyle(subnavList[i], null).visibility == \"visible\") {\n return subNavIsVisible = true;\n }\n }\n\n if(isset(stickyHeader) && !subNavIsVisible){\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 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 // 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();","/* ==========================================================================\n Scroll To Click handler\n ========================================================================== */\n\nconst ScrollToHandler = {\n\n // Animation settings\n offset : 60, //pixel\n duration : 1400, //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<!Function>} */\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};","\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\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 // console.log(this.settings.dots);\n // console.log(dots);\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}","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 <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/* ==========================================================================\n Google Maps handler\n - https://developers.google.com/maps/documentation/javascript/adding-a-google-map\n ========================================================================== */\n\nconst MapsHandler = {\n\n map: '',\n key: 'AIzaSyCVGPUmRmQRxXvzzWu3Xyu77XebQxQ-f4Y',\n location: {lat: 51.261089, lng: 5.598172},\n styling: '',\n\n init: function () {\n // Get map by id\n MapsHandler.map = document.querySelector('.js-google-map');\n\n // Check if a map is defined\n if (isset(MapsHandler.map)) {\n\n if(MapsHandler.map.hasAttribute('data-google-lat')) MapsHandler.location.lat = parseFloat(MapsHandler.map.getAttribute('data-google-lat'));\n if(MapsHandler.map.hasAttribute('data-google-lng')) MapsHandler.location.lng = parseFloat(MapsHandler.map.getAttribute('data-google-lng'));\n\n MapsHandler.setCustomStyling();\n\n // See if google variable exists\n if (typeof(google) == 'undefined' || typeof(google.maps) == 'undefined') {\n // Load external script\n getScript('https://maps.googleapis.com/maps/api/js?v=quarterly&key=' + MapsHandler.key, MapsHandler.drawMap);\n } else {\n MapsHandler.drawMap()\n }\n\n }\n },\n\n drawMap: function () {\n // Create a map\n let map = new google.maps.Map(MapsHandler.map, {\n zoom: 14,\n center: MapsHandler.location,\n disableDefaultUI: true,\n styles: MapsHandler.styling\n });\n\n var contentString = '<div><p>Plan een route op '+\n '<a target=\"_blank\" href=\"https://www.google.com/maps/dir/?api=1&destination=' + MapsHandler.location.lat + ',' + MapsHandler.location.lng +'\" class=\"link\">'+\n 'google maps</a> '+\n '</p></div>';\n\n var infowindow = new google.maps.InfoWindow({\n content: contentString\n });\n\n // Add a marker\n let marker = new google.maps.Marker({\n position: MapsHandler.location,\n map: map,\n // label: 'A'\n });\n\n marker.addListener('click', function() {\n infowindow.open(map, marker);\n });\n\n },\n\n setCustomStyling: function () {\n\n MapsHandler.styling =\n [\n {\n \"featureType\": \"water\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#e9e9e9\"\n },\n {\n \"lightness\": 17\n }\n ]\n },\n {\n \"featureType\": \"landscape\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#f5f5f5\"\n },\n {\n \"lightness\": 20\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 17\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"geometry.stroke\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 29\n },\n {\n \"weight\": 0.2\n }\n ]\n },\n {\n \"featureType\": \"road.arterial\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 18\n }\n ]\n },\n {\n \"featureType\": \"road.local\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 16\n }\n ]\n },\n {\n \"featureType\": \"poi\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#f5f5f5\"\n },\n {\n \"lightness\": 21\n }\n ]\n },\n {\n \"featureType\": \"poi.park\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#dedede\"\n },\n {\n \"lightness\": 21\n }\n ]\n },\n {\n \"elementType\": \"labels.text.stroke\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n },\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 16\n }\n ]\n },\n {\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"saturation\": 36\n },\n {\n \"color\": \"#333333\"\n },\n {\n \"lightness\": 40\n }\n ]\n },\n {\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"transit\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#f2f2f2\"\n },\n {\n \"lightness\": 19\n }\n ]\n },\n {\n \"featureType\": \"administrative\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#fefefe\"\n },\n {\n \"lightness\": 20\n }\n ]\n },\n {\n \"featureType\": \"administrative\",\n \"elementType\": \"geometry.stroke\",\n \"stylers\": [\n {\n \"color\": \"#fefefe\"\n },\n {\n \"lightness\": 17\n },\n {\n \"weight\": 1.2\n }\n ]\n }\n ];\n\n }\n};\n\nMapsHandler.init();","/* ==========================================================================\n | Prevent Bots handler\n |\n | We named this chocolate factory and belonging confusing js hooks\n | to prevent smart bots from blocking these variable or functions.\n |\n ========================================================================== */\n\nconst ChocolateFactory = {\n\n bannedVisitor: [],\n\n /** Get all the chocolate factory and start\n * Looping through those start flashing tickets\n */\n enter: function()\n {\n\n const chocolateFactories = document.querySelectorAll('.js-chocolate-factory');\n\n if(isset(chocolateFactories)){\n\n const amountOfChocolateFactories = chocolateFactories.length;\n for(let i = 0; i < amountOfChocolateFactories; i++){\n\n const ChocolateBar = chocolateFactories[i];\n ChocolateFactory._flashTicket(ChocolateBar);\n }\n }\n },\n\n /**\n * If factory has a golden ticket\n * Then we can make them go on the tour if there has been click on the ticket\n *\n * @param chocolateBar\n * @private\n */\n _flashTicket: function (chocolateBar) {\n\n // Try get the ticket from the chocolateBar\n const goldenTicket = chocolateBar.querySelector('.js-golden-ticket');\n\n // Only continue if chocolate bar has a golden ticket\n if(isset(goldenTicket)){\n\n goldenTicket.addEventListener('click', function () {\n ChocolateFactory.enjoyTheTour(chocolateBar);\n });\n }\n else{\n console.log('To bad, no golden tickets has been found.');\n }\n },\n\n /**\n * Start the tour through the factory\n * And get the names and properties of the members of the group\n * If there are members in the group of course\n *\n * @param chocolateFactory\n */\n enjoyTheTour(chocolateFactory){\n\n // Ask for the tour group\n const tourGroup = chocolateFactory.querySelectorAll('input, textarea');\n\n if(isset(tourGroup)){\n\n // For each visitor we want a belonging Oompa Loompa\n let oompaLoompas = {};\n let amountOfOompaLoompas = 0;\n\n const tourGroupSize = tourGroup.length;\n for(let i = 0; i < tourGroupSize; i++){\n\n // Get the visitor from the group\n const visitor = tourGroup[i];\n\n // Ask for its name\n const visitorName = visitor.getAttribute('name');\n\n // Check if the visitor is banned\n if( ChocolateFactory._isVisitorBanned(visitorName)) continue;\n\n oompaLoompas[ visitorName ] = ChocolateFactory._getArrangement(visitor);\n amountOfOompaLoompas++;\n }\n\n // Check for insurance that there are oompa loompas\n if(amountOfOompaLoompas === 0) return;\n\n // Send submit request\n ChocolateFactory._finishTour(oompaLoompas, chocolateFactory);\n }\n else{\n console.log('To bad, no members to visit this factory')\n }\n },\n\n /**\n * Check if the visitor name isn't allow\n *\n * @param visitorName\n * @returns {boolean}\n * @private\n */\n _isVisitorBanned: function(visitorName){\n if(ChocolateFactory.bannedVisitor.indexOf(visitorName) !== -1){\n return true;\n }\n return false;\n },\n\n /**\n * Most get visitor have a normal arrangement\n * But sometimes there are special cases\n * Like a Selector or checkbox\n *\n * @param visitor\n * @returns {*}\n * @private\n */\n _getArrangement: function(visitor)\n {\n\n const visitorType = visitor.nodeName;\n\n switch (visitorType) {\n default:\n return visitor.value;\n }\n },\n\n /**\n * Finish the tour\n * If successful show thanks message\n * Or show defined error message or fallback\n *\n * @param group\n * @param chocolateFactory\n * @returns {*|void}\n * @private\n */\n _finishTour: function(group, chocolateFactory)\n {\n // Add willie to the group\n group = ChocolateFactory._addWillieWonka(group);\n\n // Get the gate for finish the tour\n const gate = '/contact/process';\n\n try {\n Ajax.post(gate, group, function (HttpRequest) {\n\n const response = JSON.parse(HttpRequest.response);\n\n switch (HttpRequest.status) {\n case 200:\n return ChocolateFactory._thanksForVisiting(response.redirectUrl);\n case 422:\n return ChocolateFactory._giveFeedbackToMembers(response.errors, chocolateFactory);\n default:\n break;\n }\n\n return ChocolateFactory._unknownGapInFactory(chocolateFactory);\n });\n }\n catch (e) {\n return ChocolateFactory._unknownGapInFactory(chocolateFactory);\n }\n },\n\n /**\n * Add willie wonka to the group\n * Ps... it actually the secret code!\n *\n * @param group\n * @returns {*}\n * @private\n */\n _addWillieWonka: function(group){\n group._willie = 'wonka';\n return group;\n },\n\n /**\n * Add the feedback to the desired area.\n * Most likely to the visitor directly, but sometime to the factory desired feedback area\n *\n * @param errors\n * @param chocolateFactory\n * @private\n */\n _giveFeedbackToMembers: function(errors, chocolateFactory){\n\n // Grab the factory feedback area\n const feedbackArea = chocolateFactory.querySelector('.js-error-area');\n\n // Clear the current html\n if(isset(feedbackArea)) feedbackArea.innerHTML = '';\n\n // Clear the previous marked jackets\n ChocolateFactory._clearPreviousMarkedJackets(chocolateFactory);\n\n Object.keys(errors).forEach(function(visitor) {\n\n let jacket = null;\n let visitorFeedbackArea = null;\n\n // Honey elements doesn't has a accessible element\n if(visitor !== '_honey' && visitor !== '_secretCode') {\n\n // Grab the visitor\n const visitorNode = chocolateFactory.querySelector('#' + visitor);\n\n // Find the jacket of a visitor\n jacket = ChocolateFactory._grabVisitorJacket(visitorNode);\n\n // If found get the desired area\n if(isset(jacket)) visitorFeedbackArea = jacket.querySelector('.js-form-group-error');\n\n // Clear the current html\n if(isset(visitorFeedbackArea)) visitorFeedbackArea.innerHTML = '';\n\n }\n\n // Get the feedback for this visitor\n const visitorFeedback = errors[visitor];\n\n // Spit out each line\n const visitorFeedbackAmount = visitorFeedback.length;\n for(let i = 0; i < visitorFeedbackAmount; i++){\n const visitorFeedbackLine = visitorFeedback[i];\n\n console.log(visitor, visitorFeedbackLine);\n\n // Honey elements doesn't has a accessible element area\n if(visitor !== '_honey' && visitor !== '_secretCode') {\n\n // Mark the jacket\n if(isset(jacket)) jacket.classList.add('has-error');\n\n // Append feedback to visitor feedback area if defined\n if(isset(visitorFeedbackArea) && visitorFeedbackLine.length > 0)\n {\n let currentFeedbackArea = visitorFeedbackArea.innerHTML;\n currentFeedbackArea += '<span>' + capitalizeFirstLetter(visitorFeedbackLine) + '</span>';\n visitorFeedbackArea.innerHTML = currentFeedbackArea;\n }\n }\n\n // Append feedback to factory feedback area if defined\n if(isset(feedbackArea) && visitorFeedbackLine.length > 0){\n let currentFeedbackArea = feedbackArea.innerHTML;\n currentFeedbackArea += '<li>' + capitalizeFirstLetter(visitorFeedbackLine) + '</li>';\n feedbackArea.innerHTML = currentFeedbackArea;\n }\n }\n });\n },\n\n /**\n * Clear the previous marked jackets\n *\n * @param chocolateFactory\n * @private\n */\n _clearPreviousMarkedJackets(chocolateFactory) {\n\n const markedJackets = chocolateFactory.querySelectorAll('.has-error');\n const markedJacketsAmount = markedJackets.length;\n\n for(let i = 0; i < markedJacketsAmount; i++){\n markedJackets[i].classList.remove('has-error');\n }\n },\n\n /**\n * Grab the jacket of the visitor\n *\n * @param visitor\n * @returns {null|*|(() => (Node | null))|ActiveX.IXMLDOMNode|(Node & ParentNode)}\n * @private\n */\n _grabVisitorJacket: function(visitor){\n\n // Check if visitor is defined\n if (!isset(visitor)) return null;\n\n // Do loop settings\n currentLayer = visitor;\n safetyBreak = 0;\n\n // Grab the next layer till it is the jacket (or safetyBreak has been reached\n do {\n safetyBreak++;\n currentLayer = currentLayer.parentNode;\n if(currentLayer.classList.contains('js-form-group')) return currentLayer;\n } while (currentLayer.tagName !== 'BODY' && safetyBreak <= 10);\n\n return null;\n },\n\n /**\n * Redirect the visitor to the thanks page\n *\n * @param nextStop\n * @private\n */\n _thanksForVisiting: function (nextStop) {\n window.location = nextStop;\n },\n\n /**\n * Unknown error occurred, log the error\n *\n * @param chocolateFactory\n * @private\n */\n _unknownGapInFactory: function (chocolateFactory) {\n console.log(chocolateFactory);\n console.log('ChocolateFactory: Unkown Error');\n },\n};\n\nChocolateFactory.enter();","/** ==========================================================================\n * Dependencies\n * =========================================================================*/\n\n/**\n * External\n */\nrequire('hammerjs');\nrequire('objectFitPolyfill');\n\n/**\n * Global / Shared with KMS\n */\nrequire('./../global/polyfills/eventPolyFill');\nrequire('./../global/polyfills/isInteger');\nrequire('./../global/polyfills/promise');\nrequire('./../global/polyfills/symbol-es6.min');\n\n\n/** ==========================================================================\n * Global functionalities\n * =========================================================================*/\n\nrequire('./global/helpers'); // Should be first\nrequire('./global/browserHandler');\n// require('./global/pagetransitionHandler');\n// require('./global/resizeHandler');\nrequire('./global/scrollHandler');\n\n\n/** ==========================================================================\n * Component functionalities\n * =========================================================================*/\n\nrequire('./components/chocolateFactory');\nrequire('./components/cookieHandler');\n// require('./components/InputHandler');\nrequire('./components/mapsHandler');\nrequire('./components/overlayMenuHandler');\nrequire('./components/scrollToHandler');\nrequire('./components/sliderHandler');\nrequire('./components/tabsliderHandler');\n// require('./components/searchHandler');\n// require('./components/shareButtonsHandler');\nrequire('./components/youtubeHandler');\n\n/** ==========================================================================\n * Shop Component functionalities\n * =========================================================================*/\n\n// require('./../shop/components/shoppingcartHandler');","/* ==========================================================================\n Browser Handler\n ========================================================================== */\n\nconst BrowserHandler = {\n\n userAgent: '',\n browserInfo: '',\n\n\n init: function () {\n BrowserHandler.userAgent = window.navigator.userAgent;\n BrowserHandler.browserInfo = BrowserHandler.getBrowserInfo();\n BrowserHandler.handleIE();\n BrowserHandler.handleSafari();\n },\n\n handleIE: function () {\n\n // Detect versions below ie11\n let msie = BrowserHandler.userAgent.indexOf('MSIE ');\n const ielt11 = msie > 0;\n\n // Detect ie11\n const ie11 = !!navigator.userAgent.match(/Trident.*rv\\:11\\./);\n\n // If Internet Explorer\n if (ielt11 || ie11) {\n // Default version\n let version = '11';\n\n // Way to detect version < 11\n if (ielt11) version = parseInt(BrowserHandler.userAgent.substring(\n msie + 5,\n BrowserHandler.userAgent.indexOf(\".\", msie)\n ));\n\n // Append classes to HTML (we have to do this separately because else ie will fail)\n document.body.classList.add('ie');\n document.body.classList.add('v'+version);\n }\n\n },\n\n // Fallback for older safari version\n handleSafari: function () {\n\n if(BrowserHandler.browserInfo.name === 'Safari' && BrowserHandler.browserInfo.version <= 10){\n document.getElementsByTagName('html')[0].classList.add('ie');\n }\n\n },\n\n getBrowserInfo: function () {\n let ua=navigator.userAgent,tem,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n if(/trident/i.test(M[1])){\n tem=/\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return {name:'IE ',version:(tem[1]||'')};\n }\n if(M[1]==='Chrome'){\n tem=ua.match(/\\bOPR\\/(\\d+)/)\n if(tem!=null) {return {name:'Opera', version:tem[1]};}\n }\n M=M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\n if((tem=ua.match(/version\\/(\\d+)/i))!=null) {M.splice(1,1,tem[1]);}\n return {\n name: M[0],\n version: M[1]\n };\n }\n};\n\nBrowserHandler.init();","!function(global,factory){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=factory(global):factory(global)}(\"undefined\"!=typeof window?window:global,function(global){\"use strict\";var defineProperty=Object.defineProperty,defineProperties=Object.defineProperties,symbolHiddenCounter=0,globalSymbolRegistry=[],slice=Array.prototype.slice,ES6=\"object\"==typeof global.ES6?global.ES6:global.ES6={},isArray=Array.isArray,objectToString=Object.prototype.toString,push=Array.prototype.push,emptyFunction=function(){},simpleFunction=function(arg){return arg},isCallable=function(fn){return\"function\"==typeof fn},Iterator=function(){},ArrayIterator=function(array,flag){this._array=array,this._flag=flag,this._nextIndex=0},StringIterator=function(string,flag){this._string=string,this._flag=flag,this._nextIndex=0},isObject=function(value){return null!==value&&(\"object\"==typeof value||\"function\"==typeof value)},setupSymbolInternals=function(symbol,desc){return defineProperties(symbol,{_description:{value:desc},_isSymbol:{value:!0},_id:{value:symbolHiddenCounter++}}),symbol},appendArray=function(array1,array2){if(\"number\"==typeof array1.length&&array1.length>=0&&\"number\"==typeof array2.length&&array2.length>=0){var length1=Math.floor(array1.length),length2=Math.floor(array2.length),i=0;for(array1.length=length1+length2;i<length2;++i)array2.hasOwnProperty(i)&&(array1[length1+i]=array2[i])}},simpleInheritance=function(child,parent){if(\"function\"!=typeof child||\"function\"!=typeof parent)throw new TypeError(\"Child and Parent must be function type\");child.prototype=Object.create(parent.prototype),child.prototype.constructor=child},Symbol=function Symbol(desc){if(desc=void 0===desc?\"\":String(desc),this instanceof Symbol)throw new TypeError(\"Symbol is not a constructor\");return setupSymbolInternals(Object.create(Symbol.prototype),desc)};defineProperties(Symbol,{for:{value:function(key){key=String(key);for(var record,registryLength=globalSymbolRegistry.length,i=0;i<registryLength;++i)if((record=globalSymbolRegistry[i]).key===key)return record.symbol;return record={key:key,symbol:Symbol(key)},globalSymbolRegistry.push(record),record.symbol},writable:!0,configurable:!0},keyFor:{value:function(symbol){if(!ES6.isSymbol(symbol))throw new TypeError(String(symbol)+\" is not a symbol\");for(var record,registryLength=globalSymbolRegistry.length,i=0;i<registryLength;++i)if((record=globalSymbolRegistry[i]).symbol===symbol)return record.key},writable:!0,configurable:!0},hasInstance:{value:Symbol(\"Symbol.hasInstance\")},isConcatSpreadable:{value:Symbol(\"Symbol.isConcatSpreadable\")},iterator:{value:Symbol(\"Symbol.iterator\")},toStringTag:{value:Symbol(\"Symbol.toStringTag\")}}),Symbol.prototype.toString=function(){return\"@@_____\"+this._id+\"_____\"},Symbol.prototype.valueOf=function(){return this},defineProperty(Iterator.prototype,Symbol.iterator.toString(),{value:function(){return this},writable:!0,configurable:!0}),simpleInheritance(ArrayIterator,Iterator),simpleInheritance(StringIterator,Iterator),defineProperty(ArrayIterator.prototype,Symbol.toStringTag.toString(),{value:\"Array Iterator\",configurable:!0}),defineProperty(StringIterator.prototype,Symbol.toStringTag.toString(),{value:\"String Iterator\",configurable:!0}),ArrayIterator.prototype.next=function(){if(!(this instanceof ArrayIterator))throw new TypeError(\"Method Array Iterator.prototype.next called on incompatible receiver \"+String(this));var nextValue;return-1===this._nextIndex?{done:!0,value:void 0}:\"number\"==typeof this._array.length&&this._array.length>=0&&this._nextIndex<Math.floor(this._array.length)?(1===this._flag?nextValue=[this._nextIndex,this._array[this._nextIndex]]:2===this._flag?nextValue=this._array[this._nextIndex]:3===this._flag&&(nextValue=this._nextIndex),this._nextIndex++,{done:!1,value:nextValue}):(this._nextIndex=-1,{done:!0,value:void 0})},StringIterator.prototype.next=function(){if(!(this instanceof StringIterator))throw new TypeError(\"Method String Iterator.prototype.next called on incompatible receiver \"+String(this));var nextValue,stringObject=new String(this._string);return-1===this._nextIndex?{done:!0,value:void 0}:this._nextIndex<stringObject.length?(nextValue=stringObject[this._nextIndex],this._nextIndex++,{done:!1,value:nextValue}):(this._nextIndex=-1,{done:!0,value:void 0})};var SpreadOperatorImpl=function(target,thisArg){this._target=target,this._values=[],this._thisArg=thisArg};SpreadOperatorImpl.prototype.spread=function(){var self=this;return slice.call(arguments).forEach(function(iterable){ES6.forOf(iterable,function(value){self._values.push(value)})}),self},SpreadOperatorImpl.prototype.add=function(){var self=this;return slice.call(arguments).forEach(function(value){self._values.push(value)}),self},SpreadOperatorImpl.prototype.call=function(thisArg){if(\"function\"!=typeof this._target)throw new TypeError(\"Target is not a function\");return thisArg=arguments.length<=0?this._thisArg:thisArg,this._target.apply(thisArg,this._values)},SpreadOperatorImpl.prototype.new=function(){if(\"function\"!=typeof this._target)throw new TypeError(\"Target is not a constructor\");var temp,returnValue;return temp=Object.create(this._target.prototype),returnValue=this._target.apply(temp,this._values),isObject(returnValue)?returnValue:temp},SpreadOperatorImpl.prototype.array=function(){if(!isArray(this._target))throw new TypeError(\"Target is not a array\");return push.apply(this._target,this._values),this._target};return defineProperties(ES6,{isSymbol:{value:function(symbol){return symbol instanceof Symbol&&function(symbol){return!0===symbol._isSymbol&&\"number\"==typeof symbol._id&&\"string\"==typeof symbol._description}(symbol)},writable:!0,configurable:!0},instanceOf:{value:function(object,constructor){if(!isObject(constructor))throw new TypeError(\"Right-hand side of 'instanceof' is not an object\");var hasInstanceSymbolProp=constructor[Symbol.hasInstance];if(void 0===hasInstanceSymbolProp)return object instanceof constructor;if(\"function\"!=typeof hasInstanceSymbolProp)throw new TypeError(typeof hasInstanceSymbolProp+\" is not a function\");return hasInstanceSymbolProp.call(constructor,object)},writable:!0,configurable:!0},forOf:{value:function(iterable,callback,thisArg){if(callback=\"function\"!=typeof callback?emptyFunction:callback,\"function\"!=typeof iterable[Symbol.iterator])throw new TypeError(\"Iterable[Symbol.iterator] is not a function\");var iterationResult,iterator=iterable[Symbol.iterator]();if(\"function\"!=typeof iterator.next)throw new TypeError(\".iterator.next is not a function\");for(;;){if(iterationResult=iterator.next(),!isObject(iterationResult))throw new TypeError(\"Iterator result \"+iterationResult+\" is not an object\");if(iterationResult.done)break;callback.call(thisArg,iterationResult.value)}},writable:!0,configurable:!0},spreadOperator:{value:function(target,thisArg){if(\"function\"!=typeof target&&!isArray(target))throw new TypeError(\"Spread operator only supports on array and function objects at this moment\");return new SpreadOperatorImpl(target,thisArg)},writable:!0,configurable:!0}}),defineProperty(global,\"Symbol\",{value:Symbol,writable:!0,configurable:!0}),defineProperty(Function.prototype,Symbol.hasInstance.toString(),{value:function(instance){return\"function\"==typeof this&&instance instanceof this}}),defineProperty(Array.prototype,\"concat\",{value:function(){if(void 0===this||null===this)throw new TypeError(\"Array.prototype.concat called on null or undefined\");var self=Object(this),targets=slice.call(arguments),outputs=[];return targets.unshift(self),targets.forEach(function(target){isObject(target)?void 0!==target[Symbol.isConcatSpreadable]?target[Symbol.isConcatSpreadable]?appendArray(outputs,target):outputs.push(target):isArray(target)?appendArray(outputs,target):outputs.push(target):outputs.push(target)}),outputs},writable:!0,configurable:!0}),defineProperty(Object.prototype,\"toString\",{value:function(){return void 0===this||null===this?objectToString.call(this):\"string\"==typeof this[Symbol.toStringTag]?\"[object \"+this[Symbol.toStringTag]+\"]\":objectToString.call(this)},writable:!0,configurable:!0}),defineProperty(Array.prototype,Symbol.iterator.toString(),{value:function(){if(void 0===this||null===this)throw new TypeError(\"Cannot convert undefined or null to object\");var self=Object(this);return new ArrayIterator(self,2)},writable:!0,configurable:!0}),defineProperty(Array,\"from\",{value:function(arrayLike,mapFn,thisArg){var constructor,length,outputs,i=0;if(constructor=isCallable(this)?this:Array,void 0===arrayLike||null===arrayLike)throw new TypeError(\"Cannot convert undefined or null to object\");if(arrayLike=Object(arrayLike),void 0===mapFn)mapFn=simpleFunction;else if(!isCallable(mapFn))throw new TypeError(mapFn+\" is not a function\");if(void 0===arrayLike[Symbol.iterator]){if(!(\"number\"==typeof arrayLike.length&&arrayLike.length>=0))return(outputs=new constructor(0)).length=0,outputs;for(length=Math.floor(arrayLike.length),(outputs=new constructor(length)).length=length;i<length;++i)outputs[i]=mapFn.call(thisArg,arrayLike[i])}else(outputs=new constructor).length=0,ES6.forOf(arrayLike,function(value){outputs.length++,outputs[outputs.length-1]=mapFn.call(thisArg,value)});return outputs},writable:!0,configurable:!0}),defineProperty(Array.prototype,\"entries\",{value:function(){if(void 0===this||null===this)throw new TypeError(\"Cannot convert undefined or null to object\");var self=Object(this);return new ArrayIterator(self,1)},writable:!0,configurable:!0}),defineProperty(Array.prototype,\"keys\",{value:function(){if(void 0===this||null===this)throw new TypeError(\"Cannot convert undefined or null to object\");var self=Object(this);return new ArrayIterator(self,3)},writable:!0,configurable:!0}),defineProperty(String.prototype,Symbol.iterator.toString(),{value:function(){if(void 0===this||null===this)throw new TypeError(\"String.prototype[Symbol.iterator] called on null or undefined\");return new StringIterator(String(this),0)},writable:!0,configurable:!0}),ES6});","/* ==========================================================================\n Helper functions\n ========================================================================== */\n\n/*\n * Simple isset method for this does not exist in javascript\n */\nwindow.isset = function (obj) {\n return typeof obj !== 'undefined' && obj !== null;\n};\n\n/*\n * Easing Functions - inspired from http://gizma.com/easing/\n * only considering the t value for the range [0, 1] => [0, 1]\n */\nwindow.EasingFunctions = {\n // no easing, no acceleration\n linear: function (t) {\n return t\n },\n // accelerating from zero velocity\n easeInQuad: function (t) {\n return t * t\n },\n // decelerating to zero velocity\n easeOutQuad: function (t) {\n return t * (2 - t)\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function (t) {\n return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t\n },\n // accelerating from zero velocity\n easeInCubic: function (t) {\n return t * t * t\n },\n // decelerating to zero velocity\n easeOutCubic: function (t) {\n return (--t) * t * t + 1\n },\n // acceleration until halfway, then deceleration\n easeInOutCubic: function (t) {\n return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1\n },\n // accelerating from zero velocity\n easeInQuart: function (t) {\n return t * t * t * t\n },\n // decelerating to zero velocity\n easeOutQuart: function (t) {\n return 1 - (--t) * t * t * t\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function (t) {\n return t < .5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t\n },\n // accelerating from zero velocity\n easeInQuint: function (t) {\n return t * t * t * t * t\n },\n // decelerating to zero velocity\n easeOutQuint: function (t) {\n return 1 + (--t) * t * t * t * t\n },\n // acceleration until halfway, then deceleration\n easeInOutQuint: function (t) {\n return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t\n }\n};\n\n/*\n * Vanilla version of the $.getScript\n */\nwindow.getScript = function (source, callback) {\n let script = document.createElement('script');\n script.async = 1;\n\n const scripts = document.getElementsByTagName('script');\n let prior = scripts[scripts.length - 1];\n\n script.onload = script.onreadystatechange = function (_, isAbort) {\n if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {\n script.onload = script.onreadystatechange = null;\n script = undefined;\n\n if (!isAbort) {\n if (callback) callback();\n }\n }\n };\n\n script.src = source;\n prior.parentNode.insertBefore(script, prior);\n};\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param func\n * @param wait\n * @param immediate\n * @returns {Function}\n */\nwindow.debounce = function(func, wait, immediate) {\n let timeout;\n return function () {\n let context = this, args = arguments;\n let later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n let callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\n/*\n * Cookie helper class\n */\nwindow.Cookie = {\n set: function (name, value, days) {\n let domain, domainParts, date, expires, host;\n\n if (days) {\n date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toGMTString();\n }\n else {\n expires = \"\";\n }\n\n host = location.host;\n if (host.split('.').length === 1) {\n // no \".\" in a domain - it's localhost or something similar\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\n }\n else {\n // Remember the cookie on all sub domains.\n //\n // Start with trying to set cookie to the top domain.\n // (example: if user is on foo.com, try to set\n // cookie to domain \".com\")\n //\n // If the cookie will not be set, it means \".com\"\n // is a top level domain and we need to\n // set the cookie to \".foo.com\"\n domainParts = host.split('.');\n domainParts.shift();\n domain = '.' + domainParts.join('.');\n\n // For development purpose, remove this when moving to production\n // domain = '.komma.pro';\n\n document.cookie = name + \"=\" + value + expires + \"; path=/; domain=\" + domain;\n\n // check if cookie was successfuly set to the given domain\n // (otherwise it was a Top-Level Domain)\n if (Cookie.get(name) == null || Cookie.get(name) != value) {\n // append \".\" to current domain\n domain = '.' + host;\n document.cookie = name + \"=\" + value + expires + \"; path=/; domain=\" + domain;\n }\n }\n },\n\n get: function (name) {\n const nameEQ = name + \"=\";\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n\n erase: function (name) {\n Cookie.set(name, '', -1);\n }\n};\n\n/*\n * Javascript version of the number_format method of PHP\n */\nwindow.number_format = function (number, decimals, dec_point, thousands_sep) {\n // Strip all characters but numerical ones.\n number = (number + '').replace(/[^0-9+\\-Ee.]/g, '');\n let n = !isFinite(+number) ? 0 : +number,\n prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),\n sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,\n dec = (typeof dec_point === 'undefined') ? '.' : dec_point,\n s = '',\n toFixedFix = function (n, prec) {\n var k = Math.pow(10, prec);\n return '' + Math.round(n * k) / k;\n };\n // Fix for IE parseFloat(0.55).toFixed(0) = 0;\n s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');\n if (s[0].length > 3) {\n s[0] = s[0].replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, sep);\n }\n if ((s[1] || '').length < prec) {\n s[1] = s[1] || '';\n s[1] += new Array(prec - s[1].length + 1).join('0');\n }\n return s.join(dec);\n};\n\n\n/**\n * Element.closest() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n */\nif (!Element.prototype.closest) {\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n Element.prototype.closest = function (s) {\n var el = this;\n var ancestor = this;\n if (!document.documentElement.contains(el)) return null;\n do {\n if (ancestor.matches(s)) return ancestor;\n ancestor = ancestor.parentElement;\n } while (ancestor !== null);\n return null;\n };\n}\n\nwindow.Ajax = {\n\n //TODO: Can we create a prepare request function ??\n\n get: function(url, callback) {\n let xhr = new XMLHttpRequest();\n let token = document.querySelector('meta[name=\"csrf-token\"]').content;\n\n xhr.open('get', url, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('X-CSRF-TOKEN', token);\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.send();\n },\n\n post: function(url, data, callback) {\n let xhr = new XMLHttpRequest();\n let token = document.querySelector('meta[name=\"csrf-token\"]').content;\n\n xhr.open('post', url, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('X-CSRF-TOKEN', token);\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n callback(xhr);\n }\n };\n xhr.send( JSON.stringify(data));\n }\n};\n\n/**\n * Capitalize the first letter of the string\n * @param string\n * @returns {string}\n */\nwindow.capitalizeFirstLetter = function (string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n\n/**\n * Convert snake case into camelcase\n *\n * @param string\n * @returns {*}\n */\nwindow.snakeToCamel = function (string){\n return string.replace(/(\\-\\w)/g, function(m){return m[1].toUpperCase();});\n};\n\n/**\n * Get the index of an element inside its parent\n */\nwindow.indexInParent= function (node) {\n const children = node.parentNode.childNodes;\n let num = 0;\n for (let i = 0; i < children.length; i++) {\n if (children[i] == node) return num;\n if (children[i].nodeType == 1) num++;\n }\n return -1;\n};\n\n/**\n * For security reasons iOS Safari only allows document.execCommand('copy') for text within a contentEditable container.\n * The workaround is to detect iOS Safari and quickly toggle contentEditable before executing document.execCommand('copy').\n * Wheb input or textarea is READONLY you can prevent the unwanted popup with copy/paste functions and the input keyboard\n * Code from: https://stackoverflow.com/a/46981847\n */\nwindow.copyToClipboard = function (el) {\n\n // resolve the element\n el = (typeof el === 'string') ? document.querySelector(el) : el;\n\n // handle iOS as a special case\n if (navigator.userAgent.match(/ipad|ipod|iphone/i)) {\n\n // save current contentEditable/readOnly status\n const editable = el.contentEditable;\n const readOnly = el.readOnly;\n\n // convert to editable with readonly to stop iOS keyboard opening\n el.contentEditable = true;\n el.readOnly = true;\n\n // create a selectable range\n var range = document.createRange();\n range.selectNodeContents(el);\n\n // select the range\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n el.setSelectionRange(0, 999999);\n\n // restore contentEditable/readOnly to original state\n el.contentEditable = editable;\n el.readOnly = readOnly;\n }\n else {\n el.select();\n }\n\n // execute copy command\n document.execCommand('copy');\n};\n\n/**\n * Get the position of the element related to the body\n *\n * @param el\n * @returns {{top: number, left: number}}\n */\nwindow.bodyOffset = function (el) {\n const rect = el.getBoundingClientRect(),\n scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,\n scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft }\n};","/* ==========================================================================\n Tabslider handler\n - Handles the tabslider component which has the proper classes.\n ========================================================================== */\n\nconst TabsliderHandler = {\n tabsliderList : null,\n tabslider : null,\n\n init: function () {\n TabsliderHandler.tabsliderList = document.querySelectorAll('.js-tabslider');\n const tabsliderListCount = TabsliderHandler.tabsliderList.length;\n\n if(isset(TabsliderHandler.tabsliderList) && tabsliderListCount !== 0){\n for(let i = 0; i < tabsliderListCount; i++){\n const tabslider = TabsliderHandler.tabsliderList[i];\n TabsliderHandler.initTabslider(tabslider);\n }\n }\n },\n\n initTabslider: function (tabslider) {\n const container = tabslider.querySelector('.js-tabslider-container');\n\n // Check if container element exists\n if (container == null) {\n console.error(`There is no container for the content tabs defined.`);\n return;\n }\n\n const triggers = tabslider.querySelectorAll('.js-tabslider-trigger');\n const tabs = container.querySelectorAll('.js-tabslider-content');\n\n // Check if number of triggers and tabs match\n if(triggers.length !== tabs.length) {\n console.error(`There are ${triggers.length} trigger buttons and ${tabs.length} tabs. These must match.`)\n }\n\n tabslider.addEventListener('click', function (event) {\n\n // Check if clicked on a step button (prev or next)\n if(event.target.closest('.js-tabslider-step')) {\n const dir = event.target.closest('.js-tabslider-step').getAttribute('data-step');\n TabsliderHandler.stepTabslider(dir, triggers, tabs);\n }\n\n // Bail if we didn't click on the trigger element\n if (!event.target.classList.contains('js-tabslider-trigger')) return;\n\n // Bail if already active\n if (event.target.classList.contains('is-active')) { return; }\n\n TabsliderHandler.toggleTabslider(event.target.dataset.tabId, triggers, tabs);\n\n });\n },\n\n toggleTabslider: function (tabId, triggers, tabs) {\n\n if(isset(triggers) && triggers.length > 0){\n\n // Loop through all tabs\n for(let i = 0; i < triggers.length; i++){\n const tabsliderTab = tabs[i];\n const tabsliderTrigger = triggers[i];\n\n tabsliderTrigger.classList.remove('is-active');\n tabsliderTrigger.tabIndex = 0;\n tabsliderTab.classList.remove('is-active');\n\n if (tabsliderTab.dataset.tabId === tabId) {\n tabsliderTrigger.classList.add('is-active');\n tabsliderTrigger.tabIndex = -1;\n tabsliderTab.classList.add('is-active');\n }\n }\n }\n },\n\n stepTabslider: function (dir, triggers, tabs) {\n const triggerCount = triggers.length;\n let activeId = 1;\n let newId = 0;\n\n if(isset(triggers) && triggerCount > 0){\n\n // Loop through all tabs\n for(let i = 0; i < triggerCount; i++){\n const tabsliderTab = tabs[i];\n const tabsliderTrigger = triggers[i];\n\n // Set activeId\n if(tabsliderTab.classList.contains('is-active')){\n activeId = Number(tabsliderTab.getAttribute('data-tab-id'));\n }\n\n // Check what next Id will be\n if(dir === 'next') {\n if (activeId === triggerCount) {\n newId = 0;\n } else {\n newId = activeId;\n }\n } else if (dir === 'prev') {\n if (activeId === 1) {\n newId = triggerCount - 1;\n } else {\n newId = activeId - 2;\n }\n }\n\n // Remove active class\n tabsliderTrigger.tabIndex = 0;\n tabsliderTab.classList.remove('is-active');\n tabsliderTrigger.classList.remove('is-active');\n }\n\n triggers[newId].tabIndex = -1;\n triggers[newId].classList.add('is-active');\n tabs[newId].classList.add('is-active');\n\n }\n }\n};\n\nTabsliderHandler.init();","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/* ==========================================================================\n Cookie handler\n - Primary usage for toggling the cookie message and/or switch\n ========================================================================== */\n\nconst CookieHandler = {\n\n cookieBar : null,\n cookieOverlay : null,\n cookieMessage : null,\n\n cookieSwitch : null,\n\n cookieFadeOutAnimationDuration : 400,\n acceptTracking : false,\n\n // Initialize cookie handler\n init : function()\n {\n // Bind cookie bar or overlay to cookieMessage\n CookieHandler.cookieMessage = document.querySelector('.js-cookie-bar, .js-cookie-overlay');\n\n // Bind cookie bar to cookieBar\n CookieHandler.cookieBar = document.querySelector('.js-cookie-bar');\n\n // If isset init the functions for cookie bar\n if(isset(CookieHandler.cookieBar)){\n CookieHandler.initCookieBar();\n }\n else{\n // Else try to connect cookie overlay with tracking to cookieOverlay\n CookieHandler.cookieOverlay = document.querySelector('.js-cookie-overlay');\n\n // If isset init the functions for cookie overlay\n if(isset(CookieHandler.cookieOverlay)){\n CookieHandler.initCookieOverlay();\n }\n }\n\n // If either type of cookie has been found check if settings are defined\n if(isset(CookieHandler.cookieMessage)){\n CookieHandler.checkForCookieSettings();\n }\n\n // Bind cookie switch to Handler\n CookieHandler.cookieSwitch = document.querySelector('.js-cookie-switch');\n // If isset init the functions for cookie switch\n if(isset(CookieHandler.cookieSwitch)){\n CookieHandler.initCookieSwitch();\n }\n },\n\n // Init the cookie bar actions\n initCookieBar: function(){\n const closeButton = CookieHandler.cookieBar.querySelector('.js-disable-cookie-bar');\n if(isset(closeButton)){\n closeButton.addEventListener('click', CookieHandler.closeCookieMessage);\n }\n },\n\n // Init the cookie overlay actions\n initCookieOverlay: function(){\n\n // Open the cookie settings event\n const openCookieSettingsButton = CookieHandler.cookieMessage.querySelector('.js-change-cookies-settings');\n if(isset(openCookieSettingsButton)){\n openCookieSettingsButton.addEventListener('click', CookieHandler.openCookieSettings);\n }\n\n // Toggle of the tracking input\n const toggleTrackingInput = CookieHandler.cookieMessage.querySelector('.c-cookie-type__input--tracking');\n if(isset(toggleTrackingInput)){\n\n if(toggleTrackingInput.checked === true) {\n CookieHandler.acceptTracking = true;\n }\n\n toggleTrackingInput.addEventListener('change', CookieHandler.toggleTrackingSetting);\n }\n\n // Accept / Save cookies button event\n const acceptButton = CookieHandler.cookieMessage.querySelector('.js-accept-cookies');\n if(isset(acceptButton)){\n acceptButton.addEventListener('click', CookieHandler.setCookieSettings);\n }\n\n },\n\n // Init the cookie switch actions\n initCookieSwitch: function(){\n\n // Toggle of the tracking input\n const toggleTrackingInput = CookieHandler.cookieSwitch.querySelector('.c-cookie-type__input--tracking');\n if(isset(toggleTrackingInput)){\n\n // Force the state of the cookie switch input because the pop-up is forced on checked\n // while the switch checks by php if the cookie really exist or not\n if(toggleTrackingInput.checked === true) {\n CookieHandler.acceptTracking = true;\n }\n else{\n CookieHandler.acceptTracking = false;\n }\n\n toggleTrackingInput.addEventListener('change', CookieHandler.toggleTrackingSetting);\n }\n\n // Save cookies button event\n const saveButton = CookieHandler.cookieSwitch.querySelector('.js-save-cookie-settings');\n if(isset(saveButton)){\n saveButton.addEventListener('click', function(){\n CookieHandler.cookieFadeOutAnimationDuration = 0; // On the switch click we want no delay :)\n CookieHandler.setCookieSettings();\n });\n }\n\n },\n\n checkForCookieSettings: function(){\n if (Cookie.get('cookieMessage')) {\n CookieHandler.cookieMessage.classList.add('is-accepted');\n document.body.classList.add('is-cookies-accepted');\n }\n else {\n CookieHandler.cookieMessage.classList.remove('is-accepted');\n document.body.classList.remove('is-cookies-accepted');\n }\n },\n\n closeCookieMessage: function (){\n Cookie.set('cookieMessage', true, 90);\n CookieHandler.cookieMessage.classList.add('is-transitioning-out');\n document.body.classList.add('is-cookies-accepted');\n },\n\n openCookieSettings: function (){\n CookieHandler.cookieOverlay.querySelector('.js-cookie-settings').classList.remove('is-hidden');\n CookieHandler.cookieOverlay.querySelector('.js-cookie-info').classList.add('is-hidden');\n },\n\n toggleTrackingSetting: function(){\n if(CookieHandler.acceptTracking){\n CookieHandler.acceptTracking = false;\n }\n else{\n CookieHandler.acceptTracking = true;\n }\n },\n\n setCookieSettings: function () {\n\n // Set tracking cookie or delete it if isset according to the desired settings\n if(CookieHandler.acceptTracking){\n Cookie.set('trackingCookieAccepted', 'true', 90);\n }\n else{\n if(Cookie.get('trackingCookieAccepted')){\n Cookie.erase('trackingCookieAccepted');\n }\n }\n\n CookieHandler.closeCookieMessage();\n\n // Reload after animation to automatically trigger the tracking after accepting it\n setTimeout(function(){\n location.reload()\n }, CookieHandler.cookieFadeOutAnimationDuration);\n },\n\n};\n\nCookieHandler.init();"],"sourceRoot":""}