{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/jquery-ajax-unobtrusive/dist/jquery.unobtrusive-ajax.js","webpack:///./node_modules/custom-select/node_modules/custom-event-polyfill/custom-event-polyfill.js","webpack:///./node_modules/lightgallery.js/lib/js/lightgallery.js","webpack:///./node_modules/lightgallery.js/lib/js/lg-utils.js","webpack:///./node_modules/lg-thumbnail.js/dist/lg-thumbnail.js","webpack:///./node_modules/lg-autoplay.js/dist/lg-autoplay.js","webpack:///./node_modules/lg-video.js/dist/lg-video.js","webpack:///./node_modules/lg-fullscreen.js/dist/lg-fullscreen.js","webpack:///./node_modules/lg-pager.js/dist/lg-pager.js","webpack:///./node_modules/lg-zoom.js/dist/lg-zoom.js","webpack:///./node_modules/lg-hash.js/dist/lg-hash.js","webpack:///./node_modules/lg-share.js/dist/lg-share.js","webpack:///./src/js/utils/api/json-to-view.js","webpack:///./src/js/utils/index.js","webpack:///./src/js/utils/build-url-parameters.js","webpack:///./src/js/utils/get-url-parameter.js","webpack:///./src/js/utils/forms/enable-form-submit.js","webpack:///./src/js/utils/forms/serialize-form.js","webpack:///./src/js/utils/array/unique-array-of-objects.js","webpack:///./src/js/api/crud-manager.js","webpack:///./node_modules/@png/npm-svg-icon/src/index.js","webpack:///../node_modules/fast-deep-equal/index.js","webpack:///../src/index.ts","webpack:///./src/js/modules/course-selector.js","webpack:///./src/js/sites/e-learning/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/@png/npm-select-dropdown/src/index.js","webpack:///../src/index.js","webpack:///./node_modules/@png/npm-svg-icon/node_modules/@iconfu/svg-inject/dist/svg-inject.js","webpack:///./src/js/modules/macro-use-button-url.js","webpack:///./src/js/modules/address-lookup.js","webpack:///./src/js/modules/filter-tags.js","webpack:///./src/js/modules/floating-labels.js","webpack:///./src/js/modules/clear-cache.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./src/js/modules/cookie-bar.js","webpack:///./src/js/modules/incrementer.js","webpack:///./src/js/modules/light-gallery.js","webpack:///./src/js/modules/pagination.js","webpack:///./src/js/modules/popup.js","webpack:///./src/js/modules/read-more-less.js","webpack:///./src/js/modules/sticky.js","webpack:///./src/js/modules/toast.js","webpack:///./node_modules/toastify-js/src/toastify.js","webpack:///./src/js/modules/video.js","webpack:///./node_modules/@png/npm-header/src/js/components/menu-toggle.js","webpack:///./node_modules/@png/npm-header/src/js/helpers/scrollbar-width.js","webpack:///./node_modules/@png/npm-header/src/js/components/submenu-toggle.js","webpack:///./node_modules/@png/npm-header/src/js/helpers/siblings.js","webpack:///./node_modules/@png/npm-header/src/js/index.js","webpack:///./node_modules/jump.js/dist/jump.module.js","webpack:///./src/js/modules/smooth-scroll.js","webpack:///./src/js/modules/result-pagination.js","webpack:///./src/js/modules/order-history.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","$","data_click","data_target","getFunction","code","argNames","fn","window","parts","split","length","shift","push","Function","constructor","apply","isMethodProxySafe","method","asyncOnBeforeSend","xhr","setRequestHeader","asyncOnSuccess","element","data","contentType","indexOf","getAttribute","toUpperCase","each","update","prepend","append","replaceWith","html","asyncRequest","options","confirm","loading","duration","parseInt","extend","type","undefined","url","cache","toLowerCase","beforeSend","result","arguments","show","complete","hide","success","status","getResponseHeader","error","$element","is","attr","formdata","FormData","v","file","this","files","processData","ajax","document","on","evt","preventDefault","href","target","form","parents","offset","Math","round","pageX","left","pageY","top","setTimeout","removeData","currentTarget","validationInfo","clickInfo","clickTarget","isCancel","hasClass","validate","action","concat","serializeArray","jQuery","ce","CustomEvent","defaultPrevented","Error","e","event","params","origPrevent","bubbles","cancelable","detail","createEvent","initCustomEvent","Event","define","_lgUtils","obj","_lgUtils2","default","_extends","assign","source","utils","lgData","uid","lgModules","defaults","cssEasing","easing","speed","height","width","addClass","startClass","backdropDuration","hideBarsDelay","useLeft","closable","loop","escKey","keyPress","controls","slideEndAnimatoin","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","selector","selectWithin","nextHtml","prevHtml","index","iframeMaxWidth","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","dynamic","dynamicEl","galleryId","Plugin","el","Array","lGalleryOn","lgBusy","hideBartimeout","isTouch","documentElement","items","querySelector","querySelectorAll","children","___slide","outer","init","_this","_hash","location","hash","body","build","trigger","structure","slide","arrow","closeGallery","removeClass","clearTimeout","template","list","subHtmlCont","insertAdjacentHTML","setVendor","setTop","doCss","inner","prevScrollTop","scrollTop","wH","innerHeight","lGallery","style","transition","root","support","isVideo","src","html5","youtube","match","vimeo","dailymotion","vk","addHtml","currentEle","subHtml","fL","substring","innerHTML","j","loadContent","rec","delay","_img","_src","_poster","_srcset","_sizes","_html","_hasPoster","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","splice","wWidth","innerWidth","poster","responsive","srcset","sizes","iframe","_isVideo","videoClass","setAttribute","picturefill","elements","console","_speed","fromTouch","fromThumb","_prevIndex","_length","_time","_next","_prev","downloadUrl","getElementById","prevIndex","arrowDisable","touchPrev","touchNext","goToNextSlide","goToPrevSlide","keyCode","destroy","next","prev","removeAttribute","setTranslate","xValue","yValue","touchMove","startCoords","endCoords","distance","abs","clientWidth","touchEnd","opacity","isMoved","manageSwipeClass","targetTouches","k","isDraging","scrollLeft","deltaY","mousedown","off","lguid","parentNode","removeChild","err","lightGallery","label","wrap","className","wrapper","createElement","insertBefore","appendChild","classList","add","remove","replace","RegExp","join","contains","test","charAt","slice","customEvent","dispatchEvent","Listener","events","forEach","_id","addEventListener","_event","removeEventListener","param","keys","map","encodeURIComponent","f","u","a","1","require","global","factory","thumbnailDefaults","thumbnail","animateThumb","currentPagerPosition","thumbWidth","thumbContHeight","thumbMargin","exThumbImage","showThumbByDefault","toggleThumb","pullCaptionUp","enableThumbDrag","enableThumbSwipe","loadYoutubeThumbnail","youtubeThumbSize","loadVimeoThumbnail","vimeoThumbSize","loadDailymotionThumbnail","Thumbnail","core","thumbOuter","thumbOuterWidth","thumbTotalWidth","thumbIndex","thumbClickable","toggle","thumbkeyPress","$thumb","thumbList","vimeoErrorThumbSize","getThumb","thumb","thumbImg","vimeoId","offsetWidth","position","$this","vimeoVideoId","content","script","tempLeft","lgScript","getElementsByClassName","lgThumbnail","autoplayDefaults","autoplay","pause","progressBar","fourceAutoplay","autoplayControls","appendAutoplayControlsTo","Autoplay","interval","fromAuto","canceledOnTouch","fourceAutoplayTemp","progress","startlAuto","cancelAuto","_progressBar","_progress","setInterval","clearInterval","lgAutoplay","videoDefaults","videoMaxWidth","youtubePlayerParams","vimeoPlayerParams","dailymotionPlayerParams","vkPlayerParams","videojs","videojsOptions","Video","videoLoaded","loadVideo","play","maxWidth","loadOnClick","$el","display","youtubePlayer","vimeoPlayer","dailymotionPlayer","html5Player","contentWindow","postMessage","$f","api","_loadVideo","$tempImg","$videoSlide","vkPlayer","noposter","video","lgVideo","fullscreenDefaults","fullScreen","isFullScreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","Fullscreen","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","fullscreen","lgFullscreen","pagerDefaults","pager","Pager","$pagerCont","$pagerOuter","timeout","pagerList","lgPager","isChrome","zoomDefaults","scale","zoom","actualSize","enableZoomAfter","useLeftForZoom","navigator","userAgent","Zoom","zoomabletimeout","zoomIcons","scaleVal","image","offsetX","offsetY","clientHeight","x","y","parentElement","callScale","resetZoom","fromIcon","nw","w","naturalWidth","tapped","zoomDrag","zoomSwipe","allowX","allowY","offsetHeight","distanceX","distanceY","_el","touchendZoom","minY","maxY","minX","maxX","lgZoom","hashDefaults","Hash","oldHash","_idx","history","pushState","title","pathname","search","lgHash","shareSefaults","share","facebook","facebookDropdownText","twitter","twitterDropdownText","googlePlus","googlePlusDropdownText","pinterest","pinterestDropdownText","Share","shareHtml","getSharePropsUrl","getShareProps","prop","shareProp","input","group1","lgShare","apiManager","ApiManager","buildUrlParameters","urlParams","URLSearchParams","firstValueSet","linkArray","paramKey","paramValue","has","questionMark","getUrlParameter","enableFormSubmit","serializeForm","field","formObject","nodeName","len","disabled","selected","checked","jsonToView","jsonData","templateView","ApiTemplate","JData","JSON","stringify","post","then","response","catch","uniqueArrayOfObjects","arr","reduce","b","findIndex","config","token","Cookies","request","accept","lang","headers","Headers","fetch","ok","json","text","Promise","reject","responseData","SvgIcon","SVGInject","Loader","apiKey","channel","client","id","libraries","language","region","version","mapIds","nonce","retries","CALLBACK","callbacks","done","errors","instance","equal","isArray","flags","valueOf","toString","isEqual","loadPromise","resolve","loadCallback","execute","callback","createUrl","onerror","loadErrorCallback","defer","async","head","possibleAttempts","deleteScript","log","setScript","onerrorEvent","__googleMapsCallback","cb","google","maps","warn","resetIfRetryingFailed","setCallback","onRenderError","CourseSelector","googleMapsApiKey","microServicesEndpoint","timeoutDelay","geoLocation","lat","long","range","city","button","locationId","dataset","selectedLocationId","renderLocationDataList","radiusField","onRenderLocationsDebounce","locationField","googleMapsLoader","componentRestrictions","country","load","autocomplete","places","Autocomplete","addListener","place","getPlace","geometry","lng","vicinity","addDomListener","triggered","stopPropagation","suggestionSelected","results","ex1","ex2","itemCode","parameters","latitude","longitude","$filter","$orderby","courseItemCodeField","hasSearchLocation","locationListPlaceholder","searchResultsLabel","searchAmountPlaceholder","searchCityPlaceholder","getLocations","locationsResponse","uniqueLocations","locationsResult","viewData","locations","hideDistance","chooseLocationListener","locationDataListPlaceholder","tab","filter","cart","renderLocationsTimeout","renderLocationsList","geoLocationListener","radiusListener","MacroUseButtonUrl","rowClickable","AddressLookup","FilterTags","FloatingLabels","ClearCache","CookieBar","Header","desktopMenuBreakpoint","openUrlOnToggle","Incrementer","LightGallery","Pagination","Popup","ReadMoreLess","dots","SelectDropdown","Sticky","velocity","Toast","close","SmoothScroll","OrderHistory","webpackPolyfill","deprecate","paths","DocumentTouch","customSelect","containerClass","openerClass","panelClass","optionClass","optgroupClass","customParams","nodeList","selects","tagName","elementsList","HTMLElement","builder","defaultParams","isSelectedClass","hasFocusClass","isDisabledClass","isOpenClass","builderParams","isOpen","uId","select","container","opener","focusedElement","selectedElement","panel","currLabel","resetSearchTimeout","searchKey","cstOption","offsetTop","offsetParent","customSelectOriginalOption","setFocusedElement","currentFocusedIndex","bool","openedCustomSelect","open","setSelectedElement","moveFocuesedElement","String","fromCharCode","substr","currPanel","currOption","cstList","TypeError","li","cstOptgroup","subNodes","parseMarkup","lj","targetPar","node","nodePar","markupToInsert","selectedIndex","possible","floor","random","addEvents","removeEvents","toSelect","cstNode","removedNode","changeEvent","empty","removed","optGroup","getElementsByTagName","replaceChild","xmlSerializer","domParser","ID_SUFFIX_REGEX","ID_SUFFIX","ATTRIBUTE_EXCLUSION_NAMES","A_ELEMENT","IS_SVG_SUPPORTED","SVGRect","DEFAULT_OPTIONS","useCache","copyAttributes","makeIdsUnique","IRI_TAG_PROPERTIES_MAP","clipPath","cursor","linearGradient","marker","mask","pattern","radialGradient","uniqueIdCounter","svgElemToSvgString","svgElement","XMLSerializer","serializeToString","svgElem","idElem","idSuffix","idElements","iriTagNames","iriProperties","changed","localName","refAttrName","iri","trim","mappedProperty","propertyName","newValue","funcIriRegex","descElements","textContent","hasAttributes","inject","imgElem","absUrl","attribute","attributeName","attributeValue","attributes","titleElem","firstElementChild","beforeInject","injectElem","removeOnLoadAttribute","afterInject","svgInvalid","mergeOptions","mergedOptions","args","argument","buildSvgElement","svgStr","verify","svgDoc","DOMParser","parseFromString","svgStringToSvgDoc","div","errorMessage","msg","fail","onFail","svgNotSupported","loadFail","removeEventListeners","onload","imgNotSet","SVGInjectInstance","createSVGInject","globalName","defaultOptions","svgLoadCache","img","run","allFinish","onAllFinish","injectIndex","injectCount","finish","SVGInjectElement","svgInjectAttributeValue","beforeLoad","onFinishCallbacks","onFinish","onFinishCallback","useCacheOption","makeIdsUniqueOption","setSvgLoadCacheValue","val","svgLoad","handleLoadValue","loadValue","hasUniqueIds","svgString","uniqueIdsSvgString","makeIdsUniqueCached","isCallbackQueue","errorCallback","req","XMLHttpRequest","onreadystatechange","readyState","responseXML","responseText","send","loadSvg","svgXml","Document","afterLoad","svgElemOrSvgString","isString","SVGElement","css","createTextNode","addStyleToHead","setOptions","fallbackSrc","classButtonPrimary","classButtonLink","modulePrimary","moduleLink","setMacroClickWithUrlOf","cols","col","btn","macro","forms","getOwnPropertyNames","targetInput","tempEl","namedItem","cbName","street","Street","City","resolveLocation","item","currentParameters","getUrlParams","filteredParameterValues","keyName","hashes","decodeURIComponent","tag","updatedParams","deleteItemParams","protocol","host","floatLabels","floatClassName","floatFields","handleFocus","handleBlur","inputValue","floatField","bindEvents","moduleList","Authorization","res","reload","registeredInModuleLoader","OldCookies","noConflict","converter","path","expires","Date","setMilliseconds","getMilliseconds","toUTCString","write","escape","stringifiedAttributes","cookie","cookies","rdecode","read","parse","set","getJSON","withConverter","expireDays","cookiePath","isHttps","setCookies","approvedCookies","secure","sameSite","submit","acceptAll","from","checkbox","triggerMoreInfo","incrementer","buttonMinus","buttonPlus","quantityElement","screenWidth","find","prevText","nextText","firstChild","checkScreenSize","cookieName","cookieExpireDays","closeButton","modal","readmore","readless","parentsUntil","contents","nodeType","closest","checkScrollPosition","pageYOffset","typeMap","avatar","warning","hasToastify","some","eventType","Toastify","showToast","lib","containsClass","elem","yourClass","toastify","destination","newWindow","gravity","positionLeft","backgroundColor","buildToast","divElement","background","avatarElement","insertAdjacentElement","closeElement","removeElement","timeOutValue","screen","rootElement","toastElement","reposition","classUsed","topLeftOffsetSize","bottom","topRightOffsetSize","offsetSize","allToasts","player","setVolume","includes","isVimeo","Vimeo","Player","amount","mute","unmute","toggleSound","MenuToggle","rootModule","menuModals","modalTriggers","toggleMenu","reset","triggerModal","isAnimating","modalId","forceClose","modalList","menuModal","openModal","animateModal","toggleAnimationState","paddingRight","overflow","SubmenuToggle","menus","submenuToggle","parent","onDocumentClick","getMenu","normalLinks","menu","normalLink","hasNestedSubmenu","disableUrl","child","siblings","sibling","nextSibling","getSiblings","isDesktopMenu","menuToggle","disableTransitions","easeInOutQuad","_typeof","iterator","singleton","start","stop","a11y","timeStart","timeElapsed","scrollY","getBoundingClientRect","timeCurrent","scrollTo","requestAnimationFrame","focus","jumper","header","headerOffset","jump","ResultPagination","current","page","pages","firstPage","lastPage","ceil","maxNumberOfElements","offsetLeft","reverse","offsetRight","addSeparator","isSelected","total","perPage","Number","isNaN","generatePaginationArray","array","currentPage","isActive","isInteger","firstItem","lastItem","unshift","elementPlaceholder","resultName","pagingData","totalPages","paginationArray","paginationItems","generateElements","ordersOverview","orderDetails","overviewItems","sort","customerId","headersonly","resultPagination","renderOrdersOverview","renderOrderDetails","render","ordersType","apiTemplate","userId","showItems","setPagination","orderId"],"mappings":"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","file":"sites/e-learning/index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 333);\n","// Unobtrusive Ajax support library for jQuery\n// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\n// @version v3.2.6\n// \n// Microsoft grants you the right to use these script files for the sole\n// purpose of either: (i) interacting through your browser with the Microsoft\n// website or online service, subject to the applicable licensing or use\n// terms; or (ii) using the files as included with a Microsoft product subject\n// to that product's license terms. Microsoft reserves all other rights to the\n// files not expressly granted by Microsoft, whether by implication, estoppel\n// or otherwise. Insofar as a script file is dual licensed under GPL,\n// Microsoft neither took the code under GPL nor distributes it thereunder but\n// under the terms set out in this paragraph. All notices and licenses\n// below are for informational purposes only.\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global window: false, jQuery: false */\n\n(function ($) {\n var data_click = \"unobtrusiveAjaxClick\",\n data_target = \"unobtrusiveAjaxClickTarget\",\n data_validation = \"unobtrusiveValidation\";\n\n function getFunction(code, argNames) {\n var fn = window, parts = (code || \"\").split(\".\");\n while (fn && parts.length) {\n fn = fn[parts.shift()];\n }\n if (typeof (fn) === \"function\") {\n return fn;\n }\n argNames.push(code);\n return Function.constructor.apply(null, argNames);\n }\n\n function isMethodProxySafe(method) {\n return method === \"GET\" || method === \"POST\";\n }\n\n function asyncOnBeforeSend(xhr, method) {\n if (!isMethodProxySafe(method)) {\n xhr.setRequestHeader(\"X-HTTP-Method-Override\", method);\n }\n }\n\n function asyncOnSuccess(element, data, contentType) {\n var mode;\n\n if (contentType.indexOf(\"application/x-javascript\") !== -1) { // jQuery already executes JavaScript for us\n return;\n }\n\n mode = (element.getAttribute(\"data-ajax-mode\") || \"\").toUpperCase();\n $(element.getAttribute(\"data-ajax-update\")).each(function (i, update) {\n var top;\n\n switch (mode) {\n case \"BEFORE\":\n $(update).prepend(data);\n break;\n case \"AFTER\":\n $(update).append(data);\n break;\n case \"REPLACE-WITH\":\n $(update).replaceWith(data);\n break;\n default:\n $(update).html(data);\n break;\n }\n });\n }\n\n function asyncRequest(element, options) {\n var confirm, loading, method, duration;\n\n confirm = element.getAttribute(\"data-ajax-confirm\");\n if (confirm && !window.confirm(confirm)) {\n return;\n }\n\n loading = $(element.getAttribute(\"data-ajax-loading\"));\n duration = parseInt(element.getAttribute(\"data-ajax-loading-duration\"), 10) || 0;\n\n $.extend(options, {\n type: element.getAttribute(\"data-ajax-method\") || undefined,\n url: element.getAttribute(\"data-ajax-url\") || undefined,\n cache: (element.getAttribute(\"data-ajax-cache\") || \"\").toLowerCase() === \"true\",\n beforeSend: function (xhr) {\n var result;\n asyncOnBeforeSend(xhr, method);\n result = getFunction(element.getAttribute(\"data-ajax-begin\"), [\"xhr\"]).apply(element, arguments);\n if (result !== false) {\n loading.show(duration);\n }\n return result;\n },\n complete: function () {\n loading.hide(duration);\n getFunction(element.getAttribute(\"data-ajax-complete\"), [\"xhr\", \"status\"]).apply(element, arguments);\n },\n success: function (data, status, xhr) {\n asyncOnSuccess(element, data, xhr.getResponseHeader(\"Content-Type\") || \"text/html\");\n getFunction(element.getAttribute(\"data-ajax-success\"), [\"data\", \"status\", \"xhr\"]).apply(element, arguments);\n },\n error: function () {\n getFunction(element.getAttribute(\"data-ajax-failure\"), [\"xhr\", \"status\", \"error\"]).apply(element, arguments);\n }\n });\n\n options.data.push({ name: \"X-Requested-With\", value: \"XMLHttpRequest\" });\n\n method = options.type.toUpperCase();\n if (!isMethodProxySafe(method)) {\n options.type = \"POST\";\n options.data.push({ name: \"X-HTTP-Method-Override\", value: method });\n }\n\n // change here:\n // Check for a Form POST with enctype=multipart/form-data\n // add the input file that were not previously included in the serializeArray()\n // set processData and contentType to false\n var $element = $(element);\n if ($element.is(\"form\") && $element.attr(\"enctype\") == \"multipart/form-data\") {\n var formdata = new FormData();\n $.each(options.data, function (i, v) {\n formdata.append(v.name, v.value);\n });\n $(\"input[type=file]\", $element).each(function () {\n var file = this;\n $.each(file.files, function (n, v) {\n formdata.append(file.name, v);\n });\n });\n $.extend(options, {\n processData: false,\n contentType: false,\n data: formdata\n });\n }\n // end change\n\n $.ajax(options);\n }\n\n function validate(form) {\n var validationInfo = $(form).data(data_validation);\n return !validationInfo || !validationInfo.validate || validationInfo.validate();\n }\n\n $(document).on(\"click\", \"a[data-ajax=true]\", function (evt) {\n evt.preventDefault();\n asyncRequest(this, {\n url: this.href,\n type: \"GET\",\n data: []\n });\n });\n\n $(document).on(\"click\", \"form[data-ajax=true] input[type=image]\", function (evt) {\n var name = evt.target.name,\n target = $(evt.target),\n form = $(target.parents(\"form\")[0]),\n offset = target.offset();\n\n form.data(data_click, [\n { name: name + \".x\", value: Math.round(evt.pageX - offset.left) },\n { name: name + \".y\", value: Math.round(evt.pageY - offset.top) }\n ]);\n\n setTimeout(function () {\n form.removeData(data_click);\n }, 0);\n });\n\n $(document).on(\"click\", \"form[data-ajax=true] :submit\", function (evt) {\n var name = evt.currentTarget.name,\n target = $(evt.target),\n form = $(target.parents(\"form\")[0]);\n\n form.data(data_click, name ? [{ name: name, value: evt.currentTarget.value }] : []);\n form.data(data_target, target);\n\n setTimeout(function () {\n form.removeData(data_click);\n form.removeData(data_target);\n }, 0);\n });\n\n $(document).on(\"submit\", \"form[data-ajax=true]\", function (evt) {\n var clickInfo = $(this).data(data_click) || [],\n clickTarget = $(this).data(data_target),\n isCancel = clickTarget && (clickTarget.hasClass(\"cancel\") || clickTarget.attr('formnovalidate') !== undefined);\n evt.preventDefault();\n if (!isCancel && !validate(this)) {\n return;\n }\n asyncRequest(this, {\n url: this.action,\n type: this.method || \"GET\",\n data: clickInfo.concat($(this).serializeArray())\n });\n });\n}(jQuery));\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\ntry {\n var ce = new window.CustomEvent('test');\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n} catch(e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n origPrevent = evt.preventDefault;\n evt.preventDefault = function () {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n } catch(e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n}\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./lg-utils'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(require('./lg-utils'));\n } else {\n var mod = {\n exports: {}\n };\n factory(global.lgUtils);\n global.lightgallery = mod.exports;\n }\n})(this, function (_lgUtils) {\n 'use strict';\n\n var _lgUtils2 = _interopRequireDefault(_lgUtils);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n /** Polyfill the CustomEvent() constructor functionality in Internet Explorer 9 and higher */\n (function () {\n\n if (typeof window.CustomEvent === 'function') {\n return false;\n }\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n window.utils = _lgUtils2.default;\n window.lgData = {\n uid: 0\n };\n\n window.lgModules = {};\n var defaults = {\n\n mode: 'lg-slide',\n\n // Ex : 'ease'\n cssEasing: 'ease',\n\n //'for jquery animation'\n easing: 'linear',\n speed: 600,\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 150,\n hideBarsDelay: 6000,\n\n useLeft: false,\n\n closable: true,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimatoin: true,\n hideControlOnEnd: false,\n mousewheel: false,\n\n getCaptionFromTitleOrAlt: true,\n\n // .lg-item || '.lg-sub-html'\n appendSubHtmlTo: '.lg-sub-html',\n\n subHtmlSelectorRelative: false,\n\n /**\n * @desc number of preload slides\n * will exicute only after the current slide is fully loaded.\n *\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\n *\n */\n preload: 1,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n\n // 0, 1\n index: false,\n\n iframeMaxWidth: '100%',\n\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n\n dynamic: false,\n dynamicEl: [],\n galleryId: 1\n };\n\n function Plugin(element, options) {\n\n // Current lightGallery element\n this.el = element;\n\n // lightGallery settings\n this.s = _extends({}, defaults, options);\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n // lightGallery modules\n this.modules = {};\n\n // false when lightgallery complete first slide;\n this.lGalleryOn = false;\n\n this.lgBusy = false;\n\n // Timeout function for hiding controls;\n this.hideBartimeout = false;\n\n // To determine browser supports for touch events;\n this.isTouch = 'ontouchstart' in document.documentElement;\n\n // Disable hideControlOnEnd if sildeEndAnimation is true\n if (this.s.slideEndAnimatoin) {\n this.s.hideControlOnEnd = false;\n }\n\n this.items = [];\n\n // Gallery items\n if (this.s.dynamic) {\n this.items = this.s.dynamicEl;\n } else {\n if (this.s.selector === 'this') {\n this.items.push(this.el);\n } else if (this.s.selector !== '') {\n if (this.s.selectWithin) {\n this.items = document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector);\n } else {\n this.items = this.el.querySelectorAll(this.s.selector);\n }\n } else {\n this.items = this.el.children;\n }\n }\n\n // .lg-item\n\n this.___slide = '';\n\n // .lg-outer\n this.outer = '';\n\n this.init();\n\n return this;\n }\n\n Plugin.prototype.init = function () {\n\n var _this = this;\n\n // s.preload should not be more than $item.length\n if (_this.s.preload > _this.items.length) {\n _this.s.preload = _this.items.length;\n }\n\n // if dynamic option is enabled execute immediately\n var _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\n\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\n\n _lgUtils2.default.addClass(document.body, 'lg-from-hash');\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n }\n\n if (_this.s.dynamic) {\n\n _lgUtils2.default.trigger(this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || 0;\n\n // prevent accidental double execution\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n } else {\n\n for (var i = 0; i < _this.items.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n _lgUtils2.default.on(_this.items[index], 'click.lgcustom', function (e) {\n\n e.preventDefault();\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || index;\n\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _this.build(_this.index);\n _lgUtils2.default.addClass(document.body, 'lg-on');\n }\n });\n })(i);\n }\n }\n };\n\n Plugin.prototype.build = function (index) {\n\n var _this = this;\n\n _this.structure();\n\n for (var key in window.lgModules) {\n _this.modules[key] = new window.lgModules[key](_this.el);\n }\n\n // initiate slide function\n _this.slide(index, false, false);\n\n if (_this.s.keyPress) {\n _this.keyPress();\n }\n\n if (_this.items.length > 1) {\n\n _this.arrow();\n\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n }, 50);\n\n if (_this.s.mousewheel) {\n _this.mousewheel();\n }\n }\n\n _this.counter();\n\n _this.closeGallery();\n\n _lgUtils2.default.trigger(_this.el, 'onAfterOpen');\n\n // Hide controllers if mouse doesn't move for some period\n _lgUtils2.default.on(_this.outer, 'mousemove.lg click.lg touchstart.lg', function () {\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-items');\n\n clearTimeout(_this.hideBartimeout);\n\n // Timeout will be cleared on each slide movement also\n _this.hideBartimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n });\n };\n\n Plugin.prototype.structure = function () {\n var list = '';\n var controls = '';\n var i = 0;\n var subHtmlCont = '';\n var template;\n var _this = this;\n\n document.body.insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.setVendor(document.querySelector('.lg-backdrop'), 'TransitionDuration', this.s.backdropDuration + 'ms');\n\n // Create gallery items\n for (i = 0; i < this.items.length; i++) {\n list += '
';\n }\n\n // Create controlls\n if (this.s.controls && this.items.length > 1) {\n controls = '
' + '
' + this.s.prevHtml + '
' + '
' + this.s.nextHtml + '
' + '
';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '
';\n }\n\n template = '
' + '
' + '
' + list + '
' + '
' + '' + '
' + controls + subHtmlCont + '
' + '
';\n\n document.body.insertAdjacentHTML('beforeend', template);\n this.outer = document.querySelector('.lg-outer');\n this.___slide = this.outer.querySelectorAll('.lg-item');\n\n if (this.s.useLeft) {\n _lgUtils2.default.addClass(this.outer, 'lg-use-left');\n\n // Set mode lg-slide if use left is true;\n this.s.mode = 'lg-slide';\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-use-css3');\n }\n\n // For fixed height gallery\n _this.setTop();\n _lgUtils2.default.on(window, 'resize.lg orientationchange.lg', function () {\n setTimeout(function () {\n _this.setTop();\n }, 100);\n });\n\n // add class lg-current to remove initial transition\n _lgUtils2.default.addClass(this.___slide[this.index], 'lg-current');\n\n // add Class for css support and transition mode\n if (this.doCss()) {\n _lgUtils2.default.addClass(this.outer, 'lg-css3');\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-css');\n\n // Set speed 0 because no animation will happen if browser doesn't support css3\n this.s.speed = 0;\n }\n\n _lgUtils2.default.addClass(this.outer, this.s.mode);\n\n if (this.s.enableDrag && this.items.length > 1) {\n _lgUtils2.default.addClass(this.outer, 'lg-grab');\n }\n\n if (this.s.showAfterLoad) {\n _lgUtils2.default.addClass(this.outer, 'lg-show-after-load');\n }\n\n if (this.doCss()) {\n var inner = this.outer.querySelector('.lg-inner');\n _lgUtils2.default.setVendor(inner, 'TransitionTimingFunction', this.s.cssEasing);\n _lgUtils2.default.setVendor(inner, 'TransitionDuration', this.s.speed + 'ms');\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(document.querySelector('.lg-backdrop'), 'in');\n });\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-visible');\n }, this.s.backdropDuration);\n\n if (this.s.download) {\n this.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', '');\n }\n\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n };\n\n // For fixed height gallery\n Plugin.prototype.setTop = function () {\n if (this.s.height !== '100%') {\n var wH = window.innerHeight;\n var top = (wH - parseInt(this.s.height, 10)) / 2;\n var lGallery = this.outer.querySelector('.lg');\n if (wH >= parseInt(this.s.height, 10)) {\n lGallery.style.top = top + 'px';\n } else {\n lGallery.style.top = '0px';\n }\n }\n };\n\n // Find css3 support\n Plugin.prototype.doCss = function () {\n // check for css animation support\n var support = function support() {\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n var root = document.documentElement;\n var i = 0;\n for (i = 0; i < transition.length; i++) {\n if (transition[i] in root.style) {\n return true;\n }\n }\n };\n\n if (support()) {\n return true;\n }\n\n return false;\n };\n\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n */\n Plugin.prototype.isVideo = function (src, index) {\n\n var html;\n if (this.s.dynamic) {\n html = this.s.dynamicEl[index].html;\n } else {\n html = this.items[index].getAttribute('data-html');\n }\n\n if (!src && html) {\n return {\n html5: true\n };\n }\n\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (dailymotion) {\n return {\n dailymotion: dailymotion\n };\n } else if (vk) {\n return {\n vk: vk\n };\n }\n };\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n Plugin.prototype.counter = function () {\n if (this.s.counter) {\n this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML('beforeend', '
' + (parseInt(this.index, 10) + 1) + ' / ' + this.items.length + '
');\n }\n };\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.addHtml = function (index) {\n var subHtml = null;\n var currentEle;\n if (this.s.dynamic) {\n subHtml = this.s.dynamicEl[index].subHtml;\n } else {\n currentEle = this.items[index];\n subHtml = currentEle.getAttribute('data-sub-html');\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\n subHtml = currentEle.getAttribute('title');\n if (subHtml && currentEle.querySelector('img')) {\n subHtml = currentEle.querySelector('img').getAttribute('alt');\n }\n }\n }\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n\n // get first letter of subhtml\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\n subHtml = currentEle.querySelector(subHtml).innerHTML;\n } else {\n subHtml = document.querySelector(subHtml).innerHTML;\n }\n }\n } else {\n subHtml = '';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML = subHtml;\n } else {\n this.___slide[index].insertAdjacentHTML('beforeend', subHtml);\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n _lgUtils2.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n } else {\n _lgUtils2.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n }\n }\n\n _lgUtils2.default.trigger(this.el, 'onAfterAppendSubHtml', {\n index: index\n });\n };\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.preload = function (index) {\n var i = 1;\n var j = 1;\n for (i = 1; i <= this.s.preload; i++) {\n if (i >= this.items.length - index) {\n break;\n }\n\n this.loadContent(index + i, false, 0);\n }\n\n for (j = 1; j <= this.s.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false, 0);\n }\n };\n\n /**\n * @desc Load slide content into slide.\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\n */\n Plugin.prototype.loadContent = function (index, rec, delay) {\n\n var _this = this;\n var _hasPoster = false;\n var _img;\n var _src;\n var _poster;\n var _srcset;\n var _sizes;\n var _html;\n var getResponsiveSrc = function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n for (var i = 0; i < srcItms.length; i++) {\n var __src = srcItms[i].split(' ');\n\n // Manage empty space\n if (__src[0] === '') {\n __src.splice(0, 1);\n }\n\n rsSrc.push(__src[0]);\n rsWidth.push(__src[1]);\n }\n\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n _src = rsSrc[j];\n break;\n }\n }\n };\n\n if (_this.s.dynamic) {\n\n if (_this.s.dynamicEl[index].poster) {\n _hasPoster = true;\n _poster = _this.s.dynamicEl[index].poster;\n }\n\n _html = _this.s.dynamicEl[index].html;\n _src = _this.s.dynamicEl[index].src;\n\n if (_this.s.dynamicEl[index].responsive) {\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\n getResponsiveSrc(srcDyItms);\n }\n\n _srcset = _this.s.dynamicEl[index].srcset;\n _sizes = _this.s.dynamicEl[index].sizes;\n } else {\n\n if (_this.items[index].getAttribute('data-poster')) {\n _hasPoster = true;\n _poster = _this.items[index].getAttribute('data-poster');\n }\n\n _html = _this.items[index].getAttribute('data-html');\n _src = _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src');\n\n if (_this.items[index].getAttribute('data-responsive')) {\n var srcItms = _this.items[index].getAttribute('data-responsive').split(',');\n getResponsiveSrc(srcItms);\n }\n\n _srcset = _this.items[index].getAttribute('data-srcset');\n _sizes = _this.items[index].getAttribute('data-sizes');\n }\n\n //if (_src || _srcset || _sizes || _poster) {\n\n var iframe = false;\n if (_this.s.dynamic) {\n if (_this.s.dynamicEl[index].iframe) {\n iframe = true;\n }\n } else {\n if (_this.items[index].getAttribute('data-iframe') === 'true') {\n iframe = true;\n }\n }\n\n var _isVideo = _this.isVideo(_src, index);\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-loaded')) {\n if (iframe) {\n _this.___slide[index].insertAdjacentHTML('afterbegin', '
');\n } else if (_hasPoster) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n } else if (_isVideo) {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.trigger(_this.el, 'hasVideo', {\n index: index,\n src: _src,\n html: _html\n });\n } else {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n }\n\n _lgUtils2.default.trigger(_this.el, 'onAferAppendSlide', {\n index: index\n });\n\n _img = _this.___slide[index].querySelector('.lg-object');\n if (_sizes) {\n _img.setAttribute('sizes', _sizes);\n }\n\n if (_srcset) {\n _img.setAttribute('srcset', _srcset);\n try {\n picturefill({\n elements: [_img[0]]\n });\n } catch (e) {\n console.error('Make sure you have included Picturefill version 2');\n }\n }\n\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\n _this.addHtml(index);\n }\n\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-loaded');\n }\n\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !_lgUtils2.default.hasClass(document.body, 'lg-from-hash')) {\n _speed = delay;\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n\n _lgUtils2.default.trigger(_this.el, 'onSlideItemLoad', {\n index: index,\n delay: delay || 0\n });\n }, _speed);\n });\n\n // @todo check load state for html5 videos\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n }\n\n if (rec === true) {\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-complete')) {\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n _this.preload(index);\n }\n }\n\n //}\n };\n\n /**\n * @desc slide function for lightgallery\n ** Slide() gets call on start\n ** ** Set lg.on true once slide() function gets called.\n ** Call loadContent() on slide() function inside setTimeout\n ** ** On first slide we do not want any animation like slide of fade\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\n ** ** Else loadContent() should wait for the transition to complete.\n ** ** So set timeout s.speed + 50\n <=> ** loadContent() will load slide content in to the particular slide\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\n ** ** avoid simultaneous image load\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\n ** loadContent() <====> Preload();\n \n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n */\n Plugin.prototype.slide = function (index, fromTouch, fromThumb) {\n\n var _prevIndex = 0;\n for (var i = 0; i < this.___slide.length; i++) {\n if (_lgUtils2.default.hasClass(this.___slide[i], 'lg-current')) {\n _prevIndex = i;\n break;\n }\n }\n\n var _this = this;\n\n // Prevent if multiple call\n // Required for hsh plugin\n if (_this.lGalleryOn && _prevIndex === index) {\n return;\n }\n\n var _length = this.___slide.length;\n var _time = _this.lGalleryOn ? this.s.speed : 0;\n var _next = false;\n var _prev = false;\n\n if (!_this.lgBusy) {\n\n if (this.s.download) {\n var _src;\n if (_this.s.dynamic) {\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\n } else {\n _src = _this.items[index].getAttribute('data-download-url') !== 'false' && (_this.items[index].getAttribute('data-download-url') || _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src'));\n }\n\n if (_src) {\n document.getElementById('lg-download').setAttribute('href', _src);\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-download');\n } else {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-download');\n }\n }\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n\n _this.lgBusy = true;\n\n clearTimeout(_this.hideBartimeout);\n\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n\n // wait for slide animation to complete\n setTimeout(function () {\n _this.addHtml(index);\n }, _time);\n }\n\n this.arrowDisable(index);\n\n if (!fromTouch) {\n\n // remove all transitions\n _lgUtils2.default.addClass(_this.outer, 'lg-no-trans');\n\n for (var j = 0; j < this.___slide.length; j++) {\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-prev-slide');\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-next-slide');\n }\n\n if (index < _prevIndex) {\n _prev = true;\n if (index === 0 && _prevIndex === _length - 1 && !fromThumb) {\n _prev = false;\n _next = true;\n }\n } else if (index > _prevIndex) {\n _next = true;\n if (index === _length - 1 && _prevIndex === 0 && !fromThumb) {\n _prev = true;\n _next = false;\n }\n }\n\n if (_prev) {\n\n //prevslide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-prev-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-next-slide');\n } else if (_next) {\n\n // next slide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-next-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n\n // reset all transitions\n _lgUtils2.default.removeClass(_this.outer, 'lg-no-trans');\n }, 50);\n } else {\n\n var touchPrev = index - 1;\n var touchNext = index + 1;\n\n if (index === 0 && _prevIndex === _length - 1) {\n\n // next slide\n touchNext = 0;\n touchPrev = _length - 1;\n } else if (index === _length - 1 && _prevIndex === 0) {\n\n // prev slide\n touchNext = 0;\n touchPrev = _length - 1;\n }\n\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-prev-slide'), 'lg-prev-slide');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-next-slide'), 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[touchPrev], 'lg-prev-slide');\n _lgUtils2.default.addClass(_this.___slide[touchNext], 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n }\n\n if (_this.lGalleryOn) {\n setTimeout(function () {\n _this.loadContent(index, true, 0);\n }, this.s.speed + 50);\n\n setTimeout(function () {\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, this.s.speed);\n } else {\n _this.loadContent(index, true, _this.s.backdropDuration);\n\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }\n\n _this.lGalleryOn = true;\n\n if (this.s.counter) {\n if (document.getElementById('lg-counter-current')) {\n document.getElementById('lg-counter-current').innerHTML = index + 1;\n }\n }\n }\n };\n\n /**\n * @desc Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index + 1 < _this.___slide.length) {\n _this.index++;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = 0;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-right-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-right-end');\n }, 400);\n }\n }\n }\n };\n\n /**\n * @desc Go to previous slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index > 0) {\n _this.index--;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = _this.items.length - 1;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-left-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n Plugin.prototype.keyPress = function () {\n var _this = this;\n if (this.items.length > 1) {\n _lgUtils2.default.on(window, 'keyup.lg', function (e) {\n if (_this.items.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'keydown.lg', function (e) {\n if (_this.s.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-thumb-open')) {\n _this.destroy();\n } else {\n _lgUtils2.default.removeClass(_this.outer, 'lg-thumb-open');\n }\n }\n });\n };\n\n Plugin.prototype.arrow = function () {\n var _this = this;\n _lgUtils2.default.on(this.outer.querySelector('.lg-prev'), 'click.lg', function () {\n _this.goToPrevSlide();\n });\n\n _lgUtils2.default.on(this.outer.querySelector('.lg-next'), 'click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n Plugin.prototype.arrowDisable = function (index) {\n\n // Disable arrows if s.hideControlOnEnd is true\n if (!this.s.loop && this.s.hideControlOnEnd) {\n var next = this.outer.querySelector('.lg-next');\n var prev = this.outer.querySelector('.lg-prev');\n if (index + 1 < this.___slide.length) {\n next.removeAttribute('disabled');\n _lgUtils2.default.removeClass(next, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n\n if (index > 0) {\n prev.removeAttribute('disabled');\n _lgUtils2.default.removeClass(prev, 'disabled');\n } else {\n prev.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(prev, 'disabled');\n }\n }\n };\n\n Plugin.prototype.setTranslate = function (el, xValue, yValue) {\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\n if (this.s.useLeft) {\n el.style.left = xValue;\n } else {\n _lgUtils2.default.setVendor(el, 'Transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px)');\n }\n };\n\n Plugin.prototype.touchMove = function (startCoords, endCoords) {\n\n var distance = endCoords - startCoords;\n\n if (Math.abs(distance) > 15) {\n // reset opacity and transition duration\n _lgUtils2.default.addClass(this.outer, 'lg-dragging');\n\n // move current slide\n this.setTranslate(this.___slide[this.index], distance, 0);\n\n // move next and prev slide with current slide\n this.setTranslate(document.querySelector('.lg-prev-slide'), -this.___slide[this.index].clientWidth + distance, 0);\n this.setTranslate(document.querySelector('.lg-next-slide'), this.___slide[this.index].clientWidth + distance, 0);\n }\n };\n\n Plugin.prototype.touchEnd = function (distance) {\n var _this = this;\n\n // keep slide animation for any mode while dragg/swipe\n if (_this.s.mode !== 'lg-slide') {\n _lgUtils2.default.addClass(_this.outer, 'lg-slide');\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n if (!_lgUtils2.default.hasClass(this.___slide[i], 'lg-current') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-prev-slide') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-next-slide')) {\n this.___slide[i].style.opacity = '0';\n }\n }\n\n // set transition duration\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-dragging');\n if (distance < 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToNextSlide(true);\n } else if (distance > 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToPrevSlide(true);\n } else if (Math.abs(distance) < 5) {\n\n // Trigger click if distance is less than 5 pix\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n for (var i = 0; i < _this.___slide.length; i++) {\n _this.___slide[i].removeAttribute('style');\n }\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging') && _this.s.mode !== 'lg-slide') {\n _lgUtils2.default.removeClass(_this.outer, 'lg-slide');\n }\n }, _this.s.speed + 100);\n };\n\n Plugin.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\n\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'touchstart.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n _this.manageSwipeClass();\n startCoords = e.targetTouches[0].pageX;\n }\n });\n }\n\n for (var j = 0; j < _this.___slide.length; j++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[j], 'touchmove.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n _this.touchMove(startCoords, endCoords);\n isMoved = true;\n }\n });\n }\n\n for (var k = 0; k < _this.___slide.length; k++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[k], 'touchend.lg', function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n } else {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n }\n });\n }\n }\n };\n\n Plugin.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'mousedown.lg', function (e) {\n // execute only on .lg-object\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.scrollLeft += 1;\n _this.outer.scrollLeft -= 1;\n\n // *\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-grab');\n _lgUtils2.default.addClass(_this.outer, 'lg-grabbing');\n\n _lgUtils2.default.trigger(_this.el, 'onDragstart');\n }\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'mousemove.lg', function (e) {\n if (isDraging) {\n isMoved = true;\n endCoords = e.pageX;\n _this.touchMove(startCoords, endCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragmove');\n }\n });\n\n _lgUtils2.default.on(window, 'mouseup.lg', function (e) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragend');\n } else if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _lgUtils2.default.removeClass(_this.outer, 'lg-grabbing');\n _lgUtils2.default.addClass(_this.outer, 'lg-grab');\n }\n });\n }\n };\n\n Plugin.prototype.manageSwipeClass = function () {\n var touchNext = this.index + 1;\n var touchPrev = this.index - 1;\n var length = this.___slide.length;\n if (this.s.loop) {\n if (this.index === 0) {\n touchPrev = length - 1;\n } else if (this.index === length - 1) {\n touchNext = 0;\n }\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-next-slide');\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-prev-slide');\n }\n\n if (touchPrev > -1) {\n _lgUtils2.default.addClass(this.___slide[touchPrev], 'lg-prev-slide');\n }\n\n _lgUtils2.default.addClass(this.___slide[touchNext], 'lg-next-slide');\n };\n\n Plugin.prototype.mousewheel = function () {\n var _this = this;\n _lgUtils2.default.on(_this.outer, 'mousewheel.lg', function (e) {\n\n if (!e.deltaY) {\n return;\n }\n\n if (e.deltaY > 0) {\n _this.goToPrevSlide();\n } else {\n _this.goToNextSlide();\n }\n\n e.preventDefault();\n });\n };\n\n Plugin.prototype.closeGallery = function () {\n\n var _this = this;\n var mousedown = false;\n _lgUtils2.default.on(this.outer.querySelector('.lg-close'), 'click.lg', function () {\n _this.destroy();\n });\n\n if (_this.s.closable) {\n\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n _lgUtils2.default.on(_this.outer, 'mousedown.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap')) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n _lgUtils2.default.on(_this.outer, 'mouseup.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap') && mousedown) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging')) {\n _this.destroy();\n }\n }\n });\n }\n };\n\n Plugin.prototype.destroy = function (d) {\n\n var _this = this;\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onBeforeClose');\n }\n\n document.body.scrollTop = _this.prevScrollTop;\n document.documentElement.scrollTop = _this.prevScrollTop;\n\n /**\n * if d is false or undefined destroy will only close the gallery\n * plugins instance remains with the element\n *\n * if d is true destroy will completely remove the plugin\n */\n\n if (d) {\n if (!_this.s.dynamic) {\n // only when not using dynamic mode is $items a jquery collection\n\n for (var i = 0; i < this.items.length; i++) {\n _lgUtils2.default.off(this.items[i], '.lg');\n _lgUtils2.default.off(this.items[i], '.lgcustom');\n }\n }\n\n var lguid = _this.el.getAttribute('lg-uid');\n delete window.lgData[lguid];\n _this.el.removeAttribute('lg-uid');\n }\n\n // Unbind all events added by lightGallery\n _lgUtils2.default.off(this.el, '.lgtm');\n\n // Distroy all lightGallery modules\n for (var key in window.lgModules) {\n if (_this.modules[key]) {\n _this.modules[key].destroy(d);\n }\n }\n\n this.lGalleryOn = false;\n\n clearTimeout(_this.hideBartimeout);\n this.hideBartimeout = false;\n _lgUtils2.default.off(window, '.lg');\n _lgUtils2.default.removeClass(document.body, 'lg-on');\n _lgUtils2.default.removeClass(document.body, 'lg-from-hash');\n\n if (_this.outer) {\n _lgUtils2.default.removeClass(_this.outer, 'lg-visible');\n }\n\n _lgUtils2.default.removeClass(document.querySelector('.lg-backdrop'), 'in');\n setTimeout(function () {\n try {\n if (_this.outer) {\n _this.outer.parentNode.removeChild(_this.outer);\n }\n\n if (document.querySelector('.lg-backdrop')) {\n document.querySelector('.lg-backdrop').parentNode.removeChild(document.querySelector('.lg-backdrop'));\n }\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onCloseAfter');\n }\n } catch (err) {}\n }, _this.s.backdropDuration + 50);\n };\n\n window.lightGallery = function (el, options) {\n if (!el) {\n return;\n }\n\n try {\n if (!el.getAttribute('lg-uid')) {\n var uid = 'lg' + window.lgData.uid++;\n window.lgData[uid] = new Plugin(el, options);\n el.setAttribute('lg-uid', uid);\n } else {\n try {\n window.lgData[el.getAttribute('lg-uid')].init();\n } catch (err) {\n console.error('lightGallery has not initiated properly');\n }\n }\n } catch (err) {\n console.error('lightGallery has not initiated properly');\n }\n };\n});","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['exports'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports);\n global.lgUtils = mod.exports;\n }\n})(this, function (exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var utils = {\n getAttribute: function getAttribute(el, label) {\n return el[label];\n },\n\n setAttribute: function setAttribute(el, label, value) {\n el[label] = value;\n },\n wrap: function wrap(el, className) {\n if (!el) {\n return;\n }\n\n var wrapper = document.createElement('div');\n wrapper.className = className;\n el.parentNode.insertBefore(wrapper, el);\n el.parentNode.removeChild(el);\n wrapper.appendChild(el);\n },\n\n addClass: function addClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.add(className);\n } else {\n el.className += ' ' + className;\n }\n },\n\n removeClass: function removeClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n },\n\n hasClass: function hasClass(el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n } else {\n return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);\n }\n },\n\n // ex Transform\n // ex TransitionTimingFunction\n setVendor: function setVendor(el, property, value) {\n if (!el) {\n return;\n }\n\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\n el.style['webkit' + property] = value;\n el.style['moz' + property] = value;\n el.style['ms' + property] = value;\n el.style['o' + property] = value;\n },\n\n trigger: function trigger(el, event) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!el) {\n return;\n }\n\n var customEvent = new CustomEvent(event, {\n detail: detail\n });\n el.dispatchEvent(customEvent);\n },\n\n Listener: {\n uid: 0\n },\n on: function on(el, events, fn) {\n var _this = this;\n\n if (!el) {\n return;\n }\n\n events.split(' ').forEach(function (event) {\n var _id = _this.getAttribute(el, 'lg-event-uid') || '';\n utils.Listener.uid++;\n _id += '&' + utils.Listener.uid;\n _this.setAttribute(el, 'lg-event-uid', _id);\n utils.Listener[event + utils.Listener.uid] = fn;\n el.addEventListener(event.split('.')[0], fn, false);\n });\n },\n\n off: function off(el, event) {\n if (!el) {\n return;\n }\n\n var _id = this.getAttribute(el, 'lg-event-uid');\n if (_id) {\n _id = _id.split('&');\n for (var i = 0; i < _id.length; i++) {\n if (_id[i]) {\n var _event = event + _id[i];\n if (_event.substring(0, 1) === '.') {\n for (var key in utils.Listener) {\n if (utils.Listener.hasOwnProperty(key)) {\n if (key.split('.').indexOf(_event.split('.')[1]) > -1) {\n el.removeEventListener(key.split('.')[0], utils.Listener[key]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[key];\n }\n }\n }\n } else {\n el.removeEventListener(_event.split('.')[0], utils.Listener[_event]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[_event];\n }\n }\n }\n }\n },\n\n param: function param(obj) {\n return Object.keys(obj).map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\n }).join('&');\n }\n };\n\n exports.default = utils;\n});","/**!\n * lg-thumbnail.js | 1.0.0 | August 8th 2018\n * http://sachinchoolur.github.io/lg-thumbnail.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgThumbnail = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 1) {\n if (this.core.s.showThumbByDefault) {\n setTimeout(function () {\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n }, 700);\n }\n\n if (this.core.s.pullCaptionUp) {\n utils.addClass(this.core.outer, 'lg-pull-caption-up');\n }\n\n this.build();\n if (this.core.s.animateThumb) {\n if (this.core.s.enableThumbDrag && !this.core.isTouch && this.core.doCss()) {\n this.enableThumbDrag();\n }\n\n if (this.core.s.enableThumbSwipe && this.core.isTouch && this.core.doCss()) {\n this.enableThumbSwipe();\n }\n\n this.thumbClickable = false;\n } else {\n this.thumbClickable = true;\n }\n\n this.toggle();\n this.thumbkeyPress();\n }\n };\n\n Thumbnail.prototype.build = function () {\n var _this = this;\n var thumbList = '';\n var vimeoErrorThumbSize = '';\n var $thumb;\n var html = '
' + '
' + '
' + '
';\n\n switch (this.core.s.vimeoThumbSize) {\n case 'thumbnail_large':\n vimeoErrorThumbSize = '640';\n break;\n case 'thumbnail_medium':\n vimeoErrorThumbSize = '200x150';\n break;\n case 'thumbnail_small':\n vimeoErrorThumbSize = '100x75';\n }\n\n utils.addClass(_this.core.outer, 'lg-has-thumb');\n\n _this.core.outer.querySelector('.lg').insertAdjacentHTML('beforeend', html);\n\n _this.thumbOuter = _this.core.outer.querySelector('.lg-thumb-outer');\n _this.thumbOuterWidth = _this.thumbOuter.offsetWidth;\n\n if (_this.core.s.animateThumb) {\n _this.core.outer.querySelector('.lg-thumb').style.width = _this.thumbTotalWidth + 'px';\n _this.core.outer.querySelector('.lg-thumb').style.position = 'relative';\n }\n\n if (this.core.s.animateThumb) {\n _this.thumbOuter.style.height = _this.core.s.thumbContHeight + 'px';\n }\n\n function getThumb(src, thumb, index) {\n var isVideo = _this.core.isVideo(src, index) || {};\n var thumbImg;\n var vimeoId = '';\n\n if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) {\n if (isVideo.youtube) {\n if (_this.core.s.loadYoutubeThumbnail) {\n thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg';\n } else {\n thumbImg = thumb;\n }\n } else if (isVideo.vimeo) {\n if (_this.core.s.loadVimeoThumbnail) {\n thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg';\n vimeoId = isVideo.vimeo[1];\n } else {\n thumbImg = thumb;\n }\n } else if (isVideo.dailymotion) {\n if (_this.core.s.loadDailymotionThumbnail) {\n thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1];\n } else {\n thumbImg = thumb;\n }\n }\n } else {\n thumbImg = thumb;\n }\n\n thumbList += '
';\n vimeoId = '';\n }\n\n if (_this.core.s.dynamic) {\n for (var j = 0; j < _this.core.s.dynamicEl.length; j++) {\n getThumb(_this.core.s.dynamicEl[j].src, _this.core.s.dynamicEl[j].thumb, j);\n }\n } else {\n for (var i = 0; i < _this.core.items.length; i++) {\n if (!_this.core.s.exThumbImage) {\n getThumb(_this.core.items[i].getAttribute('href') || _this.core.items[i].getAttribute('data-src'), _this.core.items[i].querySelector('img').getAttribute('src'), i);\n } else {\n getThumb(_this.core.items[i].getAttribute('href') || _this.core.items[i].getAttribute('data-src'), _this.core.items[i].getAttribute(_this.core.s.exThumbImage), i);\n }\n }\n }\n\n _this.core.outer.querySelector('.lg-thumb').innerHTML = thumbList;\n\n $thumb = _this.core.outer.querySelectorAll('.lg-thumb-item');\n\n for (var n = 0; n < $thumb.length; n++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n var $this = $thumb[index];\n var vimeoVideoId = $this.getAttribute('data-vimeo-id');\n if (vimeoVideoId) {\n\n window['lgJsonP' + _this.el.getAttribute('lg-uid') + '' + n] = function (content) {\n $this.querySelector('img').setAttribute('src', content[0][_this.core.s.vimeoThumbSize]);\n };\n\n var script = document.createElement('script');\n script.className = 'lg-script';\n script.src = '//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=lgJsonP' + _this.el.getAttribute('lg-uid') + '' + n;\n document.body.appendChild(script);\n }\n })(n);\n }\n\n // manage active class for thumbnail\n utils.addClass($thumb[_this.core.index], 'active');\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n\n for (var j = 0; j < $thumb.length; j++) {\n utils.removeClass($thumb[j], 'active');\n }\n\n utils.addClass($thumb[_this.core.index], 'active');\n });\n\n for (var k = 0; k < $thumb.length; k++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n utils.on($thumb[index], 'click.lg touchend.lg', function () {\n\n setTimeout(function () {\n\n // In IE9 and bellow touch does not support\n // Go to slide if browser does not support css transitions\n if (_this.thumbClickable && !_this.core.lgBusy || !_this.core.doCss()) {\n _this.core.index = index;\n _this.core.slide(_this.core.index, false, true);\n }\n }, 50);\n });\n })(k);\n }\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n _this.animateThumb(_this.core.index);\n });\n\n utils.on(window, 'resize.lgthumb orientationchange.lgthumb', function () {\n setTimeout(function () {\n _this.animateThumb(_this.core.index);\n _this.thumbOuterWidth = _this.thumbOuter.offsetWidth;\n }, 200);\n });\n };\n\n Thumbnail.prototype.setTranslate = function (value) {\n utils.setVendor(this.core.outer.querySelector('.lg-thumb'), 'Transform', 'translate3d(-' + value + 'px, 0px, 0px)');\n };\n\n Thumbnail.prototype.animateThumb = function (index) {\n var $thumb = this.core.outer.querySelector('.lg-thumb');\n if (this.core.s.animateThumb) {\n var position;\n switch (this.core.s.currentPagerPosition) {\n case 'left':\n position = 0;\n break;\n case 'middle':\n position = this.thumbOuterWidth / 2 - this.core.s.thumbWidth / 2;\n break;\n case 'right':\n position = this.thumbOuterWidth - this.core.s.thumbWidth;\n }\n this.left = (this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1 - position;\n if (this.left > this.thumbTotalWidth - this.thumbOuterWidth) {\n this.left = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (this.left < 0) {\n this.left = 0;\n }\n\n if (this.core.lGalleryOn) {\n if (!utils.hasClass($thumb, 'on')) {\n utils.setVendor(this.core.outer.querySelector('.lg-thumb'), 'TransitionDuration', this.core.s.speed + 'ms');\n }\n\n if (!this.core.doCss()) {\n $thumb.style.left = -this.left + 'px';\n }\n } else {\n if (!this.core.doCss()) {\n $thumb.style.left = -this.left + 'px';\n }\n }\n\n this.setTranslate(this.left);\n }\n };\n\n // Enable thumbnail dragging and swiping\n Thumbnail.prototype.enableThumbDrag = function () {\n\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n var tempLeft = 0;\n\n utils.addClass(_this.thumbOuter, 'lg-grab');\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'mousedown.lgthumb', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n // execute only on .lg-object\n e.preventDefault();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.core.outer.scrollLeft += 1;\n _this.core.outer.scrollLeft -= 1;\n\n // *\n _this.thumbClickable = false;\n utils.removeClass(_this.thumbOuter, 'lg-grab');\n utils.addClass(_this.thumbOuter, 'lg-grabbing');\n }\n });\n\n utils.on(window, 'mousemove.lgthumb', function (e) {\n if (isDraging) {\n tempLeft = _this.left;\n isMoved = true;\n endCoords = e.pageX;\n\n utils.addClass(_this.thumbOuter, 'lg-dragging');\n\n tempLeft = tempLeft - (endCoords - startCoords);\n\n if (tempLeft > _this.thumbTotalWidth - _this.thumbOuterWidth) {\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\n }\n\n if (tempLeft < 0) {\n tempLeft = 0;\n }\n\n // move current slide\n _this.setTranslate(tempLeft);\n }\n });\n\n utils.on(window, 'mouseup.lgthumb', function () {\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.thumbOuter, 'lg-dragging');\n\n _this.left = tempLeft;\n\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\n _this.thumbClickable = true;\n }\n } else {\n _this.thumbClickable = true;\n }\n\n if (isDraging) {\n isDraging = false;\n utils.removeClass(_this.thumbOuter, 'lg-grabbing');\n utils.addClass(_this.thumbOuter, 'lg-grab');\n }\n });\n };\n\n Thumbnail.prototype.enableThumbSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n var tempLeft = 0;\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchstart.lg', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n e.preventDefault();\n startCoords = e.targetTouches[0].pageX;\n _this.thumbClickable = false;\n }\n });\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchmove.lg', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n isMoved = true;\n\n utils.addClass(_this.thumbOuter, 'lg-dragging');\n\n tempLeft = _this.left;\n\n tempLeft = tempLeft - (endCoords - startCoords);\n\n if (tempLeft > _this.thumbTotalWidth - _this.thumbOuterWidth) {\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\n }\n\n if (tempLeft < 0) {\n tempLeft = 0;\n }\n\n // move current slide\n _this.setTranslate(tempLeft);\n }\n });\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchend.lg', function () {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.thumbOuter, 'lg-dragging');\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\n _this.thumbClickable = true;\n }\n\n _this.left = tempLeft;\n } else {\n _this.thumbClickable = true;\n }\n } else {\n _this.thumbClickable = true;\n }\n });\n };\n\n Thumbnail.prototype.toggle = function () {\n var _this = this;\n if (_this.core.s.toggleThumb) {\n utils.addClass(_this.core.outer, 'lg-can-toggle');\n _this.thumbOuter.insertAdjacentHTML('beforeend', '');\n utils.on(_this.core.outer.querySelector('.lg-toggle-thumb'), 'click.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-thumb-open')) {\n utils.removeClass(_this.core.outer, 'lg-thumb-open');\n } else {\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n }\n });\n }\n };\n\n Thumbnail.prototype.thumbkeyPress = function () {\n var _this = this;\n utils.on(window, 'keydown.lgthumb', function (e) {\n if (e.keyCode === 38) {\n e.preventDefault();\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n } else if (e.keyCode === 40) {\n e.preventDefault();\n utils.removeClass(_this.core.outer, 'lg-thumb-open');\n }\n });\n };\n\n Thumbnail.prototype.destroy = function (d) {\n if (this.core.s.thumbnail && this.core.items.length > 1) {\n utils.off(window, '.lgthumb');\n if (!d) {\n this.thumbOuter.parentNode.removeChild(this.thumbOuter);\n }\n utils.removeClass(this.core.outer, 'lg-has-thumb');\n\n var lgScript = document.getElementsByClassName('lg-script');\n while (lgScript[0]) {\n lgScript[0].parentNode.removeChild(lgScript[0]);\n }\n }\n };\n\n window.lgModules.thumbnail = Thumbnail;\n});\n\n},{}]},{},[1])(1)\n});\n","/**!\r\n * lg-autoplay.js | 1.0.0 | October 5th 2016\r\n * http://sachinchoolur.github.io/lg-autoplay.js\r\n * Copyright (c) 2016 Sachin N; \r\n * @license GPLv3 \r\n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgAutoplay = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o
');\n }\n\n // set progress\n _this.progress();\n\n // Start autoplay\n if (_this.core.s.autoplay) {\n _this.startlAuto();\n }\n\n // cancel interval on touchstart and dragstart\n utils.on(_this.el, 'onDragstart.lgtm touchstart.lgtm', function () {\n if (_this.interval) {\n _this.cancelAuto();\n _this.canceledOnTouch = true;\n }\n });\n\n // restore autoplay if autoplay canceled from touchstart / dragstart\n utils.on(_this.el, 'onDragend.lgtm touchend.lgtm onSlideClick.lgtm', function () {\n if (!_this.interval && _this.canceledOnTouch) {\n _this.startlAuto();\n _this.canceledOnTouch = false;\n }\n });\n };\n\n Autoplay.prototype.progress = function () {\n\n var _this = this;\n var _progressBar;\n var _progress;\n\n utils.on(_this.el, 'onBeforeSlide.lgtm', function () {\n\n // start progress bar animation\n if (_this.core.s.progressBar && _this.fromAuto) {\n _progressBar = _this.core.outer.querySelector('.lg-progress-bar');\n _progress = _this.core.outer.querySelector('.lg-progress');\n if (_this.interval) {\n _progress.removeAttribute('style');\n utils.removeClass(_progressBar, 'lg-start');\n setTimeout(function () {\n utils.setVendor(_progress, 'Transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s');\n utils.addClass(_progressBar, 'lg-start');\n }, 20);\n }\n }\n\n // Remove setinterval if slide is triggered manually and fourceautoplay is false\n if (!_this.fromAuto && !_this.core.s.fourceAutoplay) {\n _this.cancelAuto();\n }\n\n _this.fromAuto = false;\n });\n };\n\n // Manage autoplay via play/stop buttons\n Autoplay.prototype.controls = function () {\n var _this = this;\n var _html = '';\n\n // Append autoplay controls\n _this.core.outer.querySelector(this.core.s.appendAutoplayControlsTo).insertAdjacentHTML('beforeend', _html);\n\n utils.on(_this.core.outer.querySelector('.lg-autoplay-button'), 'click.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-show-autoplay')) {\n _this.cancelAuto();\n _this.core.s.fourceAutoplay = false;\n } else {\n if (!_this.interval) {\n _this.startlAuto();\n _this.core.s.fourceAutoplay = _this.fourceAutoplayTemp;\n }\n }\n });\n };\n\n // Autostart gallery\n Autoplay.prototype.startlAuto = function () {\n var _this = this;\n\n utils.setVendor(_this.core.outer.querySelector('.lg-progress'), 'Transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s');\n utils.addClass(_this.core.outer, 'lg-show-autoplay');\n utils.addClass(_this.core.outer.querySelector('.lg-progress-bar'), 'lg-start');\n\n _this.interval = setInterval(function () {\n if (_this.core.index + 1 < _this.core.items.length) {\n _this.core.index++;\n } else {\n _this.core.index = 0;\n }\n\n _this.fromAuto = true;\n _this.core.slide(_this.core.index, false, false);\n }, _this.core.s.speed + _this.core.s.pause);\n };\n\n // cancel Autostart\n Autoplay.prototype.cancelAuto = function () {\n clearInterval(this.interval);\n this.interval = false;\n if (this.core.outer.querySelector('.lg-progress')) {\n this.core.outer.querySelector('.lg-progress').removeAttribute('style');\n }\n\n utils.removeClass(this.core.outer, 'lg-show-autoplay');\n utils.removeClass(this.core.outer.querySelector('.lg-progress-bar'), 'lg-start');\n };\n\n Autoplay.prototype.destroy = function () {\n\n this.cancelAuto();\n if (this.core.outer.querySelector('.lg-progress-bar')) {\n this.core.outer.querySelector('.lg-progress-bar').parentNode.removeChild(this.core.outer.querySelector('.lg-progress-bar'));\n }\n };\n\n window.lgModules.autoplay = Autoplay;\n});\n\n},{}]},{},[1])(1)\n});","/**!\r\n * lg-video.js | 1.0.0 | October 5th 2016\r\n * http://sachinchoolur.github.io/lg-video.js\r\n * Copyright (c) 2016 Sachin N; \r\n * @license GPLv3 \r\n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgVideo = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 1 && (_this.core.s.enableSwipe && _this.core.isTouch || _this.core.s.enableDrag && !_this.core.isTouch)) {\n utils.on(_this.core.el, 'onSlideClick.lgtm', function () {\n var $el = _this.core.___slide[_this.core.index];\n loadOnClick($el);\n });\n } else {\n\n // For IE 9 and bellow\n for (var i = 0; i < _this.core.___slide.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n utils.on(_this.core.___slide[index], 'click.lg', function () {\n loadOnClick(_this.core.___slide[index]);\n });\n })(i);\n }\n }\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function (event) {\n\n var $videoSlide = _this.core.___slide[event.detail.prevIndex];\n var youtubePlayer = $videoSlide.querySelector('.lg-youtube');\n var vimeoPlayer = $videoSlide.querySelector('.lg-vimeo');\n var dailymotionPlayer = $videoSlide.querySelector('.lg-dailymotion');\n var vkPlayer = $videoSlide.querySelector('.lg-vk');\n var html5Player = $videoSlide.querySelector('.lg-html5');\n if (youtubePlayer) {\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\n } else if (vimeoPlayer) {\n try {\n $f(vimeoPlayer).api('pause');\n } catch (e) {\n console.error('Make sure you have included froogaloop2 js');\n }\n } else if (dailymotionPlayer) {\n dailymotionPlayer.contentWindow.postMessage('pause', '*');\n } else if (html5Player) {\n if (_this.core.s.videojs) {\n try {\n videojs(html5Player).pause();\n } catch (e) {\n console.error('Make sure you have included videojs');\n }\n } else {\n html5Player.pause();\n }\n }if (vkPlayer) {\n\n vkPlayer.setAttribute('src', vkPlayer.getAttribute('src').replace('&autoplay', '&noplay'));\n }\n\n var _src;\n if (_this.core.s.dynamic) {\n _src = _this.core.s.dynamicEl[event.detail.index].src;\n } else {\n _src = _this.core.items[event.detail.index].getAttribute('href') || _this.core.items[event.detail.index].getAttribute('data-src');\n }\n\n var _isVideo = _this.core.isVideo(_src, event.detail.index) || {};\n if (_isVideo.youtube || _isVideo.vimeo || _isVideo.dailymotion || _isVideo.vk) {\n utils.addClass(_this.core.outer, 'lg-hide-download');\n }\n\n //$videoSlide.addClass('lg-complete');\n });\n\n utils.on(_this.core.el, 'onAfterSlide.lgtm', function (event) {\n utils.removeClass(_this.core.___slide[event.detail.prevIndex], 'lg-video-playing');\n });\n };\n\n Video.prototype.loadVideo = function (src, addClass, noposter, index, html) {\n var video = '';\n var autoplay = 1;\n var a = '';\n var isVideo = this.core.isVideo(src, index) || {};\n\n // Enable autoplay for first video if poster doesn't exist\n if (noposter) {\n if (this.videoLoaded) {\n autoplay = 0;\n } else {\n autoplay = 1;\n }\n }\n\n if (isVideo.youtube) {\n\n a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';\n if (this.core.s.youtubePlayerParams) {\n a = a + '&' + utils.param(this.core.s.youtubePlayerParams);\n }\n\n video = '';\n } else if (isVideo.vimeo) {\n\n a = '?autoplay=' + autoplay + '&api=1';\n if (this.core.s.vimeoPlayerParams) {\n a = a + '&' + utils.param(this.core.s.vimeoPlayerParams);\n }\n\n video = '';\n } else if (isVideo.dailymotion) {\n\n a = '?wmode=opaque&autoplay=' + autoplay + '&api=postMessage';\n if (this.core.s.dailymotionPlayerParams) {\n a = a + '&' + utils.param(this.core.s.dailymotionPlayerParams);\n }\n\n video = '';\n } else if (isVideo.html5) {\n var fL = html.substring(0, 1);\n if (fL === '.' || fL === '#') {\n html = document.querySelector(html).innerHTML;\n }\n\n video = html;\n } else if (isVideo.vk) {\n\n a = '&autoplay=' + autoplay;\n if (this.core.s.vkPlayerParams) {\n a = a + '&' + utils.param(this.core.s.vkPlayerParams);\n }\n\n video = '';\n }\n\n return video;\n };\n\n Video.prototype.destroy = function () {\n this.videoLoaded = false;\n };\n\n window.lgModules.video = Video;\n});\n\n},{}]},{},[1])(1)\n});","/**!\n * lg-fullscreen.js | 1.1.0 | February 23rd 2019\n * http://sachinchoolur.github.io/lg-fullscreen.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgFullscreen = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 1) {\n this.init();\n }\n\n return this;\n };\n\n Pager.prototype.init = function () {\n var _this = this;\n var pagerList = '';\n var $pagerCont;\n var $pagerOuter;\n var timeout;\n\n _this.core.outer.querySelector('.lg').insertAdjacentHTML('beforeend', '
');\n\n if (_this.core.s.dynamic) {\n for (var j = 0; j < _this.core.s.dynamicEl.length; j++) {\n pagerList += '
';\n }\n } else {\n for (var i = 0; i < _this.core.items.length; i++) {\n if (!_this.core.s.exThumbImage) {\n pagerList += '
';\n } else {\n pagerList += '
';\n }\n }\n }\n\n $pagerOuter = _this.core.outer.querySelector('.lg-pager-outer');\n\n $pagerOuter.innerHTML = pagerList;\n\n $pagerCont = _this.core.outer.querySelectorAll('.lg-pager-cont');\n for (var k = 0; k < $pagerCont.length; k++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n utils.on($pagerCont[index], 'click.lg touchend.lg', function () {\n _this.core.index = index;\n _this.core.slide(_this.core.index, false, false);\n });\n })(k);\n }\n\n utils.on($pagerOuter, 'mouseover.lg', function () {\n clearTimeout(timeout);\n utils.addClass($pagerOuter, 'lg-pager-hover');\n });\n\n utils.on($pagerOuter, 'mouseout.lg', function () {\n timeout = setTimeout(function () {\n utils.removeClass($pagerOuter, 'lg-pager-hover');\n });\n });\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function (e) {\n for (var n = 0; n < $pagerCont.length; n++) {\n utils.removeClass($pagerCont[n], 'lg-pager-active');\n if (e.detail.index === n) {\n utils.addClass($pagerCont[n], 'lg-pager-active');\n }\n }\n });\n };\n\n Pager.prototype.destroy = function () {};\n\n window.lgModules.pager = Pager;\n});\n\n},{}]},{},[1])(1)\n});","/**!\r\n * lg-zoom.js | 1.0.1 | December 22nd 2016\r\n * http://sachinchoolur.github.io/lg-zoom.js\r\n * Copyright (c) 2016 Sachin N; \r\n * @license GPLv3 \r\n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgZoom = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 1) {\n utils.addClass(_this.core.outer, 'lg-zoomed');\n } else {\n _this.resetZoom();\n }\n\n if (scale < 1) {\n scale = 1;\n }\n\n zoom(scale);\n };\n\n var actualSize = function actualSize(event, image, index, fromIcon) {\n var w = image.clientWidth;\n var nw;\n if (_this.core.s.dynamic) {\n nw = _this.core.s.dynamicEl[index].width || image.naturalWidth || w;\n } else {\n nw = _this.core.items[index].getAttribute('data-width') || image.naturalWidth || w;\n }\n\n var _scale;\n\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n scale = 1;\n } else {\n if (nw > w) {\n _scale = nw / w;\n scale = _scale || 2;\n }\n }\n\n if (fromIcon) {\n _this.pageX = window.innerWidth / 2;\n _this.pageY = window.innerHeight / 2 + (document.documentElement.scrollTop || document.body.scrollTop);\n } else {\n _this.pageX = event.pageX || event.targetTouches[0].pageX;\n _this.pageY = event.pageY || event.targetTouches[0].pageY;\n }\n\n callScale();\n setTimeout(function () {\n utils.removeClass(_this.core.outer, 'lg-grabbing');\n utils.addClass(_this.core.outer, 'lg-grab');\n }, 10);\n };\n\n var tapped = false;\n\n // event triggered after appending slide content\n utils.on(_this.core.el, 'onAferAppendSlide.lgtmzoom', function (event) {\n\n var index = event.detail.index;\n\n // Get the current element\n var image = _this.core.___slide[index].querySelector('.lg-image');\n\n if (!_this.core.isTouch) {\n utils.on(image, 'dblclick', function (event) {\n actualSize(event, image, index);\n });\n }\n\n if (_this.core.isTouch) {\n utils.on(image, 'touchstart', function (event) {\n if (!tapped) {\n tapped = setTimeout(function () {\n tapped = null;\n }, 300);\n } else {\n clearTimeout(tapped);\n tapped = null;\n actualSize(event, image, index);\n }\n\n event.preventDefault();\n });\n }\n });\n\n // Update zoom on resize and orientationchange\n utils.on(window, 'resize.lgzoom scroll.lgzoom orientationchange.lgzoom', function () {\n _this.pageX = window.innerWidth / 2;\n _this.pageY = window.innerHeight / 2 + (document.documentElement.scrollTop || document.body.scrollTop);\n zoom(scale);\n });\n\n utils.on(document.getElementById('lg-zoom-out'), 'click.lg', function () {\n if (_this.core.outer.querySelector('.lg-current .lg-image')) {\n scale -= _this.core.s.scale;\n callScale();\n }\n });\n\n utils.on(document.getElementById('lg-zoom-in'), 'click.lg', function () {\n if (_this.core.outer.querySelector('.lg-current .lg-image')) {\n scale += _this.core.s.scale;\n callScale();\n }\n });\n\n utils.on(document.getElementById('lg-actual-size'), 'click.lg', function (event) {\n actualSize(event, _this.core.___slide[_this.core.index].querySelector('.lg-image'), _this.core.index, true);\n });\n\n // Reset zoom on slide change\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n scale = 1;\n _this.resetZoom();\n });\n\n // Drag option after zoom\n if (!_this.core.isTouch) {\n _this.zoomDrag();\n }\n\n if (_this.core.isTouch) {\n _this.zoomSwipe();\n }\n };\n\n // Reset zoom effect\n Zoom.prototype.resetZoom = function () {\n utils.removeClass(this.core.outer, 'lg-zoomed');\n for (var i = 0; i < this.core.___slide.length; i++) {\n if (this.core.___slide[i].querySelector('.lg-img-wrap')) {\n this.core.___slide[i].querySelector('.lg-img-wrap').removeAttribute('style');\n this.core.___slide[i].querySelector('.lg-img-wrap').removeAttribute('data-x');\n this.core.___slide[i].querySelector('.lg-img-wrap').removeAttribute('data-y');\n }\n }\n\n for (var j = 0; j < this.core.___slide.length; j++) {\n if (this.core.___slide[j].querySelector('.lg-image')) {\n this.core.___slide[j].querySelector('.lg-image').removeAttribute('style');\n this.core.___slide[j].querySelector('.lg-image').removeAttribute('data-scale');\n }\n }\n\n // Reset pagx pagy values to center\n this.pageX = window.innerWidth / 2;\n this.pageY = window.innerHeight / 2 + (document.documentElement.scrollTop || document.body.scrollTop);\n };\n\n Zoom.prototype.zoomSwipe = function () {\n var _this = this;\n var startCoords = {};\n var endCoords = {};\n var isMoved = false;\n\n // Allow x direction drag\n var allowX = false;\n\n // Allow Y direction drag\n var allowY = false;\n\n for (var i = 0; i < _this.core.___slide.length; i++) {\n\n /*jshint loopfunc: true */\n utils.on(_this.core.___slide[i], 'touchstart.lg', function (e) {\n\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n var image = _this.core.___slide[_this.core.index].querySelector('.lg-object');\n\n allowY = image.offsetHeight * image.getAttribute('data-scale') > _this.core.outer.querySelector('.lg').clientHeight;\n allowX = image.offsetWidth * image.getAttribute('data-scale') > _this.core.outer.querySelector('.lg').clientWidth;\n if (allowX || allowY) {\n e.preventDefault();\n startCoords = {\n x: e.targetTouches[0].pageX,\n y: e.targetTouches[0].pageY\n };\n }\n }\n });\n }\n\n for (var j = 0; j < _this.core.___slide.length; j++) {\n\n /*jshint loopfunc: true */\n utils.on(_this.core.___slide[j], 'touchmove.lg', function (e) {\n\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n\n var _el = _this.core.___slide[_this.core.index].querySelector('.lg-img-wrap');\n var distanceX;\n var distanceY;\n\n e.preventDefault();\n isMoved = true;\n\n endCoords = {\n x: e.targetTouches[0].pageX,\n y: e.targetTouches[0].pageY\n };\n\n // reset opacity and transition duration\n utils.addClass(_this.core.outer, 'lg-zoom-dragging');\n\n if (allowY) {\n distanceY = -Math.abs(_el.getAttribute('data-y')) + (endCoords.y - startCoords.y);\n } else {\n distanceY = -Math.abs(_el.getAttribute('data-y'));\n }\n\n if (allowX) {\n distanceX = -Math.abs(_el.getAttribute('data-x')) + (endCoords.x - startCoords.x);\n } else {\n distanceX = -Math.abs(_el.getAttribute('data-x'));\n }\n\n if (Math.abs(endCoords.x - startCoords.x) > 15 || Math.abs(endCoords.y - startCoords.y) > 15) {\n\n if (_this.core.s.useLeftForZoom) {\n _el.style.left = distanceX + 'px';\n _el.style.top = distanceY + 'px';\n } else {\n utils.setVendor(_el, 'Transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');\n }\n }\n }\n });\n }\n\n for (var k = 0; k < _this.core.___slide.length; k++) {\n\n /*jshint loopfunc: true */\n utils.on(_this.core.___slide[k], 'touchend.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.core.outer, 'lg-zoom-dragging');\n _this.touchendZoom(startCoords, endCoords, allowX, allowY);\n }\n }\n });\n }\n };\n\n Zoom.prototype.zoomDrag = function () {\n\n var _this = this;\n var startCoords = {};\n var endCoords = {};\n var isDraging = false;\n var isMoved = false;\n\n // Allow x direction drag\n var allowX = false;\n\n // Allow Y direction drag\n var allowY = false;\n\n for (var i = 0; i < _this.core.___slide.length; i++) {\n\n /*jshint loopfunc: true */\n utils.on(_this.core.___slide[i], 'mousedown.lgzoom', function (e) {\n\n // execute only on .lg-object\n var image = _this.core.___slide[_this.core.index].querySelector('.lg-object');\n\n allowY = image.offsetHeight * image.getAttribute('data-scale') > _this.core.outer.querySelector('.lg').clientHeight;\n allowX = image.offsetWidth * image.getAttribute('data-scale') > _this.core.outer.querySelector('.lg').clientWidth;\n\n if (utils.hasClass(_this.core.outer, 'lg-zoomed')) {\n if (utils.hasClass(e.target, 'lg-object') && (allowX || allowY)) {\n e.preventDefault();\n startCoords = {\n x: e.pageX,\n y: e.pageY\n };\n\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.core.outer.scrollLeft += 1;\n _this.core.outer.scrollLeft -= 1;\n\n utils.removeClass(_this.core.outer, 'lg-grab');\n utils.addClass(_this.core.outer, 'lg-grabbing');\n }\n }\n });\n }\n\n utils.on(window, 'mousemove.lgzoom', function (e) {\n if (isDraging) {\n var _el = _this.core.___slide[_this.core.index].querySelector('.lg-img-wrap');\n var distanceX;\n var distanceY;\n\n isMoved = true;\n endCoords = {\n x: e.pageX,\n y: e.pageY\n };\n\n // reset opacity and transition duration\n utils.addClass(_this.core.outer, 'lg-zoom-dragging');\n\n if (allowY) {\n distanceY = -Math.abs(_el.getAttribute('data-y')) + (endCoords.y - startCoords.y);\n } else {\n distanceY = -Math.abs(_el.getAttribute('data-y'));\n }\n\n if (allowX) {\n distanceX = -Math.abs(_el.getAttribute('data-x')) + (endCoords.x - startCoords.x);\n } else {\n distanceX = -Math.abs(_el.getAttribute('data-x'));\n }\n\n if (_this.core.s.useLeftForZoom) {\n _el.style.left = distanceX + 'px';\n _el.style.top = distanceY + 'px';\n } else {\n utils.setVendor(_el, 'Transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');\n }\n }\n });\n\n utils.on(window, 'mouseup.lgzoom', function (e) {\n\n if (isDraging) {\n isDraging = false;\n utils.removeClass(_this.core.outer, 'lg-zoom-dragging');\n\n // Fix for chrome mouse move on click\n if (isMoved && (startCoords.x !== endCoords.x || startCoords.y !== endCoords.y)) {\n endCoords = {\n x: e.pageX,\n y: e.pageY\n };\n _this.touchendZoom(startCoords, endCoords, allowX, allowY);\n }\n\n isMoved = false;\n }\n\n utils.removeClass(_this.core.outer, 'lg-grabbing');\n utils.addClass(_this.core.outer, 'lg-grab');\n });\n };\n\n Zoom.prototype.touchendZoom = function (startCoords, endCoords, allowX, allowY) {\n\n var _this = this;\n var _el = _this.core.___slide[_this.core.index].querySelector('.lg-img-wrap');\n var image = _this.core.___slide[_this.core.index].querySelector('.lg-object');\n var distanceX = -Math.abs(_el.getAttribute('data-x')) + (endCoords.x - startCoords.x);\n var distanceY = -Math.abs(_el.getAttribute('data-y')) + (endCoords.y - startCoords.y);\n var minY = (_this.core.outer.querySelector('.lg').clientHeight - image.offsetHeight) / 2;\n var maxY = Math.abs(image.offsetHeight * Math.abs(image.getAttribute('data-scale')) - _this.core.outer.querySelector('.lg').clientHeight + minY);\n var minX = (_this.core.outer.querySelector('.lg').clientWidth - image.offsetWidth) / 2;\n var maxX = Math.abs(image.offsetWidth * Math.abs(image.getAttribute('data-scale')) - _this.core.outer.querySelector('.lg').clientWidth + minX);\n\n if (Math.abs(endCoords.x - startCoords.x) > 15 || Math.abs(endCoords.y - startCoords.y) > 15) {\n if (allowY) {\n if (distanceY <= -maxY) {\n distanceY = -maxY;\n } else if (distanceY >= -minY) {\n distanceY = -minY;\n }\n }\n\n if (allowX) {\n if (distanceX <= -maxX) {\n distanceX = -maxX;\n } else if (distanceX >= -minX) {\n distanceX = -minX;\n }\n }\n\n if (allowY) {\n _el.setAttribute('data-y', Math.abs(distanceY));\n } else {\n distanceY = -Math.abs(_el.getAttribute('data-y'));\n }\n\n if (allowX) {\n _el.setAttribute('data-x', Math.abs(distanceX));\n } else {\n distanceX = -Math.abs(_el.getAttribute('data-x'));\n }\n\n if (_this.core.s.useLeftForZoom) {\n _el.style.left = distanceX + 'px';\n _el.style.top = distanceY + 'px';\n } else {\n utils.setVendor(_el, 'Transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');\n }\n }\n };\n\n Zoom.prototype.destroy = function () {\n\n var _this = this;\n\n // Unbind all events added by lightGallery zoom plugin\n utils.off(_this.core.el, '.lgzoom');\n utils.off(window, '.lgzoom');\n for (var i = 0; i < _this.core.___slide.length; i++) {\n utils.off(_this.core.___slide[i], '.lgzoom');\n }\n\n utils.off(_this.core.el, '.lgtmzoom');\n _this.resetZoom();\n clearTimeout(_this.zoomabletimeout);\n _this.zoomabletimeout = false;\n };\n\n window.lgModules.zoom = Zoom;\n});\n\n},{}]},{},[1])(1)\n});","/**!\r\n * lg-hash.js | 1.0.0 | October 5th 2016\r\n * http://sachinchoolur.github.io/lg-hash.js\r\n * Copyright (c) 2016 Sachin N; \r\n * @license GPLv3 \r\n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgHash = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o';\n shareHtml += _this.core.s.facebook ? '
  • ' + this.core.s.facebookDropdownText + '
  • ' : '';\n shareHtml += _this.core.s.twitter ? '
  • ' + this.core.s.twitterDropdownText + '
  • ' : '';\n shareHtml += _this.core.s.googlePlus ? '
  • ' + this.core.s.googlePlusDropdownText + '
  • ' : '';\n shareHtml += _this.core.s.pinterest ? '
  • ' + this.core.s.pinterestDropdownText + '
  • ' : '';\n shareHtml += '';\n\n this.core.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', shareHtml);\n this.core.outer.querySelector('.lg').insertAdjacentHTML('beforeend', '
    ');\n utils.on(document.getElementById('lg-share'), 'click.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-dropdown-active')) {\n utils.removeClass(_this.core.outer, 'lg-dropdown-active');\n } else {\n utils.addClass(_this.core.outer, 'lg-dropdown-active');\n }\n });\n\n utils.on(document.getElementById('lg-dropdown-overlay'), 'click.lg', function () {\n utils.removeClass(_this.core.outer, 'lg-dropdown-active');\n });\n\n utils.on(_this.core.el, 'onAfterSlide.lgtm', function (event) {\n\n setTimeout(function () {\n if (_this.core.s.facebook) {\n document.getElementById('lg-share-facebook').setAttribute('href', 'https://www.facebook.com/sharer/sharer.php?u=' + _this.getSharePropsUrl(event.detail.index, 'data-facebook-share-url'));\n }\n if (_this.core.s.twitter) {\n document.getElementById('lg-share-twitter').setAttribute('href', 'https://twitter.com/intent/tweet?text=' + _this.getShareProps(event.detail.index, 'data-tweet-text') + '&url=' + _this.getSharePropsUrl(event.detail.index, 'data-twitter-share-url'));\n }\n if (_this.core.s.googlePlus) {\n document.getElementById('lg-share-googleplus').setAttribute('href', 'https://plus.google.com/share?url=' + _this.getSharePropsUrl(event.detail.index, 'data-googleplus-share-url'));\n }\n if (_this.core.s.pinterest) {\n document.getElementById('lg-share-pinterest').setAttribute('href', 'http://www.pinterest.com/pin/create/button/?url=' + _this.getSharePropsUrl(event.detail.index, 'data-pinterest-share-url') + '&media=' + encodeURIComponent(_this.getShareProps(event.detail.index, 'href') || _this.getShareProps(event.detail.index, 'data-src')) + '&description=' + _this.getShareProps(event.detail.index, 'data-pinterest-text'));\n }\n }, 100);\n });\n };\n\n Share.prototype.getSharePropsUrl = function (index, prop) {\n var shareProp = this.getShareProps(index, prop);\n if (!shareProp) {\n shareProp = window.location.href;\n }\n return encodeURIComponent(shareProp);\n };\n\n Share.prototype.getShareProps = function (index, prop) {\n var shareProp = '';\n if (this.core.s.dynamic) {\n shareProp = this.core.items[index][toCamelCase(prop.replace('data-', ''))];\n } else if (this.core.items[index].getAttribute(prop)) {\n shareProp = this.core.items[index].getAttribute(prop);\n }\n return shareProp;\n };\n\n Share.prototype.destroy = function () {};\n\n window.lgModules.share = Share;\n});\n\n},{}]},{},[1])(1)\n});","import ApiManager from '../../api/crud-manager';\r\n\r\nconst apiManager = new ApiManager();\r\n\r\nexport default function jsonToView(jsonData, templateView) {\r\n const url = `/api/v1/template/getview`;\r\n const body = {\r\n ApiTemplate: templateView,\r\n JData: JSON.stringify(jsonData)\r\n };\r\n\r\n return apiManager\r\n .post(url, body)\r\n .then(response => response)\r\n .catch(error => {\r\n throw new Error(error);\r\n });\r\n}\r\n","// url helpers\r\nimport buildUrlParameters from './build-url-parameters';\r\nimport getUrlParameter from './get-url-parameter';\r\n\r\n// forms helpers\r\nimport enableFormSubmit from './forms/enable-form-submit';\r\nimport serializeForm from './forms/serialize-form';\r\n\r\n// api helpers\r\nimport jsonToView from './api/json-to-view';\r\n\r\n// array helpers\r\nimport uniqueArrayOfObjects from './array/unique-array-of-objects';\r\n\r\nexport default {\r\n buildUrlParameters,\r\n getUrlParameter,\r\n enableFormSubmit,\r\n serializeForm,\r\n jsonToView,\r\n uniqueArrayOfObjects\r\n};\r\n","export default function buildParameters(params) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n\r\n let firstValueSet = false;\r\n const linkArray = [];\r\n Object.keys(params).forEach(paramKey => {\r\n const paramValue = params[paramKey];\r\n const value = urlParams.has(paramKey) ? urlParams.get(paramKey) : paramValue;\r\n\r\n const questionMark = firstValueSet ? '' : '?';\r\n firstValueSet = true;\r\n if (paramValue) {\r\n linkArray.push(`${questionMark}${paramKey}=${value}`);\r\n }\r\n });\r\n return linkArray.join('&');\r\n}\r\n","export default function getUrlParameter(paramKey) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const paramSet = urlParams.get(paramKey);\r\n return paramSet ? urlParams.get(paramKey) : '';\r\n}\r\n","export default function enableFormSubmit(form) {\r\n form.querySelector('[type=\"submit\"]').removeAttribute('disabled');\r\n}\r\n","export default function serializeForm(form) {\r\n let field;\r\n\r\n let l;\r\n\r\n const formObject = {};\r\n if (typeof form === 'object' && form.nodeName === 'FORM') {\r\n const len = form.elements.length;\r\n for (let i = 0; i < len; i += 1) {\r\n field = form.elements[i];\r\n if (\r\n field.name &&\r\n !field.disabled &&\r\n field.type !== 'file' &&\r\n field.type !== 'reset' &&\r\n field.type !== 'submit' &&\r\n field.type !== 'button'\r\n ) {\r\n if (field.type === 'select-multiple') {\r\n l = form.elements[i].options.length;\r\n for (let j = 0; j < l; j += 1) {\r\n // this could not work maybe TODO - check with multiselect\r\n if (field.options[j].selected) formObject[field.name] = field.options[j].value;\r\n }\r\n } else if ((field.type !== 'checkbox' && field.type !== 'radio') || field.checked) {\r\n formObject[field.name] = field.value;\r\n }\r\n }\r\n }\r\n }\r\n return formObject;\r\n}\r\n","export default function uniqueArrayOfObjects(arr, key) {\r\n // store the comparison values in array\r\n const result = arr.reduce((a, b) => {\r\n // store the indexes of the unique objects\r\n if (a.findIndex(x => x[key] === b[key]) === -1) {\r\n a.push(b);\r\n }\r\n return a;\r\n }, []);\r\n\r\n return result;\r\n}\r\n","import Cookies from 'js-cookie';\r\n\r\n/**\r\n * Class fetch calls for POST, GET, PATCH and DELETE (CRUD)\r\n * @class\r\n * @author Max Swinkels \r\n */\r\nclass ApiManager {\r\n constructor(options = {}) {\r\n this.config = {\r\n token: Cookies.get('token'),\r\n ...options\r\n };\r\n }\r\n\r\n post(url, data) {\r\n return this.request('POST', url, data);\r\n }\r\n\r\n get(url, accept = null) {\r\n return this.request('GET', url, null, accept);\r\n }\r\n\r\n patch(url, data) {\r\n return this.request('PATCH', url, data);\r\n }\r\n\r\n delete(url, data) {\r\n return this.request('DELETE', url, data);\r\n }\r\n\r\n request(method, url, body, accept) {\r\n const { token } = this.config;\r\n const { lang } = document.documentElement;\r\n\r\n // Default headers\r\n const headers = new Headers({\r\n 'Accept-Language': lang.length ? lang.toLowerCase() : 'nl',\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n if (token) {\r\n headers.append('Authorization', `Bearer ${token}`); // checks if client is logged in to add header Authorization\r\n }\r\n\r\n if (accept) {\r\n headers.append('Accept', accept); // add accept header if it has been entered with the 'GET' method. for example for retrieving an html template\r\n }\r\n\r\n const options = {\r\n method,\r\n cache: 'no-cache',\r\n mode: 'cors',\r\n headers\r\n };\r\n\r\n if (body) {\r\n options.body = JSON.stringify(body); // stringify all data variables\r\n }\r\n\r\n // handle response, format in contentType and return to fetch API call\r\n const handleResponse = response => {\r\n if (response.ok) {\r\n const contentType = response.headers.get('content-type');\r\n if (contentType && contentType.indexOf('application/json') !== -1) {\r\n return response.json();\r\n }\r\n return response.text();\r\n }\r\n return Promise.reject(response);\r\n };\r\n\r\n return fetch(url, options)\r\n .then(handleResponse)\r\n .then(responseData => responseData);\r\n }\r\n}\r\n\r\nexport default ApiManager;\r\n","import SVGInject from '@iconfu/svg-inject';\r\n\r\nclass SvgIcon {\r\n constructor(options = {}) {\r\n this.config = {\r\n module: document.querySelectorAll('[data-module=\"SvgIcon\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n SVGInject(this.config.module);\r\n }\r\n}\r\n\r\nexport default SvgIcon;\r\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport isEqual from \"fast-deep-equal\";\n\n/**\n * @ignore\n */\ndeclare global {\n interface Window {\n __googleMapsCallback: (e: Event) => void;\n }\n}\n\nexport const DEFAULT_ID = \"__googleMapsScriptId\";\n\ntype Libraries = (\n | \"drawing\"\n | \"geometry\"\n | \"localContext\"\n | \"places\"\n | \"visualization\"\n)[];\n\n/**\n * The Google Maps JavaScript API\n * [documentation](https://developers.google.com/maps/documentation/javascript/tutorial)\n * is the authoritative source for [[LoaderOptions]].\n/**\n * Loader options\n */\nexport interface LoaderOptions {\n /**\n * See https://developers.google.com/maps/documentation/javascript/get-api-key.\n */\n apiKey: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview.\n */\n channel?: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview, use `apiKey` instead.\n */\n client?: string;\n /**\n * In your application you can specify release channels or version numbers:\n *\n * The weekly version is specified with `version=weekly`. This version is\n * updated once per week, and is the most current.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly'});\n * ```\n *\n * The quarterly version is specified with `version=quarterly`. This version\n * is updated once per quarter, and is the most predictable.\n *\n * ```\n * const loader = Loader({apiKey, version: 'quarterly'});\n * ```\n *\n * The version number is specified with `version=n.nn`. You can choose\n * `version=3.40`, `version=3.39`, or `version=3.38`. Version numbers are\n * updated once per quarter.\n *\n * ```\n * const loader = Loader({apiKey, version: '3.40'});\n * ```\n *\n * If you do not explicitly specify a version, you will receive the\n * weekly version by default.\n */\n version?: string;\n /**\n * The id of the script tag. Before adding a new script, the Loader will check for an existing one.\n */\n id?: string;\n /**\n * When loading the Maps JavaScript API via the URL you may optionally load\n * additional libraries through use of the libraries URL parameter. Libraries\n * are modules of code that provide additional functionality to the main Maps\n * JavaScript API but are not loaded unless you specifically request them.\n *\n * ```\n * const loader = Loader({\n * apiKey,\n * libraries: ['drawing', 'geometry', 'places', 'visualization'],\n * });\n * ```\n *\n * Set the [list of libraries](https://developers.google.com/maps/documentation/javascript/libraries) for more options.\n */\n libraries?: Libraries;\n /**\n * By default, the Maps JavaScript API uses the user's preferred language\n * setting as specified in the browser, when displaying textual information\n * such as the names for controls, copyright notices, driving directions and\n * labels on maps. In most cases, it's preferable to respect the browser\n * setting. However, if you want the Maps JavaScript API to ignore the\n * browser's language setting, you can force it to display information in a\n * particular language when loading the Maps JavaScript API code.\n *\n * For example, the following example localizes the language to the United\n * Kingdom:\n *\n * ```\n * const loader = Loader({apiKey, language: 'ja', region: 'JP'});\n * ```\n *\n * See the [list of supported\n * languages](https://developers.google.com/maps/faq#languagesupport). Note\n * that new languages are added often, so this list may not be exhaustive.\n *\n */\n language?: string;\n /**\n * When you load the Maps JavaScript API from maps.googleapis.com it applies a\n * default bias for application behavior towards the United States. If you\n * want to alter your application to serve different map tiles or bias the\n * application (such as biasing geocoding results towards the region), you can\n * override this default behavior by adding a region parameter when loading\n * the Maps JavaScript API code.\n *\n * The region parameter accepts Unicode region subtag identifiers which\n * (generally) have a one-to-one mapping to country code Top-Level Domains\n * (ccTLDs). Most Unicode region identifiers are identical to ISO 3166-1\n * codes, with some notable exceptions. For example, Great Britain's ccTLD is\n * \"uk\" (corresponding to the domain .co.uk) while its region identifier is\n * \"GB.\"\n *\n * For example, the following example localizes the map to the United Kingdom:\n *\n * ```\n * const loader = Loader({apiKey, region: 'GB'});\n * ```\n */\n region?: string;\n /**\n * (Beta) You can add multiple Map IDs to your map using the map_ids paramenter in\n * your bootstrap request.\n */\n mapIds?: string[];\n /**\n * Use a custom url and path to load the Google Maps API script.\n */\n url?: string;\n /**\n * Use a cryptographic nonce attribute.\n */\n nonce?: string;\n /**\n * The number of script load retries.\n */\n retries?: number;\n}\n\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then(() => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nexport class Loader {\n /**\n * See [[LoaderOptions.version]]\n */\n version: string;\n /**\n * See [[LoaderOptions.apiKey]]\n */\n apiKey: string;\n /**\n * See [[LoaderOptions.channel]]\n */\n channel: string;\n /**\n * See [[LoaderOptions.client]]\n */\n client: string;\n /**\n * See [[LoaderOptions.id]]\n */\n id: string;\n /**\n * See [[LoaderOptions.libraries]]\n */\n libraries: Libraries;\n /**\n * See [[LoaderOptions.language]]\n */\n language: string;\n\n /**\n * See [[LoaderOptions.region]]\n */\n region: string;\n\n /**\n * See [[LoaderOptions.mapIds]]\n */\n mapIds: string[];\n\n /**\n * See [[LoaderOptions.nonce]]\n */\n nonce: string | null;\n\n /**\n * See [[LoaderOptions.retries]]\n */\n retries: number;\n\n /**\n * See [[LoaderOptions.url]]\n */\n url: string;\n\n private CALLBACK = \"__googleMapsCallback\";\n private callbacks: ((e: Event) => void)[] = [];\n private done = false;\n private loading = false;\n private onerrorEvent: Event;\n private static instance: Loader;\n private errors: ErrorEvent[] = [];\n\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({\n apiKey,\n channel,\n client,\n id = DEFAULT_ID,\n libraries = [],\n language,\n region,\n version,\n mapIds,\n nonce,\n retries = 3,\n url = \"https://maps.googleapis.com/maps/api/js\",\n }: LoaderOptions) {\n this.version = version;\n this.apiKey = apiKey;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.libraries = libraries;\n this.language = language;\n this.region = region;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.retries = retries;\n this.url = url;\n\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(\n `Loader must not be called again with different options. ${JSON.stringify(\n this.options\n )} !== ${JSON.stringify(Loader.instance.options)}`\n );\n }\n\n return Loader.instance;\n }\n\n Loader.instance = this;\n }\n\n get options(): LoaderOptions {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n };\n }\n\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n */\n createUrl(): string {\n let url = this.url;\n\n url += `?callback=${this.CALLBACK}`;\n\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n\n if (this.client) {\n url += `&client=${this.client}`;\n }\n\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n\n if (this.language) {\n url += `&language=${this.language}`;\n }\n\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n\n if (this.version) {\n url += `&v=${this.version}`;\n }\n\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n\n return url;\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n */\n load(): Promise {\n return this.loadPromise();\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n */\n loadPromise(): Promise {\n return new Promise((resolve, reject) => {\n this.loadCallback((err: Event) => {\n if (!err) {\n resolve();\n } else {\n reject(err);\n }\n });\n });\n }\n\n /**\n * Load the Google Maps JavaScript API script with a callback.\n */\n loadCallback(fn: (e: Event) => void): void {\n this.callbacks.push(fn);\n this.execute();\n }\n\n /**\n * Set the script on document.\n */\n private setScript(): void {\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n\n const url = this.createUrl();\n const script = document.createElement(\"script\");\n script.id = this.id;\n script.type = \"text/javascript\";\n script.src = url;\n script.onerror = this.loadErrorCallback.bind(this);\n script.defer = true;\n script.async = true;\n\n if (this.nonce) {\n script.nonce = this.nonce;\n }\n\n document.head.appendChild(script);\n }\n\n deleteScript(): void {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n\n private resetIfRetryingFailed(): void {\n const possibleAttempts = this.retries + 1;\n if (this.done && !this.loading && this.errors.length >= possibleAttempts) {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n }\n }\n\n private loadErrorCallback(e: ErrorEvent): void {\n this.errors.push(e);\n\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * 2 ** this.errors.length;\n\n console.log(\n `Failed to load Google Maps script, retrying in ${delay} ms.`\n );\n\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n } else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n\n private setCallback(): void {\n window.__googleMapsCallback = this.callback.bind(this);\n }\n\n private callback(): void {\n this.done = true;\n this.loading = false;\n\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n\n this.callbacks = [];\n }\n\n private execute(): void {\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\n \"Aborted attempt to load Google Maps JS with @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as script parameters may not match.\"\n );\n this.callback();\n }\n\n this.resetIfRetryingFailed();\n if (this.done) {\n this.callback();\n } else {\n if (this.loading) {\n // do nothing but wait\n } else {\n this.loading = true;\n this.setCallback();\n this.setScript();\n }\n }\n }\n}\n","/* eslint-disable no-undef */\r\nimport { Loader } from '@googlemaps/js-api-loader';\r\nimport SvgIcon from '@png/npm-svg-icon';\r\nimport ApiManager from '../api/crud-manager';\r\nimport utils from '../utils';\r\n\r\nconst onRenderError = (module, error) => {\r\n module.classList.remove('is-loading');\r\n module.classList.add('is-error');\r\n console.error(error);\r\n};\r\n\r\n/**\r\n * Course selector module\r\n * @class\r\n * @author Max Swinkels \r\n */\r\nclass CourseSelector {\r\n constructor(options = {}) {\r\n this.config = {\r\n module: document.querySelector('[data-module=\"courses-selector\"]'),\r\n googleMapsApiKey: 'AIzaSyAGDGynciJ88nQ3q91qPHZtLLWdqEQ8t_s',\r\n microServicesEndpoint: 'https://microservice-hok.pangaeatest.nl',\r\n timeoutDelay: 500,\r\n // default geo location is set to the center of The Netherlands (Utrecht)\r\n geoLocation: {\r\n lat: '52.2129919',\r\n long: '5.2793703',\r\n range: 250,\r\n city: ''\r\n },\r\n ...options\r\n };\r\n this.apiManager = new ApiManager();\r\n }\r\n\r\n /**\r\n * Sets event listeners on all location buttons\r\n * Navigate to next step in course selector\r\n * @param module\r\n */\r\n chooseLocationListener(module) {\r\n const selectLocationButton = module.querySelectorAll('[data-module=\"select-location\"]');\r\n\r\n selectLocationButton.forEach(button => {\r\n button.addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n const { locationId } = button.dataset;\r\n\r\n this.selectedLocationId = locationId;\r\n\r\n this.renderLocationDataList(module);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * When a radius is selected\r\n * Get values from select and set geo location range config and trigger a new render\r\n * @param module\r\n */\r\n radiusListener(module) {\r\n const { geoLocation } = this.config;\r\n const radiusField = module.querySelector('[name=\"courses-search-radius\"]');\r\n\r\n if (!radiusField) {\r\n return;\r\n }\r\n\r\n radiusField.addEventListener('change', event => {\r\n event.preventDefault();\r\n const radius = event.target.value;\r\n\r\n if (radius && geoLocation.city.length) {\r\n this.config.geoLocation.range = radiusField.value;\r\n this.onRenderLocationsDebounce(module);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Load google maps places API\r\n * Used on load and 'on change' address field\r\n * @param module\r\n */\r\n geoLocationListener(module) {\r\n const { googleMapsApiKey } = this.config;\r\n const locationField = module.querySelector('[name=\"courses-search-geo\"]');\r\n const radiusField = module.querySelector('[name=\"courses-search-radius\"]');\r\n\r\n if (!locationField) {\r\n return;\r\n }\r\n\r\n const googleMapsLoader = new Loader({\r\n apiKey: googleMapsApiKey,\r\n libraries: ['places']\r\n });\r\n\r\n const options = {\r\n componentRestrictions: { country: ['nl', 'be'] }\r\n };\r\n\r\n googleMapsLoader\r\n .load()\r\n .then(() => {\r\n const { google } = window;\r\n const autocomplete = new google.maps.places.Autocomplete(locationField, options);\r\n\r\n google.maps.event.addListener(autocomplete, 'place_changed', () => {\r\n const place = autocomplete.getPlace();\r\n\r\n if (!place.geometry) {\r\n console.error(`No details available for input: \"${place.name}\"`);\r\n return;\r\n }\r\n\r\n this.config.geoLocation.lat = place.geometry.location.lat();\r\n this.config.geoLocation.long = place.geometry.location.lng();\r\n this.config.geoLocation.city = place.vicinity;\r\n\r\n if (radiusField) {\r\n this.config.geoLocation.range = radiusField.value;\r\n }\r\n\r\n this.onRenderLocationsDebounce(module);\r\n });\r\n\r\n // select first item on enter\r\n google.maps.event.addDomListener(locationField, 'keydown', event => {\r\n if (event.keyCode === 13 && !event.triggered) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const suggestionSelected = document.querySelectorAll('.pac-item-selected').length > 0;\r\n const results = document.querySelectorAll('.pac-item').length > 0;\r\n\r\n if (!suggestionSelected && results) {\r\n const ex1 = new Event('keydown');\r\n ex1.code = 'ArrowDown';\r\n ex1.key = 'ArrowDown';\r\n ex1.keyCode = 40;\r\n google.maps.event.trigger(event.target, 'keydown', ex1);\r\n\r\n const ex2 = new Event('keydown');\r\n ex2.code = 'Enter';\r\n ex2.key = 'Enter';\r\n ex2.keyCode = 13;\r\n ex2.triggered = true;\r\n google.maps.event.trigger(event.target, 'keydown', ex2);\r\n } else {\r\n locationField.value = '';\r\n }\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n /**\r\n * Async request locations from microservices\r\n * Called on load and 'on change' location or radius\r\n */\r\n async getLocations(geoLocation, itemCode) {\r\n const { microServicesEndpoint } = this.config;\r\n\r\n const parameters = {};\r\n parameters.latitude = geoLocation.lat;\r\n parameters.longitude = geoLocation.long;\r\n parameters.range = geoLocation.range;\r\n parameters.$filter = `ItemCode eq '${itemCode}' and Sold lt Stock`;\r\n parameters.$orderby = 'DateTimeStart ASC';\r\n\r\n const url = `${microServicesEndpoint}/api/locationInRange${utils.buildUrlParameters(\r\n parameters\r\n )}`;\r\n\r\n const response = await this.apiManager.get(url).then(data => data);\r\n const data = await response;\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Get locations based on address and radius\r\n * Make API call and update DOM with location list HTML\r\n * @param module\r\n */\r\n renderLocationsList(module) {\r\n const { geoLocation } = this.config;\r\n\r\n // check if location has itemcode\r\n const courseItemCodeField = module.querySelector('[name=\"courses-search-course-itemcode\"]');\r\n if (!courseItemCodeField && courseItemCodeField.value) {\r\n console.error('Product id does not exists');\r\n module.classList.add('is-error');\r\n return;\r\n }\r\n\r\n module.classList.add('is-loading');\r\n module.classList.remove('is-error');\r\n\r\n const itemCode = courseItemCodeField.value;\r\n const hasSearchLocation = geoLocation.city.length; // check if user has entered location\r\n\r\n const locationListPlaceholder = module.querySelector('[data-location-list]');\r\n const searchResultsLabel = module.querySelector('[data-courses-search-results]');\r\n const searchAmountPlaceholder = module.querySelector('[data-courses-search-amount]');\r\n const searchCityPlaceholder = module.querySelector('[data-courses-search-city]');\r\n\r\n this.getLocations(geoLocation, itemCode)\r\n .then(locationsResponse => {\r\n const uniqueLocations = utils.uniqueArrayOfObjects(locationsResponse, 'name'); // remove all duplicate locations so that only the first date of a certain location is shown\r\n\r\n this.locationsResult = locationsResponse; // set location results in memory\r\n\r\n // set view data & settings\r\n const templateView = 'CoursesLocationList';\r\n const viewData = {\r\n locations: uniqueLocations,\r\n hideDistance: !hasSearchLocation // hide distance in template view if users hasn't entered a location\r\n };\r\n\r\n utils\r\n .jsonToView(viewData, templateView)\r\n .then(html => {\r\n // show result amount in city if users has entered a location\r\n if (searchResultsLabel && hasSearchLocation) {\r\n searchResultsLabel.style.display = 'block';\r\n searchAmountPlaceholder.innerHTML = uniqueLocations.length;\r\n searchCityPlaceholder.innerHTML = geoLocation.city;\r\n }\r\n\r\n module.classList.remove('is-loading');\r\n locationListPlaceholder.innerHTML = html;\r\n\r\n this.chooseLocationListener(module);\r\n\r\n new SvgIcon().init(); // trigger svgIcons after the api has added all products to the html\r\n })\r\n .catch(error => {\r\n onRenderError(module, error);\r\n });\r\n })\r\n .catch(error => {\r\n onRenderError(module, error);\r\n });\r\n }\r\n\r\n /**\r\n * Get dates based on course location\r\n * Location result from previous api, filter on selected location id\r\n * And update DOM with date list HTML\r\n * @param module\r\n */\r\n // eslint-disable-next-line class-methods-use-this\r\n renderLocationDataList(module) {\r\n const locationsResult = this.locationsResult || [];\r\n const locationId = this.selectedLocationId;\r\n\r\n const locationDataListPlaceholder = module.querySelector('[data-location-data-list]');\r\n const stepBackButton = module.querySelector('[data-course-step-back]');\r\n\r\n stepBackButton.addEventListener('click', event => {\r\n event.preventDefault();\r\n $('a[href=\"#tab1\"]').tab('show'); // navigate back to locations tab (jQuery needed because of bootstrap)\r\n });\r\n\r\n locationDataListPlaceholder.innerHTML = ''; // clear previous data results\r\n\r\n module.classList.add('is-loading');\r\n module.classList.remove('is-error');\r\n\r\n $('a[href=\"#tab2\"]').tab('show'); // navigate to select date tab (jQuery needed because of bootstrap)\r\n\r\n const selectedLocationData = locationsResult.filter(obj => obj.id.toString() === locationId); // Filter location results array on selected location id (product itemCode)\r\n\r\n // set view data & settings\r\n const templateViewName = 'CoursesLocationDataList';\r\n const viewData = {\r\n locations: selectedLocationData\r\n };\r\n\r\n utils\r\n .jsonToView(viewData, templateViewName)\r\n .then(html => {\r\n module.classList.remove('is-loading');\r\n locationDataListPlaceholder.innerHTML = html;\r\n\r\n // TODO: Build new add to cart api\r\n // eslint-disable-next-line no-undef\r\n cart.addEventListener(); // trigger ancient cart module\r\n\r\n new SvgIcon().init(); // trigger svgIcons after the api has added all products to the html\r\n })\r\n .catch(error => {\r\n onRenderError(module, error);\r\n });\r\n }\r\n\r\n /**\r\n * Triggers renderLocationsList after a configured delay\r\n * This to prevent overloading the API with every location or radius change\r\n * For better performance and UX\r\n * @param module\r\n */\r\n onRenderLocationsDebounce(module) {\r\n const { timeoutDelay } = this.config;\r\n\r\n if (this.renderLocationsTimeout) {\r\n clearTimeout(this.renderLocationsTimeout);\r\n }\r\n\r\n this.renderLocationsTimeout = setTimeout(() => {\r\n this.renderLocationsList(module);\r\n }, timeoutDelay);\r\n }\r\n\r\n init() {\r\n const { module } = this.config;\r\n\r\n if (!module) {\r\n return;\r\n }\r\n\r\n // set listener after modal opens (jQuery needed because of bootstrap)\r\n $(document).on('show.bs.modal', '#modal-sidepanel', () => {\r\n this.geoLocationListener(module);\r\n this.radiusListener(module);\r\n });\r\n\r\n // initial load locations\r\n this.renderLocationsList(module);\r\n }\r\n}\r\n\r\nexport default CourseSelector;\r\n","import 'jquery-ajax-unobtrusive';\r\nimport '../../../scss/sites/e-learning/e-learning-style.scss';\r\nimport Header from '@png/npm-header';\r\nimport SelectDropdown from '@png/npm-select-dropdown';\r\nimport SvgIcon from '@png/npm-svg-icon';\r\nimport AddressLookup from '../../modules/address-lookup';\r\nimport ClearCache from '../../modules/clear-cache';\r\nimport CookieBar from '../../modules/cookie-bar';\r\nimport FilterTags from '../../modules/filter-tags';\r\nimport FloatingLabels from '../../modules/floating-labels';\r\nimport Incrementer from '../../modules/incrementer';\r\nimport LightGallery from '../../modules/light-gallery';\r\nimport Pagination from '../../modules/pagination';\r\nimport Sticky from '../../modules/sticky';\r\nimport Video from '../../modules/video';\r\nimport Toast from '../../modules/toast';\r\nimport Popup from '../../modules/popup';\r\nimport SmoothScroll from '../../modules/smooth-scroll';\r\nimport OrderHistory from '../../modules/order-history';\r\nimport MacroUseButtonUrl from '../../modules/macro-use-button-url';\r\nimport ReadMoreLess from '../../modules/read-more-less';\r\nimport CourseSelector from '../../modules/course-selector';\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const modules = [\r\n new MacroUseButtonUrl({\r\n rowClickable: ['row-10b', 'row-10a']\r\n }),\r\n new AddressLookup(),\r\n new FilterTags(),\r\n new FloatingLabels(),\r\n new ClearCache(),\r\n new CookieBar(),\r\n new Header({\r\n desktopMenuBreakpoint: 992,\r\n openUrlOnToggle: false\r\n }),\r\n new Incrementer(),\r\n new LightGallery(),\r\n new Pagination(),\r\n new Popup(),\r\n new ReadMoreLess({\r\n dots: true\r\n }),\r\n new SelectDropdown(),\r\n new Sticky({\r\n velocity: 500\r\n }),\r\n new SvgIcon(),\r\n new Toast({\r\n duration: 3000,\r\n close: true\r\n }),\r\n new SmoothScroll(),\r\n new Video(),\r\n new OrderHistory(),\r\n new CourseSelector()\r\n ];\r\n\r\n modules.forEach(module => {\r\n if (module && module.init) {\r\n module.init();\r\n }\r\n });\r\n});\r\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","import customSelect from 'custom-select';\r\n\r\nclass SelectDropdown {\r\n constructor() {\r\n this.config = {\r\n module: document.querySelectorAll('[data-module=\"SelectDropdown\"]')\r\n };\r\n }\r\n\r\n init() {\r\n const { module } = this.config;\r\n\r\n if (\r\n !module.length ||\r\n !!(\r\n 'ontouchstart' in window ||\r\n (window.DocumentTouch && document instanceof window.DocumentTouch)\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n customSelect(module, {\r\n containerClass: 'c-select-dropdown',\r\n openerClass: 'c-select-dropdown__opener',\r\n panelClass: 'c-select-dropdown__panel',\r\n optionClass: 'c-select-dropdown__option',\r\n optgroupClass: 'c-select-dropdown__option-group'\r\n });\r\n }\r\n}\r\n\r\nexport default SelectDropdown;\r\n","/**\n * custom-select\n * A lightweight JS script for custom select creation.\n * Needs no dependencies.\n *\n * v0.0.1\n * (https://github.com/custom-select/custom-select)\n *\n * Copyright (c) 2016 Gionatan Lombardi & Marco Nucara\n * MIT License\n */\n\nimport 'custom-event-polyfill';\n\nconst defaultParams = {\n containerClass: 'custom-select-container',\n openerClass: 'custom-select-opener',\n panelClass: 'custom-select-panel',\n optionClass: 'custom-select-option',\n optgroupClass: 'custom-select-optgroup',\n isSelectedClass: 'is-selected',\n hasFocusClass: 'has-focus',\n isDisabledClass: 'is-disabled',\n isOpenClass: 'is-open',\n};\n\nfunction builder(el, builderParams) {\n const containerClass = 'customSelect';\n let isOpen = false;\n let uId = '';\n const select = el;\n let container;\n let opener;\n let focusedElement;\n let selectedElement;\n let panel;\n let currLabel;\n\n let resetSearchTimeout;\n let searchKey = '';\n\n //\n // Inner Functions\n //\n\n // Sets the focused element with the neccessary classes substitutions\n function setFocusedElement(cstOption) {\n if (focusedElement) {\n focusedElement.classList.remove(builderParams.hasFocusClass);\n }\n if (typeof cstOption !== 'undefined') {\n focusedElement = cstOption;\n focusedElement.classList.add(builderParams.hasFocusClass);\n // Offset update: checks if the focused element is in the visible part of the panelClass\n // if not dispatches a custom event\n if (isOpen) {\n if (cstOption.offsetTop < cstOption.offsetParent.scrollTop\n || cstOption.offsetTop >\n (cstOption.offsetParent.scrollTop + cstOption.offsetParent.clientHeight)\n - cstOption.clientHeight) {\n cstOption.dispatchEvent(new CustomEvent('custom-select:focus-outside-panel', { bubbles: true }));\n }\n }\n } else {\n focusedElement = undefined;\n }\n }\n\n // Reassigns the focused and selected custom option\n // Updates the opener text\n // IMPORTANT: the setSelectedElement function doesn't change the select value!\n function setSelectedElement(cstOption) {\n if (selectedElement) {\n selectedElement.classList.remove(builderParams.isSelectedClass);\n selectedElement.removeAttribute('id');\n opener.removeAttribute('aria-activedescendant');\n }\n if (typeof cstOption !== 'undefined') {\n cstOption.classList.add(builderParams.isSelectedClass);\n cstOption.setAttribute('id', `${containerClass}-${uId}-selectedOption`);\n opener.setAttribute('aria-activedescendant', `${containerClass}-${uId}-selectedOption`);\n selectedElement = cstOption;\n opener.children[0].textContent = selectedElement.customSelectOriginalOption.text;\n } else {\n selectedElement = undefined;\n opener.children[0].textContent = '';\n }\n setFocusedElement(cstOption);\n }\n\n function setValue(value) {\n // Gets the option with the provided value\n let toSelect = select.querySelector(`option[value='${value}']`);\n // If no option has the provided value get the first\n if (!toSelect) {\n [toSelect] = select.options;\n }\n // The option with the provided value becomes the selected one\n // And changes the select current value\n toSelect.selected = true;\n\n setSelectedElement(select.options[select.selectedIndex].customSelectCstOption);\n }\n\n function moveFocuesedElement(direction) {\n // Get all the .custom-select-options\n // Get the index of the current focused one\n const currentFocusedIndex =\n [].indexOf.call(select.options, focusedElement.customSelectOriginalOption);\n // If the next or prev custom option exist\n // Sets it as the new focused one\n if (select.options[currentFocusedIndex + direction]) {\n setFocusedElement(select.options[currentFocusedIndex + direction].customSelectCstOption);\n }\n }\n\n // Open/Close function (toggle)\n function open(bool) {\n // Open\n if (bool || typeof bool === 'undefined') {\n // If present closes an opened instance of the plugin\n // Only one at time can be open\n const openedCustomSelect =\n document.querySelector(`.${containerClass}.${builderParams.isOpenClass}`);\n if (openedCustomSelect) {\n openedCustomSelect.customSelect.open = false;\n }\n\n // Opens only the clicked one\n container.classList.add(builderParams.isOpenClass);\n\n // aria-expanded update\n container.classList.add(builderParams.isOpenClass);\n opener.setAttribute('aria-expanded', 'true');\n\n // Updates the scrollTop position of the panel in relation with the focused option\n if (selectedElement) {\n panel.scrollTop = selectedElement.offsetTop;\n }\n\n // Dispatches the custom event open\n container.dispatchEvent(new CustomEvent('custom-select:open'));\n\n // Sets the global state\n isOpen = true;\n\n // Close\n } else {\n // Removes the css classes\n container.classList.remove(builderParams.isOpenClass);\n\n // aria-expanded update\n opener.setAttribute('aria-expanded', 'false');\n\n // Sets the global state\n isOpen = false;\n\n // When closing the panel the focused custom option must be the selected one\n setFocusedElement(selectedElement);\n\n // Dispatches the custom event close\n container.dispatchEvent(new CustomEvent('custom-select:close'));\n }\n return isOpen;\n }\n\n function clickEvent(e) {\n // Opener click\n if (e.target === opener || opener.contains(e.target)) {\n if (isOpen) {\n open(false);\n } else {\n open();\n }\n // Custom Option click\n } else if (\n e.target.classList\n && e.target.classList.contains(builderParams.optionClass)\n && panel.contains(e.target)) {\n setSelectedElement(e.target);\n // Sets the corrisponding select's option to selected updating the select's value too\n selectedElement.customSelectOriginalOption.selected = true;\n open(false);\n // Triggers the native change event of the select\n select.dispatchEvent(new CustomEvent('change'));\n // click on label or select (click on label corrispond to select click)\n } else if (e.target === select) {\n // if the original select is focusable (for any external reason) let the focus\n // else trigger the focus on opener\n if (opener !== document.activeElement && select !== document.activeElement) {\n opener.focus();\n }\n // Click outside the container closes the panel\n } else if (isOpen && !container.contains(e.target)) {\n open(false);\n }\n }\n\n function mouseoverEvent(e) {\n // On mouse move over and options it bacames the focused one\n if (e.target.classList && e.target.classList.contains(builderParams.optionClass)) {\n setFocusedElement(e.target);\n }\n }\n\n function keydownEvent(e) {\n if (!isOpen) {\n // On \"Arrow down\", \"Arrow up\" and \"Space\" keys opens the panel\n if (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 32) {\n open();\n }\n } else {\n switch (e.keyCode) {\n case 13:\n case 32:\n // On \"Enter\" or \"Space\" selects the focused element as the selected one\n setSelectedElement(focusedElement);\n // Sets the corrisponding select's option to selected updating the select's value too\n selectedElement.customSelectOriginalOption.selected = true;\n // Triggers the native change event of the select\n select.dispatchEvent(new CustomEvent('change'));\n open(false);\n break;\n case 27:\n // On \"Escape\" closes the panel\n open(false);\n break;\n\n case 38:\n // On \"Arrow up\" set focus to the prev option if present\n moveFocuesedElement(-1);\n break;\n case 40:\n // On \"Arrow down\" set focus to the next option if present\n moveFocuesedElement(+1);\n break;\n default:\n // search in panel (autocomplete)\n if (e.keyCode >= 48 && e.keyCode <= 90) {\n // clear existing reset timeout\n if (resetSearchTimeout) {\n clearTimeout(resetSearchTimeout);\n }\n\n // reset timeout for empty search key\n resetSearchTimeout = setTimeout(() => {\n searchKey = '';\n }, 1500);\n\n // update search keyword appending the current key\n searchKey += String.fromCharCode(e.keyCode);\n\n // search the element\n for (let i = 0, l = select.options.length; i < l; i++) {\n // removed cause not supported by IE:\n // if (options[i].text.startsWith(searchKey))\n if (select.options[i].text.toUpperCase().substr(0, searchKey.length) === searchKey) {\n setFocusedElement(select.options[i].customSelectCstOption);\n break;\n }\n }\n }\n break;\n }\n }\n }\n\n function changeEvent() {\n const index = select.selectedIndex;\n const element = index === -1 ? undefined : select.options[index].customSelectCstOption;\n\n setSelectedElement(element);\n }\n\n // When the option is outside the visible part of the opened panel, updates the scrollTop position\n // This is the default behaviour\n // To block it the plugin user must\n // add a \"custom-select:focus-outside-panel\" eventListener on the panel\n // with useCapture set to true\n // and stopPropagation\n function scrollToFocused(e) {\n const currPanel = e.currentTarget;\n const currOption = e.target;\n // Up\n if (currOption.offsetTop < currPanel.scrollTop) {\n currPanel.scrollTop = currOption.offsetTop;\n // Down\n } else {\n currPanel.scrollTop = (currOption.offsetTop + currOption.clientHeight)\n - currPanel.clientHeight;\n }\n }\n\n function addEvents() {\n document.addEventListener('click', clickEvent);\n panel.addEventListener('mouseover', mouseoverEvent);\n panel.addEventListener('custom-select:focus-outside-panel', scrollToFocused);\n select.addEventListener('change', changeEvent);\n container.addEventListener('keydown', keydownEvent);\n }\n\n function removeEvents() {\n document.removeEventListener('click', clickEvent);\n panel.removeEventListener('mouseover', mouseoverEvent);\n panel.removeEventListener('custom-select:focus-outside-panel', scrollToFocused);\n select.removeEventListener('change', changeEvent);\n container.removeEventListener('keydown', keydownEvent);\n }\n\n function disabled(bool) {\n if (bool && !select.disabled) {\n container.classList.add(builderParams.isDisabledClass);\n select.disabled = true;\n opener.removeAttribute('tabindex');\n container.dispatchEvent(new CustomEvent('custom-select:disabled'));\n removeEvents();\n } else if (!bool && select.disabled) {\n container.classList.remove(builderParams.isDisabledClass);\n select.disabled = false;\n opener.setAttribute('tabindex', '0');\n container.dispatchEvent(new CustomEvent('custom-select:enabled'));\n addEvents();\n }\n }\n\n // Form a given select children DOM tree (options and optgroup),\n // Creates the corresponding custom HTMLElements list (divs with different classes and attributes)\n function parseMarkup(children) {\n const nodeList = children;\n const cstList = [];\n\n if (typeof nodeList.length === 'undefined') {\n throw new TypeError('Invalid Argument');\n }\n\n for (let i = 0, li = nodeList.length; i < li; i++) {\n if (nodeList[i] instanceof HTMLElement && nodeList[i].tagName.toUpperCase() === 'OPTGROUP') {\n const cstOptgroup = document.createElement('div');\n cstOptgroup.classList.add(builderParams.optgroupClass);\n cstOptgroup.setAttribute('data-label', nodeList[i].label);\n\n // IMPORTANT: Stores in a property of the created custom option group\n // a hook to the the corrisponding select's option group\n cstOptgroup.customSelectOriginalOptgroup = nodeList[i];\n\n // IMPORTANT: Stores in a property of select's option group\n // a hook to the created custom option group\n nodeList[i].customSelectCstOptgroup = cstOptgroup;\n\n const subNodes = parseMarkup(nodeList[i].children);\n for (let j = 0, lj = subNodes.length; j < lj; j++) {\n cstOptgroup.appendChild(subNodes[j]);\n }\n\n cstList.push(cstOptgroup);\n } else if (nodeList[i] instanceof HTMLElement\n && nodeList[i].tagName.toUpperCase() === 'OPTION') {\n const cstOption = document.createElement('div');\n cstOption.classList.add(builderParams.optionClass);\n cstOption.textContent = nodeList[i].text;\n cstOption.setAttribute('data-value', nodeList[i].value);\n cstOption.setAttribute('role', 'option');\n\n // IMPORTANT: Stores in a property of the created custom option\n // a hook to the the corrisponding select's option\n cstOption.customSelectOriginalOption = nodeList[i];\n\n // IMPORTANT: Stores in a property of select's option\n // a hook to the created custom option\n nodeList[i].customSelectCstOption = cstOption;\n\n // If the select's option is selected\n if (nodeList[i].selected) {\n setSelectedElement(cstOption);\n }\n cstList.push(cstOption);\n } else {\n throw new TypeError('Invalid Argument');\n }\n }\n return cstList;\n }\n\n function append(nodePar, appendIntoOriginal, targetPar) {\n let target;\n if (typeof targetPar === 'undefined'\n || (targetPar === select)) {\n target = panel;\n } else if (targetPar instanceof HTMLElement\n && targetPar.tagName.toUpperCase() === 'OPTGROUP'\n && select.contains(targetPar)) {\n target = targetPar.customSelectCstOptgroup;\n } else {\n throw new TypeError('Invalid Argument');\n }\n\n // If the node provided is a single HTMLElement it is stored in an array\n const node = nodePar instanceof HTMLElement ? [nodePar] : nodePar;\n\n // Injects the options|optgroup in the select\n if (appendIntoOriginal) {\n for (let i = 0, l = node.length; i < l; i++) {\n if (target === panel) {\n select.appendChild(node[i]);\n } else {\n target.customSelectOriginalOptgroup.appendChild(node[i]);\n }\n }\n }\n\n // The custom markup to append\n const markupToInsert = parseMarkup(node);\n\n // Injects the created DOM content in the panel\n for (let i = 0, l = markupToInsert.length; i < l; i++) {\n target.appendChild(markupToInsert[i]);\n }\n\n return node;\n }\n\n function insertBefore(node, targetPar) {\n let target;\n if (targetPar instanceof HTMLElement\n && targetPar.tagName.toUpperCase() === 'OPTION'\n && select.contains(targetPar)) {\n target = targetPar.customSelectCstOption;\n } else if (targetPar instanceof HTMLElement\n && targetPar.tagName.toUpperCase() === 'OPTGROUP'\n && select.contains(targetPar)) {\n target = targetPar.customSelectCstOptgroup;\n } else {\n throw new TypeError('Invalid Argument');\n }\n\n // The custom markup to append\n const markupToInsert = parseMarkup(node.length ? node : [node]);\n\n target.parentNode.insertBefore(markupToInsert[0], target);\n\n // Injects the option or optgroup node in the original select and returns the injected node\n return targetPar.parentNode.insertBefore(node.length ? node[0] : node, targetPar);\n }\n\n function remove(node) {\n let cstNode;\n if (node instanceof HTMLElement\n && node.tagName.toUpperCase() === 'OPTION'\n && select.contains(node)) {\n cstNode = node.customSelectCstOption;\n } else if (node instanceof HTMLElement\n && node.tagName.toUpperCase() === 'OPTGROUP'\n && select.contains(node)) {\n cstNode = node.customSelectCstOptgroup;\n } else {\n throw new TypeError('Invalid Argument');\n }\n cstNode.parentNode.removeChild(cstNode);\n const removedNode = node.parentNode.removeChild(node);\n changeEvent();\n return removedNode;\n }\n\n function empty() {\n const removed = [];\n while (select.children.length) {\n panel.removeChild(panel.children[0]);\n removed.push(select.removeChild(select.children[0]));\n }\n setSelectedElement();\n return removed;\n }\n\n function destroy() {\n for (let i = 0, l = select.options.length; i < l; i++) {\n delete select.options[i].customSelectCstOption;\n }\n const optGroup = select.getElementsByTagName('optgroup');\n for (let i = 0, l = optGroup.length; i < l; i++) {\n delete optGroup.customSelectCstOptgroup;\n }\n\n removeEvents();\n\n return container.parentNode.replaceChild(select, container);\n }\n //\n // Custom Select DOM tree creation\n //\n\n // Creates the container/wrapper\n container = document.createElement('div');\n container.classList.add(builderParams.containerClass, containerClass);\n\n // Creates the opener\n opener = document.createElement('span');\n opener.className = builderParams.openerClass;\n opener.setAttribute('role', 'combobox');\n opener.setAttribute('aria-autocomplete', 'list');\n opener.setAttribute('aria-expanded', 'false');\n opener.innerHTML = `\n ${(select.selectedIndex !== -1 ? select.options[select.selectedIndex].text : '')}\n `;\n\n // Creates the panel\n // and injects the markup of the select inside\n // with some tag and attributes replacement\n panel = document.createElement('div');\n // Create random id\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (let i = 0; i < 5; i++) {\n uId += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n panel.id = `${containerClass}-${uId}-panel`;\n panel.className = builderParams.panelClass;\n panel.setAttribute('role', 'listbox');\n opener.setAttribute('aria-owns', panel.id);\n\n append(select.children, false);\n\n // Injects the container in the original DOM position of the select\n container.appendChild(opener);\n select.parentNode.replaceChild(container, select);\n container.appendChild(select);\n container.appendChild(panel);\n\n // ARIA labelledby - label\n if (document.querySelector(`label[for=\"${select.id}\"]`)) {\n currLabel = document.querySelector(`label[for=\"${select.id}\"]`);\n } else if (container.parentNode.tagName.toUpperCase() === 'LABEL') {\n currLabel = container.parentNode;\n }\n if (typeof currLabel !== 'undefined') {\n currLabel.setAttribute('id', `${containerClass}-${uId}-label`);\n opener.setAttribute('aria-labelledby', `${containerClass}-${uId}-label`);\n }\n\n // Event Init\n if (select.disabled) {\n container.classList.add(builderParams.isDisabledClass);\n } else {\n opener.setAttribute('tabindex', '0');\n select.setAttribute('tabindex', '-1');\n addEvents();\n }\n\n // Stores the plugin public exposed methods and properties, directly in the container HTMLElement\n container.customSelect = {\n get pluginOptions() { return builderParams; },\n get open() { return isOpen; },\n set open(bool) {\n open(bool);\n },\n get disabled() { return select.disabled; },\n set disabled(bool) {\n disabled(bool);\n },\n get value() { return select.value; },\n set value(val) {\n setValue(val);\n },\n append: (node, target) => append(node, true, target),\n insertBefore: (node, target) => insertBefore(node, target),\n remove,\n empty,\n destroy,\n opener,\n select,\n panel,\n container,\n };\n\n // Stores the plugin directly in the original select\n select.customSelect = container.customSelect;\n\n // Returns the plugin instance, with the public exposed methods and properties\n return container.customSelect;\n}\n\nexport default function customSelect(element, customParams) {\n // Overrides the default options with the ones provided by the user\n const nodeList = [];\n const selects = [];\n\n return (function init() {\n // The plugin is called on a single HTMLElement\n if (element && element instanceof HTMLElement && element.tagName.toUpperCase() === 'SELECT') {\n nodeList.push(element);\n // The plugin is called on a selector\n } else if (element && typeof element === 'string') {\n const elementsList = document.querySelectorAll(element);\n for (let i = 0, l = elementsList.length; i < l; ++i) {\n if (elementsList[i] instanceof HTMLElement\n && elementsList[i].tagName.toUpperCase() === 'SELECT') {\n nodeList.push(elementsList[i]);\n }\n }\n // The plugin is called on any HTMLElements list (NodeList, HTMLCollection, Array, etc.)\n } else if (element && element.length) {\n for (let i = 0, l = element.length; i < l; ++i) {\n if (element[i] instanceof HTMLElement\n && element[i].tagName.toUpperCase() === 'SELECT') {\n nodeList.push(element[i]);\n }\n }\n }\n\n // Launches the plugin over every HTMLElement\n // And stores every plugin instance\n for (let i = 0, l = nodeList.length; i < l; ++i) {\n selects.push(builder(nodeList[i], Object.assign({}, defaultParams, customParams)));\n }\n\n // Returns all plugin instances\n return selects;\n }());\n}\n","/**\n * SVGInject - Version 1.2.2\n * A tiny, intuitive, robust, caching solution for injecting SVG files inline into the DOM.\n *\n * https://github.com/iconfu/svg-inject\n *\n * Copyright (c) 2018 INCORS, the creators of iconfu.com\n * @license MIT License - https://github.com/iconfu/svg-inject/blob/master/LICENSE\n */\n\n(function(window, document) {\n // constants for better minification\n var _CREATE_ELEMENT_ = 'createElement';\n var _GET_ELEMENTS_BY_TAG_NAME_ = 'getElementsByTagName';\n var _LENGTH_ = 'length';\n var _STYLE_ = 'style';\n var _TITLE_ = 'title';\n var _UNDEFINED_ = 'undefined';\n var _SET_ATTRIBUTE_ = 'setAttribute';\n var _GET_ATTRIBUTE_ = 'getAttribute';\n\n var NULL = null;\n\n // constants\n var __SVGINJECT = '__svgInject';\n var ID_SUFFIX = '--inject-';\n var ID_SUFFIX_REGEX = new RegExp(ID_SUFFIX + '\\\\d+', \"g\");\n var LOAD_FAIL = 'LOAD_FAIL';\n var SVG_NOT_SUPPORTED = 'SVG_NOT_SUPPORTED';\n var SVG_INVALID = 'SVG_INVALID';\n var ATTRIBUTE_EXCLUSION_NAMES = ['src', 'alt', 'onload', 'onerror'];\n var A_ELEMENT = document[_CREATE_ELEMENT_]('a');\n var IS_SVG_SUPPORTED = typeof SVGRect != _UNDEFINED_;\n var DEFAULT_OPTIONS = {\n useCache: true,\n copyAttributes: true,\n makeIdsUnique: true\n };\n // Map of IRI referenceable tag names to properties that can reference them. This is defined in\n // https://www.w3.org/TR/SVG11/linking.html#processingIRI\n var IRI_TAG_PROPERTIES_MAP = {\n clipPath: ['clip-path'],\n 'color-profile': NULL,\n cursor: NULL,\n filter: NULL,\n linearGradient: ['fill', 'stroke'],\n marker: ['marker', 'marker-end', 'marker-mid', 'marker-start'],\n mask: NULL,\n pattern: ['fill', 'stroke'],\n radialGradient: ['fill', 'stroke']\n };\n var INJECTED = 1;\n var FAIL = 2;\n\n var uniqueIdCounter = 1;\n var xmlSerializer;\n var domParser;\n\n\n // creates an SVG document from an SVG string\n function svgStringToSvgDoc(svgStr) {\n domParser = domParser || new DOMParser();\n return domParser.parseFromString(svgStr, 'text/xml');\n }\n\n\n // searializes an SVG element to an SVG string\n function svgElemToSvgString(svgElement) {\n xmlSerializer = xmlSerializer || new XMLSerializer();\n return xmlSerializer.serializeToString(svgElement);\n }\n\n\n // Returns the absolute url for the specified url\n function getAbsoluteUrl(url) {\n A_ELEMENT.href = url;\n return A_ELEMENT.href;\n }\n\n\n // Load svg with an XHR request\n function loadSvg(url, callback, errorCallback) {\n if (url) {\n var req = new XMLHttpRequest();\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n // readyState is DONE\n var status = req.status;\n if (status == 200) {\n // request status is OK\n callback(req.responseXML, req.responseText.trim());\n } else if (status >= 400) {\n // request status is error (4xx or 5xx)\n errorCallback();\n } else if (status == 0) {\n // request status 0 can indicate a failed cross-domain call\n errorCallback();\n }\n }\n };\n req.open('GET', url, true);\n req.send();\n }\n }\n\n\n // Copy attributes from img element to svg element\n function copyAttributes(imgElem, svgElem) {\n var attribute;\n var attributeName;\n var attributeValue;\n var attributes = imgElem.attributes;\n for (var i = 0; i < attributes[_LENGTH_]; i++) {\n attribute = attributes[i];\n attributeName = attribute.name;\n // Only copy attributes not explicitly excluded from copying\n if (ATTRIBUTE_EXCLUSION_NAMES.indexOf(attributeName) == -1) {\n attributeValue = attribute.value;\n // If img attribute is \"title\", insert a title element into SVG element\n if (attributeName == _TITLE_) {\n var titleElem;\n var firstElementChild = svgElem.firstElementChild;\n if (firstElementChild && firstElementChild.localName.toLowerCase() == _TITLE_) {\n // If the SVG element's first child is a title element, keep it as the title element\n titleElem = firstElementChild;\n } else {\n // If the SVG element's first child element is not a title element, create a new title\n // ele,emt and set it as the first child\n titleElem = document[_CREATE_ELEMENT_ + 'NS']('http://www.w3.org/2000/svg', _TITLE_);\n svgElem.insertBefore(titleElem, firstElementChild);\n }\n // Set new title content\n titleElem.textContent = attributeValue;\n } else {\n // Set img attribute to svg element\n svgElem[_SET_ATTRIBUTE_](attributeName, attributeValue);\n }\n }\n }\n }\n\n\n // This function appends a suffix to IDs of referenced elements in the in order to to avoid ID collision\n // between multiple injected SVGs. The suffix has the form \"--inject-X\", where X is a running number which is\n // incremented with each injection. References to the IDs are adjusted accordingly.\n // We assume tha all IDs within the injected SVG are unique, therefore the same suffix can be used for all IDs of one\n // injected SVG.\n function makeIdsUnique(svgElem) {\n var idSuffix = ID_SUFFIX + uniqueIdCounter++;\n // Get all elements with an ID. The SVG spec recommends to put referenced elements inside elements, but\n // this is a requirement, therefore we have to search for IDs in the whole SVG.\n var idElements = svgElem.querySelectorAll('[id]');\n var idElem;\n var tagName;\n var iriTagNames = {};\n var iriProperties = [];\n var changed = false;\n var i, j;\n\n for (i = 0; i < idElements[_LENGTH_]; i++) {\n idElem = idElements[i];\n tagName = idElem.localName; // Use non-namespaced tag name\n // Make ID unique if tag name is IRI referenceable\n if (tagName in IRI_TAG_PROPERTIES_MAP) {\n changed = true;\n iriTagNames[tagName] = 1;\n // Add suffix to element's ID\n idElem.id += idSuffix;\n // Replace ids in xlink:ref and href attributes\n ['xlink:href', 'href'].forEach(function(refAttrName) {\n var iri = idElem[_GET_ATTRIBUTE_](refAttrName);\n if (/^\\s*#/.test(iri)) { // Check if iri is non-null and has correct format\n idElem[_SET_ATTRIBUTE_](refAttrName, iri.trim() + idSuffix);\n }\n });\n }\n }\n\n // Get all properties that are mapped to the found tags\n for (tagName in iriTagNames) {\n (IRI_TAG_PROPERTIES_MAP[tagName] || [tagName]).forEach(function (mappedProperty) {\n // Add mapped properties to array of iri referencing properties.\n // Use linear search here because the number of possible entries is very small (maximum 11)\n if (iriProperties.indexOf(mappedProperty) < 0) {\n iriProperties.push(mappedProperty);\n }\n });\n }\n\n // Replace IDs with new IDs in all references\n if (iriProperties[_LENGTH_]) {\n // Add \"style\" to properties, because it may contain references in the form 'style=\"fill:url(#myFill)\"'\n iriProperties.push(_STYLE_);\n // Regular expression for functional notations of an IRI references. This will find occurences in the form\n // url(#anyId) or url(\"#anyId\") (for Internet Explorer)\n var funcIriRegex = /url\\(\"?#([a-zA-Z][\\w:.-]*)\"?\\)/g;\n // Run through all elements of the SVG and replace IDs in references. \n // To get all descending elements, getElementsByTagName('*') seems to perform faster than querySelectorAll('*'). \n // Since svgElem.getElementsByTagName('*') does not return the svg element itself, we have to handle it separately. \n var descElements = svgElem[_GET_ELEMENTS_BY_TAG_NAME_]('*');\n var element = svgElem;\n var propertyName;\n var value;\n var newValue;\n for (i = -1; element != null;) {\n if (element.localName == _STYLE_) {\n value = element.textContent;\n newValue = value && value.replace(funcIriRegex, 'url(#$1' + idSuffix + ')');\n if (newValue !== value) {\n element.textContent = newValue;\n }\n } else if (element.hasAttributes()) {\n // Run through all property names for which IDs were found\n for (j = 0; j < iriProperties[_LENGTH_]; j++) {\n propertyName = iriProperties[j];\n value = element[_GET_ATTRIBUTE_](propertyName);\n newValue = value && value.replace(funcIriRegex, 'url(#$1' + idSuffix + ')');\n if (newValue !== value) {\n element[_SET_ATTRIBUTE_](propertyName, newValue);\n }\n }\n }\n element = descElements[++i]; \n }\n }\n\n // return true if SVG element has changed\n return changed;\n }\n\n // For cached SVGs the IDs are made unique by simply replacing the already inserted unique IDs with a \n // higher ID counter. This is much more performant than a call to makeIdsUnique().\n function makeIdsUniqueCached(svgString) {\n return svgString.replace(ID_SUFFIX_REGEX, ID_SUFFIX + uniqueIdCounter++);\n }\n\n // Inject SVG by replacing the img element with the SVG element in the DOM\n function inject(imgElem, svgElem, absUrl, options) {\n if (svgElem) {\n svgElem[_SET_ATTRIBUTE_]('data-inject-url', absUrl);\n var parentNode = imgElem.parentNode;\n if (parentNode) {\n if (options.copyAttributes) {\n copyAttributes(imgElem, svgElem);\n }\n // Invoke beforeInject hook if set\n var beforeInject = options.beforeInject;\n var injectElem = (beforeInject && beforeInject(imgElem, svgElem)) || svgElem;\n // Replace img element with new element. This is the actual injection.\n parentNode.replaceChild(injectElem, imgElem);\n // Mark img element as injected\n imgElem[__SVGINJECT] = INJECTED;\n removeOnLoadAttribute(imgElem);\n // Invoke afterInject hook if set\n var afterInject = options.afterInject;\n if (afterInject) {\n afterInject(imgElem, injectElem);\n }\n }\n } else {\n svgInvalid(imgElem, options);\n }\n }\n\n\n // Merges any number of options objects into a new object\n function mergeOptions() {\n var mergedOptions = {};\n var args = arguments;\n // Iterate over all specified options objects and add all properties to the new options object\n for (var i = 0; i < args[_LENGTH_]; i++) {\n var argument = args[i];\n for (var key in argument) {\n if (argument.hasOwnProperty(key)) {\n mergedOptions[key] = argument[key];\n }\n }\n }\n return mergedOptions;\n }\n\n\n // Adds the specified CSS to the document's element\n function addStyleToHead(css) {\n var head = document[_GET_ELEMENTS_BY_TAG_NAME_]('head')[0];\n if (head) {\n var style = document[_CREATE_ELEMENT_](_STYLE_);\n style.type = 'text/css';\n style.appendChild(document.createTextNode(css));\n head.appendChild(style);\n }\n }\n\n\n // Builds an SVG element from the specified SVG string\n function buildSvgElement(svgStr, verify) {\n if (verify) {\n var svgDoc;\n try {\n // Parse the SVG string with DOMParser\n svgDoc = svgStringToSvgDoc(svgStr);\n } catch(e) {\n return NULL;\n }\n if (svgDoc[_GET_ELEMENTS_BY_TAG_NAME_]('parsererror')[_LENGTH_]) {\n // DOMParser does not throw an exception, but instead puts parsererror tags in the document\n return NULL;\n }\n return svgDoc.documentElement; \n } else {\n var div = document.createElement('div');\n div.innerHTML = svgStr;\n return div.firstElementChild;\n }\n }\n\n\n function removeOnLoadAttribute(imgElem) {\n // Remove the onload attribute. Should only be used to remove the unstyled image flash protection and\n // make the element visible, not for removing the event listener.\n imgElem.removeAttribute('onload');\n }\n\n function errorMessage(msg) {\n console.error('SVGInject: ' + msg);\n }\n\n\n function fail(imgElem, status, options) {\n imgElem[__SVGINJECT] = FAIL;\n if (options.onFail) {\n options.onFail(imgElem, status);\n } else {\n errorMessage(status);\n }\n }\n\n\n function svgInvalid(imgElem, options) {\n removeOnLoadAttribute(imgElem);\n fail(imgElem, SVG_INVALID, options);\n }\n\n\n function svgNotSupported(imgElem, options) {\n removeOnLoadAttribute(imgElem);\n fail(imgElem, SVG_NOT_SUPPORTED, options);\n }\n\n\n function loadFail(imgElem, options) {\n fail(imgElem, LOAD_FAIL, options);\n }\n\n\n function removeEventListeners(imgElem) {\n imgElem.onload = NULL;\n imgElem.onerror = NULL;\n }\n\n\n function imgNotSet(msg) {\n errorMessage('no img element');\n }\n\n\n function createSVGInject(globalName, options) {\n var defaultOptions = mergeOptions(DEFAULT_OPTIONS, options);\n var svgLoadCache = {};\n\n if (IS_SVG_SUPPORTED) {\n // If the browser supports SVG, add a small stylesheet that hides the elements until\n // injection is finished. This avoids showing the unstyled SVGs before style is applied.\n addStyleToHead('img[onload^=\"' + globalName + '(\"]{visibility:hidden;}');\n }\n\n\n /**\n * SVGInject\n *\n * Injects the SVG specified in the `src` attribute of the specified `img` element or array of `img`\n * elements. Returns a Promise object which resolves if all passed in `img` elements have either been\n * injected or failed to inject (Only if a global Promise object is available like in all modern browsers\n * or through a polyfill).\n *\n * Options:\n * useCache: If set to `true` the SVG will be cached using the absolute URL. Default value is `true`.\n * copyAttributes: If set to `true` the attributes will be copied from `img` to `svg`. Dfault value\n * is `true.\n * makeIdsUnique: If set to `true` the ID of elements in the `` element that can be references by\n * property values (for example 'clipPath') are made unique by appending \"--inject-X\", where X is a\n * running number which increases with each injection. This is done to avoid duplicate IDs in the DOM.\n * beforeLoad: Hook before SVG is loaded. The `img` element is passed as a parameter. If the hook returns\n * a string it is used as the URL instead of the `img` element's `src` attribute.\n * afterLoad: Hook after SVG is loaded. The loaded `svg` element and `svg` string are passed as a\n * parameters. If caching is active this hook will only get called once for injected SVGs with the\n * same absolute path. Changes to the `svg` element in this hook will be applied to all injected SVGs\n * with the same absolute path. It's also possible to return an `svg` string or `svg` element which\n * will then be used for the injection.\n * beforeInject: Hook before SVG is injected. The `img` and `svg` elements are passed as parameters. If\n * any html element is returned it gets injected instead of applying the default SVG injection.\n * afterInject: Hook after SVG is injected. The `img` and `svg` elements are passed as parameters.\n * onAllFinish: Hook after all `img` elements passed to an SVGInject() call have either been injected or\n * failed to inject.\n * onFail: Hook after injection fails. The `img` element and a `status` string are passed as an parameter.\n * The `status` can be either `'SVG_NOT_SUPPORTED'` (the browser does not support SVG),\n * `'SVG_INVALID'` (the SVG is not in a valid format) or `'LOAD_FAILED'` (loading of the SVG failed).\n *\n * @param {HTMLImageElement} img - an img element or an array of img elements\n * @param {Object} [options] - optional parameter with [options](#options) for this injection.\n */\n function SVGInject(img, options) {\n options = mergeOptions(defaultOptions, options);\n\n var run = function(resolve) {\n var allFinish = function() {\n var onAllFinish = options.onAllFinish;\n if (onAllFinish) {\n onAllFinish();\n } \n resolve && resolve();\n };\n\n if (img && typeof img[_LENGTH_] != _UNDEFINED_) {\n // an array like structure of img elements\n var injectIndex = 0;\n var injectCount = img[_LENGTH_];\n\n if (injectCount == 0) {\n allFinish();\n } else {\n var finish = function() {\n if (++injectIndex == injectCount) {\n allFinish();\n }\n };\n \n for (var i = 0; i < injectCount; i++) {\n SVGInjectElement(img[i], options, finish);\n }\n }\n } else {\n // only one img element\n SVGInjectElement(img, options, allFinish);\n }\n };\n\n // return a Promise object if globally available\n return typeof Promise == _UNDEFINED_ ? run() : new Promise(run);\n }\n\n\n // Injects a single svg element. Options must be already merged with the default options.\n function SVGInjectElement(imgElem, options, callback) {\n if (imgElem) {\n var svgInjectAttributeValue = imgElem[__SVGINJECT];\n if (!svgInjectAttributeValue) {\n removeEventListeners(imgElem);\n\n if (!IS_SVG_SUPPORTED) {\n svgNotSupported(imgElem, options);\n callback();\n return;\n }\n // Invoke beforeLoad hook if set. If the beforeLoad returns a value use it as the src for the load\n // URL path. Else use the imgElem's src attribute value.\n var beforeLoad = options.beforeLoad;\n var src = (beforeLoad && beforeLoad(imgElem)) || imgElem[_GET_ATTRIBUTE_]('src');\n\n if (!src) {\n // If no image src attribute is set do no injection. This can only be reached by using javascript\n // because if no src attribute is set the onload and onerror events do not get called\n if (src === '') {\n loadFail(imgElem, options);\n }\n callback();\n return;\n }\n\n // set array so later calls can register callbacks\n var onFinishCallbacks = [];\n imgElem[__SVGINJECT] = onFinishCallbacks;\n\n var onFinish = function() {\n callback();\n onFinishCallbacks.forEach(function(onFinishCallback) {\n onFinishCallback();\n });\n };\n\n var absUrl = getAbsoluteUrl(src);\n var useCacheOption = options.useCache;\n var makeIdsUniqueOption = options.makeIdsUnique;\n\n var setSvgLoadCacheValue = function(val) {\n if (useCacheOption) {\n svgLoadCache[absUrl].forEach(function(svgLoad) {\n svgLoad(val);\n });\n svgLoadCache[absUrl] = val;\n }\n };\n\n if (useCacheOption) {\n var svgLoad = svgLoadCache[absUrl];\n\n var handleLoadValue = function(loadValue) {\n if (loadValue === LOAD_FAIL) {\n loadFail(imgElem, options);\n } else if (loadValue === SVG_INVALID) {\n svgInvalid(imgElem, options);\n } else {\n var hasUniqueIds = loadValue[0];\n var svgString = loadValue[1];\n var uniqueIdsSvgString = loadValue[2];\n var svgElem;\n \n if (makeIdsUniqueOption) {\n if (hasUniqueIds === NULL) {\n // IDs for the SVG string have not been made unique before. This may happen if previous\n // injection of a cached SVG have been run with the option makedIdsUnique set to false\n svgElem = buildSvgElement(svgString, false);\n hasUniqueIds = makeIdsUnique(svgElem);\n\n loadValue[0] = hasUniqueIds;\n loadValue[2] = hasUniqueIds && svgElemToSvgString(svgElem);\n } else if (hasUniqueIds) {\n // Make IDs unique for already cached SVGs with better performance\n svgString = makeIdsUniqueCached(uniqueIdsSvgString);\n }\n }\n\n svgElem = svgElem || buildSvgElement(svgString, false);\n \n inject(imgElem, svgElem, absUrl, options);\n }\n onFinish();\n };\n\n if (typeof svgLoad != _UNDEFINED_) {\n // Value for url exists in cache\n if (svgLoad.isCallbackQueue) {\n // Same url has been cached, but value has not been loaded yet, so add to callbacks\n svgLoad.push(handleLoadValue);\n } else {\n handleLoadValue(svgLoad);\n }\n return;\n } else {\n var svgLoad = [];\n // set property isCallbackQueue to Array to differentiate from array with cached loaded values \n svgLoad.isCallbackQueue = true;\n svgLoadCache[absUrl] = svgLoad;\n }\n }\n\n // Load the SVG because it is not cached or caching is disabled\n loadSvg(absUrl, function(svgXml, svgString) {\n // Use the XML from the XHR request if it is an instance of Document. Otherwise\n // (for example of IE9), create the svg document from the svg string.\n var svgElem = svgXml instanceof Document ? svgXml.documentElement : buildSvgElement(svgString, true);\n\n var afterLoad = options.afterLoad;\n if (afterLoad) {\n // Invoke afterLoad hook which may modify the SVG element. After load may also return a new\n // svg element or svg string\n var svgElemOrSvgString = afterLoad(svgElem, svgString) || svgElem; \n if (svgElemOrSvgString) {\n // Update svgElem and svgString because of modifications to the SVG element or SVG string in\n // the afterLoad hook, so the modified SVG is also used for all later cached injections\n var isString = typeof svgElemOrSvgString == 'string';\n svgString = isString ? svgElemOrSvgString : svgElemToSvgString(svgElem);\n svgElem = isString ? buildSvgElement(svgElemOrSvgString, true) : svgElemOrSvgString;\n }\n }\n\n if (svgElem instanceof SVGElement) {\n var hasUniqueIds = NULL;\n if (makeIdsUniqueOption) {\n hasUniqueIds = makeIdsUnique(svgElem);\n }\n\n if (useCacheOption) {\n var uniqueIdsSvgString = hasUniqueIds && svgElemToSvgString(svgElem);\n // set an array with three entries to the load cache\n setSvgLoadCacheValue([hasUniqueIds, svgString, uniqueIdsSvgString]);\n }\n\n inject(imgElem, svgElem, absUrl, options);\n } else {\n svgInvalid(imgElem, options);\n setSvgLoadCacheValue(SVG_INVALID);\n }\n onFinish();\n }, function() {\n loadFail(imgElem, options);\n setSvgLoadCacheValue(LOAD_FAIL);\n onFinish();\n });\n } else {\n if (Array.isArray(svgInjectAttributeValue)) {\n // svgInjectAttributeValue is an array. Injection is not complete so register callback\n svgInjectAttributeValue.push(callback);\n } else {\n callback();\n }\n }\n } else {\n imgNotSet();\n }\n }\n\n\n /**\n * Sets the default [options](#options) for SVGInject.\n *\n * @param {Object} [options] - default [options](#options) for an injection.\n */\n SVGInject.setOptions = function(options) {\n defaultOptions = mergeOptions(defaultOptions, options);\n };\n\n\n // Create a new instance of SVGInject\n SVGInject.create = createSVGInject;\n\n\n /**\n * Used in onerror Event of an `` element to handle cases when the loading the original src fails\n * (for example if file is not found or if the browser does not support SVG). This triggers a call to the\n * options onFail hook if available. The optional second parameter will be set as the new src attribute\n * for the img element.\n *\n * @param {HTMLImageElement} img - an img element\n * @param {String} [fallbackSrc] - optional parameter fallback src\n */\n SVGInject.err = function(img, fallbackSrc) {\n if (img) {\n if (img[__SVGINJECT] != FAIL) {\n removeEventListeners(img);\n\n if (!IS_SVG_SUPPORTED) {\n svgNotSupported(img, defaultOptions);\n } else {\n removeOnLoadAttribute(img);\n loadFail(img, defaultOptions);\n }\n if (fallbackSrc) {\n removeOnLoadAttribute(img);\n img.src = fallbackSrc;\n }\n }\n } else {\n imgNotSet();\n }\n };\n\n window[globalName] = SVGInject;\n\n return SVGInject;\n }\n\n var SVGInjectInstance = createSVGInject('SVGInject');\n\n if (typeof module == 'object' && typeof module.exports == 'object') {\n module.exports = SVGInjectInstance;\n }\n})(window, document);\n","class MacroUseButtonUrl {\r\n constructor(options = {}) {\r\n this.config = {\r\n classButtonPrimary: 'primary',\r\n classButtonLink: 'link',\r\n modulePrimary: document.querySelectorAll('.js-use-buttonprimary-url'),\r\n moduleLink: document.querySelectorAll('.js-use-buttonlink-url'),\r\n rowClickable: [],\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const {\r\n classButtonPrimary,\r\n classButtonLink,\r\n modulePrimary,\r\n moduleLink,\r\n rowClickable\r\n } = this.config;\r\n\r\n if (!rowClickable.length) {\r\n return;\r\n }\r\n\r\n const setMacroClickWithUrlOf = button => {\r\n const cols = document.querySelectorAll(`.png-col.js-use-button${button}-url`);\r\n if (cols) {\r\n rowClickable.forEach(() => {\r\n cols.forEach(col => {\r\n const btn = col.querySelector(`.btn-${button}`);\r\n const macro = col.querySelector('.o-macro');\r\n if (btn && macro) {\r\n macro.classList.add('has-link');\r\n macro.addEventListener('click', () => {\r\n window.location.href = btn.getAttribute('href');\r\n });\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n if (modulePrimary) {\r\n modulePrimary.forEach(() => setMacroClickWithUrlOf(classButtonPrimary));\r\n }\r\n\r\n if (moduleLink) {\r\n moduleLink.forEach(() => setMacroClickWithUrlOf(classButtonLink));\r\n }\r\n }\r\n}\r\n\r\nexport default MacroUseButtonUrl;\r\n","class AddressLookup {\r\n constructor(config) {\r\n this.config = {\r\n forms: document.querySelectorAll('[data-module=\"geolocate\"]')\r\n };\r\n if (\r\n config &&\r\n typeof config === 'object' &&\r\n config.constructor === Object &&\r\n Object.getOwnPropertyNames(config).length !== 0\r\n ) {\r\n Object.keys(config).forEach(key => {\r\n this.config[key] = config[key];\r\n });\r\n }\r\n }\r\n\r\n init() {\r\n if (this.config.forms.length > 0) {\r\n this.config.forms.forEach(form => {\r\n form.addEventListener('blur', AddressLookup.resolveLocation, true);\r\n });\r\n }\r\n }\r\n\r\n static resolveLocation(event) {\r\n const { form } = event.target;\r\n\r\n if (!event.target.getAttribute('name')) {\r\n return;\r\n }\r\n\r\n const targetInput = event.target.getAttribute('name').toLowerCase();\r\n\r\n if (targetInput !== 'housenumber' && targetInput !== 'postalcode') return;\r\n\r\n const tempEl =\r\n targetInput === 'housenumber'\r\n ? form.elements.namedItem('postalCode')\r\n : form.elements.namedItem('houseNumber');\r\n\r\n if (!tempEl) return;\r\n\r\n if (event.target.value.length > 0 && tempEl.value.length > 0) {\r\n const cbName = `jsonp_callback_${Math.floor(10000 * Math.random())}`;\r\n const script = document.createElement('script');\r\n window[cbName] = data => {\r\n delete window[cbName];\r\n document.body.removeChild(script);\r\n if (data !== null && data.constructor === Object) {\r\n const street = form.elements.namedItem('street');\r\n if (street) {\r\n street.value = data.Street;\r\n }\r\n const city = form.elements.namedItem('city');\r\n if (city) {\r\n city.value = data.City;\r\n }\r\n }\r\n };\r\n script.src = `https://api.pangaea.nl/api/GeoEncoding?${\r\n targetInput === 'postalCode'\r\n ? `postalCode=${form.value}&houseNumber=${tempEl.value}`\r\n : `postalCode=${tempEl.value}&houseNumber=${form.value}`\r\n }&callback=${cbName}`;\r\n\r\n document.body.appendChild(script);\r\n }\r\n }\r\n}\r\n\r\nexport default AddressLookup;\r\n","class FilterTags {\r\n constructor(options = {}) {\r\n this.config = {\r\n module: document.querySelectorAll('[data-module=\"filter-tag\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { module } = this.config;\r\n\r\n module.forEach(tag => {\r\n tag.addEventListener('click', e => {\r\n e.preventDefault();\r\n\r\n const item = tag.dataset;\r\n const updatedParams = FilterTags.deleteItemParams(item);\r\n\r\n if (updatedParams.length) {\r\n window.location.href = `?${updatedParams}`;\r\n } else {\r\n window.location.href = `${window.location.protocol}//${window.location.host}${\r\n window.location.pathname\r\n }`;\r\n }\r\n });\r\n });\r\n }\r\n\r\n static deleteItemParams(item) {\r\n const { key, name } = item;\r\n const currentParameters = FilterTags.getUrlParams();\r\n const paramaterValues = currentParameters[key].split(',');\r\n const filteredParameterValues = paramaterValues.filter(x => x !== name);\r\n\r\n currentParameters[key] = filteredParameterValues.join(',');\r\n\r\n if (!currentParameters[key].length) {\r\n delete currentParameters[key];\r\n }\r\n\r\n const queryString = Object.keys(currentParameters)\r\n .map(keyName => `${keyName}=${encodeURIComponent(currentParameters[keyName])}`)\r\n .join('&');\r\n\r\n return queryString;\r\n }\r\n\r\n static getUrlParams() {\r\n const url = window.location.search;\r\n const hashes = url.slice(url.indexOf('?') + 1).split('&');\r\n const params = {};\r\n hashes.forEach(hash => {\r\n const [key, val] = hash.split('=');\r\n params[key] = decodeURIComponent(val);\r\n });\r\n return params;\r\n }\r\n}\r\n\r\nexport default FilterTags;\r\n","class FloatingLabels {\r\n constructor(options = {}) {\r\n this.config = {\r\n floatLabels: document.querySelectorAll('.js-floatinglabel'),\r\n floatClassName: 'is-floating',\r\n floatFields: 'input, textarea, select',\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { floatLabels, floatClassName, floatFields } = this.config;\r\n\r\n const handleFocus = e => {\r\n const { target } = e;\r\n target.parentNode.querySelector('label').classList.add(floatClassName);\r\n };\r\n\r\n const handleBlur = e => {\r\n const { target } = e;\r\n if (!target.value) {\r\n target.parentNode.querySelector('label').classList.remove(floatClassName);\r\n }\r\n };\r\n\r\n const bindEvents = element => {\r\n const floatField = element.parentNode.querySelector(floatFields);\r\n floatField.addEventListener('focus', handleFocus);\r\n floatField.addEventListener('blur', handleBlur);\r\n };\r\n\r\n if (floatLabels) {\r\n floatLabels.forEach(element => {\r\n const select = element.parentNode.querySelector('select');\r\n const input = element.parentNode.querySelector('input, textarea');\r\n const inputValue = input != null ? input.value : '';\r\n\r\n if (select) {\r\n const selectedValue = select[select.selectedIndex].value;\r\n if (selectedValue.length) {\r\n element.classList.add(floatClassName);\r\n }\r\n }\r\n\r\n if (inputValue) {\r\n element.classList.add(floatClassName);\r\n }\r\n\r\n bindEvents(element);\r\n });\r\n }\r\n }\r\n}\r\nexport default FloatingLabels;\r\n","import Cookies from 'js-cookie';\r\n\r\nclass ClearCache {\r\n constructor() {\r\n this.config = {\r\n moduleList: document.querySelectorAll('[data-module=\"ClearCache\"]')\r\n };\r\n }\r\n\r\n init() {\r\n const { moduleList } = this.config;\r\n\r\n moduleList.forEach(module => {\r\n module.addEventListener('click', e => {\r\n e.preventDefault();\r\n\r\n const token = Cookies.get('token');\r\n\r\n if (!token) {\r\n return;\r\n }\r\n\r\n fetch('/api/v1/cache/clear', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }).then(res => {\r\n if (res.status === 200) {\r\n document.location.reload();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default ClearCache;\r\n","/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader = false;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api (key, value, attributes) {\n\t\t\tvar result;\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Write\n\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tattributes = extend({\n\t\t\t\t\tpath: '/'\n\t\t\t\t}, api.defaults, attributes);\n\n\t\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\t\tvar expires = new Date();\n\t\t\t\t\texpires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n\t\t\t\t\tattributes.expires = expires;\n\t\t\t\t}\n\n\t\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\t\ttry {\n\t\t\t\t\tresult = JSON.stringify(value);\n\t\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\t\tvalue = result;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif (!converter.write) {\n\t\t\t\t\tvalue = encodeURIComponent(String(value))\n\t\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = converter.write(value, key);\n\t\t\t\t}\n\n\t\t\t\tkey = encodeURIComponent(String(key));\n\t\t\t\tkey = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n\t\t\t\tkey = key.replace(/[\\(\\)]/g, escape);\n\n\t\t\t\tvar stringifiedAttributes = '';\n\n\t\t\t\tfor (var attributeName in attributes) {\n\t\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName];\n\t\t\t\t}\n\t\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t\t}\n\n\t\t\t// Read\n\n\t\t\tif (!key) {\n\t\t\t\tresult = {};\n\t\t\t}\n\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling \"get()\"\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar rdecode = /(%[0-9A-Z]{2})+/g;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!this.json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = parts[0].replace(rdecode, decodeURIComponent);\n\t\t\t\t\tcookie = converter.read ?\n\t\t\t\t\t\tconverter.read(cookie, name) : converter(cookie, name) ||\n\t\t\t\t\t\tcookie.replace(rdecode, decodeURIComponent);\n\n\t\t\t\t\tif (this.json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tresult = cookie;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\tresult[name] = cookie;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tapi.set = api;\n\t\tapi.get = function (key) {\n\t\t\treturn api.call(api, key);\n\t\t};\n\t\tapi.getJSON = function () {\n\t\t\treturn api.apply({\n\t\t\t\tjson: true\n\t\t\t}, [].slice.call(arguments));\n\t\t};\n\t\tapi.defaults = {};\n\n\t\tapi.remove = function (key, attributes) {\n\t\t\tapi(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","import Cookies from 'js-cookie';\r\n\r\nclass CookieBar {\r\n constructor(options = {}) {\r\n this.config = {\r\n expireDays: 365,\r\n cookiePath: '/',\r\n module: document.querySelector('[data-module=\"CookieBar\"]'),\r\n isHttps: window.location.protocol === 'https:',\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { module, expireDays, cookiePath, isHttps } = this.config;\r\n\r\n if (!this.config.module) {\r\n return;\r\n }\r\n\r\n const setCookies = approvedCookies => {\r\n Cookies.set('png_consentGiven', 'true', {\r\n expires: expireDays,\r\n path: cookiePath,\r\n secure: isHttps,\r\n sameSite: isHttps ? 'none' : ''\r\n });\r\n\r\n if (approvedCookies.length) {\r\n Cookies.set('png_approvedCookies', approvedCookies.join(','), {\r\n expires: expireDays,\r\n path: cookiePath,\r\n secure: isHttps,\r\n sameSite: isHttps ? 'none' : ''\r\n });\r\n }\r\n\r\n window.location.reload();\r\n };\r\n\r\n const submit = module.querySelector('[type=\"submit\"]');\r\n const acceptAll = module.querySelectorAll('[data-accept-all]');\r\n\r\n if (!submit) {\r\n return;\r\n }\r\n\r\n submit.addEventListener('click', e => {\r\n e.preventDefault();\r\n\r\n // only add checked inputs\r\n const approvedCookies = Array.from(\r\n module.querySelectorAll('input[type=\"checkbox\"]:checked')\r\n ).map(checkbox => checkbox.getAttribute('name'));\r\n\r\n setCookies(approvedCookies);\r\n });\r\n\r\n if (acceptAll) {\r\n acceptAll.forEach(btn => {\r\n btn.addEventListener('click', e => {\r\n e.preventDefault();\r\n\r\n // add all inputs\r\n const approvedCookies = Array.from(module.querySelectorAll('input[type=\"checkbox\"]')).map(\r\n checkbox => checkbox.getAttribute('name')\r\n );\r\n\r\n setCookies(approvedCookies);\r\n });\r\n });\r\n }\r\n\r\n // Trigger more information visibility (mobile)\r\n const triggerMoreInfo = module.querySelector('[data-child-module=\"TriggerMoreInfo\"]');\r\n const button = triggerMoreInfo.querySelector('.js-trigger-cookie-more-info');\r\n const target = triggerMoreInfo.querySelector('.js-cookie-more-info');\r\n\r\n button.addEventListener('click', e => {\r\n e.preventDefault();\r\n button.setAttribute('style', 'display:none !important');\r\n target.setAttribute('style', 'display:block !important');\r\n });\r\n }\r\n}\r\n\r\nexport default CookieBar;\r\n","class Incrementer {\r\n constructor(options = {}) {\r\n this.config = {\r\n module: document.querySelectorAll('[data-module=\"incrementer\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { module } = this.config;\r\n\r\n module.forEach(incrementer => {\r\n const buttonMinus = incrementer.querySelector('[data-type=\"minus\"]');\r\n const buttonPlus = incrementer.querySelector('[data-type=\"plus\"]');\r\n const quantityElement = incrementer.querySelector('input[name=\"quantity\"]');\r\n buttonMinus.addEventListener('click', () => {\r\n if (parseInt(quantityElement.value, 10) > 1) {\r\n quantityElement.value = parseInt(quantityElement.value, 10) - 1;\r\n }\r\n });\r\n buttonPlus.addEventListener('click', () => {\r\n quantityElement.value = parseInt(quantityElement.value, 10) + 1;\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default Incrementer;\r\n","/* global lightGallery */\r\nimport 'lightgallery.js';\r\n\r\n// Light gallery submodules: remove one or more to disable\r\nimport 'lg-thumbnail.js';\r\nimport 'lg-autoplay.js';\r\nimport 'lg-video.js';\r\nimport 'lg-fullscreen.js';\r\nimport 'lg-pager.js';\r\nimport 'lg-zoom.js';\r\nimport 'lg-hash.js';\r\nimport 'lg-share.js';\r\n\r\nclass LightGallery {\r\n constructor(options = {}) {\r\n this.config = {\r\n moduleList: document.querySelectorAll('[data-module=\"LightGallery\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { moduleList } = this.config;\r\n\r\n moduleList.forEach(module => {\r\n lightGallery(module, {\r\n actualSize: false,\r\n autoplayControls: false,\r\n download: false,\r\n fullScreen: false,\r\n selector: '.js-lightgallery-item',\r\n share: false,\r\n showThumbByDefault: false\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default LightGallery;\r\n","class Pagination {\r\n constructor(options = {}) {\r\n this.config = {\r\n moduleList: document.querySelectorAll('[data-module=\"Pagination\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { moduleList } = this.config;\r\n\r\n moduleList.forEach(module => {\r\n Pagination.checkScreenSize(module);\r\n window.addEventListener('resize', () => Pagination.checkScreenSize(module));\r\n });\r\n }\r\n\r\n static checkScreenSize(module) {\r\n const screenWidth = window.innerWidth || document.body.clientWidth;\r\n const items = module.querySelectorAll('li');\r\n const prev = Array.from(items).find(\r\n item =>\r\n item.querySelector('a').innerHTML === '<' ||\r\n item.querySelector('a').innerHTML === module.dataset.prevText\r\n );\r\n\r\n const next = Array.from(items).find(\r\n item =>\r\n item.querySelector('a').innerHTML === '>' ||\r\n item.querySelector('a').innerHTML === module.dataset.nextText\r\n );\r\n\r\n if (screenWidth < 768) {\r\n if (prev) {\r\n prev.firstChild.innerHTML = '<';\r\n }\r\n\r\n if (next) {\r\n next.firstChild.innerHTML = '>';\r\n }\r\n } else {\r\n if (prev) {\r\n prev.firstChild.innerHTML = module.dataset.prevText;\r\n }\r\n\r\n if (next) {\r\n next.firstChild.innerHTML = module.dataset.nextText;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Pagination;\r\n","/* global $ */\r\nimport Cookies from 'js-cookie';\r\n\r\nclass Popup {\r\n constructor(options = {}) {\r\n this.config = {\r\n module: document.querySelector('[data-module=\"Popup\"]'),\r\n cookieName: `png_closePopup_${document.getElementsByTagName('html')[0].getAttribute('lang')}`,\r\n cookieExpireDays: 1,\r\n cookiePath: '/',\r\n timeout: 0,\r\n isHttps: window.location.protocol === 'https:',\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { module, cookieName, timeout, isHttps } = this.config;\r\n\r\n const setCookie = () => {\r\n $(module).modal('hide');\r\n\r\n Cookies.set(this.config.cookieName, 'true', {\r\n expires: this.config.cookieExpireDays,\r\n path: this.config.cookiePath,\r\n secure: isHttps\r\n });\r\n };\r\n\r\n if (module && !Cookies.get(cookieName)) {\r\n const closeButton = module.querySelector('[data-dismiss=\"modal\"]');\r\n\r\n setTimeout(() => {\r\n $(module).modal('show');\r\n }, timeout);\r\n\r\n if (closeButton) {\r\n closeButton.addEventListener('click', setCookie.bind(this));\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Popup;\r\n","/* global $ */\r\nclass ReadMoreLess {\r\n constructor(options = {}) {\r\n this.config = {\r\n readmore: document.querySelectorAll('[href=js-readmore]'),\r\n readless: document.querySelectorAll('[href=js-readless]'),\r\n dots: false,\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { readmore, readless } = this.config;\r\n\r\n readmore.forEach(element => {\r\n element.classList.add('c-readmore__more');\r\n element.addEventListener('click', e => {\r\n e.preventDefault();\r\n element.parentNode.classList.remove('has-siblings-hidden');\r\n });\r\n\r\n /*eslint-disable */\r\n $(element)\r\n .parentsUntil('.text-container')\r\n .contents()\r\n .filter(function(){\r\n return this.nodeType === 3;\r\n })\r\n .wrap('');\r\n /* eslint-enable */\r\n\r\n element.parentNode.classList.add('c-readmore', 'js-readmore-parent', 'has-siblings-hidden');\r\n });\r\n\r\n readless.forEach(element => {\r\n element.classList.add('c-readmore__less');\r\n element.addEventListener('click', e => {\r\n e.preventDefault();\r\n const moreLink = element.closest('div').getElementsByClassName('js-readmore-parent')[0];\r\n moreLink.classList.add('has-siblings-hidden');\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default ReadMoreLess;\r\n","class Sticky {\r\n constructor(options = {}) {\r\n this.config = {\r\n velocity: 0,\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n this.checkScrollPosition();\r\n window.addEventListener('scroll', this.checkScrollPosition.bind(this));\r\n }\r\n\r\n checkScrollPosition() {\r\n const { velocity } = this.config;\r\n\r\n if (window.pageYOffset >= velocity) {\r\n document.body.classList.add('is-sticky');\r\n } else {\r\n document.body.classList.remove('is-sticky');\r\n }\r\n }\r\n}\r\n\r\nexport default Sticky;\r\n","import Toastify from 'toastify-js';\r\n\r\nclass Toast {\r\n constructor(options = {}) {\r\n this.config = {\r\n duration: 3000,\r\n close: true,\r\n ...options\r\n };\r\n\r\n this.typeMap = {\r\n success: {\r\n avatar: '/dist/images/icons/toast-success-icon.png'\r\n },\r\n error: {\r\n avatar: '/dist/images/icons/toast-error-icon.png'\r\n },\r\n warning: {\r\n avatar: '/dist/images/icons/toast-warning-icon.png'\r\n }\r\n };\r\n }\r\n\r\n init() {\r\n const { config, typeMap } = this;\r\n\r\n const toast = ({ detail: { type, text } }) => {\r\n if (!['success', 'error', 'warning'].some(eventType => eventType === type)) {\r\n return;\r\n }\r\n\r\n Toastify({\r\n ...config,\r\n ...typeMap[type],\r\n text,\r\n className: `c-toast c-toast--${type}`\r\n }).showToast();\r\n };\r\n\r\n // Set global variable so we can check if Toastify is installed in project\r\n // Used for checkout, so we can use 'toastr' as fallback for older projects\r\n window.hasToastify = true;\r\n\r\n window.addEventListener('toast', toast);\r\n }\r\n}\r\n\r\nexport default Toast;\r\n","/*!\n * Toastify js 1.3.2\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n(function(root, factory) {\n if (typeof module === \"object\" && module.exports) {\n require(\"./toastify.css\");\n module.exports = factory();\n } else {\n root.Toastify = factory();\n }\n})(this, function(global) {\n // Object initialization\n var Toastify = function(options) {\n // Returning a new init object\n return new Toastify.lib.init(options);\n },\n // Library version\n version = \"1.3.2\";\n\n // Defining the prototype of the object\n Toastify.lib = Toastify.prototype = {\n toastify: version,\n\n constructor: Toastify,\n\n // Initializing the object with required parameters\n init: function(options) {\n // Verifying and validating the input object\n if (!options) {\n options = {};\n }\n\n // Creating the options object\n this.options = {};\n\n // Validating the options\n this.options.text = options.text || \"Hi there!\"; // Display message\n this.options.duration = options.duration || 3000; // Display duration\n this.options.selector = options.selector; // Parent selector\n this.options.callback = options.callback || function() {}; // Callback after display\n this.options.destination = options.destination; // On-click destination\n this.options.newWindow = options.newWindow || false; // Open destination in new window\n this.options.close = options.close || false; // Show toast close icon\n this.options.gravity = options.gravity == \"bottom\" ? \"toastify-bottom\" : \"toastify-top\"; // toast position - top or bottom\n this.options.positionLeft = options.positionLeft || false; // toast position - left or right\n this.options.backgroundColor = options.backgroundColor; // toast background color\n this.options.avatar = options.avatar || \"\"; // toast position - left or right\n this.options.className = options.className || \"\"; // additional class names for the toast\n\n // Returning the current object for chaining functions\n return this;\n },\n\n // Building the DOM element\n buildToast: function() {\n // Validating if the options are defined\n if (!this.options) {\n throw \"Toastify is not initialized\";\n }\n\n // Creating the DOM object\n var divElement = document.createElement(\"div\");\n divElement.className = \"toastify on \" + this.options.className;\n\n // Positioning toast to left or right\n if (this.options.positionLeft === true) {\n divElement.className += \" toastify-left\";\n } else {\n divElement.className += \" toastify-right\";\n }\n\n // Assigning gravity of element\n divElement.className += \" \" + this.options.gravity;\n\n if (this.options.backgroundColor) {\n divElement.style.background = this.options.backgroundColor;\n }\n\n // Adding the toast message\n divElement.innerHTML = this.options.text;\n\n if (this.options.avatar !== \"\") {\n var avatarElement = document.createElement(\"img\");\n avatarElement.src = this.options.avatar;\n\n avatarElement.className = \"toastify-avatar\";\n\n if (this.options.positionLeft === true) {\n // Adding close icon on the left of content\n divElement.appendChild(avatarElement);\n } else {\n // Adding close icon on the right of content\n divElement.insertAdjacentElement(\"beforeend\", avatarElement);\n }\n }\n\n // Adding a close icon to the toast\n if (this.options.close === true) {\n // Create a span for close element\n var closeElement = document.createElement(\"span\");\n closeElement.innerHTML = \"✖\";\n\n closeElement.className = \"toast-close\";\n\n // Triggering the removal of toast from DOM on close click\n closeElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.removeElement(event.target.parentElement);\n window.clearTimeout(event.target.parentElement.timeOutValue);\n }.bind(this)\n );\n\n //Calculating screen width\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Adding the close icon to the toast element\n // Display on the right if screen width is less than or equal to 360px\n if (this.options.positionLeft === true && width > 360) {\n // Adding close icon on the left of content\n divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n } else {\n // Adding close icon on the right of content\n divElement.appendChild(closeElement);\n }\n }\n\n // Adding an on-click destination path\n if (typeof this.options.destination !== \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n if (this.options.newWindow === true) {\n window.open(this.options.destination, \"_blank\");\n } else {\n window.location = this.options.destination;\n }\n }.bind(this)\n );\n }\n\n // Returning the generated element\n return divElement;\n },\n\n // Displaying the toast\n showToast: function() {\n // Creating the DOM object for the toast\n var toastElement = this.buildToast();\n\n // Getting the root element to with the toast needs to be added\n var rootElement;\n if (typeof this.options.selector === \"undefined\") {\n rootElement = document.body;\n } else {\n rootElement = document.getElementById(this.options.selector);\n }\n\n // Validating if root element is present in DOM\n if (!rootElement) {\n throw \"Root element is not defined\";\n }\n\n // Adding the DOM element\n rootElement.insertBefore(toastElement, rootElement.firstChild);\n\n // Repositioning the toasts in case multiple toasts are present\n Toastify.reposition();\n\n toastElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n this.removeElement(toastElement);\n }.bind(this),\n this.options.duration\n ); // Binding `this` for function invocation\n\n // Supporting function chaining\n return this;\n },\n\n // Removing the element from the DOM\n removeElement: function(toastElement) {\n // Hiding the element\n // toastElement.classList.remove(\"on\");\n toastElement.className = toastElement.className.replace(\" on\", \"\");\n\n // Removing the element from DOM after transition end\n window.setTimeout(\n function() {\n // Remove the elemenf from the DOM\n toastElement.parentNode.removeChild(toastElement);\n\n // Calling the callback function\n this.options.callback.call(toastElement);\n\n // Repositioning the toasts again\n Toastify.reposition();\n }.bind(this),\n 400\n ); // Binding `this` for function invocation\n },\n };\n\n // Positioning the toasts on the DOM\n Toastify.reposition = function() {\n // Top margins with gravity\n var topLeftOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var topRightOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var offsetSize = {\n top: 15,\n bottom: 15,\n };\n\n // Get all toast messages on the DOM\n var allToasts = document.getElementsByClassName(\"toastify\");\n\n var classUsed;\n\n // Modifying the position of each toast element\n for (var i = 0; i < allToasts.length; i++) {\n // Getting the applied gravity\n if (containsClass(allToasts[i], \"toastify-top\") === true) {\n classUsed = \"toastify-top\";\n } else {\n classUsed = \"toastify-bottom\";\n }\n\n var height = allToasts[i].offsetHeight;\n classUsed = classUsed.substr(9, classUsed.length-1)\n // Spacing between toasts\n var offset = 15;\n\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Show toast in center if screen with less than or qual to 360px\n if (width <= 360) {\n // Setting the position\n allToasts[i].style[classUsed] = offsetSize[classUsed] + \"px\";\n\n offsetSize[classUsed] += height + offset;\n } else {\n if (containsClass(allToasts[i], \"toastify-left\") === true) {\n // Setting the position\n allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + \"px\";\n\n topLeftOffsetSize[classUsed] += height + offset;\n } else {\n // Setting the position\n allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + \"px\";\n\n topRightOffsetSize[classUsed] += height + offset;\n }\n }\n }\n\n // Supporting function chaining\n return this;\n };\n\n function containsClass(elem, yourClass) {\n if (!elem || typeof yourClass !== \"string\") {\n return false;\n } else if (\n elem.className &&\n elem.className\n .trim()\n .split(/\\s+/gi)\n .indexOf(yourClass) > -1\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n // Setting up the prototype for the init object\n Toastify.lib.init.prototype = Toastify.lib;\n\n // Returning the Toastify function to be assigned to the window object/module\n return Toastify;\n});\n","class Video {\r\n constructor(options = {}) {\r\n this.config = {\r\n moduleList: document.querySelectorAll('[data-module=\"Video\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n static toggleSound(status, player) {\r\n player.setVolume(status ? 1 : 0);\r\n }\r\n\r\n static isVimeo(iframe) {\r\n return iframe.src.includes('vimeo.com');\r\n }\r\n\r\n init() {\r\n const { moduleList } = this.config;\r\n\r\n moduleList.forEach(module => {\r\n const iframe = module.querySelector('iframe');\r\n let player;\r\n\r\n if (!iframe.src.includes('autoplay=1') || iframe.src.includes('youtube.com')) {\r\n return;\r\n }\r\n\r\n if (Video.isVimeo(iframe)) {\r\n const vimeo = new Vimeo.Player(iframe); // eslint-disable-line no-undef\r\n\r\n player = {\r\n instance: vimeo,\r\n setVolume: amount => vimeo.setVolume(amount)\r\n };\r\n }\r\n\r\n // controls\r\n const controls = module.querySelector('[data-child-module=\"VideoControls\"]');\r\n const mute = controls.querySelector('.js-soundtoggle-mute');\r\n const unmute = controls.querySelector('.js-soundtoggle-unmute');\r\n\r\n // display sound toggle if video has autoplay\r\n unmute.classList.remove('hidden');\r\n\r\n mute.addEventListener('click', () => {\r\n mute.classList.add('hidden');\r\n unmute.classList.remove('hidden');\r\n Video.toggleSound(false, player);\r\n });\r\n\r\n unmute.addEventListener('click', () => {\r\n unmute.classList.add('hidden');\r\n mute.classList.remove('hidden');\r\n Video.toggleSound(true, player);\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default Video;\r\n","import getScrollbarWidth from '../helpers/scrollbar-width';\r\n\r\nclass MenuToggle {\r\n constructor(options = {}) {\r\n this.config = {\r\n rootModule: document.querySelector('[data-module=\"Header\"]'),\r\n module: document.querySelector('[data-module=\"MenuToggle\"]'),\r\n menuModals: document.querySelectorAll('[data-module=\"MenuModal\"]'),\r\n modalTriggers: document.querySelectorAll('[href^=\"#menuModal=\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { module, modalTriggers } = this.config;\r\n\r\n if (!module) {\r\n return;\r\n }\r\n\r\n module.addEventListener('click', this.toggleMenu.bind(this));\r\n window.addEventListener('resize', this.reset.bind(this));\r\n\r\n modalTriggers.forEach(trigger =>\r\n trigger.addEventListener('click', this.triggerModal.bind(this))\r\n );\r\n }\r\n\r\n destroy() {\r\n const { module, modalTriggers } = this.config;\r\n\r\n this.reset();\r\n module.removeEventListener('click', this.toggleMenu.bind(this));\r\n window.removeEventListener('resize', this.reset.bind(this));\r\n\r\n modalTriggers.forEach(trigger =>\r\n trigger.removeEventListener('click', this.triggerModal.bind(this))\r\n );\r\n }\r\n\r\n toggleAnimationState() {\r\n this.isAnimating = !this.isAnimating;\r\n }\r\n\r\n toggleMenu(e) {\r\n e.preventDefault();\r\n this.toggle('menu', e.currentTarget.classList.contains('is-open'));\r\n }\r\n\r\n triggerModal(e) {\r\n const modalId = e.currentTarget.getAttribute('href').split('#menuModal=')[1];\r\n e.preventDefault();\r\n this.toggle(modalId);\r\n }\r\n\r\n async toggle(modalId, forceClose) {\r\n const { menuModals } = this.config;\r\n const modalList = Array.from(menuModals);\r\n const menuModal = modalList.find(modal => modal.dataset.modalId === modalId);\r\n const openModal = modalList.find(modal => !!modal.classList.contains('is-open'));\r\n\r\n if (this.isAnimating || !menuModal) {\r\n return;\r\n }\r\n\r\n if (forceClose) {\r\n this.animateModal(openModal);\r\n } else if (openModal && openModal !== menuModal) {\r\n await this.animateModal(openModal);\r\n this.animateModal(menuModal);\r\n } else {\r\n this.animateModal(menuModal);\r\n }\r\n }\r\n\r\n animateModal(menuModal) {\r\n const { module } = this.config;\r\n\r\n return new Promise(resolve => {\r\n this.toggleAnimationState();\r\n menuModal.classList.toggle('is-open');\r\n\r\n if (module.classList.contains('is-open')) {\r\n module.classList.replace('is-open', 'is-half-open');\r\n setTimeout(() => {\r\n module.classList.remove('is-half-open');\r\n document.body.style.paddingRight = '';\r\n document.body.style.overflow = '';\r\n }, 250);\r\n } else {\r\n module.classList.add('is-half-open');\r\n setTimeout(() => {\r\n module.classList.replace('is-half-open', 'is-open');\r\n document.body.style.paddingRight = `${getScrollbarWidth()}px`;\r\n document.body.style.overflow = 'hidden';\r\n }, 250);\r\n }\r\n\r\n setTimeout(() => {\r\n this.toggleAnimationState();\r\n resolve();\r\n }, 500);\r\n });\r\n }\r\n\r\n reset() {\r\n const { module, menuModals } = this.config;\r\n\r\n [module, ...menuModals].forEach(el => el.classList.remove('is-open'));\r\n document.body.style.paddingRight = '';\r\n document.body.style.overflow = '';\r\n }\r\n}\r\n\r\nexport default MenuToggle;\r\n","export default () => window.innerWidth - document.documentElement.clientWidth;\r\n","import getSiblings from '../helpers/siblings';\r\n\r\nclass SubmenuToggle {\r\n constructor(options = {}) {\r\n this.config = {\r\n rootModule: document.querySelector('[data-module=\"Header\"]'),\r\n module: document.querySelectorAll('[data-module=\"SubmenuToggle\"]'),\r\n menus: document.querySelectorAll('[data-module=\"Menu\"]'),\r\n desktopMenuBreakpoint: 992,\r\n openUrlOnToggle: false,\r\n ...options\r\n };\r\n }\r\n\r\n get isDesktopMenu() {\r\n return window.innerWidth >= this.config.desktopMenuBreakpoint;\r\n }\r\n\r\n init() {\r\n const { module, menus } = this.config;\r\n\r\n if (!module.length || !menus.length) {\r\n return;\r\n }\r\n\r\n module.forEach(submenuToggle => {\r\n const parent = submenuToggle.parentNode;\r\n\r\n submenuToggle.addEventListener('touchend', this.toggle.bind(this));\r\n submenuToggle.addEventListener('click', this.toggle.bind(this));\r\n parent.addEventListener('mouseover', this.open.bind(this));\r\n parent.addEventListener('mouseout', this.close.bind(this));\r\n });\r\n\r\n window.addEventListener('resize', this.reset.bind(this));\r\n document.addEventListener('click', this.onDocumentClick.bind(this));\r\n }\r\n\r\n destroy() {\r\n const { module } = this.config;\r\n\r\n this.reset();\r\n\r\n module.forEach(submenuToggle => {\r\n const parent = submenuToggle.parentNode;\r\n\r\n submenuToggle.removeEventListener('touchend', this.toggle.bind(this));\r\n submenuToggle.removeEventListener('click', this.toggle.bind(this));\r\n parent.removeEventListener('mouseover', this.open.bind(this));\r\n parent.removeEventListener('mouseout', this.close.bind(this));\r\n });\r\n\r\n window.removeEventListener('resize', this.reset.bind(this));\r\n document.removeEventListener('click', this.onDocumentClick.bind(this));\r\n }\r\n\r\n getMenu(el) {\r\n if (el === this.config.rootModule) {\r\n return null;\r\n }\r\n\r\n if (el.dataset.module && el.dataset.module === 'Menu') {\r\n return el;\r\n }\r\n\r\n return this.getMenu(el.parentNode);\r\n }\r\n\r\n onDocumentClick(e) {\r\n const { module, menus } = this.config;\r\n\r\n let normalLinks = [];\r\n\r\n menus.forEach(menu => {\r\n normalLinks = [\r\n ...normalLinks,\r\n ...menu.querySelectorAll('a:not([data-module=\"SubmenuToggle\"])')\r\n ];\r\n });\r\n\r\n if (\r\n !Array.from(module).find(submenuToggle => submenuToggle === e.target) &&\r\n !Array.from(normalLinks).find(normalLink => normalLink === e.target)\r\n ) {\r\n module.forEach(submenuToggle => submenuToggle.parentNode.classList.remove('is-open'));\r\n }\r\n }\r\n\r\n reset() {\r\n const { module } = this.config;\r\n\r\n module.forEach(submenuToggle => submenuToggle.parentNode.classList.remove('is-open'));\r\n }\r\n\r\n toggle(e) {\r\n const { menus, openUrlOnToggle } = this.config;\r\n const parent = e.target.parentNode;\r\n\r\n e.preventDefault();\r\n\r\n if (e.target.dataset.hasNestedSubmenu) {\r\n e.stopPropagation();\r\n }\r\n\r\n if (\r\n parent.classList.contains('is-open') &&\r\n openUrlOnToggle &&\r\n e.target.dataset.disableUrl === undefined\r\n ) {\r\n window.open(e.target.getAttribute('href'), e.target.getAttribute('target') || '_self');\r\n }\r\n\r\n parent.classList.toggle('is-open');\r\n parent.querySelectorAll('.is-open').forEach(child => child.classList.remove('is-open'));\r\n\r\n getSiblings(parent).forEach(sibling => {\r\n sibling.classList.remove('is-open');\r\n sibling.querySelectorAll('.is-open').forEach(child => child.classList.remove('is-open'));\r\n });\r\n\r\n menus.forEach(menu => {\r\n if (menu !== this.getMenu(e.target)) {\r\n menu.querySelectorAll('.is-open').forEach(el => el.classList.remove('is-open'));\r\n }\r\n });\r\n }\r\n\r\n open(e) {\r\n if (this.isDesktopMenu) {\r\n e.preventDefault();\r\n e.currentTarget.classList.add('is-open');\r\n }\r\n }\r\n\r\n close(e) {\r\n if (this.isDesktopMenu) {\r\n e.preventDefault();\r\n e.currentTarget.classList.remove('is-open');\r\n }\r\n }\r\n}\r\n\r\nexport default SubmenuToggle;\r\n","export default el => {\r\n const siblings = [];\r\n let sibling = el.parentNode.firstChild;\r\n\r\n while (sibling) {\r\n if (sibling.nodeType === 1 && sibling !== el) {\r\n siblings.push(sibling);\r\n }\r\n\r\n sibling = sibling.nextSibling;\r\n }\r\n\r\n return siblings;\r\n};\r\n","import MenuToggle from './components/menu-toggle';\r\nimport SubmenuToggle from './components/submenu-toggle';\r\n\r\nclass Header {\r\n constructor(options = {}) {\r\n this.config = {\r\n module: document.querySelector('[data-module=\"Header\"]'),\r\n menuToggle: new MenuToggle(options),\r\n submenuToggle: new SubmenuToggle(options),\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { module, menuToggle, submenuToggle } = this.config;\r\n\r\n if (!module) {\r\n return;\r\n }\r\n\r\n menuToggle.init();\r\n submenuToggle.init();\r\n\r\n this.disableTransitions();\r\n\r\n window.addEventListener('resize', this.disableTransitions.bind(this));\r\n }\r\n\r\n destroy() {\r\n const { menuToggle, submenuToggle } = this.config;\r\n\r\n menuToggle.destroy();\r\n submenuToggle.destroy();\r\n\r\n this.disableTransitions();\r\n\r\n window.removeEventListener('resize', this.disableTransitions.bind(this));\r\n }\r\n\r\n disableTransitions() {\r\n const { module } = this.config;\r\n\r\n module.classList.add('no-transition');\r\n setTimeout(() => module.classList.remove('no-transition'));\r\n }\r\n}\r\n\r\nexport default Header;\r\n","// Robert Penner's easeInOutQuad\n\n// find the rest of his easing functions here: http://robertpenner.com/easing/\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0; // element to scroll to (node)\n\n var start = void 0; // where scroll starts (px)\n var stop = void 0; // where scroll stops (px)\n\n var offset = void 0; // adjustment from the stop position (px)\n var easing = void 0; // easing function (function)\n var a11y = void 0; // accessibility support flag (boolean)\n\n var distance = void 0; // distance of scroll (px)\n var duration = void 0; // scroll duration (ms)\n\n var timeStart = void 0; // time scroll started (ms)\n var timeElapsed = void 0; // time spent scrolling thus far (ms)\n\n var next = void 0; // next scroll position (px)\n\n var callback = void 0; // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset;\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start;\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent;\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart;\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration);\n\n // scroll to it\n window.scrollTo(0, next);\n\n // check progress\n timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\n : done(); // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance);\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1');\n\n // focus the element\n element.focus();\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback();\n }\n\n // reset time for next jump\n timeStart = false;\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // resolve options, or use defaults\n duration = options.duration || 1000;\n offset = options.offset || 0;\n callback = options.callback; // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad;\n a11y = options.a11y || false;\n\n // cache starting position\n start = location();\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined; // no element to scroll to\n a11y = false; // make sure accessibility is off\n stop = start + target;\n break;\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target;\n stop = top(element);\n break;\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target);\n stop = top(element);\n break;\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset;\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration;\n break;\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance);\n break;\n }\n\n // start the loop\n window.requestAnimationFrame(loop);\n }\n\n // expose only the jump method\n return jump;\n};\n\n// export singleton\n\nvar singleton = jumper();\n\nexport default singleton;\n","import jump from 'jump.js';\r\n\r\nclass SmoothScroll {\r\n constructor(options = {}) {\r\n this.config = {\r\n moduleList: document.querySelectorAll('[data-module=\"SmoothScroll\"]'),\r\n header: document.querySelector('[data-module=\"Header\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n init() {\r\n const { moduleList, header } = this.config;\r\n\r\n moduleList.forEach(module => {\r\n module.addEventListener('click', e => {\r\n e.preventDefault();\r\n\r\n const id = module.getAttribute('href');\r\n const target = document.querySelector(id);\r\n const headerOffset = header ? header.getBoundingClientRect().height : 0;\r\n\r\n if (!target) {\r\n return;\r\n }\r\n\r\n jump(target, {\r\n duration: 500,\r\n offset: -(headerOffset + 50)\r\n });\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport default SmoothScroll;\r\n","class ResultPagination {\r\n constructor(options = {}) {\r\n this.config = {\r\n moduleList: document.querySelectorAll('[data-module=\"ResultPagination\"]'),\r\n ...options\r\n };\r\n }\r\n\r\n static addSeparator(current, page, offset) {\r\n const separator = `...`;\r\n return Math.abs(page - current) > offset ? separator : null;\r\n }\r\n\r\n static generatePaginationArray(pages, current) {\r\n const maxNumberOfElements = 5;\r\n const firstPage = 1;\r\n const lastPage = pages;\r\n const offset = Math.ceil(maxNumberOfElements / 2);\r\n const offsetLeft = [...Array(offset).keys()]\r\n .map(\r\n value =>\r\n Math.abs(value - current) <= firstPage || Math.abs(value - current) === current\r\n ? null\r\n : Math.abs(value - current)\r\n )\r\n .reverse();\r\n const offsetRight = [...Array(offset).keys()].map(\r\n value => (current + value >= lastPage || current + value === current ? null : current + value)\r\n );\r\n\r\n const array = [\r\n firstPage,\r\n ResultPagination.addSeparator(current, firstPage, offset),\r\n ...offsetLeft,\r\n current !== firstPage && current !== lastPage ? current : null,\r\n ...offsetRight,\r\n ResultPagination.addSeparator(current, lastPage, offset),\r\n lastPage\r\n ];\r\n\r\n return array.filter(item => item !== null).map(item => ({\r\n value: item,\r\n isSelected: item === current\r\n }));\r\n }\r\n\r\n static paginationArray(data) {\r\n const { total, perPage, current = 1 } = data;\r\n const pages = Math.ceil(total / perPage);\r\n\r\n if (Number.isNaN(total)) throw new Error('Total param should be number');\r\n if (Number.isNaN(perPage)) throw new Error('perPage param should be number');\r\n\r\n const array = ResultPagination.generatePaginationArray(pages, current);\r\n\r\n return array;\r\n }\r\n\r\n static generateElements(array, prevText, nextText) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const currentPage = urlParams.get('page') ? Number(urlParams.get('page')) : 1;\r\n\r\n const items = array.map(item => {\r\n // TODO: add current parametes to url with nice function\r\n const url = `?page=${item.value}`;\r\n const isActive = item.value === currentPage;\r\n\r\n if (Number.isInteger(item.value)) {\r\n return `
  • ${item.value}
  • `;\r\n }\r\n return `
  • ${item.value}
  • `;\r\n });\r\n\r\n const firstItem = array[0].value;\r\n const lastItem = array[array.length - 1].value;\r\n if (firstItem !== currentPage) {\r\n // TODO: add current parametes to url with nice function\r\n const url = `?page=${currentPage - 1}`;\r\n items.unshift(`
  • ${prevText}
  • `);\r\n }\r\n if (lastItem !== currentPage) {\r\n // TODO: add current parametes to url with nice function\r\n const url = `?page=${currentPage + 1}`;\r\n items.push(`
  • ${nextText}
  • `);\r\n }\r\n\r\n const list = `
      ${items.join('')}
    `;\r\n\r\n return list;\r\n }\r\n\r\n render(name, data) {\r\n const { moduleList } = this.config;\r\n\r\n if (!moduleList) {\r\n return;\r\n }\r\n\r\n moduleList.forEach(element => {\r\n const elementPlaceholder = element;\r\n const { resultName } = element.dataset;\r\n if (resultName && resultName === name) {\r\n let { prevText, nextText } = element.dataset;\r\n\r\n prevText = prevText || 'Prev';\r\n nextText = nextText || 'Next';\r\n\r\n const pagingData = {\r\n total: data.totalPages,\r\n perPage: 1,\r\n current: data.page\r\n };\r\n\r\n if (pagingData.total > 1) {\r\n const array = ResultPagination.paginationArray(pagingData);\r\n const paginationItems = ResultPagination.generateElements(array, prevText, nextText);\r\n elementPlaceholder.innerHTML = paginationItems;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default ResultPagination;\r\n","import ApiManager from '../api/crud-manager';\r\nimport ResultPagination from './result-pagination';\r\nimport utils from '../utils';\r\n\r\nclass OrderHistory {\r\n constructor(options = {}) {\r\n this.config = {\r\n ordersOverview: document.querySelectorAll('[data-module=\"OrdersOverview\"]'),\r\n orderDetails: document.querySelector('[data-module=\"OrderDetails\"]'),\r\n overviewItems: 24,\r\n parameters: {\r\n page: '1',\r\n items: '24',\r\n sort: '',\r\n customerId: '',\r\n headersonly: '1',\r\n type: ''\r\n },\r\n ...options\r\n };\r\n this.apiManager = new ApiManager();\r\n this.resultPagination = new ResultPagination();\r\n }\r\n\r\n init() {\r\n const { ordersOverview, orderDetails } = this.config;\r\n\r\n if (ordersOverview) {\r\n ordersOverview.forEach(el => {\r\n this.renderOrdersOverview(el);\r\n });\r\n }\r\n\r\n if (orderDetails) {\r\n this.renderOrderDetails(orderDetails);\r\n }\r\n }\r\n\r\n setPagination(response) {\r\n this.resultPagination.render('OrdersOverview', response);\r\n }\r\n\r\n renderOrdersOverview(el) {\r\n const element = el;\r\n element.classList.add('is-loading');\r\n\r\n const { overviewItems, parameters } = this.config;\r\n const { ordersType, apiTemplate, userId, showItems } = element.dataset;\r\n\r\n // set api variables\r\n parameters.items = overviewItems;\r\n parameters.template = apiTemplate || 'OrdersOverview';\r\n\r\n if (ordersType) {\r\n parameters.type = ordersType; // only display headers\r\n }\r\n\r\n // check for userid\r\n if (userId) {\r\n parameters.customerId = userId; // only display headers\r\n }\r\n\r\n // overwrite items amount for person detail\r\n if (showItems) {\r\n parameters.items = showItems; // only display headers\r\n }\r\n\r\n let url = `/api/v2/catalog/customer/order/history${utils.buildUrlParameters(parameters)}`;\r\n\r\n this.apiManager\r\n .get(url, 'text/html')\r\n .then(html => {\r\n element.innerHTML = html;\r\n element.classList.remove('is-loading');\r\n\r\n // Get json data to set pagination / filters ect.\r\n // remove template because bug in IE9\r\n delete parameters.template;\r\n url = `/api/v2/catalog/customer/order/history${utils.buildUrlParameters(parameters)}`;\r\n this.apiManager\r\n .get(url)\r\n .then(response => {\r\n // console.log('cal 2', response);\r\n\r\n this.setPagination(response);\r\n })\r\n .catch(() => {\r\n // console.error(e);\r\n });\r\n })\r\n .catch(() => {\r\n element.innerHTML = element.dataset.errorMessage || 'orders not available';\r\n element.classList.remove('is-loading');\r\n element.classList.add('is-error');\r\n // console.error(e);\r\n });\r\n }\r\n\r\n renderOrderDetails(el) {\r\n const element = el;\r\n element.classList.add('is-loading');\r\n\r\n const { orderId } = element.dataset;\r\n\r\n if (orderId) {\r\n const url = `/api/v2/catalog/customer/order/history?orderNumber=${orderId}&template=OrderDetails`;\r\n this.apiManager\r\n .get(url, 'text/html')\r\n .then(html => {\r\n element.innerHTML = html;\r\n element.classList.remove('is-loading');\r\n\r\n // eslint-disable-next-line no-undef\r\n cart.addEventListener(); // trigger ancient cart module\r\n })\r\n .catch(() => {\r\n element.innerHTML = element.dataset.errorMessage || 'order not available';\r\n element.classList.remove('is-loading');\r\n element.classList.add('is-error');\r\n // console.error(e);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default OrderHistory;\r\n"],"sourceRoot":""}