{"version":3,"file":"appAsync.bundle.js","mappings":"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","sources":["webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/helpers/cookies.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/helpers/mapStyles.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/VanillaValidate.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/carousel.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/dashboard.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/draggable.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/favorites.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/impersonation.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/lite-yt-embed.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/offcanvasmenu.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/pages/blog-overview.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/pages/product-detail.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/pages/product-variants.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/paragraph/faq.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/paragraph/googleMaps.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/paragraph/navigation.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/paragraph/tilemodule.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/paragraph/userpoi.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/product-compare.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/rellax.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/share.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/smooth-scroll.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/tippy.js","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/usermenu.js","webpack://base-packages/./node_modules/desandro-matches-selector/matches-selector.js","webpack://base-packages/./node_modules/ev-emitter/ev-emitter.js","webpack://base-packages/./node_modules/fizzy-ui-utils/utils.js","webpack://base-packages/./node_modules/flickity-as-nav-for/as-nav-for.js","webpack://base-packages/./node_modules/flickity/js/add-remove-cell.js","webpack://base-packages/./node_modules/flickity/js/animate.js","webpack://base-packages/./node_modules/flickity/js/cell.js","webpack://base-packages/./node_modules/flickity/js/drag.js","webpack://base-packages/./node_modules/flickity/js/flickity.js","webpack://base-packages/./node_modules/flickity/js/index.js","webpack://base-packages/./node_modules/flickity/js/lazyload.js","webpack://base-packages/./node_modules/flickity/js/page-dots.js","webpack://base-packages/./node_modules/flickity/js/player.js","webpack://base-packages/./node_modules/flickity/js/prev-next-button.js","webpack://base-packages/./node_modules/flickity/js/slide.js","webpack://base-packages/./node_modules/get-size/get-size.js","webpack://base-packages/./node_modules/rellax/rellax.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/math.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://base-packages/./node_modules/@popperjs/core/lib/enums.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://base-packages/./node_modules/@popperjs/core/lib/createPopper.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://base-packages/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/within.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://base-packages/./node_modules/@popperjs/core/lib/popper.js","webpack://base-packages/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://base-packages/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://base-packages/./node_modules/tippy.js/dist/tippy.esm.js","webpack://base-packages/./node_modules/unidragger/unidragger.js","webpack://base-packages/./node_modules/unipointer/unipointer.js","webpack://base-packages/./node_modules/axios/dist/browser/axios.cjs","webpack://base-packages/webpack/bootstrap","webpack://base-packages/webpack/runtime/define property getters","webpack://base-packages/webpack/runtime/global","webpack://base-packages/webpack/runtime/hasOwnProperty shorthand","webpack://base-packages/webpack/runtime/make namespace object","webpack://base-packages/./Templates/Designs/coloursandcoating_generated/src/js/async/main.js"],"sourcesContent":["// Documentation: https://javascript.info/cookie\r\n// Example of use:\r\n// setCookie('user', 'John', { secure: true, 'max-age': 3600 });\r\nconst setCookie = (name, value, options = {}) => {\r\n\toptions = {\r\n\t\tpath: '/',\r\n\t\t...options\r\n\t};\r\n\r\n\tif (options.expires instanceof Date) {\r\n\t\toptions.expires = options.expires.toUTCString();\r\n\t}\r\n \r\n\tlet updatedCookie = encodeURIComponent(name) + '=' + encodeURIComponent(value);\r\n \r\n\tfor (let optionKey in options) {\r\n\t\tupdatedCookie += '; ' + optionKey;\r\n\t\tlet optionValue = options[optionKey];\r\n\t\tif (optionValue !== true) {\r\n\t\t\tupdatedCookie += '=' + optionValue;\r\n\t\t}\r\n\t}\r\n\t\r\n\tdocument.cookie = updatedCookie;\r\n};\r\n\r\nconst getCookie = name => {\r\n\tconst matches = document.cookie.match(new RegExp('(?:^|; )' + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + '=([^;]*)'));\r\n\treturn matches ? decodeURIComponent(matches[1]) : undefined;\r\n};\r\n\r\nconst deleteCookie = name => {\r\n\tsetCookie(name, '', {\r\n\t\t'max-age': -1\r\n\t});\r\n};\r\n\r\nexport {\r\n\tsetCookie,\r\n\tgetCookie,\r\n\tdeleteCookie\r\n};\r\n","\r\nvar SilverTheme = [\r\n\t{\r\n\t\t'elementType': 'geometry',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#f5f5f5'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'elementType': 'labels.icon',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'visibility': 'off'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'elementType': 'labels.text.fill',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#616161'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'elementType': 'labels.text.stroke',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#f5f5f5'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'administrative.land_parcel',\r\n\t\t'elementType': 'labels.text.fill',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#bdbdbd'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'poi',\r\n\t\t'elementType': 'geometry',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#eeeeee'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'poi',\r\n\t\t'elementType': 'labels.text.fill',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#757575'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'poi.park',\r\n\t\t'elementType': 'geometry',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#e5e5e5'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'poi.park',\r\n\t\t'elementType': 'labels.text.fill',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#9e9e9e'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'road',\r\n\t\t'elementType': 'geometry',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#ffffff'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'road.arterial',\r\n\t\t'elementType': 'labels.text.fill',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#757575'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'road.highway',\r\n\t\t'elementType': 'geometry',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#dadada'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'road.highway',\r\n\t\t'elementType': 'labels.text.fill',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#616161'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'road.local',\r\n\t\t'elementType': 'labels.text.fill',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#9e9e9e'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'transit.line',\r\n\t\t'elementType': 'geometry',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#e5e5e5'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'transit.station',\r\n\t\t'elementType': 'geometry',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#eeeeee'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'water',\r\n\t\t'elementType': 'geometry',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#c9c9c9'\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\t'featureType': 'water',\r\n\t\t'elementType': 'labels.text.fill',\r\n\t\t'stylers': [\r\n\t\t\t{\r\n\t\t\t\t'color': '#9e9e9e'\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n];\r\nvar RetroTheme =\r\n\t[\r\n\t\t{\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#ebe3cd'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#523735'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#f5f1e6'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#c9b2a6'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.land_parcel',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#dcd2be'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.land_parcel',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#ae9e90'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'landscape.natural',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#dfd2ae'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#dfd2ae'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#93817c'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'geometry.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#a5b076'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#447530'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#f5f1e6'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.arterial',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#fdfcf8'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#f8c967'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#e9bc62'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway.controlled_access',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#e98d58'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway.controlled_access',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#db8555'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.local',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#806b63'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit.line',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#dfd2ae'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit.line',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#8f7d77'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit.line',\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#ebe3cd'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit.station',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#dfd2ae'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'geometry.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#b9d3c2'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#92998d'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t];\r\nvar DarkTheme =\r\n\t[\r\n\t\t{\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#212121'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.icon',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'visibility': 'off'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#757575'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#212121'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#757575'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.country',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#9e9e9e'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.land_parcel',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'visibility': 'off'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.locality',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#bdbdbd'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#757575'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#181818'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#616161'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#1b1b1b'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'geometry.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#2c2c2c'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#8a8a8a'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.arterial',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#373737'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#3c3c3c'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway.controlled_access',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#4e4e4e'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.local',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#616161'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#757575'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#000000'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#3d3d3d'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t];\r\n\r\nvar NightTheme =\r\n\t[\r\n\t\t{\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#242f3e'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#746855'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#242f3e'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.locality',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#d59563'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#d59563'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#263c3f'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#6b9a76'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#38414e'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#212a37'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#9ca5b3'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#746855'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#1f2835'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#f3d19c'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#2f3948'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit.station',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#d59563'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#17263c'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#515c6d'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#17263c'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t];\r\nvar AubergineTheme =\r\n\t[\r\n\t\t{\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#1d2c4d'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#8ec3b9'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#1a3646'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.country',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#4b6878'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.land_parcel',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#64779e'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'administrative.province',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#4b6878'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'landscape.man_made',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#334e87'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'landscape.natural',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#023e58'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#283d6a'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#6f9ba5'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi',\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#1d2c4d'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'geometry.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#023e58'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'poi.park',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#3C7680'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#304a7d'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#98a5be'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road',\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#1d2c4d'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#2c6675'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'geometry.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#255763'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#b0d5ce'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'road.highway',\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#023e58'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#98a5be'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit',\r\n\t\t\t'elementType': 'labels.text.stroke',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#1d2c4d'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit.line',\r\n\t\t\t'elementType': 'geometry.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#283d6a'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'transit.station',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#3a4762'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'geometry',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#0e1626'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\t'featureType': 'water',\r\n\t\t\t'elementType': 'labels.text.fill',\r\n\t\t\t'stylers': [\r\n\t\t\t\t{\r\n\t\t\t\t\t'color': '#4e6d70'\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t];\r\n\r\nvar MapStyles = {\r\n\tstandard: [],\r\n\tsilver: SilverTheme,\r\n\tretro: RetroTheme,\r\n\tdark: DarkTheme,\r\n\tnight: NightTheme,\r\n\taubergine: AubergineTheme\r\n};\r\n\r\nexport { MapStyles };","/** define variables and objects ***/\r\nvar selectorClassError \t\t\t= 'error';\r\nvar selectorClassSuccess\t\t= 'success';\r\n\r\nvar selectorClassFormItem \t\t= 'form__item';\r\nvar selectorClassFormInputItem \t= '.form-item__input';\r\nvar selectorClassErrorMessage\t= '.errormessage';\r\n\r\n/* HTML Trigger attributes */\r\nvar AttrRequireTrigger\t= 'verplicht';\r\nvar AttrValType\t\t\t= 'valtype';\r\nvar AttrMinChar\t\t\t= 'minchar';\r\nvar AttrTransform\t\t= 'transform';\r\n\r\n/*** Values error messages ***/\r\n//var errorMessagesJSON = \r\n//{\r\n \r\n//\t'StrErrorMsgTxtCheckbox' : { '_default':'Het lijkt erop dat u niet akkoord bent gegaan met de algemene voorwaarden' },\r\n//\t'StrErrorMsgTxtInitials' : { '_default' : 'Het lijkt erop dat uw voorletters niet zijn aangegeven' },\r\n//\t'StrErrorMsgTxtLastName': { '_default': 'Het lijkt erop dat uw achternaam niet is aangegeven' },\r\n//\t'StrErrorMsgTxtFirstName': { '_default': 'Het lijkt erop dat uw voornaam niet is aangegeven' },\r\n//\t'StrErrorMsgTxtEmail' : { '_default' : 'Het lijkt erop uw e-mailadres niet volledig is ingevuld', '_validate' : 'Het lijkt erop dat dit geen geldig e-mailadres is' },\r\n//\t'StrErrorMsgTxtZipcode' : {\r\n//\t\t'_default' : 'Het lijkt erop dat de postcode niet volledig is ingevoerd',\r\n//\t\t'_validate' : 'Het lijkt erop dat de postcode niet juist is ingevoerd. Voorbeeld: 1234AB',\r\n//\t\t'_area' : 'Uw postcode bevindt zich buiten het verspreidingsgebied van deze krant.' },\r\n//\t'StrErrorMsgRadioGender' : { '_default' : 'Het lijkt erop dat uw aanhef niet is aangegeven' },\r\n//\t'StrErrorMsgRadioGift' : { '_default' : 'Het lijkt erop dat u niet heeft aangegeven of u een welkomstgeschenk wilt ontvangen' },\r\n//\t'StrErrorMsgStreetNumber' : { '_default' : 'Het lijkt erop dat uw huisnummer niet is aangegeven' },\r\n//\t'StrErrorMsgStreet' : { '_default' : 'Het lijkt erop dat uw straat niet is aangegeven' },\r\n//\t'StrErrorMsgCity': { '_default': 'Het lijkt erop dat uw stad niet is aangegeven' },\r\n//\t'StrErrorMsgCountry': { '_default': 'Het lijkt erop dat uw land niet is aangegeven' },\r\n//\t'StrErrorMsgTxtPhoneCount' : { '_default' : 'Het aantal cijfers van het netnr en telefoonnr samen moet 10 cijfers zijn' },\r\n//\t'StrErrorMsgTxtPhoneNumber' : { '_default' : 'Het lijkt erop dat dit telefoonnummer niet juist is.' },\r\n//\t'StrErrorMsgTxtNetNumber' : { '_default' : 'Het lijkt erop dat uw netnummer is onjuist. Voorbeeld: 072' },\r\n//\t'StrErrorMsgPassword' : { '_default' : 'Het lijkt erop dat uw wachtwoord niet juist is aangegeven, misschien te weinig karakters (min. 6) of typefout?', '_match' : 'Het lijkt erop dat de aangegeven wachtwoorden niet overeen komen' },\r\n//\t'StrErrorMsgTxtPasswordEmpty' : { '_default' : 'Het lijkt erop dat uw wachtwoord niet juist is aangegeven, misschien te weinig karakters (min. 6) of typefout?' },\r\n//\t'StrErrorMsgTxtPasswordMatch' : { '_default' : 'Het lijkt erop dat de aangegeven wachtwoorden niet overeen komen' }\r\n//};\r\n\r\n// Collect all inputfields\r\nvar errorHandler = {\r\n\tfieldCollection: document.getElementsByTagName('input'),\r\n};\r\n\r\n/*\r\n\r\n\t************ Transformer ***********\r\n\t\r\n\tTransform input text\r\n\t------------------------------------\r\n\t\r\n\tIn HTML one can call these functions \r\n\tby using attributes in the input tag\r\n\r\n\t- transform=\"uppercase\"\r\n\t- transform=\"lowercase\"\r\n\t- transform=\"firstupper\"\r\n\r\n*/\r\n\r\n/*** Process transformation on input values ***/\r\nvar Transformer = function () {\r\n\r\n\t/*** Define options ****/\r\n\tthis.options = {\r\n\t\t// Transform characters to uppercase\r\n\t\tuppercase: function () {\r\n\t\t\treturn arguments[0].toUpperCase();\r\n\t\t},\r\n\t\t// Transform characters to lowercase\r\n\t\tlowercase: function () {\r\n\t\t\treturn arguments[0].toLowerCase();\r\n\t\t},\r\n\t\t// Transform first characters to uppercase the rest to lowercase\r\n\t\tfirstupper: function () {\r\n\t\t\tvar inputValue = '';\r\n\t\t\tinputValue = arguments[0].toLowerCase();\r\n\t\t\tinputValue = inputValue.charAt(0).toUpperCase() + inputValue.slice(1);\r\n\t\t\treturn inputValue;\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tvar inputItem = arguments[0]; // eslint-disable-line prefer-destructuring\r\n\r\n\t// Get defined transform value\r\n\tvar TransformValue = inputItem.getAttribute(AttrTransform);\r\n\r\n\tswitch (TransformValue) {\r\n\t\tcase 'uppercase'\t: inputItem.value = this.options.uppercase(inputItem.value); break;\r\n\t\tcase 'lowercase'\t: inputItem.value = this.options.lowercase(inputItem.value); break;\r\n\t\tcase 'firstupper'\t: inputItem.value = this.options.firstupper(inputItem.value); break;\r\n\t}\r\n};\r\n\r\n/*** Process transformation on input values ***/\r\n\r\n/*\r\n\r\n\t************ Restrictor ************\r\n\t\r\n\tRestrict input text \r\n\t------------------------------------\r\n\t\r\n\tIn HTML one can call these functions \r\n\tby using attributes in the input tag\r\n\r\n\t- numeric=\"numeric\" > numeric only\r\n\t- nospaces=\"nospaces\" > disable spaces\r\n\t- maxlength=\"[value]\" > bugfix on \r\n\t maxlength for type=\"number\"\r\n\t\r\n*/\r\nvar Restrictor = function (thisOriginal, event, restriction)\r\n{\r\n\r\n\tthis.options = {\r\n\r\n\t\tnumeric: function () {\r\n\r\n\t\t\t// Ensure that it is a number and stop the keypress\r\n\t\t\t// Numbers and NumPad\r\n\t\t\tif ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\treturn false;\t// key is not a number \r\n\t\t\t}\r\n\t\t},\r\n\t\tmaxlength: function () {\r\n\r\n\t\t\t// Get maxlength value\r\n\t\t\tvar maxlength = thisOriginal.getAttribute('maxlength');\r\n\t\t\tif (maxlength <= thisOriginal.value.length) {\r\n\t\t\t\treturn false;\t// max amount has been reached\r\n\t\t\t} else {\r\n\t\t\t\treturn true;\t// max amount has not been reached\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tnospaces: function () {\r\n\r\n\t\t\t// Disable spacebar\r\n\t\t\tif (event.keyCode === 32) event.preventDefault();\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tvar keyCodeArray = [46, 8, 9, 27, 13, 110, 190];\r\n\r\n\tif (\r\n\t\t// Allow: backspace, delete, tab, escape, enter and .\r\n\t\tkeyCodeArray.includes(event.keyCode) ||\r\n\t\t// Allow: home, end, left, right, down, up\r\n\t\t(event.keyCode >= 35 && event.keyCode <= 40))\r\n\t{\r\n\t\t// No Action\r\n\t} else {\r\n\r\n\t\tswitch (restriction) {\r\n\r\n\t\t\tcase 'numeric':\r\n\t\t\t\t// Call numeric function from options\r\n\t\t\t\treturn this.options.numeric(event);\r\n\t\t\tcase 'maxlength':\r\n\t\t\t\t// Call maxlength function from options\t\r\n\t\t\t\treturn this.options.maxlength(thisOriginal, event);\r\n\t\t\tcase 'nospaces':\r\n\t\t\t\t// Call nospaces function from options\r\n\t\t\t\treturn this.options.nospaces(event);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n/*\r\n\r\n\t************ Validator ************\r\n\t\r\n\tValidate input text \r\n\t------------------------------------\r\n\t\r\n\tIn HTML one can call these functions \r\n\tby using attributes in the input tag\r\n\t\r\n\tValtype\r\n\t------------------------------------\r\n\t- valtype=\"zipcode\"\r\n\t- valtype=\"email\"\r\n\t\r\n*/\r\n\r\n/* Function to process all the validations */\r\nvar Validator = function () {\r\n\r\n\t/*** Set variables ***/\r\n\tvar ValidatorThis = this;\r\n\tvar inputItem = arguments[0]; // eslint-disable-line prefer-destructuring\r\n\tvar inputObject = {\r\n\t\tinputItem: inputItem,\r\n\t\terrormessage_type: '_default'\r\n\t};\r\n\r\n\t/*** Define options ***/\r\n\tthis.options = {\r\n\r\n\t\tzipcode: function () {\r\n\r\n\t\t\tvar result = {};\r\n\r\n\t\t\t// Define Reg Values\r\n\t\t\tvar inputValueReg = /^([0-9]{4,})([A-Z]{2})?$/;\r\n\r\n\t\t\t// Check is Value is a valid Zipcode\r\n\t\t\tresult.success = !this.value.match(inputValueReg) || this.value === '' ? false /* Invalid Zipcode */ : true; /* Valid Zipcode */\r\n\t\t\tresult.errormessage_type = '_validate';\r\n\r\n\t\t\t/*** \r\n\t\t\t\r\n\t\t\t\tDistribution Area Check \r\n\r\n\t\t\t***/\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\t\temail: function () {\r\n\t\t\tvar result = {};\r\n\r\n\t\t\t// Define Reg Values\r\n\t\t\t// var inputValueReg = /^([\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4})?$/;\r\n\t\t\tvar inputValueReg = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n\t\t\t// Check if value is a valid emailaddress\r\n\t\t\tresult.success = !inputItem.value.match(inputValueReg) || inputItem.value === '' ? false /* Invalid Emailadres */ : true; /* Valid Emailadres */\r\n\t\t\tresult.errormessage_type = '_validate';\r\n\r\n\t\t\treturn result;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tthis.required = {\r\n\r\n\t\t/*** Check for minimal amount of characters ***/\r\n\t\tMinChar: function () {\r\n\r\n\t\t\tvar result = {};\r\n\t\t\tresult.success = true;\r\n\r\n\t\t\tvar minCharTrigger = this.hasAttribute(AttrMinChar);\r\n\r\n\t\t\tif (minCharTrigger === true) {\r\n\t\t\t\tvar strLength = this.value.length;\r\n\t\t\t\tvar minLength = this.getAttribute(AttrMinChar);\r\n\t\t\t\tresult.success = strLength < minLength || this.value === '' ? false /* Minimal Amount has not been reached */ : true /* Minimal lenght has been reached */;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\t\t/*** Check for info type and validate ***/\r\n\t\tvalType: function () {\r\n\r\n\t\t\tvar result = {};\r\n\t\t\tresult.success = true;\r\n\r\n\t\t\tvar minValTypeTrigger = inputItem.hasAttribute(AttrValType);\r\n\t\t\tvar inputType = inputItem.getAttribute('type');\r\n\r\n\t\t\tif (minValTypeTrigger === true) {\r\n\t\t\t\t// Get valtype from attribute\r\n\t\t\t\tswitch (inputItem.getAttribute(AttrValType)) {\r\n\t\t\t\t\tcase 'zipcode':\r\n\t\t\t\t\t\t// Call zipcode validation from Validator\r\n\t\t\t\t\t\tresult = ValidatorThis.options.zipcode.call(this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'email':\r\n\t\t\t\t\t\t// Call email validation from Validator\r\n\t\t\t\t\t\tresult = ValidatorThis.options.email.call(this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (inputType && inputItem.value !== '') {\r\n\t\t\t\t// Get valtype from attribute\r\n\t\t\t\tswitch (inputType) {\r\n\t\t\t\t\tcase 'email':\r\n\t\t\t\t\t\t// Call email validation from Validator\r\n\t\t\t\t\t\tresult = ValidatorThis.options.email.call(this);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t};\r\n\r\n\t/***** Actual error handling *****/\r\n\tif (inputObject.inputItem.getAttribute(AttrRequireTrigger) !== undefined && inputObject.inputItem.getAttribute('disabled') === null)\r\n\t{\r\n\r\n\t\tvar ArrResult = [];\r\n\r\n\t\tvar result = {};\r\n\t\tresult.success = true;\r\n\r\n\t\tswitch (inputObject.inputItem.type) {\r\n\t\t\tcase 'checkbox':\r\n\t\t\t\tresult.success = checkOptionList.call(inputObject.inputItem);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'radio':\r\n\t\t\t\tresult.success = checkOptionList.call(inputObject.inputItem);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'password':\r\n\t\t\t\tresult.success = checkInputPassword.call(inputObject.inputItem);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tArrResult[1] = this.required.MinChar.call(inputObject.inputItem);\r\n\t\tArrResult[2] = this.required.valType.call(inputObject.inputItem);\r\n\t\tArrResult[3] = result.success;\r\n\r\n\t\t// Validate on minimal amount of characters\r\n\t\tif (ArrResult[1].success === false) {\r\n\r\n\t\t\tinputObject.errormessage_type = '_default';\r\n\t\t\tinputObject.success = false;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tinputObject.success = true;\r\n\r\n\t\t\t// Validate format\r\n\t\t\tif (ArrResult[2].success === false) {\r\n\r\n\t\t\t\tinputObject.errormessage_type = ArrResult[2].errormessage_type;\r\n\t\t\t\tinputObject.success = false;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tinputObject.success = true;\r\n\r\n\t\t\t\tif (typeof ArrResult[3] === 'object') {\r\n\t\t\t\t\tinputObject.success = ArrResult[3].success;\r\n\t\t\t\t\tif(ArrResult[3].errormessage_type) {\r\n\t\t\t\t\t\tinputObject.errormessage_type = ArrResult[3].errormessage_type;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (typeof ArrResult[3] === 'boolean') {\r\n\t\t\t\t\tinputObject.success = ArrResult[3];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/*** Assign the classes to show results error/correct ***/\r\n\t\tassignResultClasses.call(inputObject);\r\n\r\n\t\treturn inputObject.success;\r\n\r\n\t} else { \r\n\t\t/* No Actions */ \r\n\t}\r\n};\r\n\r\n// Add Validator to ErrorHandler\r\nerrorHandler.Validator = Validator;\r\n\r\n// Add Transformer to ErrorHandler\r\nerrorHandler.Transformer = Transformer;\r\n\r\n// Add Transformer to ErrorHandler\r\nerrorHandler.Restrictor = Restrictor;\r\n\r\nvar intErrorAmount = 0;\r\n\r\n// Vanilla Document Ready Listener\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\r\n\t'use strict';\r\n\r\n\t// Restrict to numeric characters only in input\r\n\t[].forEach.call(document.querySelectorAll('input[type=\"number\"]'), function (el) {\r\n\t\tel.addEventListener('keydown', function (event) {\r\n\t\t\treturn errorHandler.Restrictor(this, event, 'numeric');\r\n\t\t});\r\n\t});\r\n\r\n\t// Restrict input in length\r\n\t[].forEach.call(document.querySelectorAll('input[maxlength]'), function (el) {\r\n\t\tel.addEventListener('keydown', function (event) {\r\n\t\t\treturn errorHandler.Restrictor(this, event, 'maxlength');\r\n\t\t});\r\n\t});\r\n\r\n\t// Restrict spaces in input\r\n\t[].forEach.call(document.querySelectorAll('input[nospaces]'), function (el) {\r\n\t\tel.addEventListener('keydown', function (event) {\r\n\t\t\treturn errorHandler.Restrictor(this, event, 'nospaces');\r\n\t\t});\r\n\t});\r\n\r\n\r\n\t// Start test on keys, with some exeptions...\r\n\t[].forEach.call(document.querySelectorAll('input, textarea'), function (el) {\r\n\t\tel.addEventListener('keyup', function (event) {\r\n\r\n\t\t\tvar char = event.which || event.keyCode;\r\n\r\n\t\t\tswitch (char) {\r\n\t\t\t\tcase 8: \t// backspace\r\n\t\t\t\tcase 46: \t// Delete\r\n\t\t\t\tcase 37: \t// Arrow Left\r\n\t\t\t\tcase 39: \t// Arrow Right\r\n\t\t\t\tcase 9: \t// Tab\r\n\t\t\t\t\t// No action\t\t\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t// Start validating on keystroke\r\n\t\t\t\t\terrorHandler.Transformer(this);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\terrorHandler.Validator(this);\r\n\r\n\t\t});\r\n\t});\r\n\r\n\t// Validate input and select - Added change listener for datepickers\r\n\t[].forEach.call(document.querySelectorAll('input, select'), function (el) {\r\n\t\tel.addEventListener('change', function () {\r\n\t\t\terrorHandler.Validator(this);\r\n\t\t});\r\n\t});\r\n\r\n\t// Validate Radiobuttons - Using A href to broaden the hotspot\r\n\t[].forEach.call(document.querySelectorAll('input[type=checkbox], input[type=radio]'), function (el) {\r\n\t\tel.addEventListener('click', function () {\r\n\t\t\terrorHandler.Validator(this);\r\n\t\t});\r\n\t});\r\n\r\n\t// Run validation on all forms except checkout form\r\n\tvar forms = document.querySelectorAll('form');\r\n\t[...forms].forEach(form => {\r\n\t\tif (form.id !== 'ordersubmit' && form.id !== 'cookieWarningForm' && !form.classList.contains('no-validate')) {\r\n\t\t\tform.addEventListener('submit', event => {\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tintErrorAmount = 0;\r\n\r\n\t\t\t\tconst allinputFields = form.querySelectorAll('input, select, textarea');\r\n\t\t\t\t[...allinputFields].forEach(input => {\r\n\t\t\t\t\terrorHandler.Validator(input);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst validSubmitEvent = new Event('validFormSubmit');\r\n\t\t\t\tif (intErrorAmount === 0) {\r\n\t\t\t\t\tform.dispatchEvent(validSubmitEvent);\r\n\t\t\t\t\tform.submit();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.warn('The number of errors is:' + intErrorAmount);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t// Run validation for checkout form\r\n\tvar ordersubmit = document.getElementById('ordersubmit');\r\n\r\n\tif (ordersubmit) {\r\n\t\tordersubmit.addEventListener('submit', event => {\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\tif(ordersubmit.submitterDirection) {\r\n\t\t\t\tconst direction = ordersubmit.submitterDirection;\r\n\t\t\t\tif(direction === 'previous' || direction === 'next') {\r\n\t\t\t\t\tconst checkoutDirection = ordersubmit.submitterId;\r\n\t\t\t\t\tconst checkoutDirectionInput = ordersubmit.querySelector('.checkout-direction');\r\n\t\t\t\t\tif(checkoutDirectionInput) {\r\n\t\t\t\t\t\tcheckoutDirectionInput.name = checkoutDirection;\r\n\t\t\t\t\t\tcheckoutDirectionInput.id = checkoutDirection;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(direction === 'previous') {\r\n\t\t\t\t\t\tordersubmit.submit();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tintErrorAmount = 0;\r\n\r\n\t\t\t// $('#ordersubmit input, #ordersubmit select, #ordersubmit textarea').each(function () {\r\n\t\t\t// \terrorHandler.Validator(this);\r\n\t\t\t// });\r\n\r\n\t\t\tconst allinputFields = ordersubmit.querySelectorAll('input, select, textarea');\r\n\t\t\t[...allinputFields].forEach(input => {\r\n\t\t\t\terrorHandler.Validator(input);\r\n\t\t\t});\r\n\r\n\t\t\tif (intErrorAmount === 0) {\r\n\t\t\t\tordersubmit.submit();\r\n\t\t\t} else {\r\n\t\t\t\tconsole.warn('The number of errors is: ' + intErrorAmount);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n});\r\n\r\n/**** Shame *****/\r\n\r\nfunction checkOptionList() {\r\n\r\n\tvar result = { success: true };\r\n\r\n\tif (this.hasAttribute(AttrRequireTrigger)) {\r\n\t\tvar fieldName = this.getAttribute('name');\r\n\t\tconst allInputFields = [...document.querySelectorAll(`input[name=\"${fieldName}\"]`)];\r\n\t\tresult.success = allInputFields.some(field => field.checked);\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n\r\nfunction checkInputPassword() {\r\n\r\n\t// Get all password fields \r\n\tconst passwordField = document.querySelector('[name=\"EcomUserCreatePassword\"]') || document.querySelector('[name=\"UserManagement_Form_NewPassword\"]');\r\n\tconst passwordConfirmField = document.querySelector('[name=\"EcomUserCreateConfirmPassword\"]') || document.querySelector('[name=\"UserManagement_Form_NewPasswordConfirm\"]');\r\n\r\n\tif(!passwordField || !passwordConfirmField) {\r\n\t\treturn;\r\n\t}\r\n\t\r\n\t// Array of password fields\r\n\tconst passwordFields = [\r\n\t\tpasswordField, \r\n\t\tpasswordConfirmField\r\n\t];\r\n\r\n\tconst isEqualPassword = passwordField.value === passwordConfirmField.value;\r\n\tconst bothHaveEnoughCharacters = passwordField.value.length >= 6 && passwordConfirmField.value.length >= 6;\r\n\tconst hasEnoughCharacters = this.value.length >= 6;\r\n\r\n\t// Loop through password fields and get the parent error message element, store this in Array\r\n\tconst errorMessageContainers = passwordFields.map(element => fetchErrorMessageContainer.call(element));\r\n\r\n\tif(hasEnoughCharacters) {\r\n\t\tconst errorMessageContainer = fetchErrorMessageContainer.call(this);\r\n\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.remove(selectorClassError);\r\n\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.add(selectorClassSuccess);\r\n\t\terrorMessageContainer.querySelector(selectorClassErrorMessage).innerHTML = '';\r\n\t} else {\r\n\t\tconst errorMessageContainer = fetchErrorMessageContainer.call(this);\r\n\t\tconst inputObject = {\r\n\t\t\tsuccess: hasEnoughCharacters,\r\n\t\t\terrormessage_type: '_minchar',\r\n\t\t\tinputItem: this\r\n\t\t};\r\n\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.remove(selectorClassSuccess);\r\n\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.add(selectorClassError);\t\r\n\t\terrorMessageContainer.querySelector(selectorClassErrorMessage).innerHTML = error_message.call(inputObject);\r\n\t\treturn inputObject;\r\n\t}\r\n\r\n\tif (bothHaveEnoughCharacters) {\r\n\t\tif(isEqualPassword) {\r\n\t\t\terrorMessageContainers.forEach(errorMessage => {\r\n\t\t\t\terrorMessage.querySelector(selectorClassFormInputItem).classList.remove(selectorClassError);\r\n\t\t\t\terrorMessage.querySelector(selectorClassFormInputItem).classList.add(selectorClassSuccess);\r\n\t\t\t\terrorMessage.querySelector(selectorClassErrorMessage).innerHTML = '';\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\terrorMessageContainers.forEach(errorMessage => {\r\n\t\t\t\terrorMessage.querySelector(selectorClassFormInputItem).classList.remove(selectorClassSuccess);\r\n\t\t\t\terrorMessage.querySelector(selectorClassFormInputItem).classList.add(selectorClassError);\r\n\t\t\t});\r\n\r\n\t\t\t// Clear error messages on first password field\r\n\t\t\terrorMessageContainers[0].querySelector(selectorClassErrorMessage).innerHTML = '';\r\n\r\n\t\t\tconst inputObject = {\r\n\t\t\t\tsuccess: isEqualPassword,\r\n\t\t\t\terrormessage_type: '_match',\r\n\t\t\t\tinputItem: passwordConfirmField\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\t// Display error message on password confirm field\r\n\t\t\terrorMessageContainers[1].querySelector(selectorClassErrorMessage).innerHTML = error_message.call(inputObject);\r\n\t\t\treturn inputObject;\r\n\t\t}\r\n\t\treturn isEqualPassword;\r\n\t}\r\n\treturn true;\r\n}\r\n\r\n/* Get Error message from JSON file */\r\nfunction error_message()\r\n{\r\n\r\n\tif(this.inputItem.getAttribute('errorAlias') !== undefined){\r\n\t\t\r\n\t\t// Catch value of attribute\r\n\t\tvar errorAlias = this.inputItem.getAttribute('errorAlias');\r\n\r\n\t\tif(errorAlias !== null){\r\n\t\t\tvar ArrErrorValue = (errorMessagesJSON[errorAlias][this.errormessage_type]);\r\n\t\t}\r\n\r\n\t\t// Return the first value\r\n\t\treturn ArrErrorValue;\t\r\n\t\r\n\t}\r\n\r\n}\r\n\r\nfunction assignResultClasses()\r\n{\r\n\r\n\tvar errorMessageContainer = {};\r\n\r\n\terrorMessageContainer = fetchErrorMessageContainer.call(this.inputItem);\r\n\r\n\tif (errorMessageContainer !== false) {\r\n\t\r\n\t\tconst inputType = this.inputItem.getAttribute('type') || this.inputItem.tagName.toLowerCase();\r\n\t\tswitch (this.success) {\r\n\r\n\t\t\tcase true:\r\n\t\t\t\tswitch (inputType) {\r\n\t\t\t\t\tcase 'text':\r\n\t\t\t\t\tcase 'password':\r\n\t\t\t\t\tcase 'email':\r\n\t\t\t\t\tcase 'tel':\r\n\t\t\t\t\tcase 'search':\r\n\t\t\t\t\tcase 'url':\r\n\t\t\t\t\tcase 'number':\r\n\t\t\t\t\tcase 'file':\r\n\t\t\t\t\tcase 'date':\r\n\t\t\t\t\tcase 'datetime':\r\n\t\t\t\t\tcase 'datetime-local':\r\n\t\t\t\t\tcase 'time':\r\n\t\t\t\t\tcase 'week':\r\n\t\t\t\t\tcase 'month':\r\n\t\t\t\t\tcase 'checkbox':\r\n\t\t\t\t\tcase 'textarea':\r\n\t\t\t\t\tcase 'select':\r\n\t\t\t\t\t\tif(errorMessageContainer.querySelector(selectorClassFormInputItem)) {\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.remove(selectorClassError);\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.add(selectorClassSuccess);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (errorMessageContainer.querySelector(selectorClassErrorMessage) != null) {\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassErrorMessage).innerHTML = '';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'radio':\r\n\t\t\t\t\t\tif(errorMessageContainer.querySelector(selectorClassFormInputItem)) {\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.remove(selectorClassError);\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.add(selectorClassSuccess);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (errorMessageContainer.querySelector(selectorClassErrorMessage) != null) {\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassErrorMessage).innerHTML = '';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t[].forEach.call(errorMessageContainer.querySelectorAll(selectorClassFormInputItem), function(el) {\r\n\t\t\t\t\t\t\tel.classList.remove(selectorClassError);\r\n\r\n\t\t\t\t\t\t\tif (el.checked === true) {\r\n\t\t\t\t\t\t\t\tthis.classList.add(selectorClassSuccess);\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase false:\r\n\t\t\t\tswitch (inputType) {\r\n\t\t\t\t\tcase 'text':\r\n\t\t\t\t\tcase 'password':\r\n\t\t\t\t\tcase 'email':\r\n\t\t\t\t\tcase 'tel':\r\n\t\t\t\t\tcase 'search':\r\n\t\t\t\t\tcase 'url':\r\n\t\t\t\t\tcase 'number':\r\n\t\t\t\t\tcase 'file':\r\n\t\t\t\t\tcase 'date':\r\n\t\t\t\t\tcase 'datetime':\r\n\t\t\t\t\tcase 'datetime-local':\r\n\t\t\t\t\tcase 'time':\r\n\t\t\t\t\tcase 'week':\r\n\t\t\t\t\tcase 'month':\r\n\t\t\t\t\tcase 'checkbox':\r\n\t\t\t\t\tcase 'textarea':\r\n\t\t\t\t\tcase 'select':\r\n\t\t\t\t\t\tif(errorMessageContainer.querySelector(selectorClassFormInputItem)) {\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.remove(selectorClassSuccess);\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.add(selectorClassError);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'radio':\r\n\t\t\t\t\t\tif(errorMessageContainer.querySelector(selectorClassFormInputItem)) {\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.remove(selectorClassSuccess);\r\n\t\t\t\t\t\t\terrorMessageContainer.querySelector(selectorClassFormInputItem).classList.add(selectorClassError);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t[].forEach.call(errorMessageContainer.querySelectorAll(selectorClassFormInputItem), function(el) {\r\n\t\t\t\t\t\t\tel.classList.remove(selectorClassSuccess);\r\n\t\t\t\t\t\t\tel.classList.add(selectorClassError);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tintErrorAmount = intErrorAmount + 1;\r\n\r\n\t\t\t\tif(error_message.call(this) !== 'undefined'){\r\n\t\t\t\t\terrorMessageContainer.querySelector(selectorClassErrorMessage).innerHTML = error_message.call(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction fetchErrorMessageContainer() {\r\n\tlet errorMessageContainer = this;\r\n\t\r\n\twhile (!errorMessageContainer.classList.contains(selectorClassFormItem)) {\r\n\t\terrorMessageContainer = errorMessageContainer.parentNode;\r\n\t\tif (typeof errorMessageContainer.getAttribute === 'undefined') { \r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tif (errorMessageContainer.classList.contains(selectorClassFormItem)) { \r\n\t\treturn errorMessageContainer;\r\n\t}\r\n\r\n}\r\n","var Flickity = require('flickity');\r\nimport 'flickity-as-nav-for';\r\n\r\n(() =>\r\n{\r\n\tconst stringToBoolean = string =>\r\n\t{\r\n\t\tif (!string)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tswitch (string.toLowerCase().trim())\r\n\t\t{\r\n\t\t\tcase 'true': case 'yes': case '1': return true;\r\n\t\t\tcase 'false': case 'no': case '0': case null: return false;\r\n\t\t\tdefault: return Boolean(string);\r\n\t\t}\r\n\t};\r\n\tdocument.addEventListener('DOMContentLoaded', () =>\r\n\t{\r\n\t\tlet carouselEl = document.querySelector('.cp-carousel');\r\n\t\tlet productCarouselEl = document.querySelector('.productimages__carousel-big');\r\n\t\tlet productCarouselThumbnailsEl = document.querySelector('.productimages__carousel-thumbnails');\r\n\t\tlet jumbotron__carouselEl = document.querySelector('.jumbotron__carousel');\r\n\t\tlet jumbotron__carousel_mobileEl = document.querySelector('.jumbotron__carousel-mob');\r\n\t\tlet productGroupCarouselEl = document.querySelector('.productgroup__carousel');\r\n\t\tlet carousels = [...document.querySelectorAll('.carousel')];\r\n\t\tlet relatedProductsEl = document.querySelector('.related-products__slider');\r\n\t\tlet upsellProductsEl = document.querySelector('.upsell-products__slider');\r\n\t\tconst contentProductCarouselsEls = [...document.querySelectorAll('.content-product-slider')];\r\n\t\tconst productModuleCarouselsEls = [...document.querySelectorAll('.products-module__slider')];\r\n\r\n\t\t[jumbotron__carouselEl, carouselEl, productCarouselEl, productCarouselThumbnailsEl, productGroupCarouselEl, relatedProductsEl].forEach(carousel => {\r\n\t\t\tif (carousel && carousel.classList.contains('hidden'))\r\n\t\t\t{\r\n\t\t\t\tcarousel.classList.remove('hidden');\r\n\t\t\t\tcarousel.offsetHeight;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (carouselEl)\r\n\t\t{\r\n\t\t\tnew Flickity(carouselEl, {\r\n\t\t\t\tautoPlay: true,\r\n\t\t\t\tpageDots: true,\r\n\t\t\t\twrapAround: true,\r\n\t\t\t\tfreeScroll: true,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (relatedProductsEl)\r\n\t\t{\r\n\t\t\tconst relatedProducts = [...relatedProductsEl.querySelectorAll('.related-products__slider-cel')];\r\n\t\t\tconst relatedProductsCount = relatedProducts.length;\r\n\r\n\t\t\tif (relatedProductsCount > 5)\r\n\t\t\t{\r\n\t\t\t\trelatedProductsEl.classList.add('related-products__slider--enabled');\r\n\t\t\t\tnew Flickity(relatedProductsEl, {\r\n\t\t\t\t\tpageDots: false,\r\n\t\t\t\t\tcontain: true,\r\n\t\t\t\t\tcellAlign: 'center',\r\n\t\t\t\t\t\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (upsellProductsEl)\r\n\t\t{\r\n\t\t\tconst upsellProducts = [...upsellProductsEl.querySelectorAll('.related-products__slider-cel')];\r\n\t\t\tconst upsellProductsCount = upsellProducts.length;\r\n\r\n\t\t\tif (upsellProductsCount > 5)\r\n\t\t\t{\r\n\t\t\t\tupsellProductsEl.classList.add('related-products__slider--enabled');\r\n\t\t\t\tnew Flickity(upsellProductsEl, {\r\n\t\t\t\t\tpageDots: false,\r\n\t\t\t\t\tcontain: true,\r\n\t\t\t\t\tcellAlign: 'center',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (jumbotron__carouselEl)\r\n\t\t{\r\n\t\t\tnew Flickity(jumbotron__carouselEl, {\r\n\t\t\t\tdraggable: true,\r\n\t\t\t\tpageDots: false,\r\n\t\t\t\twrapAround: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (jumbotron__carousel_mobileEl) {\r\n\t\t\tnew Flickity(jumbotron__carousel_mobileEl, {\r\n\t\t\t\tdraggable: true,\r\n\t\t\t\tpageDots: false,\r\n\t\t\t\twrapAround: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (productCarouselEl) {\r\n\t\t\tnew Flickity(productCarouselEl, {\r\n\t\t\t\tdraggable: true,\r\n\t\t\t\tpageDots: false,\r\n\t\t\t\twrapAround: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (productCarouselThumbnailsEl)\r\n\t\t{\r\n\t\t\tnew Flickity(productCarouselThumbnailsEl, {\r\n\t\t\t\tasNavFor: productCarouselEl,\r\n\t\t\t\tdraggable: true,\r\n\t\t\t\tcontain: true,\r\n\t\t\t\tpageDots: false,\r\n\t\t\t\tprevNextButtons: false\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (productGroupCarouselEl)\r\n\t\t{\r\n\t\t\tnew Flickity(productGroupCarouselEl, {\r\n\t\t\t\tdraggable: true,\r\n\t\t\t\tcontain: true,\r\n\t\t\t\tpageDots: true,\r\n\t\t\t\tprevNextButtons: true,\r\n\t\t\t\twrapAround: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tcontentProductCarouselsEls.forEach(contentProductCarouselEl =>\r\n\t\t{\r\n\t\t\tnew Flickity(contentProductCarouselEl, {\r\n\t\t\t\tpageDots: false,\r\n\t\t\t\tcontain: true,\r\n\t\t\t\tcellAlign: 'left'\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tproductModuleCarouselsEls.forEach(productModuleCarouselsEl => {\r\n\t\t\tnew Flickity(productModuleCarouselsEl, {\r\n\t\t\t\twatchCSS: true,\r\n\t\t\t\tpageDots: false,\r\n\t\t\t\tcontain: true,\r\n\t\t\t\tcellAlign: 'left'\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcarousels.forEach(carousel => {\r\n\t\t\tlet groupAmount = parseInt(carousel.dataset.columns, 10);\r\n\t\t\tlet duration = parseInt(carousel.dataset.duration, 10);\r\n\t\t\tlet infiniteLoop = stringToBoolean(carousel.dataset.loop);\r\n\t\t\tlet showDots = stringToBoolean(carousel.dataset.dots);\r\n\t\t\tlet controls = stringToBoolean(carousel.dataset.controls);\r\n\t\t\tlet autoPlay = stringToBoolean(carousel.dataset.autoplay);\r\n\t\t\tif (duration > 0) { autoPlay = duration; }\r\n\t\t\tnew Flickity(carousel, {\r\n\t\t\t\tdraggable: true,\r\n\t\t\t\tcontain: true,\r\n\t\t\t\tfreeScroll: false,\r\n\t\t\t\tpageDots: showDots,\r\n\t\t\t\twrapAround: infiniteLoop,\r\n\t\t\t\tgroupCells: groupAmount,\r\n\t\t\t\tautoPlay: autoPlay,\r\n\t\t\t\tprevNextButtons: controls,\r\n\t\t\t\tcellAlign: 'center',\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t});\r\n\r\n\t// Added little hack for equal height carousel-cells \r\n\t// https://github.com/metafizzy/flickity/issues/534\r\n\tFlickity.prototype._createResizeClass = function ()\r\n\t{\r\n\t\tthis.element.classList.add('flickity-resize');\r\n\t};\r\n\r\n\tFlickity.createMethods.push('_createResizeClass');\r\n\r\n\t// eslint-disable-next-line prefer-destructuring\r\n\tconst resize = Flickity.prototype.resize;\r\n\r\n\tFlickity.prototype.resize = function ()\r\n\t{\r\n\t\tthis.element.classList.remove('flickity-resize');\r\n\t\tresize.call(this);\r\n\t\tthis.element.classList.add('flickity-resize');\r\n\t};\r\n\r\n})();\r\n\r\n","(() => {\r\n\tconst orderrows = document.querySelectorAll('.dashboard-table__row--clickable');\r\n\r\n\torderrows.forEach(row => {\r\n\t\trow.addEventListener('click', function(e) {\r\n\t\t\tlet target = e.target;\r\n\r\n\t\t\twhile (target && !target.classList.contains('dashboard-table__row--clickable')) {\r\n\t\t\t\ttarget = target.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(document.querySelector(`#${target.getAttribute('aria-controls')}`).hasAttribute('hidden')) {\r\n\t\t\t\torderrows.forEach(openedRow => {\r\n\t\t\t\t\tdocument.querySelector(`#${openedRow.getAttribute('aria-controls')}`).setAttribute('hidden', true);\r\n\t\t\t\t\topenedRow.classList.remove('dashboard-table__row--opened');\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tdocument.querySelector(`#${target.getAttribute('aria-controls')}`).toggleAttribute('hidden');\r\n\t\t\ttarget.classList.toggle('dashboard-table__row--opened');\r\n\t\t});\r\n\t});\r\n\r\n})();","(() => {\r\n\tconst ele = document.querySelector('.productcompare');\r\n\tlet pos = { top: 0, left: 0, x: 0, y: 0 };\r\n\r\n\tconst mouseDownHandler = function(e) {\r\n\t\tele.style.cursor = 'grabbing';\r\n\t\tele.style.userSelect = 'none';\r\n\r\n\t\tpos = {\r\n\t\t\t// Current scroll\r\n\t\t\tleft: ele.scrollLeft,\r\n\t\t\ttop: ele.scrollTop,\r\n\t\t\t// Current mouse position\r\n\t\t\tx: e.clientX,\r\n\t\t\ty: e.clientY,\r\n\t\t};\r\n\t\r\n\t\tdocument.addEventListener('mousemove', mouseMoveHandler);\r\n\t\tdocument.addEventListener('mouseup', mouseUpHandler);\r\n\t};\r\n\r\n\tconst mouseMoveHandler = function(e) {\r\n\t\t// Calculate mouse movement\r\n\t\tconst dx = e.clientX - pos.x;\r\n\t\t// Scroll element\r\n\t\tele.scrollLeft = pos.left - dx;\r\n\t};\r\n\r\n\tconst mouseUpHandler = function() {\r\n\t\tele.style.cursor = 'grab';\r\n\t\tele.style.removeProperty('user-select');\r\n\r\n\t\tdocument.removeEventListener('mousemove', mouseMoveHandler);\r\n\t\tdocument.removeEventListener('mouseup', mouseUpHandler);\r\n\t};\r\n\r\n\tif(ele) {\r\n\t\tele.addEventListener('mousedown', mouseDownHandler);\r\n\t}\r\n\r\n})();","import axios from 'axios';\r\nimport { openCanvasMenu, closeCanvasMenu } from './offcanvasmenu';\r\n\r\naxios.defaults.headers.common['RequestVerificationToken'] = window.globals.Token;\r\naxios.defaults.headers.common['Ref_PageID'] = window.globals.pageId;\r\n\r\n(() => {\r\n\tconst favoriteListItems = document.querySelectorAll('.favorites__list-item');\r\n\tconst wishlistButtons = document.querySelectorAll('.po-block__action-btn--wishlist');\r\n\tconst offcanvasmenu = document.querySelector('.offcanvas[name=\"favoritelist\"]');\r\n\tconst listsAmount = offcanvasmenu ? offcanvasmenu.dataset.listcount : 0;\r\n\r\n\tconst addProductToFavoriteListById = async listItem => {\r\n\t\tconst productId = offcanvasmenu.dataset.prodid;\r\n\t\tconst variantId = offcanvasmenu.dataset.variantid;\r\n\t\tconst product = JSON.parse(decodeURIComponent(offcanvasmenu.dataset.product));\r\n\t\tconst isCustom = offcanvasmenu.dataset.custom === 'true';\r\n\t\tconst listId = listItem.dataset.listid;\r\n\r\n\t\tlet apiUrl = `api/FavoriteLists/list/${listId}/${productId}`;\r\n\t\tif(variantId) {\r\n\t\t\tapiUrl += `/${variantId}/`;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tawait axios.post(apiUrl).then(() => {\r\n\t\t\t\tconst prodObj = {\r\n\t\t\t\t\tproductId: productId,\r\n\t\t\t\t\tvariantId: variantId,\r\n\t\t\t\t\tlistId: listId,\r\n\t\t\t\t\tisAdded: true\r\n\t\t\t\t};\r\n\t\t\t\twindow.EventBus.$emit('set-favoritestate', prodObj);\r\n\t\t\t\ttoggleFavoriteButtonIcon(prodObj);\r\n\r\n\t\t\t\tif(window.dataLayer) {\r\n\t\t\t\t\tconst gtmListId = isCustom ? product.listid : 'product_overview';\r\n\t\t\t\t\tconst gtmListName = isCustom ? product.listname : 'Product overview';\r\n\t\t\t\t\tgtmEcommerceEvents.addToWishlist(product, gtmListId, gtmListName, isCustom);\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t} catch(err) {\r\n\t\t\tconsole.log(err);\r\n\t\t} finally {\r\n\t\t\tcloseCanvasMenu();\r\n\t\t}\r\n\t};\r\n\r\n\tconst addProductToFavoriteList = async product => {\r\n\t\tlet apiUrl = `api/FavoriteLists/product/${product.id}`;\r\n\t\tif(product.variantid) {\r\n\t\t\tapiUrl += `/${product.variantid}/`;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tawait axios.post(apiUrl).then(({ data }) => {\r\n\t\t\t\tconst prodObj = {\r\n\t\t\t\t\tproductId: product.id,\r\n\t\t\t\t\tvariantId: product.variantid,\r\n\t\t\t\t\tlistId: data.listId,\r\n\t\t\t\t\tisAdded: data.added\r\n\t\t\t\t};\r\n\t\t\t\twindow.EventBus.$emit('set-favoritestate', prodObj);\r\n\t\t\t\ttoggleFavoriteButtonIcon(prodObj);\r\n\r\n\t\t\t\tif(data.added) {\r\n\t\t\t\t\tif(window.dataLayer) {\r\n\t\t\t\t\t\tgtmEcommerceEvents.addToWishlist(product, product.listid, product.listname, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} catch(err) {\r\n\t\t\tconsole.log(err);\r\n\t\t} finally {\r\n\t\t\tcloseCanvasMenu();\r\n\t\t}\r\n\t};\r\n\r\n\tconst addToWishlist = e => {\r\n\t\tconst el = e.target;\r\n\r\n\t\tconst product = {\r\n\t\t\tid: el.dataset.productid,\r\n\t\t\tname: el.dataset.name,\r\n\t\t\tnumber: el.dataset.number,\r\n\t\t\tdiscount: el.dataset.gtmdiscount,\r\n\t\t\tposition: el.dataset.position,\r\n\t\t\tmanufacturer: el.dataset.brand,\r\n\t\t\tgroupname: el.dataset.category,\r\n\t\t\tlistid: el.dataset.listid,\r\n\t\t\tlistname: el.dataset.listname,\r\n\t\t\tvariantid: el.dataset.variantid,\r\n\t\t\tprice: el.dataset.gtmprice,\r\n\t\t\tvalue: el.dataset.gtmvalue,\r\n\t\t\tcurrencycode: el.dataset.currencycode\r\n\t\t};\r\n\r\n\t\tif(listsAmount <= 1) {\r\n\t\t\taddProductToFavoriteList(product);\r\n\t\t} else {\r\n\t\t\toffcanvasmenu.dataset.prodid = product.id;\r\n\t\t\toffcanvasmenu.dataset.variantid = product.variantid;\r\n\t\t\toffcanvasmenu.dataset.product = encodeURIComponent(JSON.stringify(product));\r\n\t\t\toffcanvasmenu.dataset.custom = true;\r\n\t\t\t\r\n\t\t\topenCanvasMenu(el.dataset.offcanvasTarget);\r\n\t\t}\r\n\t};\r\n\r\n\tconst toggleFavoriteButtonIcon = ({ productId, variantId, isAdded }) => {\r\n\t\tif(!variantId) {\r\n\t\t\tvariantId = '';\r\n\t\t}\r\n\r\n\t\tconst targets = document.querySelectorAll(`[data-productid=\"${productId}\"][data-variantid=\"${variantId}\"]`);\r\n\r\n\t\tif(targets.length) {\r\n\t\t\ttargets.forEach(target => {\r\n\t\t\t\tconst icon = target.querySelector('.fa-heart');\r\n\t\t\t\tif(isAdded) {\r\n\t\t\t\t\ttarget.classList.add('po-block__action-btn--visible');\r\n\t\t\t\t\ticon.classList.remove('far');\r\n\t\t\t\t\ticon.classList.add('fas');\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget.classList.remove('po-block__action-btn--visible');\r\n\t\t\t\t\ticon.classList.remove('fas');\r\n\t\t\t\t\ticon.classList.add('far');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t// Off Canvas menu listeners\r\n\tfavoriteListItems.forEach(item => {\r\n\t\titem.addEventListener('click', () => {\r\n\t\t\taddProductToFavoriteListById(item);\r\n\t\t});\r\n\t});\r\n\r\n\t// Product Block action listeners\r\n\twishlistButtons.forEach(btn => {\r\n\t\tbtn.addEventListener('click', e => {\r\n\t\t\taddToWishlist(e);\r\n\t\t});\r\n\t});\r\n\r\n})();","import { setCookie, getCookie } from './../helpers/cookies'; \r\n\r\n(() => {\r\n\tconst impersonationModal = document.querySelector('.impersonation');\r\n\tconst startImpersonationForms = document.querySelectorAll('form[name=\"startImpersonation\"]');\r\n\r\n\tconst openModal = () => {\r\n\t\timpersonationModal.classList.add('impersonation--opened');\r\n\t\tsetCookie('State_ImpersonateModal', 'true');\r\n\t};\r\n\r\n\tconst closeModal = () => {\r\n\t\timpersonationModal.classList.remove('impersonation--opened');\r\n\t\tsetCookie('State_ImpersonateModal', 'false');\r\n\t};\r\n\r\n\t\r\n\tif(impersonationModal) {\r\n\t\tconst impersonationToggle = impersonationModal.querySelector('.impersonation__header');\r\n\t\tconst isOpened = getCookie('State_ImpersonateModal') === 'true';\r\n\r\n\t\tif(isOpened) {\r\n\t\t\topenModal();\r\n\t\t}\r\n\r\n\t\timpersonationToggle.addEventListener('click', () => {\r\n\t\t\tif(!impersonationModal.classList.contains('impersonation--opened')) {\r\n\t\t\t\topenModal();\r\n\t\t\t} else {\r\n\t\t\t\tcloseModal();\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t\tstartImpersonationForms.forEach(form => {\r\n\t\t\tform.addEventListener('submit', () => {\r\n\t\t\t\tsetCookie('State_ImpersonateModal', 'true');\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n})();\r\n","// Source: https://github.com/paulirish/lite-youtube-embed\r\n\r\n/**\r\n * A lightweight youtube embed. Still should feel the same to the user, just MUCH faster to initialize and paint.\r\n *\r\n * Thx to these as the inspiration\r\n * https://storage.googleapis.com/amp-vs-non-amp/youtube-lazy.html\r\n * https://autoplay-youtube-player.glitch.me/\r\n *\r\n * Once built it, I also found these:\r\n * https://github.com/ampproject/amphtml/blob/master/extensions/amp-youtube (👍👍)\r\n * https://github.com/Daugilas/lazyYT\r\n * https://github.com/vb/lazyframe\r\n */\r\nclass LiteYTEmbed extends HTMLElement {\r\n\tconnectedCallback() {\r\n\t\tthis.videoId = this.getAttribute('videoid');\r\n\r\n\t\tlet playBtnEl = this.querySelector('.lty-playbtn');\r\n\t\t// A label for the button takes priority over a [playlabel] attribute on the custom-element\r\n\t\tthis.playLabel = (playBtnEl && playBtnEl.textContent.trim()) || this.getAttribute('playlabel') || 'Play';\r\n\r\n\t\t/**\r\n\t\t * Lo, the youtube placeholder image! (aka the thumbnail, poster image, etc)\r\n\t\t *\r\n\t\t * See https://github.com/paulirish/lite-youtube-embed/blob/master/youtube-thumbnail-urls.md\r\n\t\t *\r\n\t\t * TODO: Do the sddefault->hqdefault fallback\r\n\t\t * - When doing this, apply referrerpolicy (https://github.com/ampproject/amphtml/pull/3940)\r\n\t\t * TODO: Consider using webp if supported, falling back to jpg\r\n\t\t */\r\n\t\tif (!this.style.backgroundImage) {\r\n\t\t\tthis.posterUrl = `https://i.ytimg.com/vi_webp/${this.videoId}/hqdefault.webp`;\r\n\t\t\t// Warm the connection for the poster image\r\n\t\t\tLiteYTEmbed.addPrefetch('preload', this.posterUrl, 'image');\r\n\r\n\t\t\tthis.style.backgroundImage = `url(\"${this.posterUrl}\")`;\r\n\t\t}\r\n\r\n\t\t// Set up play button, and its visually hidden label\r\n\t\tif (!playBtnEl) {\r\n\t\t\tplayBtnEl = document.createElement('button');\r\n\t\t\tplayBtnEl.type = 'button';\r\n\t\t\tplayBtnEl.classList.add('lty-playbtn');\r\n\t\t\tthis.append(playBtnEl);\r\n\t\t}\r\n\t\tif (!playBtnEl.textContent) {\r\n\t\t\tconst playBtnLabelEl = document.createElement('span');\r\n\t\t\tplayBtnLabelEl.className = 'lyt-visually-hidden';\r\n\t\t\tplayBtnLabelEl.textContent = this.playLabel;\r\n\t\t\tplayBtnEl.append(playBtnLabelEl);\r\n\t\t}\r\n\r\n\t\t// On hover (or tap), warm up the TCP connections we're (likely) about to use.\r\n\t\tthis.addEventListener('pointerover', LiteYTEmbed.warmConnections, { once: true });\r\n\r\n\t\t// Once the user clicks, add the real iframe and drop our play button\r\n\t\t// TODO: In the future we could be like amp-youtube and silently swap in the iframe during idle time\r\n\t\t// We'd want to only do this for in-viewport or near-viewport ones: https://github.com/ampproject/amphtml/pull/5003\r\n\t\tthis.addEventListener('click', () => this.addIframe());\r\n\t}\r\n\r\n\t// // TODO: Support the the user changing the [videoid] attribute\r\n\t// attributeChangedCallback() {\r\n\t// }\r\n\r\n\t/**\r\n\t * Add a to the head\r\n\t */\r\n\tstatic addPrefetch(kind, url, as) {\r\n\t\tconst linkEl = document.createElement('link');\r\n\t\tlinkEl.rel = kind;\r\n\t\tlinkEl.href = url;\r\n\t\tif (as) {\r\n\t\t\tlinkEl.as = as;\r\n\t\t}\r\n\t\tdocument.head.append(linkEl);\r\n\t}\r\n\r\n\t/**\r\n\t * Begin pre-connecting to warm up the iframe load\r\n\t * Since the embed's network requests load within its iframe,\r\n\t * preload/prefetch'ing them outside the iframe will only cause double-downloads.\r\n\t * So, the best we can do is warm up a few connections to origins that are in the critical path.\r\n\t *\r\n\t * Maybe `` would work, but it's unsupported: http://crbug.com/593267\r\n\t * But TBH, I don't think it'll happen soon with Site Isolation and split caches adding serious complexity.\r\n\t */\r\n\tstatic warmConnections() {\r\n\t\tif (LiteYTEmbed.preconnected) return;\r\n\r\n\t\t// The iframe document and most of its subresources come right off youtube.com\r\n\t\tLiteYTEmbed.addPrefetch('preconnect', 'https://www.youtube-nocookie.com');\r\n\t\t// The botguard script is fetched off from google.com\r\n\t\tLiteYTEmbed.addPrefetch('preconnect', 'https://www.google.com');\r\n\r\n\t\t// Not certain if these ad related domains are in the critical path. Could verify with domain-specific throttling.\r\n\t\tLiteYTEmbed.addPrefetch('preconnect', 'https://googleads.g.doubleclick.net');\r\n\t\tLiteYTEmbed.addPrefetch('preconnect', 'https://static.doubleclick.net');\r\n\r\n\t\tLiteYTEmbed.preconnected = true;\r\n\t}\r\n\r\n\taddIframe() {\r\n\t\tconst params = new URLSearchParams(this.getAttribute('params') || []);\r\n\t\tparams.append('autoplay', '1');\r\n\r\n\t\tconst iframeEl = document.createElement('iframe');\r\n\t\tiframeEl.width = 560;\r\n\t\tiframeEl.height = 315;\r\n\t\t// No encoding necessary as [title] is safe. https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html#:~:text=Safe%20HTML%20Attributes%20include\r\n\t\tiframeEl.title = this.playLabel;\r\n\t\tiframeEl.allow = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture';\r\n\t\tiframeEl.allowFullscreen = true;\r\n\t\t// AFAIK, the encoding here isn't necessary for XSS, but we'll do it only because this is a URL\r\n\t\t// https://stackoverflow.com/q/64959723/89484\r\n\t\tiframeEl.src = `https://www.youtube-nocookie.com/embed/${encodeURIComponent(this.videoId)}?${params.toString()}`;\r\n\t\tthis.append(iframeEl);\r\n\r\n\t\tthis.classList.add('lyt-activated');\r\n\r\n\t\t// Set focus for a11y\r\n\t\tthis.querySelector('iframe').focus();\r\n\t}\r\n}\r\n// Register custom element\r\ncustomElements.define('lite-youtube', LiteYTEmbed);\r\n","(() => {\r\n\tconst offcanvasCloseBtns = document.querySelectorAll('.offcanvas__close');\r\n\tconst offcanvasBackdrops = document.querySelectorAll('.offcanvas__backdrop');\r\n\tconst offcanvasTriggers = document.querySelectorAll('.toggle-of-canvas-menu');\r\n\r\n\toffcanvasTriggers.forEach(trigger => {\r\n\t\ttrigger.addEventListener('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\tconst target = e.target.dataset.offcanvasTarget;\r\n\t\t\tif(target) {\r\n\t\t\t\topenCanvasMenu(target);\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\toffcanvasBackdrops.forEach(backdrop => {\r\n\t\tbackdrop.addEventListener('click', function() {\r\n\t\t\tcloseCanvasMenu();\t\r\n\t\t});\r\n\t});\r\n\r\n\toffcanvasCloseBtns.forEach(btn => {\r\n\t\tbtn.addEventListener('click', function() {\r\n\t\t\tcloseCanvasMenu();\t\r\n\t\t});\r\n\t});\r\n\t\r\n})();\r\n\r\nconst openCanvasMenu = target => {\r\n\tconst offcanvas = document.querySelector(`.offcanvas[name=\"${target}\"]`);\r\n\tconst backdrop = document.querySelector(`.offcanvas__backdrop[name=\"${target}\"]`);\r\n\tconst scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\r\n\tdocument.body.style.setProperty('--scrollbar-width', `${scrollbarWidth}px`);\r\n\tdocument.body.classList.add('offcanvas-active');\r\n\tbackdrop.classList.add('offcanvas__backdrop--active');\r\n\toffcanvas.classList.add('offcanvas--open');\r\n};\r\n\r\nconst closeCanvasMenu = () => {\r\n\tconst offcanvases = document.querySelectorAll('.offcanvas');\r\n\tconst backdrops = document.querySelectorAll('.offcanvas__backdrop');\r\n\tdocument.body.style.setProperty('--scrollbar-width', '0');\r\n\tdocument.body.classList.remove('offcanvas-active');\r\n\toffcanvases.forEach(el => el.classList.remove('offcanvas--open'));\r\n\tbackdrops.forEach(el => el.classList.remove('offcanvas__backdrop--active'));\r\n};\r\n\r\nexport {\r\n\topenCanvasMenu,\r\n\tcloseCanvasMenu\r\n};","(() => {\r\n\tconst newsFilters = document.querySelectorAll('.blog-filters__select');\r\n\r\n\tif (newsFilters.length > 0) {\r\n\t\tnewsFilters.forEach(filter => {\r\n\t\t\tfilter.addEventListener('change', e => {\r\n\r\n\t\t\t\tconst { name, value } = e.target;\r\n\t\t\t\tconst urlParams = new URLSearchParams(window.location.search);\r\n\r\n\t\t\t\tif (urlParams.has(name)) {\r\n\t\t\t\t\tif (value == '') {\r\n\t\t\t\t\t\turlParams.delete(name);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\turlParams.set(name, value);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (value != '') {\r\n\t\t\t\t\turlParams.append(name, value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst url = window.location.pathname;\r\n\t\t\t\tconst parameterString = urlParams != '' ? `?${urlParams}` : '';\r\n\t\t\t\tconst combinedUrl = `${url}${parameterString}`;\r\n\r\n\t\t\t\twindow.location.href = combinedUrl;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n})();\r\n","(() => {\r\n\t// TODO: Create global helpers for toggling classes\r\n\tfunction removeActiveClasses(allEls) {\r\n\t\tallEls.forEach(el => {\r\n\t\t\tlet activeClass = `${el.classList[0]}--active`;\r\n\r\n\t\t\tif (el.classList.contains(activeClass)) {\r\n\t\t\t\tel.classList.remove(activeClass);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\tfunction toggleClasses(nodeArr) {\r\n\t\tnodeArr.forEach(node => {\r\n\t\t\t// assumes that the first class is the class which has an active modifier\r\n\t\t\tlet activeClass = `${node.classList[0]}--active`;\r\n\r\n\t\t\tif (!node.classList.contains(activeClass)) {\r\n\t\t\t\tnode.classList.add(activeClass);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tconst tabs = [...document.querySelectorAll('.productdetails__tab, .pdp-tabnavigation__item')];\r\n\tconst tabsContent = [...document.querySelectorAll('.productdetails__content, .pdp-tabcontent__item')];\r\n\r\n\ttabs.forEach(tab => {\r\n\t\ttab.addEventListener('click', () => {\r\n\t\t\tlet datasetVal = tab.dataset.tab;\r\n\t\t\tif(!datasetVal) return;\r\n\r\n\t\t\tremoveActiveClasses([...tabs, ...tabsContent]);\r\n\r\n\t\t\tif (datasetVal) {\r\n\t\t\t\ttabsContent.forEach(content => {\r\n\t\t\t\t\tif (datasetVal == content.dataset.tabContent) {\r\n\t\t\t\t\t\ttoggleClasses([tab, content]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tconst addtocartBtns = document.querySelectorAll('.js-add-to-cart');\r\n\tif (addtocartBtns.length > 0) {\r\n\t\taddtocartBtns.forEach(btn => {\r\n\t\t\tconst quantity = btn.dataset.quantity || 1;\r\n\t\t\tbtn.addEventListener('click', e => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t// Replaced store.dispatch with eventBus because of reactivity conflicts.\r\n\t\t\t\twindow.EventBus.$emit('add-product', {\r\n\t\t\t\t\tevent: e,\r\n\t\t\t\t\tproduct: {\r\n\t\t\t\t\t\tproductId: btn.dataset.productid, \r\n\t\t\t\t\t\tvariantId: btn.dataset.variantid, \r\n\t\t\t\t\t\tquantity: quantity\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tconst showMoreElements = document.querySelectorAll('.pdp-specifications-info__wrapper');\r\n\r\n\tif(showMoreElements.length > 0) {\r\n\t\tshowMoreElements.forEach(element => {\r\n\t\t\tconst content = element.querySelector('.pdp-specifications-info__body');\r\n\t\t\tconst bottomGradient = element.querySelector('.pdp-specifications-info__showmoregradient');\r\n\t\t\tconst showMoreWrapper = element.querySelector('.pdp-specifications-info__showmore');\r\n\t\t\tconst showMoreButton = element.querySelector('.pdp-button--showmore');\r\n\t\t\tconst showLessButton = element.querySelector('.pdp-button--showless');\r\n\t\t\tlet originalHeight = content.offsetHeight;\r\n\t\t\tlet newHeight = 350;\r\n\r\n\t\t\tdocument.fonts.ready.then(function () {\r\n\t\t\t\toriginalHeight = content.offsetHeight;\r\n\t\t\t\t\r\n\t\t\t\tif (newHeight >= originalHeight) {\r\n\t\t\t\t\tnewHeight = originalHeight;\r\n\t\t\t\t\tshowMoreWrapper.style.display = 'none';\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tcontent.style.maxHeight = newHeight + 'px';\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tshowMoreButton.addEventListener('click', function () {\r\n\t\t\t\tshowMoreWrapper.classList.add('pdp-specifications-info__showmore--active');\r\n\t\t\t\tcontent.style.maxHeight = originalHeight + 'px';\r\n\t\t\t\tshowMoreButton.style.display = 'none';\r\n\t\t\t\tshowLessButton.style.display = 'flex';\r\n\t\t\t\tbottomGradient.style.opacity = '0';\r\n\t\t\t});\r\n\r\n\t\t\tshowLessButton.addEventListener('click', function () {\r\n\t\t\t\tshowMoreWrapper.classList.remove('pdp-specifications-info__showmore--active');\r\n\t\t\t\tcontent.style.maxHeight = newHeight + 'px';\r\n\t\t\t\tshowMoreButton.style.display = 'flex';\r\n\t\t\t\tshowLessButton.style.display = 'none';\r\n\t\t\t\tbottomGradient.style.opacity = '1';\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tconst toggles = document.querySelectorAll('.product-specifications__toggle');\r\n\t\r\n\tconst openTab = e => {\r\n\t\tconst target = e.target;\r\n\t\tconst category = target.closest('.product-specifications__category');\r\n\t\tconst specificationsList = category.querySelector(`#${target.getAttribute('aria-controls')}`);\r\n\r\n\t\tif(target.getAttribute('aria-selected') === 'true') {\r\n\t\t\ttarget.setAttribute('aria-selected', false);\r\n\t\t\tspecificationsList.style.maxHeight = 0;\r\n\t\t} else {\r\n\t\t\ttarget.setAttribute('aria-selected', true);\r\n\t\t\tspecificationsList.style.maxHeight = specificationsList.scrollHeight + 'px';\r\n\t\t}\r\n\t};\r\n\r\n\ttoggles.forEach(toggle => {\r\n\t\ttoggle.addEventListener('click', openTab);\r\n\t});\r\n\r\n\twindow.addEventListener('load', () => {\r\n\t\tconst specificationLists = document.querySelectorAll('.product-specifications__list');\r\n\r\n\t\tspecificationLists.forEach(category => {\r\n\t\t\tconst toggleButton = document.querySelector(`[aria-controls=\"${category.id}\"]`);\r\n\t\t\t\r\n\t\t\tif(toggleButton) {\r\n\t\t\t\tconst isSelected = toggleButton.getAttribute('aria-selected') === 'true';\r\n\t\t\t\t\r\n\t\t\t\tif(isSelected) {\r\n\t\t\t\t\tcategory.style.maxHeight = category.scrollHeight + 'px';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcategory.style.maxHeight = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n})();\r\n","(() => {\r\n\tconst variantGroup = document.querySelectorAll('.product-variants__block');\r\n\tvariantGroup.forEach(group => {\r\n\t\tconst button = group.querySelector('.product-variants__toggle');\r\n\t\tconst wrapper = group.querySelector('.product-variants__dropdown-options-wrapper');\r\n\t\tconst variants = group.querySelectorAll('.product-variants__btn--dropdown');\r\n\t\tconst selectedVariant = group.querySelector('.product-variants__toggle span');\r\n\r\n\t\tif (selectedVariant != null) {\r\n\t\t\tbutton.addEventListener('click', () => {\r\n\t\t\t\tif(wrapper.classList.contains('product-variants__dropdown-options-wrapper--opened')) {\r\n\t\t\t\t\twrapper.classList.remove('product-variants__dropdown-options-wrapper--opened');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst openedVariantSelectors = document.querySelectorAll('.product-variants__dropdown-options-wrapper--opened');\r\n\t\t\t\t\topenedVariantSelectors.forEach(selector => selector.classList.remove('product-variants__dropdown-options-wrapper--opened'));\r\n\t\t\t\t\twrapper.classList.add('product-variants__dropdown-options-wrapper--opened');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvariants.forEach(variant => {\r\n\t\t\t\tif (variant.classList.contains('product-variants__btn--checked')) {\r\n\t\t\t\t\tselectedVariant.innerHTML = variant.innerHTML;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvariant.addEventListener('click', () => {\r\n\t\t\t\t\twrapper.classList.remove('product-variants__dropdown-options-wrapper--opened');\r\n\t\t\t\t\tselectedVariant.innerHTML = variant.innerHTML;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\tconst selectedVariantOption = event => {\r\n\t\tconst clickedOption = event.target;\r\n\t\t\r\n\t\tif (!clickedOption.classList.contains('product-variants__btn--disabled')) {\r\n\t\t\tconst clickedOptionId = clickedOption.getAttribute('data-variant-id');\r\n\t\t\tconst currentVariantsBlock = clickedOption.closest('.js-variants');\r\n\t\t\tconst selectionsList = currentVariantsBlock.getAttribute('data-variant-selections') ? currentVariantsBlock.getAttribute('data-variant-selections').split(',') : [];\r\n\t\t\tconst allOptions = currentVariantsBlock.querySelectorAll('.js-variant-option');\r\n\t\t\tconst currentToggle = clickedOption.closest('.product-variants__block').querySelector('.product-variants__toggle span');\r\n\r\n\t\t\tif (!clickedOption.classList.contains('product-variants__btn--checked')) {\r\n\t\t\t\tselectionsList.push(clickedOptionId);\r\n\r\n\t\t\t\tconst selectionGroup = currentVariantsBlock.querySelector(`[data-variant-id='${clickedOptionId}']`).getAttribute('data-variant-group');\r\n\t\t\t\tallOptions.forEach(optionItem => {\r\n\t\t\t\t\tconst availableOptionId = optionItem.getAttribute('data-variant-id');\r\n\t\t\t\t\tif (availableOptionId != clickedOptionId) {\r\n\t\t\t\t\t\tif (optionItem.getAttribute('data-variant-group') == selectionGroup) {\r\n\t\t\t\t\t\t\tremoveItemFromArray(selectionsList, availableOptionId);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tremoveItemFromArray(selectionsList, clickedOptionId);\r\n\t\t\t\tcurrentToggle.innerHTML = currentToggle.dataset.original;\r\n\r\n\t\t\t}\r\n\t\t\tcurrentVariantsBlock.setAttribute('data-variant-selections', selectionsList);\r\n\t\t\tcheckIfVariantCompleted(clickedOption.closest('.js-variants'));\r\n\t\t}\r\n\t};\r\n\r\n\tconst checkIfVariantCompleted = (currentVariantsBlock, onPageLoad = false) => {\r\n\t\tconst reg = new RegExp('\\'', 'g');\r\n\t\tconst selectedOptions = currentVariantsBlock.getAttribute('data-variant-selections') ? currentVariantsBlock.getAttribute('data-variant-selections').split(',') : [];\r\n\t\tconst allOptions = currentVariantsBlock.querySelectorAll('.js-variant-option'); \r\n\t\tconst totalVariantgroups = currentVariantsBlock.getAttribute('data-total-variant-groups');\r\n\t\tconst variantCombinations = JSON.parse(currentVariantsBlock.getAttribute('data-combinations').replace(reg, '\\\"'));\r\n\r\n\t\tcleanVariantOptions(allOptions);\r\n\r\n\t\tif (selectedOptions.length > 0) {\r\n\t\t\tconst variantOptionsByGroup = JSON.parse(currentVariantsBlock.getAttribute('data-variants').replace(reg, '\\\"'));\r\n\r\n\t\t\tif (totalVariantgroups > 1) {\r\n\t\t\t\tconst optionsToHide = getVariantOptionsToHide(variantOptionsByGroup, variantCombinations, selectedOptions);\r\n\t\t\t\toptionsToHide.forEach(optionItem => {\r\n\t\t\t\t\tconst optionElement = currentVariantsBlock.querySelector(`[data-variant-id='${optionItem}']`);\r\n\t\t\t\t\texcludeVariantOption(optionElement);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tselectedOptions.forEach(selection => {\r\n\t\t\tsetVariantSelection(currentVariantsBlock.querySelector(`[data-variant-id='${selection}']`));\r\n\t\t});\r\n\t\t\r\n\t\tif((selectedOptions.length == totalVariantgroups)) {\r\n\t\t\tconst match = variantCombinations.find(arr => selectedOptions.every(opt => arr.includes(opt))) || null;\r\n\t\t\tif(match) {\r\n\t\t\t\tvariantSelectionComplete(currentVariantsBlock, onPageLoad, match);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvariantSelectionNotComplete(currentVariantsBlock);\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tconst cleanVariantOptions = allOptions => {\r\n\t\tallOptions.forEach(option => {\r\n\t\t\toption.disabled = false;\r\n\t\t\toption.classList.remove('product-variants__btn--disabled');\r\n\t\t\toption.classList.remove('product-variants__btn--checked');\r\n\t\t});\r\n\t};\r\n\r\n\tconst setVariantSelection = selectedOption => {\r\n\t\tselectedOption.classList.add('product-variants__btn--checked');\r\n\t};\r\n\r\n\tconst excludeVariantOption = option => {\r\n\t\toption.disabled = true;\r\n\t\toption.classList.add('product-variants__btn--disabled');\r\n\t};\r\n\r\n\tconst variantSelectionNotComplete = currentVariantsBlock => {\r\n\t\tconst productId = currentVariantsBlock.getAttribute('data-product-id');\r\n\t\tconst cartButtons = document.querySelectorAll(`.productdetails__add-to-cart[data-prodid=\"${productId}\"]`);\r\n\t\tconst helpText = document.querySelector('.product-variants__feedback');\r\n\r\n\t\tcartButtons.forEach(button => {\r\n\t\t\tbutton.classList.add('disabled');\r\n\t\t});\r\n\r\n\t\tif (helpText) {\r\n\t\t\thelpText.classList.remove('hidden');\r\n\t\t}\r\n\t};\r\n\r\n\tconst variantSelectionComplete = (currentVariantsBlock, onPageLoad, match) => {\r\n\t\tconst productId = currentVariantsBlock.getAttribute('data-product-id');\r\n\t\tconst cartButtons = document.querySelectorAll(`.productdetails__add-to-cart[data-prodid=\"${productId}\"]`);\r\n\t\tconst helpText = document.querySelector('.product-variants__feedback');\r\n\t\tlet selectionsList = currentVariantsBlock.getAttribute('data-variant-selections') ? currentVariantsBlock.getAttribute('data-variant-selections').split(',') : [];\r\n\t\tselectionsList = variantSelectionListSort(currentVariantsBlock);\r\n\t\tlet currentProduct = currentVariantsBlock.getAttribute('data-current-page-variant').split(',');\r\n\t\t\r\n\t\tif (!onPageLoad) {\r\n\t\t\tif(selectionsList.toString() !== currentProduct.toString()) {\r\n\t\t\t\tconst pageId = currentVariantsBlock.getAttribute('data-page-id');\r\n\t\t\t\tconst groupId = currentVariantsBlock.getAttribute('data-group-id');\r\n\t\t\t\tconst cleanLink = '/Default.aspx?ID=' + pageId + '&GroupID=' + groupId + '&ProductID=' + productId + '&VariantID=' + match.join('.');\r\n\r\n\t\t\t\twindow.location = cleanLink;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (selectionsList.toString() === currentProduct.toString()) {\r\n\t\t\tcartButtons.forEach(function (button) {\r\n\t\t\t\tbutton.classList.remove('disabled');\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif (helpText) {\r\n\t\t\t\thelpText.classList.add('hidden');\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst variantSelectionListSort = variantsContainer => {\r\n\t\tconst selectionsList = variantsContainer.getAttribute('data-variant-selections') ? variantsContainer.getAttribute('data-variant-selections').split(',') : [];\r\n\t\tlet sortedSelectionsList = [];\r\n\t\tconst allOptions = variantsContainer.querySelectorAll('.js-variant-option');\r\n\r\n\t\tallOptions.forEach(optionItem => {\r\n\t\t\tconst optionId = optionItem.getAttribute('data-variant-id');\r\n\t\t\tselectionsList.forEach(selectionId => {\r\n\t\t\t\tif(optionId === selectionId) {\r\n\t\t\t\t\tsortedSelectionsList.push(selectionId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn sortedSelectionsList;\r\n\t};\r\n\r\n\tconst getVariantOptionsToHide = (variantOptionsByGroup, variantCombinations, selectedOptions) => {\r\n\t\tconst selectedOptionsCount = selectedOptions.length;\r\n\t\tlet optionsToHide = [];\r\n\r\n\t\tvariantOptionsByGroup.forEach(groupIndex => {\r\n\t\t\tconst groupSelectedOption = findSelectedGroupOption(selectedOptionsCount, selectedOptions, groupIndex);\r\n\t\t\tvariantCombinations.forEach(combinationIndex => {\r\n\t\t\t\tconst showOptionsOfCombination = isValidVariantSelection(combinationIndex, selectedOptionsCount, selectedOptions, groupSelectedOption);\r\n\t\t\t\tif (showOptionsOfCombination) {\r\n\t\t\t\t\tshowVariantCombinationOptions(combinationIndex, groupIndex);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\toptionsToHide = optionsToHide.concat(groupIndex);\r\n\t\t});\r\n\r\n\t\treturn optionsToHide;\r\n\t};\r\n\r\n\tconst isValidVariantSelection = (combinationOptions, selectedCount, selectedOptions, groupSelectedOption) => {\r\n\t\tlet count = 0;\r\n\r\n\t\tfor (let selectionIndex = 0; selectionIndex < selectedCount; selectionIndex++) {\r\n\t\t\tlet selectedOption = selectedOptions[selectionIndex];\r\n\t\t\tif (selectedOption == groupSelectedOption) {\r\n\t\t\t\tcount++;\r\n\t\t\t} else {\r\n\t\t\t\tcombinationOptions.forEach(optionIndex => {\r\n\t\t\t\t\tif(selectedOption == optionIndex) {\r\n\t\t\t\t\t\tcount++;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn (selectedCount == count);\r\n\t};\r\n\r\n\tconst findSelectedGroupOption = (selectedCount, selectedOptions, groupOptions) => {\r\n\t\tlet selectedGroupOption = '';\r\n\r\n\t\tfor (let selectionIndex = 0; selectionIndex < selectedCount; selectionIndex++) {\r\n\t\t\tconst selectedOption = selectedOptions[selectionIndex];\r\n\t\t\tgroupOptions.forEach(variantIndex => {\r\n\t\t\t\tif(selectedOption == variantIndex) {\r\n\t\t\t\t\tselectedGroupOption = selectedOption;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn selectedGroupOption;\r\n\t};\r\n\r\n\tconst showVariantCombinationOptions = (combinationOptions, optionsToHideForThisGroup) => {\r\n\t\tcombinationOptions.forEach(optionIndex => removeItemFromArray(optionsToHideForThisGroup, optionIndex));\r\n\t};\r\n\r\n\tconst removeItemFromArray = (array, item) => {\r\n\t\tfor (var i in array) {\r\n\t\t\tif (array[i] == item) {\r\n\t\t\t\tarray.splice(i, 1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\t// Use load event listener because otherwise it won't recognize the Vue injected 'add-to-cart' buttons\r\n\twindow.addEventListener('load', () => {\r\n\t\tconst variantBlocks = document.querySelectorAll('.js-variants');\r\n\t\tif (variantBlocks.length) {\r\n\t\t\tvariantBlocks.forEach(variantBlock => {\r\n\t\t\t\tconst variantButtons = document.querySelectorAll('.js-variant-option');\r\n\t\t\t\tvariantButtons.forEach(button => button.addEventListener('click', selectedVariantOption));\r\n\t\t\t\tcheckIfVariantCompleted(variantBlock, true);\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n","(() => {\r\n\tconst faqQuestions = document.querySelectorAll('.faq__question');\r\n\r\n\t[...faqQuestions].forEach(faq => {\r\n\t\tconst faqItem = faq.closest('.faq__item');\r\n\t\tfaq.addEventListener('click', function(e) {\r\n\t\t\te.preventDefault();\r\n\t\t\ttoggleFaq(faqItem);\r\n\t\t});\r\n\t});\r\n\r\n\tconst toggleFaq = faqItem => {\r\n\t\tconst questionPanel = faqItem.querySelector('.faq__content');\r\n\t\tconst isOpened = faqItem.classList.contains('faq__item--opened');\r\n\t\tif(isOpened) {\r\n\t\t\tcloseFaq(faqItem, questionPanel);\r\n\t\t} else {\r\n\t\t\topenFaq(faqItem, questionPanel);\r\n\t\t}\r\n\t};\r\n\r\n\tconst openFaq = (faqItem, questionPanel) => {\r\n\t\tfaqItem.classList.add('faq__item--opened');\r\n\t\tfaqItem.setAttribute('aria-expanded', 'true');\r\n\t\tquestionPanel.style.maxHeight = questionPanel.scrollHeight + 'px';\r\n\t};\r\n\r\n\tconst closeFaq = (faqItem, questionPanel) => {\r\n\t\tfaqItem.classList.remove('faq__item--opened');\r\n\t\tfaqItem.setAttribute('aria-expanded', 'false');\r\n\t\tquestionPanel.style.maxHeight = null;\r\n\t};\r\n})();","import { MapStyles } from '@helpers/mapStyles.js';\r\n\r\n(() => {\r\n\r\n\t//* Collect map data from DOM *//\r\n\tconst gmapExists = document.querySelector('.map');\r\n\t\r\n\tif(gmapExists) {\r\n\t\tlet geocoder, map;\r\n\t\t\r\n\t\tconst gmapId = document.querySelector('.map').id;\r\n\t\tconst gmap = document.getElementById(gmapId);\r\n\t\tconst lat = parseFloat(gmap.dataset.latitude);\r\n\t\tconst lng = parseFloat(gmap.dataset.longitude);\r\n\t\tconst reg = new RegExp('\\'', 'g');\r\n\t\t\r\n\t\tlet markersArray = [];\r\n\t\tlet markersNamesArray = [];\r\n\t\tconst markerString = (gmap.dataset.markers).replace(reg, '\\\"');\r\n\t\tmarkersArray = JSON.parse(markerString);\r\n\t\tconst namesString = (gmap.dataset.markersnames).replace(reg, '\\\"');\r\n\t\tmarkersNamesArray = JSON.parse(namesString);\r\n\t\t\r\n\t\tlet markers = [];\r\n\t\tconst zoom = parseFloat(gmap.dataset.zoom);\r\n\t\tconst selectedStyle = (gmap.dataset.style != null) ? gmap.dataset.style : 'standard';\r\n\r\n\t\t//* Initialize google map */\r\n\t\tconst initMap = () => {\r\n\t\t\tconst init = new Promise(function (resolve, reject) {\r\n\t\t\t\tgeocoder = new google.maps.Geocoder();\r\n\t\t\t\tconst latlng = new google.maps.LatLng(lat, lng);\r\n\t\t\t\tconst mapOptions = {\r\n\t\t\t\t\tzoom: zoom,\r\n\t\t\t\t\tcenter: latlng,\r\n\t\t\t\t\tstyles: MapStyles[selectedStyle] //set the type of map\r\n\t\t\t\t};\r\n\t\t\t\tmap = new google.maps.Map(gmap, mapOptions);\r\n\t\t\t\tif (map != undefined) {\r\n\t\t\t\t\tresolve('map was successfully created');\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(new Error('initMap() >> initialization problem'));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tinit\r\n\t\t\t\t.then(codeAddress())\r\n\t\t\t\t.then(setTimeout(drop(), 5000))\r\n\t\t\t\t.catch(err => console.log(err));\r\n\t\t};\r\n\r\n\t\t//* Helper functions *//\r\n\t\tconst codeAddress = () => {\r\n\t\t\tconst address = gmap.dataset.adr;\r\n\t\t\tgeocoder.geocode({ 'address': address }, function (results, status) {\r\n\t\t\t\tif (status == 'OK') {\r\n\t\t\t\t\tmap.setCenter(results[0].geometry.location);\r\n\t\t\t\t\tnew google.maps.Marker({\r\n\t\t\t\t\t\tmap: map,\r\n\t\t\t\t\t\tposition: results[0].geometry.location\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ', status);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tconst drop = () => {\r\n\t\t\tclearMarkers();\r\n\t\t\tmarkersArray.forEach((marker, i) => {\r\n\t\t\t\taddMarkerWithTimeout(marker, i * 200, i);\r\n\t\t\t});\r\n\r\n\t\t};\r\n\r\n\t\tconst addMarkerWithTimeout = (position, timeout, index) => {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tconst infowindow = new google.maps.InfoWindow({\r\n\t\t\t\t\tcontent: markersNamesArray[index].marker,\r\n\t\t\t\t\tmaxWidth: 400\r\n\t\t\t\t});\r\n\t\t\t\tconst marker_ = new google.maps.Marker({\r\n\t\t\t\t\tposition: position,\r\n\t\t\t\t\tmap: map,\r\n\t\t\t\t\tanimation: google.maps.Animation.DROP\r\n\t\t\t\t});\r\n\t\t\t\tmarkers.push(marker_);\r\n\t\t\t\tmarker_.addListener('click', function () {\r\n\t\t\t\t\tinfowindow.open(map, marker_);\r\n\t\t\t\t});\r\n\t\t\t}, timeout);\r\n\t\t};\r\n\r\n\t\tconst clearMarkers = () => {\r\n\t\t\tmarkers.forEach(marker => {\r\n\t\t\t\tmarker.setMap(null);\r\n\t\t\t});\r\n\t\t\tmarkers = [];\r\n\t\t};\r\n\r\n\t\t// execute 'initMap' function once the page has loaded\r\n\t\tgoogle.maps.event.addDomListener(window, 'load', initMap);\r\n\t}\r\n})();\r\n\r\n\r\n","(() => {\r\n\tconst navigationParagraphs = document.querySelectorAll('.navigation-paragraph');\r\n\r\n\tnavigationParagraphs.forEach(paragraph => {\r\n\t\tconst navCollapseBtn = paragraph.querySelector('.navigation-paragraph__collapse');\r\n\t\tconst navMenu = paragraph.querySelector('.navigation');\r\n\t\tdocument.fonts.ready.then(function () {\r\n\t\t\tnavMenu.style.maxHeight = navMenu.scrollHeight + 'px';\r\n\t\t});\r\n\t\t\r\n\t\tif(navCollapseBtn) {\r\n\t\t\tnavCollapseBtn.addEventListener('click', () => {\r\n\t\t\t\tif(paragraph.classList.contains('navigation-paragraph--opened')) {\r\n\t\t\t\t\tparagraph.classList.remove('navigation-paragraph--opened');\r\n\t\t\t\t\tnavMenu.style.maxHeight = '0';\r\n\t\t\t\t} else {\r\n\t\t\t\t\tparagraph.classList.add('navigation-paragraph--opened');\r\n\t\t\t\t\tnavMenu.style.maxHeight = navMenu.scrollHeight + 'px';\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n","(() => {\r\n\tconst tilemodule = document.querySelector('.tilemodule');\r\n\tconst tileitems = document.querySelectorAll('.tilemodule__item');\r\n\r\n\tconst openTile = tile => {\r\n\t\tlet closingTile = tile.nextElementSibling;\r\n\t\tif(closingTile) {\r\n\t\t\tclosingTile.classList.add('tilemodule__item--left');\r\n\t\t} else {\r\n\t\t\tclosingTile = tile.previousElementSibling;\r\n\t\t\tclosingTile.classList.add('tilemodule__item--right');\r\n\t\t}\r\n\r\n\t\ttile.classList.add('tilemodule__item--open');\r\n\t\ttilemodule.classList.add('tilemodule--active');\r\n\t};\r\n\r\n\tconst closeTiles = () => {\r\n\t\ttileitems.forEach(item => {\r\n\t\t\titem.classList.remove('tilemodule__item--open');\r\n\t\t\titem.classList.remove('tilemodule__item--active');\r\n\t\t\titem.classList.remove('tilemodule__item--left');\r\n\t\t\titem.classList.remove('tilemodule__item--right');\r\n\t\t});\r\n\t\ttilemodule.classList.remove('tilemodule--active');\r\n\t};\r\n\r\n\ttileitems.forEach(item => {\r\n\t\titem.addEventListener('click', function() {\r\n\t\t\tif(tilemodule.classList.contains('tilemodule--active')) {\r\n\t\t\t\tcloseTiles();\r\n\t\t\t} else {\r\n\t\t\t\topenTile(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.addEventListener('transitionend', function(e) {\r\n\t\t\tif(e.propertyName.includes('flex')) {\r\n\t\t\t\tif(this.classList.contains('tilemodule__item--open')) {\r\n\t\t\t\t\tthis.classList.add('tilemodule__item--active');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tconst thumbnails = document.querySelectorAll('.mbtilemodule__thumbnaillist-item');\r\n\tconst thumbnailWrapper = document.querySelector('.mbtilemodule__thumbnaillist');\r\n\r\n\tconst hideFeatureItems = () => {\r\n\t\tconst activeItems = document.querySelectorAll('.mbtilemodule__item--active');\r\n\t\tactiveItems.forEach(item => {\r\n\t\t\titem.classList.remove('mbtilemodule__item--active');\r\n\t\t});\r\n\t};\r\n\t\r\n\tconst hideThumbnails = () => {\r\n\t\tconst activeItems = document.querySelectorAll('.mbtilemodule__thumbnaillist-item--hidden');\r\n\t\tactiveItems.forEach(item => {\r\n\t\t\titem.classList.remove('mbtilemodule__thumbnaillist-item--hidden');\r\n\t\t});\r\n\t};\r\n\r\n\tthumbnails.forEach(thumbnail => {\r\n\t\tthumbnail.addEventListener('click', function() {\r\n\t\t\thideFeatureItems();\r\n\t\t\tdocument.querySelector(`#${thumbnail.dataset.controls}`).classList.add('mbtilemodule__item--active');\r\n\t\t\t\r\n\t\t\tthumbnailWrapper.classList.add('mbtilemodule__thumbnaillist--active');\r\n\t\t\thideThumbnails();\r\n\t\t\tthis.classList.add('mbtilemodule__thumbnaillist-item--hidden');\r\n\t\t});\r\n\t});\r\n\r\n})();\r\n","(() => {\r\n\r\n\tconst gmapExists = document.querySelector('.poi-map');\r\n\t\r\n\tif(gmapExists) {\r\n\t\tlet map;\r\n\t\tconst gmapId = document.querySelector('.poi-map').id;\r\n\t\tconst gmap = document.getElementById(gmapId);\r\n\t\tconst lat = parseFloat(gmap.dataset.latitude);\r\n\t\tconst lng = parseFloat(gmap.dataset.longitude);\r\n\t\tconst latlng = new google.maps.LatLng(lat, lng);\r\n\t\tconst markerIcon = gmap.dataset.markericon ? new google.maps.MarkerImage(gmap.dataset.markericon) : '';\r\n\r\n\t\tconst initMap = () => {\r\n\t\t\tconst init = new Promise(function (resolve, reject) {\r\n\r\n\t\t\t\tmap = new google.maps.Map(gmap, {\r\n\t\t\t\t\tzoom: Number(gmap.dataset.zoom),\r\n\t\t\t\t\tcenter: latlng,\r\n\t\t\t\t\tdisableDefaultUI: gmap.dataset.disableui === 'True',\r\n\t\t\t\t\tzoomControl: gmap.dataset.enablezoom === 'True',\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (map != undefined) {\r\n\t\t\t\t\tresolve('map was successfully created');\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(new Error('initMap() >> initialization problem'));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tinit.then(setMarker()).catch(err => console.log(err));\r\n\t\t};\r\n\r\n\t\tconst setMarker = () => {\r\n\t\t\tnew google.maps.Marker({\r\n\t\t\t\tposition: latlng,\r\n\t\t\t\tmap: map,\r\n\t\t\t\ticon: markerIcon,\r\n\t\t\t\tanimation: google.maps.Animation.DROP\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tgoogle.maps.event.addDomListener(window, 'load', initMap);\r\n\t}\r\n\r\n})();\r\n\r\n\r\n","(() => {\r\n\t// Elements\r\n\tconst comparebuttons = document.querySelectorAll('.po-block__action-btn--compare');\r\n\tconst deletebuttons = document.querySelectorAll('.productcompare__action--delete');\r\n\r\n\t// Data\r\n\tconst items = JSON.parse(localStorage.getItem('compare-products') || '[]');\r\n\r\n\t// Config names\r\n\tconst activeBtnClass = 'po-block__action-btn--visible';\r\n\r\n\t// Functions\r\n\tconst toggleClasses = prodid => {\r\n\t\tconst elements = document.querySelectorAll(`.po-block__action-btn--compare[data-prodid=\"${prodid}\"]`);\r\n\t\telements.forEach(button => {\r\n\t\t\tif(button.classList.contains(activeBtnClass)) {\r\n\t\t\t\tbutton.classList.remove(activeBtnClass);\r\n\t\t\t} else {\r\n\t\t\t\tbutton.classList.add(activeBtnClass);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tconst addItem = e => {\r\n\t\tconst el = e.target;\r\n\t\tconst product = {\r\n\t\t\tid: el.dataset.prodid,\r\n\t\t\timg: el.dataset.imgsmall,\r\n\t\t\tname: el.dataset.prodname\r\n\t\t};\r\n\t\twindow.EventBus.$emit('compare-product', product);\r\n\t\ttoggleClasses(product.id);\r\n\t};\r\n\r\n\tconst deleteItem = e => {\r\n\t\tlet urlParams = new URLSearchParams(window.location.search);\r\n\t\tlet groupParams = urlParams.get('compare').split(',');\r\n\t\tconst prodid = e.target.dataset.prodid;\r\n\r\n\t\twindow.EventBus.$emit('delete-compare-product', prodid);\r\n\r\n\t\tif(groupParams.includes(prodid)) {\r\n\t\t\tconst newGroupParams = groupParams.filter(item => item !== prodid);\r\n\t\t\turlParams.set('compare', newGroupParams.join(','));\r\n\t\t\tconst url = window.location.pathname;\r\n\t\t\tconst combinedUrl = `${url}?compare=${urlParams.get('compare')}`;\r\n\t\t\twindow.location.href = combinedUrl;\r\n\t\t}\r\n\t};\r\n\r\n\tcomparebuttons.forEach(btn => {\r\n\t\tbtn.addEventListener('click', addItem);\r\n\t\tconst prodid = btn.dataset.prodid;\r\n\t\tconst isSelected = items.filter(p => p.id === prodid).length > 0;\r\n\t\tif(isSelected) {\r\n\t\t\tbtn.classList.add(activeBtnClass);\r\n\t\t}\r\n\t});\r\n\r\n\tdeletebuttons.forEach(btn => {\r\n\t\tbtn.addEventListener('click', deleteItem);\r\n\t});\r\n\r\n\r\n\t// Equal height table\r\n\tconst sameHeightRows = className => {\r\n\t\tvar nodeList = [...document.querySelectorAll(`.${className}`)];\r\n\t\tvar tallest = Math.max.apply(Math, nodeList.map(el => {\r\n\t\t\tel.style.minHeight = '';\r\n\t\t\treturn el.offsetHeight;\r\n\t\t}));\r\n\t\tnodeList.forEach(el => { \r\n\t\t\tel.style.minHeight = tallest + 'px';\r\n\t\t});\r\n\t};\r\n\r\n\tconst rowLabels = document.querySelectorAll('.productcompare__headings li');\r\n\trowLabels.forEach(label => {\r\n\t\tsameHeightRows(label.className);\r\n\t});\r\n\t\r\n\twindow.addEventListener('resize', function() { \r\n\t\tconst rowLabels = document.querySelectorAll('.productcompare__headings li');\r\n\t\trowLabels.forEach(label => {\r\n\t\t\tsameHeightRows(label.className);\r\n\t\t});\r\n\t});\r\n\r\n})();","import Rellax from 'rellax';\r\n\r\n(() => {\r\n\t// Added onload event because of strange bug with picture not showing on page load, and only on resize of browser.\r\n\twindow.onload = () => {\r\n\t\t// Checking if rellax element exist on current page\r\n\t\tconst parallaxElements = [...document.querySelectorAll('.rellax')];\r\n\t\tif(parallaxElements.length > 0) {\r\n\t\t\tnew Rellax('.rellax', {\r\n\t\t\t\tspeed: -4,\r\n\t\t\t\tcenter: true\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n})();\r\n","import tippy from 'tippy.js';\r\nimport 'tippy.js/dist/tippy.css';\r\n\r\n(() => {\r\n\tconst sharebuttons = document.querySelectorAll('.newspage__sharebtn');\r\n\r\n\tif(sharebuttons.length > 0) {\r\n\t\tsharebuttons.forEach(btn => {\r\n\t\t\t\r\n\t\t\tif(!navigator.share) {\r\n\t\t\t\ttippy(btn, {\r\n\t\t\t\t\tcontent: btn.dataset.tooltip,\r\n\t\t\t\t\ttrigger: 'click',\r\n\t\t\t\t\tplacement: 'bottom',\r\n\t\t\t\t\tonShow(instance) {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tinstance.hide();\r\n\t\t\t\t\t\t}, 2000);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tbtn.addEventListener('click', () => {\r\n\t\t\t\t// navigator.share only works on HTTPS\r\n\t\t\t\tif(navigator.share) {\r\n\t\t\t\t\tconst title = document.title;\r\n\t\t\t\t\tconst url = document.querySelector('link[rel=canonical]') ? document.querySelector('link[rel=canonical]').href : document.location.href;\r\n\t\t\t\t\tnavigator.share({\r\n\t\t\t\t\t\ttitle,\r\n\t\t\t\t\t\turl\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(console.error); \r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Create dummy element with url value\r\n\t\t\t\t\tconst dummyEl = document.createElement('input');\r\n\t\t\t\t\tconst url = window.location.href;\r\n\t\t\t\t\tdocument.body.appendChild(dummyEl);\r\n\t\t\t\t\tdummyEl.value = url;\r\n\t\t\t\t\tdummyEl.select();\r\n\t\t\t\t\tdocument.execCommand('copy');\r\n\t\t\t\t\tdocument.body.removeChild(dummyEl);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n})();","(() => {\r\n\twindow.addEventListener('load', () => {\r\n\t\tif (window.location.hash) {\r\n\t\t\tlet hash = window.location.hash;\r\n\t\t\thash = hash.replace('#', '');\r\n\r\n\t\t\tconst target = document.getElementById(hash);\r\n\t\t\tif (!target) return;\r\n\r\n\t\t\tconst initialPosition = window.scrollY;\r\n\r\n\t\t\tanimateScroll({\r\n\t\t\t\ttargetPosition: target.offsetTop,\r\n\t\t\t\tinitialPosition,\r\n\t\t\t\tduration: 600\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\tdocument.addEventListener('DOMContentLoaded', () => {\r\n\t\tconst links = document.querySelectorAll('a');\r\n\r\n\t\tlinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', event => {\r\n\t\t\t\t// eslint-disable-next-line prefer-destructuring\r\n\t\t\t\tlet hash = event.target.hash;\r\n\t\t\t\tif(!hash) return;\r\n\t\t\t\thash = hash.replace('#', '');\r\n\t\t\t\t\r\n\t\t\t\tconst target = document.getElementById(hash);\r\n\t\t\t\tif(!target) return;\r\n\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tconst initialPosition = window.scrollY;\r\n\r\n\t\t\t\tanimateScroll({\r\n\t\t\t\t\ttargetPosition: target.offsetTop,\r\n\t\t\t\t\tinitialPosition,\r\n\t\t\t\t\tduration: 600\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t});\r\n\r\n\r\n\t\r\n\r\n\tconst pow = Math.pow;\r\n\r\n\tfunction easeOutQuart(x) {\r\n\t\treturn 1 - pow(1 - x, 4);\r\n\t}\r\n\r\n\tconst animateScroll = ({ targetPosition, initialPosition, duration }) => {\r\n\t\tlet start;\r\n\t\tlet position;\r\n\t\tlet animationFrame;\r\n\r\n\t\tconst requestAnimationFrame = window.requestAnimationFrame;\r\n\t\tconst cancelAnimationFrame = window.cancelAnimationFrame;\r\n\r\n\t\tconst headers = [...document.querySelectorAll('.header')];\r\n\t\tconst activeHeader = headers.find(header => {\r\n\t\t\treturn window.getComputedStyle(header, null).display !== 'none';\r\n\t\t});\r\n\r\n\t\tif(!activeHeader) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst stickyHeader = activeHeader.querySelector('.header__stickyheader-container');\r\n\t\tlet headerHeight = stickyHeader ? stickyHeader.offsetHeight : 0;\r\n\r\n\t\tconst maxAvailableScroll = document.documentElement.scrollHeight - document.documentElement.clientHeight;\r\n\t\ttargetPosition = targetPosition - headerHeight;\r\n\r\n\t\tconst amountOfPixelsToScroll = initialPosition - targetPosition;\r\n\r\n\t\tfunction step(timestamp) {\r\n\t\t\tif (start === undefined) {\r\n\t\t\t\tstart = timestamp;\r\n\t\t\t}\r\n\r\n\t\t\tconst elapsed = timestamp - start;\r\n\t\t\tconst relativeProgress = elapsed / duration;\r\n\t\t\tconst easedProgress = easeOutQuart(relativeProgress);\r\n\t\t\tposition = initialPosition - amountOfPixelsToScroll * Math.min(easedProgress, 1);\r\n\t\t\twindow.scrollTo(0, position);\r\n\r\n\t\t\tif (initialPosition !== maxAvailableScroll && window.scrollY === maxAvailableScroll) {\r\n\t\t\t\tcancelAnimationFrame(animationFrame);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (elapsed < duration) {\r\n\t\t\t\tanimationFrame = requestAnimationFrame(step);\r\n\t\t\t}\r\n\t\t}\r\n\t\tanimationFrame = requestAnimationFrame(step);\r\n\t};\r\n\r\n})();\r\n","import tippy from 'tippy.js';\r\n\r\ntippy('[data-tippy-content]');\r\n","(() => {\r\n\tvar windowWidth = window.innerWidth;\r\n\tvar addedmenuItems = document.querySelectorAll('.usermenu');\r\n\r\n\taddedmenuItems.forEach(item => {\r\n\t\tconst submenu = item.querySelector('.addedmenu__submenu');\r\n\t\tif(submenu) {\r\n\t\t\tconst tempWidth = submenu.offsetWidth;\r\n\t\t\tconst positionLeft = offset(submenu).left;\r\n\t\t\tconst outOfWindowValue = positionLeft + tempWidth;\r\n\t\t\tconst outOfWindowBool = outOfWindowValue > windowWidth ? 'right' : 'left';\r\n\t\t\tsubmenu.style.height = '0px';\r\n\t\t\titem.addEventListener('mouseover', function () {\r\n\t\t\t\tconst tempHeight = submenu.scrollHeight;\r\n\t\t\t\titem.classList.add('show_submenu');\r\n\t\t\t\tsubmenu.style.height = tempHeight + 'px';\r\n\t\t\t\tsubmenu.classList.add(outOfWindowBool);\r\n\t\t\t});\r\n\r\n\t\t\titem.addEventListener('mouseout', function () {\r\n\t\t\t\titem.classList.remove('show_submenu');\r\n\t\t\t\tsubmenu.style.height = '0px';\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\tfunction offset(el) {\r\n\t\tconst rect = el.getBoundingClientRect();\r\n\t\tconst scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\r\n\t\tconst scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\t\t\r\n\t\treturn { \r\n\t\t\ttop: rect.top + scrollTop, \r\n\t\t\tleft: rect.left + scrollLeft \r\n\t\t};\r\n\t}\r\n\r\n})();","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","/*!\n * Flickity asNavFor v2.0.1\n * enable asNavFor for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'fizzy-ui-utils/utils'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( Flickity, utils ) {\n\n'use strict';\n\n// -------------------------- asNavFor prototype -------------------------- //\n\n// Flickity.defaults.asNavFor = null;\n\nFlickity.createMethods.push('_createAsNavFor');\n\nvar proto = Flickity.prototype;\n\nproto._createAsNavFor = function() {\n this.on( 'activate', this.activateAsNavFor );\n this.on( 'deactivate', this.deactivateAsNavFor );\n this.on( 'destroy', this.destroyAsNavFor );\n\n var asNavForOption = this.options.asNavFor;\n if ( !asNavForOption ) {\n return;\n }\n // HACK do async, give time for other flickity to be initalized\n var _this = this;\n setTimeout( function initNavCompanion() {\n _this.setNavCompanion( asNavForOption );\n });\n};\n\nproto.setNavCompanion = function( elem ) {\n elem = utils.getQueryElement( elem );\n var companion = Flickity.data( elem );\n // stop if no companion or companion is self\n if ( !companion || companion == this ) {\n return;\n }\n\n this.navCompanion = companion;\n // companion select\n var _this = this;\n this.onNavCompanionSelect = function() {\n _this.navCompanionSelect();\n };\n companion.on( 'select', this.onNavCompanionSelect );\n // click\n this.on( 'staticClick', this.onNavStaticClick );\n\n this.navCompanionSelect( true );\n};\n\nproto.navCompanionSelect = function( isInstant ) {\n if ( !this.navCompanion ) {\n return;\n }\n // select slide that matches first cell of slide\n var selectedCell = this.navCompanion.selectedCells[0];\n var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\n var lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\n var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\n this.navCompanion.cellAlign ) );\n this.selectCell( selectIndex, false, isInstant );\n // set nav selected class\n this.removeNavSelectedElements();\n // stop if companion has more cells than this one\n if ( selectIndex >= this.cells.length ) {\n return;\n }\n\n var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\n this.navSelectedElements = selectedCells.map( function( cell ) {\n return cell.element;\n });\n this.changeNavSelectedClass('add');\n};\n\nfunction lerp( a, b, t ) {\n return ( b - a ) * t + a;\n}\n\nproto.changeNavSelectedClass = function( method ) {\n this.navSelectedElements.forEach( function( navElem ) {\n navElem.classList[ method ]('is-nav-selected');\n });\n};\n\nproto.activateAsNavFor = function() {\n this.navCompanionSelect( true );\n};\n\nproto.removeNavSelectedElements = function() {\n if ( !this.navSelectedElements ) {\n return;\n }\n this.changeNavSelectedClass('remove');\n delete this.navSelectedElements;\n};\n\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\n if ( typeof cellIndex == 'number' ) {\n this.navCompanion.selectCell( cellIndex );\n }\n};\n\nproto.deactivateAsNavFor = function() {\n this.removeNavSelectedElements();\n};\n\nproto.destroyAsNavFor = function() {\n if ( !this.navCompanion ) {\n return;\n }\n this.navCompanion.off( 'select', this.onNavCompanionSelect );\n this.off( 'staticClick', this.onNavStaticClick );\n delete this.navCompanion;\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x -= this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n if ( isResting ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i = 0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n ], function( getSize ) {\n return factory( window, getSize );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n this.element.style.transform = '';\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n var adjustedX = this.parent.options.percentPosition ?\n x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n x * sideOffset;\n\n this.element.style.transform = 'translateX(' +\n this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( dist, minDist ) {\n return dist <= minDist;\n } : function( dist, minDist ) {\n return dist < minDist;\n };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i = 0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if ( !this.isActive || this.isAnimating || this.isDragging ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n","/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\n} );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg' );\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path' );\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n","// slide\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\n} ) );\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","\n// ------------------------------------------\n// Rellax.js\n// Buttery smooth parallax library\n// Copyright (c) 2016 Moe Amaya (@moeamaya)\n// MIT license\n//\n// Thanks to Paraxify.js and Jaime Cabllero\n// for parallax concepts\n// ------------------------------------------\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.Rellax = factory();\n }\n}(typeof window !== \"undefined\" ? window : global, function () {\n var Rellax = function(el, options){\n \"use strict\";\n\n var self = Object.create(Rellax.prototype);\n\n var posY = 0;\n var screenY = 0;\n var posX = 0;\n var screenX = 0;\n var blocks = [];\n var pause = true;\n\n // check what requestAnimationFrame to use, and if\n // it's not supported, use the onscroll event\n var loop = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n function(callback){ return setTimeout(callback, 1000 / 60); };\n\n // store the id for later use\n var loopId = null;\n\n // Test via a getter in the options object to see if the passive property is accessed\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"testPassive\", null, opts);\n window.removeEventListener(\"testPassive\", null, opts);\n } catch (e) {}\n\n // check what cancelAnimation method to use\n var clearLoop = window.cancelAnimationFrame || window.mozCancelAnimationFrame || clearTimeout;\n\n // check which transform property to use\n var transformProp = window.transformProp || (function(){\n var testEl = document.createElement('div');\n if (testEl.style.transform === null) {\n var vendors = ['Webkit', 'Moz', 'ms'];\n for (var vendor in vendors) {\n if (testEl.style[ vendors[vendor] + 'Transform' ] !== undefined) {\n return vendors[vendor] + 'Transform';\n }\n }\n }\n return 'transform';\n })();\n\n // Default Settings\n self.options = {\n speed: -2,\n\t verticalSpeed: null,\n\t horizontalSpeed: null,\n breakpoints: [576, 768, 1201],\n center: false,\n wrapper: null,\n relativeToWrapper: false,\n round: true,\n vertical: true,\n horizontal: false,\n verticalScrollAxis: \"y\",\n horizontalScrollAxis: \"x\",\n callback: function() {},\n };\n\n // User defined options (might have more in the future)\n if (options){\n Object.keys(options).forEach(function(key){\n self.options[key] = options[key];\n });\n }\n\n function validateCustomBreakpoints () {\n if (self.options.breakpoints.length === 3 && Array.isArray(self.options.breakpoints)) {\n var isAscending = true;\n var isNumerical = true;\n var lastVal;\n self.options.breakpoints.forEach(function (i) {\n if (typeof i !== 'number') isNumerical = false;\n if (lastVal !== null) {\n if (i < lastVal) isAscending = false;\n }\n lastVal = i;\n });\n if (isAscending && isNumerical) return;\n }\n // revert defaults if set incorrectly\n self.options.breakpoints = [576, 768, 1201];\n console.warn(\"Rellax: You must pass an array of 3 numbers in ascending order to the breakpoints option. Defaults reverted\");\n }\n\n if (options && options.breakpoints) {\n validateCustomBreakpoints();\n }\n\n // By default, rellax class\n if (!el) {\n el = '.rellax';\n }\n\n // check if el is a className or a node\n var elements = typeof el === 'string' ? document.querySelectorAll(el) : [el];\n\n // Now query selector\n if (elements.length > 0) {\n self.elems = elements;\n }\n\n // The elements don't exist\n else {\n console.warn(\"Rellax: The elements you're trying to select don't exist.\");\n return;\n }\n\n // Has a wrapper and it exists\n if (self.options.wrapper) {\n if (!self.options.wrapper.nodeType) {\n var wrapper = document.querySelector(self.options.wrapper);\n\n if (wrapper) {\n self.options.wrapper = wrapper;\n } else {\n console.warn(\"Rellax: The wrapper you're trying to use doesn't exist.\");\n return;\n }\n }\n }\n\n // set a placeholder for the current breakpoint\n var currentBreakpoint;\n\n // helper to determine current breakpoint\n var getCurrentBreakpoint = function (w) {\n var bp = self.options.breakpoints;\n if (w < bp[0]) return 'xs';\n if (w >= bp[0] && w < bp[1]) return 'sm';\n if (w >= bp[1] && w < bp[2]) return 'md';\n return 'lg';\n };\n\n // Get and cache initial position of all elements\n var cacheBlocks = function() {\n for (var i = 0; i < self.elems.length; i++){\n var block = createBlock(self.elems[i]);\n blocks.push(block);\n }\n };\n\n\n // Let's kick this script off\n // Build array for cached element values\n var init = function() {\n for (var i = 0; i < blocks.length; i++){\n self.elems[i].style.cssText = blocks[i].style;\n }\n\n blocks = [];\n\n screenY = window.innerHeight;\n screenX = window.innerWidth;\n currentBreakpoint = getCurrentBreakpoint(screenX);\n\n setPosition();\n\n cacheBlocks();\n\n animate();\n\n // If paused, unpause and set listener for window resizing events\n if (pause) {\n window.addEventListener('resize', init);\n pause = false;\n // Start the loop\n update();\n }\n };\n\n // We want to cache the parallax blocks'\n // values: base, top, height, speed\n // el: is dom object, return: el cache values\n var createBlock = function(el) {\n var dataPercentage = el.getAttribute( 'data-rellax-percentage' );\n var dataSpeed = el.getAttribute( 'data-rellax-speed' );\n var dataXsSpeed = el.getAttribute( 'data-rellax-xs-speed' );\n var dataMobileSpeed = el.getAttribute( 'data-rellax-mobile-speed' );\n var dataTabletSpeed = el.getAttribute( 'data-rellax-tablet-speed' );\n var dataDesktopSpeed = el.getAttribute( 'data-rellax-desktop-speed' );\n var dataVerticalSpeed = el.getAttribute('data-rellax-vertical-speed');\n var dataHorizontalSpeed = el.getAttribute('data-rellax-horizontal-speed');\n var dataVericalScrollAxis = el.getAttribute('data-rellax-vertical-scroll-axis');\n var dataHorizontalScrollAxis = el.getAttribute('data-rellax-horizontal-scroll-axis');\n var dataZindex = el.getAttribute( 'data-rellax-zindex' ) || 0;\n var dataMin = el.getAttribute( 'data-rellax-min' );\n var dataMax = el.getAttribute( 'data-rellax-max' );\n var dataMinX = el.getAttribute('data-rellax-min-x');\n var dataMaxX = el.getAttribute('data-rellax-max-x');\n var dataMinY = el.getAttribute('data-rellax-min-y');\n var dataMaxY = el.getAttribute('data-rellax-max-y');\n var mapBreakpoints;\n var breakpoints = true;\n\n if (!dataXsSpeed && !dataMobileSpeed && !dataTabletSpeed && !dataDesktopSpeed) {\n breakpoints = false;\n } else {\n mapBreakpoints = {\n 'xs': dataXsSpeed,\n 'sm': dataMobileSpeed,\n 'md': dataTabletSpeed,\n 'lg': dataDesktopSpeed\n };\n }\n\n // initializing at scrollY = 0 (top of browser), scrollX = 0 (left of browser)\n // ensures elements are positioned based on HTML layout.\n //\n // If the element has the percentage attribute, the posY and posX needs to be\n // the current scroll position's value, so that the elements are still positioned based on HTML layout\n var wrapperPosY = self.options.wrapper ? self.options.wrapper.scrollTop : (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);\n // If the option relativeToWrapper is true, use the wrappers offset to top, subtracted from the current page scroll.\n if (self.options.relativeToWrapper) {\n var scrollPosY = (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);\n wrapperPosY = scrollPosY - self.options.wrapper.offsetTop;\n }\n var posY = self.options.vertical ? ( dataPercentage || self.options.center ? wrapperPosY : 0 ) : 0;\n var posX = self.options.horizontal ? ( dataPercentage || self.options.center ? self.options.wrapper ? self.options.wrapper.scrollLeft : (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft) : 0 ) : 0;\n\n var blockTop = posY + el.getBoundingClientRect().top;\n var blockHeight = el.clientHeight || el.offsetHeight || el.scrollHeight;\n\n var blockLeft = posX + el.getBoundingClientRect().left;\n var blockWidth = el.clientWidth || el.offsetWidth || el.scrollWidth;\n\n // apparently parallax equation everyone uses\n var percentageY = dataPercentage ? dataPercentage : (posY - blockTop + screenY) / (blockHeight + screenY);\n var percentageX = dataPercentage ? dataPercentage : (posX - blockLeft + screenX) / (blockWidth + screenX);\n if(self.options.center){ percentageX = 0.5; percentageY = 0.5; }\n\n // Optional individual block speed as data attr, otherwise global speed\n var speed = (breakpoints && mapBreakpoints[currentBreakpoint] !== null) ? Number(mapBreakpoints[currentBreakpoint]) : (dataSpeed ? dataSpeed : self.options.speed);\n var verticalSpeed = dataVerticalSpeed ? dataVerticalSpeed : self.options.verticalSpeed;\n var horizontalSpeed = dataHorizontalSpeed ? dataHorizontalSpeed : self.options.horizontalSpeed;\n\n // Optional individual block movement axis direction as data attr, otherwise gobal movement direction\n var verticalScrollAxis = dataVericalScrollAxis ? dataVericalScrollAxis : self.options.verticalScrollAxis;\n var horizontalScrollAxis = dataHorizontalScrollAxis ? dataHorizontalScrollAxis : self.options.horizontalScrollAxis;\n\n var bases = updatePosition(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed);\n\n // ~~Store non-translate3d transforms~~\n // Store inline styles and extract transforms\n var style = el.style.cssText;\n var transform = '';\n\n // Check if there's an inline styled transform\n var searchResult = /transform\\s*:/i.exec(style);\n if (searchResult) {\n // Get the index of the transform\n var index = searchResult.index;\n\n // Trim the style to the transform point and get the following semi-colon index\n var trimmedStyle = style.slice(index);\n var delimiter = trimmedStyle.indexOf(';');\n\n // Remove \"transform\" string and save the attribute\n if (delimiter) {\n transform = \" \" + trimmedStyle.slice(11, delimiter).replace(/\\s/g,'');\n } else {\n transform = \" \" + trimmedStyle.slice(11).replace(/\\s/g,'');\n }\n }\n\n return {\n baseX: bases.x,\n baseY: bases.y,\n top: blockTop,\n left: blockLeft,\n height: blockHeight,\n width: blockWidth,\n speed: speed,\n verticalSpeed: verticalSpeed,\n horizontalSpeed: horizontalSpeed,\n verticalScrollAxis: verticalScrollAxis,\n horizontalScrollAxis: horizontalScrollAxis,\n style: style,\n transform: transform,\n zindex: dataZindex,\n min: dataMin,\n max: dataMax,\n minX: dataMinX,\n maxX: dataMaxX,\n minY: dataMinY,\n maxY: dataMaxY\n };\n };\n\n // set scroll position (posY, posX)\n // side effect method is not ideal, but okay for now\n // returns true if the scroll changed, false if nothing happened\n var setPosition = function() {\n var oldY = posY;\n var oldX = posX;\n\n posY = self.options.wrapper ? self.options.wrapper.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posX = self.options.wrapper ? self.options.wrapper.scrollLeft : (document.documentElement || document.body.parentNode || document.body).scrollLeft || window.pageXOffset;\n // If option relativeToWrapper is true, use relative wrapper value instead.\n if (self.options.relativeToWrapper) {\n var scrollPosY = (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posY = scrollPosY - self.options.wrapper.offsetTop;\n }\n\n\n if (oldY != posY && self.options.vertical) {\n // scroll changed, return true\n return true;\n }\n\n if (oldX != posX && self.options.horizontal) {\n // scroll changed, return true\n return true;\n }\n\n // scroll did not change\n return false;\n };\n\n // Ahh a pure function, gets new transform value\n // based on scrollPosition and speed\n // Allow for decimal pixel values\n var updatePosition = function(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed) {\n var result = {};\n var valueX = ((horizontalSpeed ? horizontalSpeed : speed) * (100 * (1 - percentageX)));\n var valueY = ((verticalSpeed ? verticalSpeed : speed) * (100 * (1 - percentageY)));\n\n result.x = self.options.round ? Math.round(valueX) : Math.round(valueX * 100) / 100;\n result.y = self.options.round ? Math.round(valueY) : Math.round(valueY * 100) / 100;\n\n return result;\n };\n\n // Remove event listeners and loop again\n var deferredUpdate = function() {\n window.removeEventListener('resize', deferredUpdate);\n window.removeEventListener('orientationchange', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : window).removeEventListener('scroll', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : document).removeEventListener('touchmove', deferredUpdate);\n\n // loop again\n loopId = loop(update);\n };\n\n // Loop\n var update = function() {\n if (setPosition() && pause === false) {\n animate();\n\n // loop again\n loopId = loop(update);\n } else {\n loopId = null;\n\n // Don't animate until we get a position updating event\n window.addEventListener('resize', deferredUpdate);\n window.addEventListener('orientationchange', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : window).addEventListener('scroll', deferredUpdate, supportsPassive ? { passive: true } : false);\n (self.options.wrapper ? self.options.wrapper : document).addEventListener('touchmove', deferredUpdate, supportsPassive ? { passive: true } : false);\n }\n };\n\n // Transform3d on parallax element\n var animate = function() {\n var positions;\n for (var i = 0; i < self.elems.length; i++){\n // Determine relevant movement directions\n var verticalScrollAxis = blocks[i].verticalScrollAxis.toLowerCase();\n var horizontalScrollAxis = blocks[i].horizontalScrollAxis.toLowerCase();\n var verticalScrollX = verticalScrollAxis.indexOf(\"x\") != -1 ? posY : 0;\n var verticalScrollY = verticalScrollAxis.indexOf(\"y\") != -1 ? posY : 0;\n var horizontalScrollX = horizontalScrollAxis.indexOf(\"x\") != -1 ? posX : 0;\n var horizontalScrollY = horizontalScrollAxis.indexOf(\"y\") != -1 ? posX : 0;\n\n var percentageY = ((verticalScrollY + horizontalScrollY - blocks[i].top + screenY) / (blocks[i].height + screenY));\n var percentageX = ((verticalScrollX + horizontalScrollX - blocks[i].left + screenX) / (blocks[i].width + screenX));\n\n // Subtracting initialize value, so element stays in same spot as HTML\n positions = updatePosition(percentageX, percentageY, blocks[i].speed, blocks[i].verticalSpeed, blocks[i].horizontalSpeed);\n var positionY = positions.y - blocks[i].baseY;\n var positionX = positions.x - blocks[i].baseX;\n\n // The next two \"if\" blocks go like this:\n // Check if a limit is defined (first \"min\", then \"max\");\n // Check if we need to change the Y or the X\n // (Currently working only if just one of the axes is enabled)\n // Then, check if the new position is inside the allowed limit\n // If so, use new position. If not, set position to limit.\n\n // Check if a min limit is defined\n if (blocks[i].min !== null) {\n if (self.options.vertical && !self.options.horizontal) {\n positionY = positionY <= blocks[i].min ? blocks[i].min : positionY;\n }\n if (self.options.horizontal && !self.options.vertical) {\n positionX = positionX <= blocks[i].min ? blocks[i].min : positionX;\n }\n }\n\n // Check if directional min limits are defined\n if (blocks[i].minY != null) {\n positionY = positionY <= blocks[i].minY ? blocks[i].minY : positionY;\n }\n if (blocks[i].minX != null) {\n positionX = positionX <= blocks[i].minX ? blocks[i].minX : positionX;\n }\n\n // Check if a max limit is defined\n if (blocks[i].max !== null) {\n if (self.options.vertical && !self.options.horizontal) {\n positionY = positionY >= blocks[i].max ? blocks[i].max : positionY;\n }\n if (self.options.horizontal && !self.options.vertical) {\n positionX = positionX >= blocks[i].max ? blocks[i].max : positionX;\n }\n }\n\n // Check if directional max limits are defined\n if (blocks[i].maxY != null) {\n positionY = positionY >= blocks[i].maxY ? blocks[i].maxY : positionY;\n }\n if (blocks[i].maxX != null) {\n positionX = positionX >= blocks[i].maxX ? blocks[i].maxX : positionX;\n }\n\n var zindex = blocks[i].zindex;\n\n // Move that element\n // (Set the new translation and append initial inline transforms.)\n var translate = 'translate3d(' + (self.options.horizontal ? positionX : '0') + 'px,' + (self.options.vertical ? positionY : '0') + 'px,' + zindex + 'px) ' + blocks[i].transform;\n self.elems[i].style[transformProp] = translate;\n }\n self.options.callback(positions);\n };\n\n self.destroy = function() {\n for (var i = 0; i < self.elems.length; i++){\n self.elems[i].style.cssText = blocks[i].style;\n }\n\n // Remove resize event listener if not pause, and pause\n if (!pause) {\n window.removeEventListener('resize', init);\n pause = true;\n }\n\n // Clear the animation loop to prevent possible memory leak\n clearLoop(loopId);\n loopId = null;\n };\n\n // Init\n init();\n\n // Allow to recalculate the initial values whenever we want\n self.refresh = init;\n\n return self;\n };\n return Rellax;\n}));\n","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","/**!\n* tippy.js v6.3.7\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\n\nvar ROUND_ARROW = '';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {\n return document.body;\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a