{ "version": 3, "sources": ["../../Byggros.Assets/node_modules/object-fit-images/dist/ofi.common-js.js", "../../Byggros.Assets/node_modules/object-fit-videos/object-fit-videos.js", "../../Byggros.Assets/node_modules/picturefill/dist/picturefill.js", "../../Byggros.Assets/node_modules/lazysizes/lazysizes.js", "../../Byggros.Assets/styles/tailwind/tailwind.screens.js", "../../Byggros.Assets/node_modules/@kingshott/iodine/src/iodine.js", "../../Byggros.Assets/scripts/xAsyncForm.js", "../../Byggros.Assets/scripts/favorites.js", "../../Byggros.Assets/node_modules/nouislider/dist/nouislider.js", "../../Byggros.Assets/node_modules/simple-lightbox/src/simpleLightbox.js", "../../Byggros.Assets/scripts/index.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/raf.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/caf.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/extend.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/checkStorageValue.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/setLocalStorage.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/getSlideId.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/getBody.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/docElement.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/setFakeBody.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/resetFakeBody.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/calc.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/percentageLayout.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/mediaquerySupport.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/createStyleSheet.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/addCSSRule.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/removeCSSRule.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/getCssRulesLength.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/toDegree.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/getTouchDirection.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/forEach.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/classListSupport.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/hasClass.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/addClass.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/removeClass.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/hasAttr.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/getAttr.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/isNodeList.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/setAttrs.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/removeAttrs.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/arrayFromNodeList.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/hideElement.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/showElement.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/isVisible.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/whichProperty.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/has3DTransforms.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/getEndProperty.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/passiveOption.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/addEvents.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/removeEvents.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/events.js", "../../Byggros.Assets/node_modules/tiny-slider/src/helpers/jsTransform.js", "../../Byggros.Assets/node_modules/tiny-slider/src/tiny-slider.js", "../../Byggros.Assets/node_modules/alpinejs/dist/module.esm.js", "../../Byggros.Assets/node_modules/@ryangjchandler/alpine-clipboard/src/index.js", "../../Byggros.Assets/scripts/store.js"], "sourcesContent": ["/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n", "/**\n * Object Fit Videos\n * Polyfill for object-fit and object-position CSS properties on video elements\n * Covers IE9, IE10, IE11, Edge, Safari <10\n *\n * Usage\n * In your CSS, add a special font-family tag for IE/Edge\n * video {\n * object-fit: cover;\n * font-family: 'object-fit: cover;';\n * }\n *\n * Before the closing body tag, or whenever the DOM is ready,\n * make the JavaScript call\n * objectFitVideos();\n *\n * All video elements with the special CSS property will be targeted\n *\n * @license MIT (https://opensource.org/licenses/MIT)\n * @author Todd Miller <todd.miller@tricomb2b.com>\n * @version 1.0.2\n * @changelog\n * 2016-08-19 - Adds object-position support.\n * 2016-08-19 - Add throttle function for more performant resize events\n * 2016-08-19 - Initial release with object-fit support, and\n * object-position default 'center'\n * 2016-10-14 - No longer relies on window load event, instead requires a specific\n * function call to initialize the videos for object fit and position.\n * 2016-11-28 - Support CommonJS environment, courtesy of @msorensson\n * 2016-12-05 - Refactors the throttling function to support IE\n * 2017-09-26 - Fix an issue with autplay not working on polyfilled videos\n * - Adds the capability to specify elements to polyfill,\n * instead of just checking every video element for the\n * CSS property. Slight performance gain in most usecases,\n * and a bigger gain in a few usecases.\n * 2017-10-24 - Add user agent check to enable polyfill for all Edge browsers.\n * object-fit is supported on Edge >= 16, but currently just for images.\n */\nvar objectFitVideos = function (videos) {\n 'use strict';\n\n var isEdge = navigator.userAgent.indexOf('Edge/') >= 0;\n\n var testImg = new Image(),\n supportsObjectFit = 'object-fit' in testImg.style && !isEdge,\n supportsObjectPosition = 'object-position' in testImg.style && !isEdge,\n propRegex = /(object-fit|object-position)\\s*:\\s*([-\\w\\s%]+)/g;\n\n if (!supportsObjectFit || !supportsObjectPosition) {\n initialize(videos);\n throttle('resize', 'optimizedResize');\n }\n\n /**\n * Parse the style and look for the special font-family tag\n * @param {object} $el The element to parse\n * @return {object} The font-family properties we're interested in\n */\n function getStyle ($el) {\n var style = getComputedStyle($el).fontFamily,\n parsed = null,\n props = {};\n\n while ((parsed = propRegex.exec(style)) !== null) {\n props[parsed[1]] = parsed[2];\n }\n\n if (props['object-position'])\n return parsePosition(props);\n\n return props;\n }\n\n /**\n * Initialize all the relevant video elements and get them fitted\n */\n function initialize (videos) {\n var index = -1;\n\n if (!videos) {\n // if no videos given, query all video elements\n videos = document.querySelectorAll('video');\n } else if (!('length' in videos)) {\n // convert to an array for proper looping if an array or NodeList\n // was not given\n videos = [videos];\n }\n\n while (videos[++index]) {\n var style = getStyle(videos[index]);\n\n // only do work if the property is on the element\n if (style['object-fit'] || style['object-position']) {\n // set the default values\n style['object-fit'] = style['object-fit'] || 'fill';\n fitIt(videos[index], style);\n }\n }\n }\n\n /**\n * Object Fit\n * @param {object} $el Element to fit\n * @return {object} The element's relevant properties\n */\n function fitIt ($el, style) {\n // fill is the default behavior, no action is necessary\n if (style['object-fit'] === 'fill')\n return;\n\n // convenience style properties on the source element\n var setCss = $el.style,\n getCss = window.getComputedStyle($el);\n\n // create and insert a wrapper element\n var $wrap = document.createElement('object-fit');\n $wrap.appendChild($el.parentNode.replaceChild($wrap, $el));\n\n // style the wrapper element to mostly match the source element\n var wrapCss = {\n height: '100%',\n width: '100%',\n boxSizing: 'content-box',\n display: 'inline-block',\n overflow: 'hidden'\n };\n\n 'backgroundColor backgroundImage borderColor borderStyle borderWidth bottom fontSize lineHeight left opacity margin position right top visibility'.replace(/\\w+/g, function (key) {\n wrapCss[key] = getCss[key];\n });\n\n for (var key in wrapCss)\n $wrap.style[key] = wrapCss[key];\n\n // give the source element some saner styles\n setCss.border = setCss.margin = setCss.padding = 0;\n setCss.display = 'block';\n setCss.opacity = 1;\n\n // set up the event handlers\n $el.addEventListener('loadedmetadata', doWork);\n window.addEventListener('optimizedResize', doWork);\n\n // we may have missed the loadedmetadata event, so if the video has loaded\n // enough data, just drop the event listener and execute\n if ($el.readyState >= 1) {\n $el.removeEventListener('loadedmetadata', doWork);\n doWork();\n }\n\n /**\n * Do the actual sizing. Math.\n * @methodOf fitIt\n */\n function doWork () {\n // the actual size and ratio of the video\n // we do this here, even though it doesn't change, because\n // at this point we can be sure the metadata has loaded\n var videoWidth = $el.videoWidth,\n videoHeight = $el.videoHeight,\n videoRatio = videoWidth / videoHeight;\n\n var wrapWidth = $wrap.clientWidth,\n wrapHeight = $wrap.clientHeight,\n wrapRatio = wrapWidth / wrapHeight;\n\n var newHeight = 0,\n newWidth = 0;\n setCss.marginLeft = setCss.marginTop = 0;\n\n // basically we do the opposite action for contain and cover,\n // depending on whether the video aspect ratio is less than or\n // greater than the wrapper's aspect ratio\n if (videoRatio < wrapRatio ?\n style['object-fit'] === 'contain' : style['object-fit'] === 'cover') {\n newHeight = wrapHeight * videoRatio;\n newWidth = wrapWidth / videoRatio;\n\n setCss.width = Math.round(newHeight) + 'px';\n setCss.height = wrapHeight + 'px';\n\n if (style['object-position-x'] === 'left')\n setCss.marginLeft = 0;\n else if (style['object-position-x'] === 'right')\n setCss.marginLeft = Math.round(wrapWidth - newHeight) + 'px';\n else\n setCss.marginLeft = Math.round((wrapWidth - newHeight) / 2) + 'px';\n } else {\n newWidth = wrapWidth / videoRatio;\n\n setCss.width = wrapWidth + 'px';\n setCss.height = Math.round(newWidth) + 'px';\n\n if (style['object-position-y'] === 'top')\n setCss.marginTop = 0;\n else if (style['object-position-y'] === 'bottom')\n setCss.marginTop = Math.round(wrapHeight - newWidth) + 'px';\n else\n setCss.marginTop = Math.round((wrapHeight - newWidth) / 2) + 'px';\n }\n\n // play the video if autoplay is set\n if ($el.autoplay)\n $el.play();\n }\n }\n\n /**\n * Split the object-position property into x and y position properties\n * @param {object} style Relevant element styles\n * @return {object} The style object with the added x and y props\n */\n function parsePosition (style) {\n if (~style['object-position'].indexOf('left'))\n style['object-position-x'] = 'left';\n else if (~style['object-position'].indexOf('right'))\n style['object-position-x'] = 'right';\n else\n style['object-position-x'] = 'center';\n\n if (~style['object-position'].indexOf('top'))\n style['object-position-y'] = 'top';\n else if (~style['object-position'].indexOf('bottom'))\n style['object-position-y'] = 'bottom';\n else\n style['object-position-y'] = 'center';\n\n return style;\n }\n\n /**\n * Throttle an event with RequestAnimationFrame API for better performance\n * @param {string} type The event to throttle\n * @param {string} name Custom event name to listen for\n * @param {object} obj Optional object to attach the event to\n */\n function throttle (type, name, obj) {\n obj = obj || window;\n var running = false,\n evt = null;\n\n // IE does not support the CustomEvent constructor\n // so if that fails do it the old way\n try {\n evt = new CustomEvent(name);\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n var func = function () {\n if (running) return;\n\n running = true;\n requestAnimationFrame(function () {\n obj.dispatchEvent(evt);\n running = false;\n });\n };\n\n obj.addEventListener(type, func);\n }\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined')\n module.exports = objectFitVideos;\n", "/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener(\"resize\", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement(\"source\");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === \"PICTURE\") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t regexTrailingCommas = /[,]+$/,\n\t regexNonNegativeInteger = /^\\d+$/,\n\n\t // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t // Must include at least one digit.\n\t // According to spec tests any decimal point must be followed by a digit.\n\t // No leading plus sign is allowed.)\n\t // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t c === \"\\u0009\" || // horizontal tab\n\t\t c === \"\\u000A\" || // new line\n\t\t c === \"\\u000C\" || // form feed\n\t\t c === \"\\u000D\"); // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements = [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements = null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell | MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name. Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t url,\n\t\t descriptors,\n\t\t currentDescriptor,\n\t\t state,\n\t\t c,\n\n\t\t // 2. Let position be a pointer into input, initially pointing at the start\n\t\t // of the string.\n\t\t pos = 0,\n\n\t\t // 3. Let candidates be an initially empty source set.\n\t\t candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t w, d, h, i,\n\t\t\t candidate = {},\n\t\t\t desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t // Space character\n\t\t\t\t // If current descriptor is not empty, append current descriptor to\n\t\t\t\t // descriptors and let current descriptor be the empty string.\n\t\t\t\t // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell | MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value <img sizes=\"here\">\n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * <source-size-list> = <source-size># [ , <source-size-value> ]? | <source-size-value>\n\t * <source-size> = <media-condition> <source-size-value>\n\t * <source-size-value> = <length>\n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid <css-length> with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for <number> type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// (Toy CSS parser. The goals here are:\n\t\t// 1) expansive test coverage without the weight of a full CSS parser.\n\t\t// 2) Avoiding regex wherever convenient.\n\t\t// Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t// Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive <whitespace-token>s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// <source-size-value>, let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive <whitespace-token>s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// <media-condition>. If it does not parse correctly, or it does parse\n\t\t\t// correctly but the <media-condition> evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types = types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t// or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t * \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t * \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t * {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) || element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 : 999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD support\n\t\tdefine( \"picturefill\", function() { return picturefill; } );\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n", "(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n", "module.exports = {\r\n\tscreens: {\r\n\t\t'sm': '640px',\r\n\t\t'md': '768px',\r\n\t\t'lg': '1024px',\r\n\t\t'xl': '1376px'\r\n\t}\r\n}\r\n", "/*\n|--------------------------------------------------------------------------\n| Iodine - JavaScript Library\n|--------------------------------------------------------------------------\n|\n| This library contains a collection of useful validation rules that can\n| be used to quickly verify whether items meet certain conditions.\n|\n*/\nexport class Iodine {\n /**\n * Constructor.\n *\n **/\n constructor() {\n this.locale = undefined;\n this.messages = this._defaultMessages();\n this.defaultFieldName = \"Value\";\n }\n\n /**\n * @internal.\n *\n **/\n _dateCompare(first, second, type, equals = false) {\n if (!this.isDate(first)) return false;\n\n if (!this.isDate(second) && !this.isInteger(second)) return false;\n\n second = typeof second === \"number\" ? second : second.getTime();\n\n if (type === \"less\" && equals) return first.getTime() <= second;\n if (type === \"less\" && !equals) return first.getTime() < second;\n if (type === \"more\" && equals) return first.getTime() >= second;\n if (type === \"more\" && !equals) return first.getTime() > second;\n }\n\n /**\n * @internal.\n *\n **/\n _defaultMessages() {\n return {\n after: `The date must be after: '[PARAM]'`,\n afterOrEqual: `The date must be after or equal to: '[PARAM]'`,\n array: `[FIELD] must be an array`,\n before: `The date must be before: '[PARAM]'`,\n beforeOrEqual: `The date must be before or equal to: '[PARAM]'`,\n boolean: `[FIELD] must be true or false`,\n date: `[FIELD] must be a date`,\n different: `[FIELD] must be different to '[PARAM]'`,\n endingWith: `[FIELD] must end with '[PARAM]'`,\n email: `[FIELD] must be a valid email address`,\n falsy: `[FIELD] must be a falsy value (false, 'false', 0 or '0')`,\n in: `[FIELD] must be one of the following options: [PARAM]`,\n integer: `[FIELD] must be an integer`,\n json: `[FIELD] must be a parsable JSON object string`,\n maximum: `[FIELD] must not be greater than '[PARAM]' in size or character length`,\n minimum: `[FIELD] must not be less than '[PARAM]' in size or character length`,\n max: `[FIELD] must be less than or equal to [PARAM]`,\n min: `[FIELD] must be greater than or equal to [PARAM]`,\n maxLength: `[FIELD] must not be greater than '[PARAM]' in character length`,\n minLength: `[FIELD] must not be less than '[PARAM]' character length`,\n notIn: `[FIELD] must not be one of the following options: [PARAM]`,\n numeric: `[FIELD] must be numeric`,\n optional: `[FIELD] is optional`,\n regexMatch: `[FIELD] must satisify the regular expression: [PARAM]`,\n required: `[FIELD] must be present`,\n same: `[FIELD] must be '[PARAM]'`,\n startingWith: `[FIELD] must start with '[PARAM]'`,\n string: `[FIELD] must be a string`,\n truthy: `[FIELD] must be a truthy value (true, 'true', 1 or '1')`,\n url: `[FIELD] must be a valid url`,\n uuid: `[FIELD] must be a valid UUID`,\n };\n }\n\n /**\n * Attach a custom validation rule to the library.\n *\n **/\n addRule(name, closure) {\n Iodine.prototype[`is${name[0].toUpperCase()}${name.slice(1)}`] = closure;\n }\n\n /**\n * Retrieve an error message for the given rule.\n *\n **/\n getErrorMessage(rule, args = undefined) {\n let { param, field } =\n typeof args === \"object\" ? args : { param: args, field: undefined };\n\n const chunks = rule.split(\":\");\n let key = chunks.shift();\n param = param || chunks.join(\":\");\n\n if ([\"after\", \"afterOrEqual\", \"before\", \"beforeOrEqual\"].includes(key)) {\n param = new Date(parseInt(param)).toLocaleTimeString(this.locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"numeric\",\n hour12: false,\n });\n }\n\n let message = [null, undefined, \"\"].includes(param)\n ? this.messages[key]\n : this.messages[key].replace(\"[PARAM]\", param);\n\n return [null, undefined, \"\"].includes(field)\n ? message.replace(\"[FIELD]\", this.defaultFieldName)\n : message.replace(\"[FIELD]\", field);\n }\n\n /**\n * Determine if the given date is after another given date.\n *\n **/\n isAfter(value, after) {\n return this._dateCompare(value, after, \"more\", false);\n }\n\n /**\n * Determine if the given date is after or equal to another given date.\n *\n **/\n isAfterOrEqual(value, after) {\n return this._dateCompare(value, after, \"more\", true);\n }\n\n /**\n * Determine if the given value is an array.\n *\n **/\n isArray(value) {\n return Array.isArray(value);\n }\n\n /**\n * Determine if the given date is before another given date.\n *\n **/\n isBefore(value, before) {\n return this._dateCompare(value, before, \"less\", false);\n }\n\n /**\n * Determine if the given date is before or equal to another given date.\n *\n **/\n isBeforeOrEqual(value, before) {\n return this._dateCompare(value, before, \"less\", true);\n }\n\n /**\n * Determine if the given value is a boolean.\n *\n **/\n isBoolean(value) {\n return [true, false].includes(value);\n }\n\n /**\n * Determine if the given value is a date object.\n *\n **/\n isDate(value) {\n return (\n value &&\n Object.prototype.toString.call(value) === \"[object Date]\" &&\n !isNaN(value)\n );\n }\n\n /**\n * Determine if the given value is different to another given value.\n *\n **/\n isDifferent(value, different) {\n return value != different;\n }\n\n /**\n * Determine if the given value ends with another given value.\n *\n **/\n isEndingWith(value, sub) {\n return this.isString(value) && value.endsWith(sub);\n }\n\n /**\n * Determine if the given value is a valid email address.\n *\n **/\n isEmail(value) {\n return new RegExp(\"^\\\\S+@\\\\S+[\\\\.][0-9a-z]+$\").test(\n String(value).toLowerCase()\n );\n }\n\n /**\n * Determine if the given value is falsy.\n *\n **/\n isFalsy(value) {\n return [0, \"0\", false, \"false\"].includes(value);\n }\n\n /**\n * Determine if the given value is within the given array of options.\n *\n **/\n isIn(value, options) {\n options = typeof options === \"string\" ? options.split(\",\") : options;\n\n return options.includes(value);\n }\n\n /**\n * Determine if the given value is an integer.\n *\n **/\n isInteger(value) {\n return (\n Number.isInteger(value) && parseInt(value).toString() === value.toString()\n );\n }\n\n /**\n * Determine if the given value is a JSON string.\n *\n **/\n isJson(value) {\n try {\n return typeof JSON.parse(value) === \"object\";\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Determine if the given value meets the given maximum limit.\n *\n **/\n isMaximum(value, limit) {\n console.warn(\n \"isMaximum (maximum) is deprecated. Use isMax (max) for validating the maximum value of a number or isMaxLength (maxLength) for validating the length of a string\"\n );\n value = typeof value === \"string\" ? value.length : value;\n\n return parseFloat(value) <= limit;\n }\n\n /**\n * Determine if the given value meets the given minimum limit.\n *\n **/\n isMinimum(value, limit) {\n console.warn(\n \"isMinimum (minimum) is deprecated. Use isMin (min) for validating the minimum value of a number or isMinLength (minLength) for validating the length of a string\"\n );\n value = typeof value === \"string\" ? value.length : value;\n\n return parseFloat(value) >= limit;\n }\n\n /**\n * Determine if the given number is less than or equal to the maximum limit.\n *\n */\n isMax(value, limit) {\n return parseFloat(value) <= limit;\n }\n\n /**\n * Determine if the given number is greater than or equal to the minimum limit.\n *\n */\n isMin(value, limit) {\n return parseFloat(value) >= limit;\n }\n\n /**\n * Determine if the given value string length is less than or equal to the maximum limit.\n *\n */\n isMaxLength(value, limit) {\n if (typeof value !== \"string\") return false;\n\n return value.length <= limit;\n }\n\n /**\n * Determine if the given value string length is greater than or equal to the minimum limit.\n *\n */\n isMinLength(value, limit) {\n if (typeof value !== \"string\") return false;\n\n return value.length >= limit;\n }\n\n /**\n * Determine if the given value is not within the given array of options.\n *\n **/\n isNotIn(value, options) {\n return !this.isIn(value, options);\n }\n\n /**\n * Determine if the given value is numeric (an integer or a float).\n *\n **/\n isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n }\n\n /**\n * Determine if the given value is optional.\n *\n **/\n isOptional(value) {\n return [null, undefined, \"\"].includes(value);\n }\n\n /**\n * Determine if the given value satisifies the given regular expression.\n *\n **/\n isRegexMatch(value, expression) {\n return new RegExp(expression).test(String(value));\n }\n\n /**\n * Determine if the given value is present.\n *\n **/\n isRequired(value) {\n return !this.isOptional(value);\n }\n\n /**\n * Determine if the given value is the same as another given value.\n *\n **/\n isSame(value, same) {\n return value == same;\n }\n\n /**\n * Determine if the given value starts with another given value.\n *\n **/\n isStartingWith(value, sub) {\n return this.isString(value) && value.startsWith(sub);\n }\n\n /**\n * Determine if the given value is a string.\n *\n **/\n isString(value) {\n return typeof value === \"string\";\n }\n\n /**\n * Determine if the given value is truthy.\n *\n **/\n isTruthy(value) {\n return [1, \"1\", true, \"true\"].includes(value);\n }\n\n /**\n * Determine if the given value is a valid URL.\n *\n **/\n isUrl(value) {\n return new RegExp(\n \"^(https?:\\\\/\\\\/)?((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*(\\\\?[;&a-z\\\\d%_.~+=-]*)?(\\\\#[-a-z\\\\d_]*)?$\"\n ).test(String(value).toLowerCase());\n }\n\n /**\n * Determine if the given value is a valid UUID.\n *\n **/\n isUuid(value) {\n return new RegExp(\n \"^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"\n ).test(String(value).toLowerCase());\n }\n\n /**\n * Determine whether the given value meets the given rules.\n *\n **/\n is(value, rules = []) {\n if (!rules.length) return true;\n\n if (rules[0] === \"optional\" && this.isOptional(value)) return true;\n\n for (let index in rules) {\n if (rules[index] === \"optional\") continue;\n\n const chunks = rules[index].split(\":\");\n const ruleName = chunks.shift();\n let rule = ruleName[0].toUpperCase() + ruleName.slice(1);\n\n let result = this[`is${rule}`].apply(this, [value, chunks.join(\":\")]);\n\n if (!result) return rules[index];\n }\n\n return true;\n }\n\n /**\n * Determine whether the given value meets the given rules.\n * @returns true if the item passes every rule, otherwise returns false\n **/\n isValid(value, rules = []) {\n return this.is(value, rules) === true;\n }\n\n /**\n * Replace the default error messages with a new set.\n *\n **/\n setErrorMessages(messages) {\n this.messages = messages;\n }\n\n /**\n * Add or replace an error message.\n *\n **/\n setErrorMessage(key, message) {\n this.messages[key] = message;\n }\n\n /**\n * Replace the default locale with a new value.\n *\n **/\n setLocale(locale) {\n this.locale = locale;\n }\n\n /**\n * Replace the default field name with a new value.\n */\n setDefaultFieldName(fieldName) {\n this.defaultFieldName = fieldName;\n }\n}\n\n/**\n * Create an instance of the library.\n *\n **/\nwindow.Iodine = new Iodine();\n", "module.exports = {\r\n\txAsyncForm: () => {\r\n\t\treturn {\r\n\t\t\tinputElements: [],\r\n\t\t\tsubmitting: false,\r\n\t\t\tinit() {\r\n\t\t\t\t//Store an array of all the input elements with 'data-rules' attributes\r\n\t\t\t\tIodine.addRule('fullname', (value) => value.match(\"(.+ .*)|(.* .+)\"))\r\n\t\t\t\tIodine.setErrorMessage(\"fullname\", 'Udfyld venligst dit fulde navn')\r\n\t\t\t\tIodine.setErrorMessage(\"required\", 'Feltet skal udfyldes')\r\n\t\t\t\tIodine.setErrorMessage(\"email\", 'V\u00E6rdien skal skal v\u00E6re en rigtig email adresse')\r\n\t\t\t\tIodine.setErrorMessage(\"numeric\", 'Feltet m\u00E5 kun indeholde tal')\r\n\t\t\t\tthis.inputElements = [...this.$el.querySelectorAll(\"input[data-rules]\")];\r\n\t\t\t\tthis.initDomData();\r\n\t\t\t\tthis.updateErrorMessages();\r\n\t\t\t},\r\n\t\t\tinitDomData: function () {\r\n\t\t\t\t//Create an object attached to the component state for each input element to store its state\r\n\t\t\t\tthis.inputElements.map((ele) => {\r\n\t\t\t\t\tthis[ele.name] = {\r\n\t\t\t\t\t\tserverErrors: JSON.parse(ele.dataset.serverErrors),\r\n\t\t\t\t\t\tblurred: false\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tupdateErrorMessages: function () {\r\n\t\t\t\t//map throught the input elements and set the 'errorMessage'\r\n\t\t\t\tthis.inputElements.map((ele) => {\r\n\t\t\t\t\tthis[ele.name].errorMessage = this.getErrorMessage(ele);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tgetErrorMessage: function (ele) {\r\n\t\t\t\t//Return any server errors if they're present\r\n\t\t\t\tif (this[ele.name].serverErrors.length > 0) {\r\n\t\t\t\t\treturn input.serverErrors[0];\r\n\t\t\t\t}\r\n\t\t\t\t//Check using iodine and return the error message only if the element has not been blurred\r\n\t\t\t\tconst error = Iodine.is(ele.value, JSON.parse(ele.dataset.rules));\r\n\r\n\t\t\t\tif (error !== true && this[ele.name].blurred && ele.offsetParent != null) {\r\n\t\t\t\t\treturn Iodine.getErrorMessage(error);\r\n\t\t\t\t}\r\n\t\t\t\t//return empty string if there are no errors\r\n\t\t\t\treturn \"\";\r\n\t\t\t},\r\n\t\t\tfindParcelshops: function (address, zip) {\r\n\t\t\t\tif (!_self) {\r\n\t\t\t\t\tvar _self = this\r\n\t\t\t\t}\r\n\t\t\t\tfetch('/umbraco/api/gls/findnearestparcelshops', {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tbody: { \"Address\": address, \"ZipCode\": zip },\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t\t\t}\r\n\t\t\t\t}).then(function (response) {\r\n\t\t\t\t\tif (!response.ok) {\r\n\t\t\t\t\t\tthrow Error(response.json())\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn response.json();\r\n\t\t\t\t}).then(function (data) {\r\n\t\t\t\t\t_self.parcelShops = data\r\n\t\t\t\t\tif (data[0].ParcelShopId) {\r\n\t\t\t\t\t\t_self.setParcelshop(data[0].ParcelShopId, data[0].CompanyName)\r\n\t\t\t\t\t\t_self.selectedParcelshop = data[0].ParcelShopId\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch(function (json) {\r\n\t\t\t\t\treturn console.log(json)\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tgetParcelshops: function () {\r\n\t\t\t\tvar _self = this\r\n\t\t\t\tlet address = {}\r\n\t\t\t\taddress = {\r\n\t\t\t\t\tZipCode: document.getElementById(\"parcelshop_zip\") ? document.getElementById(\"parcelshop_zip\").value : Alpine.store('checkout').data.BasketViewModel.ShippingAddressModel.SelectedAddress.PostalCode,\r\n\t\t\t\t\tAddress: document.getElementById(\"parcelshop_address\") ? document.getElementById(\"parcelshop_address\").value : Alpine.store('checkout').data.BasketViewModel.ShippingAddressModel.SelectedAddress.AddressLine\r\n\t\t\t\t}\r\n\t\t\t\tfetch('/umbraco/api/gls/findnearestparcelshops', {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tbody: JSON.stringify(address),\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t\t\t}\r\n\t\t\t\t}).then(function (response) {\r\n\t\t\t\t\tif (!response.ok) {\r\n\t\t\t\t\t\tthrow Error(response.json())\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn response.json();\r\n\t\t\t\t}).then(function (data) {\r\n\t\t\t\t\t_self.parcelShops = data\r\n\t\t\t\t\tif (data[0].ParcelShopId) {\r\n\t\t\t\t\t\t_self.setParcelshop(data[0].ParcelShopId, data[0].CompanyName)\r\n\t\t\t\t\t\t_self.selectedParcelshop = data[0].ParcelShopId\r\n\t\t\t\t\t}\r\n\t\t\t\t}).catch(function (json) {\r\n\t\t\t\t\treturn console.log(json)\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tsetParcelshop: function (id, name, _self) {\r\n\t\t\t\tif (!_self) {\r\n\t\t\t\t\tvar _self = this\r\n\t\t\t\t}\r\n\t\t\t\tlet parcelshop = {}\r\n\t\t\t\tparcelshop = {\r\n\t\t\t\t\tParcelShopId: id,\r\n\t\t\t\t\tParcelShopName: name\r\n\t\t\t\t}\r\n\t\t\t\tfetch('/umbraco/api/checkout/provideparcelshopid', {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tbody: JSON.stringify(parcelshop),\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t\t\t}\r\n\t\t\t\t}).then(function (response) {\r\n\t\t\t\t\tif (!response.ok) {\r\n\t\t\t\t\t\tthrow Error(response.json())\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn response.json();\r\n\t\t\t\t}).catch(function (json) {\r\n\t\t\t\t\treturn console.log(json)\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tsubmit: function (event) {\r\n\t\t\t\tthis.inputElements = [...this.$el.querySelectorAll(\"input[data-rules]\")];\r\n\t\t\t\tif (this.$el.dataset.type === 'shippingLoggedIn') {\r\n\t\t\t\t\tthis.inputElements = [...document.querySelectorAll(\"#loggedInShippingAddress input[data-rules]\")]\r\n\t\t\t\t\tdocument.getElementById(\"loggedInShippingAddressSubmit\").click()\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.initDomData();\r\n\t\t\t\tthis.updateErrorMessages();\r\n\r\n\t\t\t\tconst invalidElements = this.inputElements.filter((input) => {\r\n\t\t\t\t\tif (input.offsetParent != null) {\r\n\t\t\t\t\t\treturn Iodine.is(input.value, JSON.parse(input.dataset.rules)) !== true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tif (invalidElements.length > 0) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tdocument.getElementById(invalidElements[0].id).scrollIntoView();\r\n\t\t\t\t\t//We set all the inputs as blurred if the form has been submitted\r\n\t\t\t\t\tthis.inputElements.map((input) => {\r\n\t\t\t\t\t\tthis[input.name].blurred = true;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (event.target.dataset.type === 'billing') {\r\n\t\t\t\t\t\tvar selected = Alpine.store('checkout').data.BasketViewModel.CustomerType\r\n\t\t\t\t\t\tif (selected != null) {\r\n\t\t\t\t\t\t\tvar privat = document.getElementById('Privat')\r\n\t\t\t\t\t\t\tprivat.click()\r\n\t\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\t\tdocument.getElementById(selected).click()\r\n\t\t\t\t\t\t\t}, 10);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//And update the error messages.\r\n\t\t\t\t\tthis.updateErrorMessages();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tif (this.$el.dataset.action) {\r\n\t\t\t\t\t\tvar _self = this\r\n\t\t\t\t\t\tthis.submitting = true\r\n\t\t\t\t\t\tlet customForm = {}\r\n\r\n\t\t\t\t\t\tif (this.$el.dataset.type === 'billing') {\r\n\t\t\t\t\t\t\tvar formData = new FormData(event.target)\r\n\t\t\t\t\t\t\tcustomForm = {\r\n\t\t\t\t\t\t\t\tCurrentStep: formData.get(\"CurrentStep\"),\r\n\t\t\t\t\t\t\t\tUseInvoiceAddressAsShippingAddress: formData.get(\"UseInvoiceAddressAsShippingAddress\"),\r\n\t\t\t\t\t\t\t\tCustomerType: formData.get(\"CustomerType\"),\r\n\t\t\t\t\t\t\t\tBillingAddressFormModel: Object.fromEntries(formData)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcustomForm = JSON.stringify(customForm)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (this.$el.dataset.type === 'shippingLoggedIn') {\r\n\t\t\t\t\t\t\tcustomForm = JSON.stringify(Object.fromEntries(new FormData(document.getElementById(\"loggedInShippingAddress\"))))\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (this.$el.dataset.type === 'shipping') {\r\n\t\t\t\t\t\t\tvar deliveryAddress = document.getElementById(\"deliveryAddress\") != null ? new FormData(document.getElementById(\"deliveryAddress\")) : null\r\n\t\t\t\t\t\t\tvar formData = new FormData(event.target)\r\n\t\t\t\t\t\t\tcustomForm = {\r\n\t\t\t\t\t\t\t\tCurrentStep: parseInt(formData.get(\"CurrentStep\")) + 1,\r\n\t\t\t\t\t\t\t\tAddress: deliveryAddress != null ? Object.fromEntries(deliveryAddress) : deliveryAddress\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcustomForm = JSON.stringify(customForm)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (this.$el.dataset.parcelshop) {\r\n\t\t\t\t\t\t\t_self.getParcelshops(_self)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfetch(this.$el.dataset.action, {\r\n\t\t\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\t\t\tbody: customForm.length ? customForm : JSON.stringify(Object.fromEntries(new FormData(event.target.closest(\"form\")))),\r\n\t\t\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\t\t'Content-Type': 'application/json'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}).then(function (response) {\r\n\t\t\t\t\t\t\tif (!response.ok) {\r\n\t\t\t\t\t\t\t\t_self.submitting = false\r\n\t\t\t\t\t\t\t\tthrow Error(response.json())\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (_self.newsletter && _self.$store.checkout.data.BasketViewModel.InvoiceAddressModel.EmailAddress) {\r\n\t\t\t\t\t\t\t\tdataLayer.push({\r\n\t\t\t\t\t\t\t\t\t'event': 'newsletter_signup',\r\n\t\t\t\t\t\t\t\t\t'email': _self.$store.checkout.data.BasketViewModel.InvoiceAddressModel.EmailAddress\r\n\t\t\t\t\t\t\t\t}); \r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn response.json();\r\n\t\t\t\t\t\t}).then(function (data) {\r\n\t\t\t\t\t\t\tif (_self.$el.dataset.type === 'login') {\r\n\t\t\t\t\t\t\t\tif (data.ResetLoginRedirect != null && data.Url && data.ResetLoginRedirect && data.Url != \"\") {\r\n\t\t\t\t\t\t\t\t\twindow.location.replace(data.Url)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tif (data.IsLoggedIn) {\r\n\t\t\t\t\t\t\t\t\t\t_self.showWelcomeMessage = true\r\n\t\t\t\t\t\t\t\t\t\t_self.loggedIn = true\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t_self.loginFailed = true\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t_self.submitting = false\r\n\t\t\t\t\t\t\t\t\tAlpine.store('checkout').data = data\r\n\t\t\t\t\t\t\t\t\t_self.section = data.CurrentStep\r\n\r\n\t\t\t\t\t\t\t\t\tif (_self.$el.dataset.type === 'createaddress') {\r\n\t\t\t\t\t\t\t\t\t\t_self.open = false\r\n\t\t\t\t\t\t\t\t\t\t_self.ShippingAddressId = data.BasketViewModel.ShippingAddressModel.SelectedAddress.AddressId\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tif (data.IsLoggedIn) {\r\n\t\t\t\t\t\t\t\t\t_self.showWelcomeMessage = true\r\n\t\t\t\t\t\t\t\t\t_self.loggedIn = true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t_self.loginFailed = true\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t_self.submitting = false\r\n\t\t\t\t\t\t\t\tAlpine.store('checkout').data = data\r\n\t\t\t\t\t\t\t\t_self.section = data.CurrentStep\r\n\r\n\t\t\t\t\t\t\t\tif (_self.$el.dataset.type === 'createaddress') {\r\n\t\t\t\t\t\t\t\t\t_self.open = false\r\n\t\t\t\t\t\t\t\t\t_self.ShippingAddressId = data.BasketViewModel.ShippingAddressModel.SelectedAddress.AddressId\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}).catch(function (json) {\r\n\t\t\t\t\t\t\treturn console.log(json)\r\n\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tchange: function (event) {\r\n\t\t\t\t//Ignore all events that aren't coming from the inputs we're watching\r\n\t\t\t\tif (!this[event.target.name]) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (event.type === \"input\") {\r\n\t\t\t\t\tthis[event.target.name].serverErrors = [];\r\n\t\t\t\t}\r\n\t\t\t\tif (event.type === \"focusout\") {\r\n\t\t\t\t\tthis[event.target.name].blurred = true;\r\n\t\t\t\t}\r\n\t\t\t\t//Whether blurred or on input, we update the error messages\r\n\t\t\t\tthis.updateErrorMessages();\r\n\t\t\t}\r\n\t\t};\r\n\t},\r\n}\r\n", "module.exports = {\r\n\tfavorites: (e) => {\r\n\t\treturn {\r\n\t\t\tdata: null,\r\n\t\t\tstarred: false,\r\n\t\t\tisLoading: false,\r\n\t\t\tsku: null,\r\n\t\t\tlists: null,\r\n\t\t\tinit() {\r\n\t\t\t\tthis.starred = e\r\n\t\t\t},\r\n\t\t\tadd(sku) {\r\n\t\t\t\tthis.isLoading = true;\r\n\t\t\t\tthis.sku = sku\r\n\t\t\t\tconst item = { Sku: this.sku };\r\n\r\n\t\t\t\tfetch(`/umbraco/surface/FavoritesWebSurface/add/`, {\r\n\t\t\t\t\tmethod: 'POST', // or 'PUT'\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: JSON.stringify(item),\r\n\t\t\t\t})\r\n\t\t\t\t\t.then(response => response.json())\r\n\t\t\t\t\t.then(data => {\r\n\t\t\t\t\t\tif (data === true) {\r\n\t\t\t\t\t\t\tthis.data = data;\r\n\t\t\t\t\t\t\tthis.starred = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.lists = data;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tconsole.error('Error:', error);\r\n\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t});\r\n\t\t\t},\r\n\t\t\taddToList(id) {\r\n\t\t\t\tif (id) {\r\n\t\t\t\t\tthis.isLoading = true;\r\n\t\t\t\t\tconst item = { Sku: this.sku, Ids: id };\r\n\r\n\t\t\t\t\tfetch(`/umbraco/surface/FavoritesWebSurface/AddToLists/`, {\r\n\t\t\t\t\t\tmethod: 'POST', // or 'PUT'\r\n\t\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tbody: JSON.stringify(item),\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(response => response.json())\r\n\t\t\t\t\t\t.then(data => {\r\n\t\t\t\t\t\t\tif (data === true) {\r\n\t\t\t\t\t\t\t\tthis.data = data;\r\n\t\t\t\t\t\t\t\tthis.starred = true;\r\n\t\t\t\t\t\t\t\tthis.lists = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tthis.lists = data;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\t\tconsole.error('Error:', error);\r\n\t\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tremove(sku) {\r\n\t\t\t\tthis.isLoading = true;\r\n\t\t\t\tconst item = { Sku: sku };\r\n\r\n\t\t\t\tfetch(`/umbraco/surface/FavoritesWebSurface/remove/`, {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: JSON.stringify(item),\r\n\t\t\t\t})\r\n\t\t\t\t\t.then(response => response.json())\r\n\t\t\t\t\t.then(data => {\r\n\t\t\t\t\t\tthis.data = data;\r\n\t\t\t\t\t\tthis.starred = false;\r\n\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\tconsole.error('Error:', error);\r\n\t\t\t\t\t\tthis.isLoading = false;\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.noUiSlider = {}));\n}(this, (function (exports) { 'use strict';\n\n exports.PipsMode = void 0;\n (function (PipsMode) {\n PipsMode[\"Range\"] = \"range\";\n PipsMode[\"Steps\"] = \"steps\";\n PipsMode[\"Positions\"] = \"positions\";\n PipsMode[\"Count\"] = \"count\";\n PipsMode[\"Values\"] = \"values\";\n })(exports.PipsMode || (exports.PipsMode = {}));\n exports.PipsType = void 0;\n (function (PipsType) {\n PipsType[PipsType[\"None\"] = -1] = \"None\";\n PipsType[PipsType[\"NoValue\"] = 0] = \"NoValue\";\n PipsType[PipsType[\"LargeValue\"] = 1] = \"LargeValue\";\n PipsType[PipsType[\"SmallValue\"] = 2] = \"SmallValue\";\n })(exports.PipsType || (exports.PipsType = {}));\n //region Helper Methods\n function isValidFormatter(entry) {\n return isValidPartialFormatter(entry) && typeof entry.from === \"function\";\n }\n function isValidPartialFormatter(entry) {\n // partial formatters only need a to function and not a from function\n return typeof entry === \"object\" && typeof entry.to === \"function\";\n }\n function removeElement(el) {\n el.parentElement.removeChild(el);\n }\n function isSet(value) {\n return value !== null && value !== undefined;\n }\n // Bindable version\n function preventDefault(e) {\n e.preventDefault();\n }\n // Removes duplicates from an array.\n function unique(array) {\n return array.filter(function (a) {\n return !this[a] ? (this[a] = true) : false;\n }, {});\n }\n // Round a value to the closest 'to'.\n function closest(value, to) {\n return Math.round(value / to) * to;\n }\n // Current position of an element relative to the document.\n function offset(elem, orientation) {\n var rect = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var docElem = doc.documentElement;\n var pageOffset = getPageOffset(doc);\n // getBoundingClientRect contains left scroll in Chrome on Android.\n // I haven't found a feature detection that proves this. Worst case\n // scenario on mis-match: the 'tap' feature on horizontal sliders breaks.\n if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) {\n pageOffset.x = 0;\n }\n return orientation ? rect.top + pageOffset.y - docElem.clientTop : rect.left + pageOffset.x - docElem.clientLeft;\n }\n // Checks whether a value is numerical.\n function isNumeric(a) {\n return typeof a === \"number\" && !isNaN(a) && isFinite(a);\n }\n // Sets a class and removes it after [duration] ms.\n function addClassFor(element, className, duration) {\n if (duration > 0) {\n addClass(element, className);\n setTimeout(function () {\n removeClass(element, className);\n }, duration);\n }\n }\n // Limits a value to 0 - 100\n function limit(a) {\n return Math.max(Math.min(a, 100), 0);\n }\n // Wraps a variable as an array, if it isn't one yet.\n // Note that an input array is returned by reference!\n function asArray(a) {\n return Array.isArray(a) ? a : [a];\n }\n // Counts decimals\n function countDecimals(numStr) {\n numStr = String(numStr);\n var pieces = numStr.split(\".\");\n return pieces.length > 1 ? pieces[1].length : 0;\n }\n // http://youmightnotneedjquery.com/#add_class\n function addClass(el, className) {\n if (el.classList && !/\\s/.test(className)) {\n el.classList.add(className);\n }\n else {\n el.className += \" \" + className;\n }\n }\n // http://youmightnotneedjquery.com/#remove_class\n function removeClass(el, className) {\n if (el.classList && !/\\s/.test(className)) {\n el.classList.remove(className);\n }\n else {\n el.className = el.className.replace(new RegExp(\"(^|\\\\b)\" + className.split(\" \").join(\"|\") + \"(\\\\b|$)\", \"gi\"), \" \");\n }\n }\n // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/\n function hasClass(el, className) {\n return el.classList ? el.classList.contains(className) : new RegExp(\"\\\\b\" + className + \"\\\\b\").test(el.className);\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes\n function getPageOffset(doc) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (doc.compatMode || \"\") === \"CSS1Compat\";\n var x = supportPageOffset\n ? window.pageXOffset\n : isCSS1Compat\n ? doc.documentElement.scrollLeft\n : doc.body.scrollLeft;\n var y = supportPageOffset\n ? window.pageYOffset\n : isCSS1Compat\n ? doc.documentElement.scrollTop\n : doc.body.scrollTop;\n return {\n x: x,\n y: y\n };\n }\n // we provide a function to compute constants instead\n // of accessing window.* as soon as the module needs it\n // so that we do not compute anything if not needed\n function getActions() {\n // Determine the events to bind. IE11 implements pointerEvents without\n // a prefix, which breaks compatibility with the IE10 implementation.\n return window.navigator.pointerEnabled\n ? {\n start: \"pointerdown\",\n move: \"pointermove\",\n end: \"pointerup\"\n }\n : window.navigator.msPointerEnabled\n ? {\n start: \"MSPointerDown\",\n move: \"MSPointerMove\",\n end: \"MSPointerUp\"\n }\n : {\n start: \"mousedown touchstart\",\n move: \"mousemove touchmove\",\n end: \"mouseup touchend\"\n };\n }\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // Issue #785\n function getSupportsPassive() {\n var supportsPassive = false;\n /* eslint-disable */\n try {\n var opts = Object.defineProperty({}, \"passive\", {\n get: function () {\n supportsPassive = true;\n }\n });\n // @ts-ignore\n window.addEventListener(\"test\", null, opts);\n }\n catch (e) { }\n /* eslint-enable */\n return supportsPassive;\n }\n function getSupportsTouchActionNone() {\n return window.CSS && CSS.supports && CSS.supports(\"touch-action\", \"none\");\n }\n //endregion\n //region Range Calculation\n // Determine the size of a sub-range in relation to a full range.\n function subRangeRatio(pa, pb) {\n return 100 / (pb - pa);\n }\n // (percentage) How many percent is this value of this range?\n function fromPercentage(range, value, startRange) {\n return (value * 100) / (range[startRange + 1] - range[startRange]);\n }\n // (percentage) Where is this value on this range?\n function toPercentage(range, value) {\n return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0], 0);\n }\n // (value) How much is this percentage on this range?\n function isPercentage(range, value) {\n return (value * (range[1] - range[0])) / 100 + range[0];\n }\n function getJ(value, arr) {\n var j = 1;\n while (value >= arr[j]) {\n j += 1;\n }\n return j;\n }\n // (percentage) Input a value, find where, on a scale of 0-100, it applies.\n function toStepping(xVal, xPct, value) {\n if (value >= xVal.slice(-1)[0]) {\n return 100;\n }\n var j = getJ(value, xVal);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb);\n }\n // (value) Input a percentage, find where it is on the specified range.\n function fromStepping(xVal, xPct, value) {\n // There is no range group that fits 100\n if (value >= 100) {\n return xVal.slice(-1)[0];\n }\n var j = getJ(value, xPct);\n var va = xVal[j - 1];\n var vb = xVal[j];\n var pa = xPct[j - 1];\n var pb = xPct[j];\n return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb));\n }\n // (percentage) Get the step that applies at a certain value.\n function getStep(xPct, xSteps, snap, value) {\n if (value === 100) {\n return value;\n }\n var j = getJ(value, xPct);\n var a = xPct[j - 1];\n var b = xPct[j];\n // If 'snap' is set, steps are used as fixed points on the slider.\n if (snap) {\n // Find the closest position, a or b.\n if (value - a > (b - a) / 2) {\n return b;\n }\n return a;\n }\n if (!xSteps[j - 1]) {\n return value;\n }\n return xPct[j - 1] + closest(value - xPct[j - 1], xSteps[j - 1]);\n }\n //endregion\n //region Spectrum\n var Spectrum = /** @class */ (function () {\n function Spectrum(entry, snap, singleStep) {\n this.xPct = [];\n this.xVal = [];\n this.xSteps = [];\n this.xNumSteps = [];\n this.xHighestCompleteStep = [];\n this.xSteps = [singleStep || false];\n this.xNumSteps = [false];\n this.snap = snap;\n var index;\n var ordered = [];\n // Map the object keys to an array.\n Object.keys(entry).forEach(function (index) {\n ordered.push([asArray(entry[index]), index]);\n });\n // Sort all entries by value (numeric sort).\n ordered.sort(function (a, b) {\n return a[0][0] - b[0][0];\n });\n // Convert all entries to subranges.\n for (index = 0; index < ordered.length; index++) {\n this.handleEntryPoint(ordered[index][1], ordered[index][0]);\n }\n // Store the actual step values.\n // xSteps is sorted in the same order as xPct and xVal.\n this.xNumSteps = this.xSteps.slice(0);\n // Convert all numeric steps to the percentage of the subrange they represent.\n for (index = 0; index < this.xNumSteps.length; index++) {\n this.handleStepPoint(index, this.xNumSteps[index]);\n }\n }\n Spectrum.prototype.getDistance = function (value) {\n var index;\n var distances = [];\n for (index = 0; index < this.xNumSteps.length - 1; index++) {\n // last \"range\" can't contain step size as it is purely an endpoint.\n var step = this.xNumSteps[index];\n if (step && (value / step) % 1 !== 0) {\n throw new Error(\"noUiSlider: 'limit', 'margin' and 'padding' of \" +\n this.xPct[index] +\n \"% range must be divisible by step.\");\n }\n // Calculate percentual distance in current range of limit, margin or padding\n distances[index] = fromPercentage(this.xVal, value, index);\n }\n return distances;\n };\n // Calculate the percentual distance over the whole scale of ranges.\n // direction: 0 = backwards / 1 = forwards\n Spectrum.prototype.getAbsoluteDistance = function (value, distances, direction) {\n var xPct_index = 0;\n // Calculate range where to start calculation\n if (value < this.xPct[this.xPct.length - 1]) {\n while (value > this.xPct[xPct_index + 1]) {\n xPct_index++;\n }\n }\n else if (value === this.xPct[this.xPct.length - 1]) {\n xPct_index = this.xPct.length - 2;\n }\n // If looking backwards and the value is exactly at a range separator then look one range further\n if (!direction && value === this.xPct[xPct_index + 1]) {\n xPct_index++;\n }\n if (distances === null) {\n distances = [];\n }\n var start_factor;\n var rest_factor = 1;\n var rest_rel_distance = distances[xPct_index];\n var range_pct = 0;\n var rel_range_distance = 0;\n var abs_distance_counter = 0;\n var range_counter = 0;\n // Calculate what part of the start range the value is\n if (direction) {\n start_factor = (value - this.xPct[xPct_index]) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]);\n }\n else {\n start_factor = (this.xPct[xPct_index + 1] - value) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]);\n }\n // Do until the complete distance across ranges is calculated\n while (rest_rel_distance > 0) {\n // Calculate the percentage of total range\n range_pct = this.xPct[xPct_index + 1 + range_counter] - this.xPct[xPct_index + range_counter];\n // Detect if the margin, padding or limit is larger then the current range and calculate\n if (distances[xPct_index + range_counter] * rest_factor + 100 - start_factor * 100 > 100) {\n // If larger then take the percentual distance of the whole range\n rel_range_distance = range_pct * start_factor;\n // Rest factor of relative percentual distance still to be calculated\n rest_factor = (rest_rel_distance - 100 * start_factor) / distances[xPct_index + range_counter];\n // Set start factor to 1 as for next range it does not apply.\n start_factor = 1;\n }\n else {\n // If smaller or equal then take the percentual distance of the calculate percentual part of that range\n rel_range_distance = ((distances[xPct_index + range_counter] * range_pct) / 100) * rest_factor;\n // No rest left as the rest fits in current range\n rest_factor = 0;\n }\n if (direction) {\n abs_distance_counter = abs_distance_counter - rel_range_distance;\n // Limit range to first range when distance becomes outside of minimum range\n if (this.xPct.length + range_counter >= 1) {\n range_counter--;\n }\n }\n else {\n abs_distance_counter = abs_distance_counter + rel_range_distance;\n // Limit range to last range when distance becomes outside of maximum range\n if (this.xPct.length - range_counter >= 1) {\n range_counter++;\n }\n }\n // Rest of relative percentual distance still to be calculated\n rest_rel_distance = distances[xPct_index + range_counter] * rest_factor;\n }\n return value + abs_distance_counter;\n };\n Spectrum.prototype.toStepping = function (value) {\n value = toStepping(this.xVal, this.xPct, value);\n return value;\n };\n Spectrum.prototype.fromStepping = function (value) {\n return fromStepping(this.xVal, this.xPct, value);\n };\n Spectrum.prototype.getStep = function (value) {\n value = getStep(this.xPct, this.xSteps, this.snap, value);\n return value;\n };\n Spectrum.prototype.getDefaultStep = function (value, isDown, size) {\n var j = getJ(value, this.xPct);\n // When at the top or stepping down, look at the previous sub-range\n if (value === 100 || (isDown && value === this.xPct[j - 1])) {\n j = Math.max(j - 1, 1);\n }\n return (this.xVal[j] - this.xVal[j - 1]) / size;\n };\n Spectrum.prototype.getNearbySteps = function (value) {\n var j = getJ(value, this.xPct);\n return {\n stepBefore: {\n startValue: this.xVal[j - 2],\n step: this.xNumSteps[j - 2],\n highestStep: this.xHighestCompleteStep[j - 2]\n },\n thisStep: {\n startValue: this.xVal[j - 1],\n step: this.xNumSteps[j - 1],\n highestStep: this.xHighestCompleteStep[j - 1]\n },\n stepAfter: {\n startValue: this.xVal[j],\n step: this.xNumSteps[j],\n highestStep: this.xHighestCompleteStep[j]\n }\n };\n };\n Spectrum.prototype.countStepDecimals = function () {\n var stepDecimals = this.xNumSteps.map(countDecimals);\n return Math.max.apply(null, stepDecimals);\n };\n Spectrum.prototype.hasNoSize = function () {\n return this.xVal[0] === this.xVal[this.xVal.length - 1];\n };\n // Outside testing\n Spectrum.prototype.convert = function (value) {\n return this.getStep(this.toStepping(value));\n };\n Spectrum.prototype.handleEntryPoint = function (index, value) {\n var percentage;\n // Covert min/max syntax to 0 and 100.\n if (index === \"min\") {\n percentage = 0;\n }\n else if (index === \"max\") {\n percentage = 100;\n }\n else {\n percentage = parseFloat(index);\n }\n // Check for correct input.\n if (!isNumeric(percentage) || !isNumeric(value[0])) {\n throw new Error(\"noUiSlider: 'range' value isn't numeric.\");\n }\n // Store values.\n this.xPct.push(percentage);\n this.xVal.push(value[0]);\n var value1 = Number(value[1]);\n // NaN will evaluate to false too, but to keep\n // logging clear, set step explicitly. Make sure\n // not to override the 'step' setting with false.\n if (!percentage) {\n if (!isNaN(value1)) {\n this.xSteps[0] = value1;\n }\n }\n else {\n this.xSteps.push(isNaN(value1) ? false : value1);\n }\n this.xHighestCompleteStep.push(0);\n };\n Spectrum.prototype.handleStepPoint = function (i, n) {\n // Ignore 'false' stepping.\n if (!n) {\n return;\n }\n // Step over zero-length ranges (#948);\n if (this.xVal[i] === this.xVal[i + 1]) {\n this.xSteps[i] = this.xHighestCompleteStep[i] = this.xVal[i];\n return;\n }\n // Factor to range ratio\n this.xSteps[i] =\n fromPercentage([this.xVal[i], this.xVal[i + 1]], n, 0) / subRangeRatio(this.xPct[i], this.xPct[i + 1]);\n var totalSteps = (this.xVal[i + 1] - this.xVal[i]) / this.xNumSteps[i];\n var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1);\n var step = this.xVal[i] + this.xNumSteps[i] * highestStep;\n this.xHighestCompleteStep[i] = step;\n };\n return Spectrum;\n }());\n //endregion\n //region Options\n /*\tEvery input option is tested and parsed. This will prevent\n endless validation in internal methods. These tests are\n structured with an item for every option available. An\n option can be marked as required by setting the 'r' flag.\n The testing function is provided with three arguments:\n - The provided value for the option;\n - A reference to the options object;\n - The name for the option;\n\n The testing function returns false when an error is detected,\n or true when everything is OK. It can also modify the option\n object, to make sure all values can be correctly looped elsewhere. */\n //region Defaults\n var defaultFormatter = {\n to: function (value) {\n return value === undefined ? \"\" : value.toFixed(2);\n },\n from: Number\n };\n var cssClasses = {\n target: \"target\",\n base: \"base\",\n origin: \"origin\",\n handle: \"handle\",\n handleLower: \"handle-lower\",\n handleUpper: \"handle-upper\",\n touchArea: \"touch-area\",\n horizontal: \"horizontal\",\n vertical: \"vertical\",\n background: \"background\",\n connect: \"connect\",\n connects: \"connects\",\n ltr: \"ltr\",\n rtl: \"rtl\",\n textDirectionLtr: \"txt-dir-ltr\",\n textDirectionRtl: \"txt-dir-rtl\",\n draggable: \"draggable\",\n drag: \"state-drag\",\n tap: \"state-tap\",\n active: \"active\",\n tooltip: \"tooltip\",\n pips: \"pips\",\n pipsHorizontal: \"pips-horizontal\",\n pipsVertical: \"pips-vertical\",\n marker: \"marker\",\n markerHorizontal: \"marker-horizontal\",\n markerVertical: \"marker-vertical\",\n markerNormal: \"marker-normal\",\n markerLarge: \"marker-large\",\n markerSub: \"marker-sub\",\n value: \"value\",\n valueHorizontal: \"value-horizontal\",\n valueVertical: \"value-vertical\",\n valueNormal: \"value-normal\",\n valueLarge: \"value-large\",\n valueSub: \"value-sub\"\n };\n // Namespaces of internal event listeners\n var INTERNAL_EVENT_NS = {\n tooltips: \".__tooltips\",\n aria: \".__aria\"\n };\n //endregion\n function testStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'step' is not numeric.\");\n }\n // The step option can still be used to set stepping\n // for linear sliders. Overwritten if set in 'range'.\n parsed.singleStep = entry;\n }\n function testKeyboardPageMultiplier(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardPageMultiplier' is not numeric.\");\n }\n parsed.keyboardPageMultiplier = entry;\n }\n function testKeyboardMultiplier(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardMultiplier' is not numeric.\");\n }\n parsed.keyboardMultiplier = entry;\n }\n function testKeyboardDefaultStep(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'keyboardDefaultStep' is not numeric.\");\n }\n parsed.keyboardDefaultStep = entry;\n }\n function testRange(parsed, entry) {\n // Filter incorrect input.\n if (typeof entry !== \"object\" || Array.isArray(entry)) {\n throw new Error(\"noUiSlider: 'range' is not an object.\");\n }\n // Catch missing start or end.\n if (entry.min === undefined || entry.max === undefined) {\n throw new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");\n }\n parsed.spectrum = new Spectrum(entry, parsed.snap || false, parsed.singleStep);\n }\n function testStart(parsed, entry) {\n entry = asArray(entry);\n // Validate input. Values aren't tested, as the public .val method\n // will always provide a valid location.\n if (!Array.isArray(entry) || !entry.length) {\n throw new Error(\"noUiSlider: 'start' option is incorrect.\");\n }\n // Store the number of handles.\n parsed.handles = entry.length;\n // When the slider is initialized, the .val method will\n // be called with the start options.\n parsed.start = entry;\n }\n function testSnap(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'snap' option must be a boolean.\");\n }\n // Enforce 100% stepping within subranges.\n parsed.snap = entry;\n }\n function testAnimate(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'animate' option must be a boolean.\");\n }\n // Enforce 100% stepping within subranges.\n parsed.animate = entry;\n }\n function testAnimationDuration(parsed, entry) {\n if (typeof entry !== \"number\") {\n throw new Error(\"noUiSlider: 'animationDuration' option must be a number.\");\n }\n parsed.animationDuration = entry;\n }\n function testConnect(parsed, entry) {\n var connect = [false];\n var i;\n // Map legacy options\n if (entry === \"lower\") {\n entry = [true, false];\n }\n else if (entry === \"upper\") {\n entry = [false, true];\n }\n // Handle boolean options\n if (entry === true || entry === false) {\n for (i = 1; i < parsed.handles; i++) {\n connect.push(entry);\n }\n connect.push(false);\n }\n // Reject invalid input\n else if (!Array.isArray(entry) || !entry.length || entry.length !== parsed.handles + 1) {\n throw new Error(\"noUiSlider: 'connect' option doesn't match handle count.\");\n }\n else {\n connect = entry;\n }\n parsed.connect = connect;\n }\n function testOrientation(parsed, entry) {\n // Set orientation to an a numerical value for easy\n // array selection.\n switch (entry) {\n case \"horizontal\":\n parsed.ort = 0;\n break;\n case \"vertical\":\n parsed.ort = 1;\n break;\n default:\n throw new Error(\"noUiSlider: 'orientation' option is invalid.\");\n }\n }\n function testMargin(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'margin' option must be numeric.\");\n }\n // Issue #582\n if (entry === 0) {\n return;\n }\n parsed.margin = parsed.spectrum.getDistance(entry);\n }\n function testLimit(parsed, entry) {\n if (!isNumeric(entry)) {\n throw new Error(\"noUiSlider: 'limit' option must be numeric.\");\n }\n parsed.limit = parsed.spectrum.getDistance(entry);\n if (!parsed.limit || parsed.handles < 2) {\n throw new Error(\"noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles.\");\n }\n }\n function testPadding(parsed, entry) {\n var index;\n if (!isNumeric(entry) && !Array.isArray(entry)) {\n throw new Error(\"noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers.\");\n }\n if (Array.isArray(entry) && !(entry.length === 2 || isNumeric(entry[0]) || isNumeric(entry[1]))) {\n throw new Error(\"noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers.\");\n }\n if (entry === 0) {\n return;\n }\n if (!Array.isArray(entry)) {\n entry = [entry, entry];\n }\n // 'getDistance' returns false for invalid values.\n parsed.padding = [parsed.spectrum.getDistance(entry[0]), parsed.spectrum.getDistance(entry[1])];\n for (index = 0; index < parsed.spectrum.xNumSteps.length - 1; index++) {\n // last \"range\" can't contain step size as it is purely an endpoint.\n if (parsed.padding[0][index] < 0 || parsed.padding[1][index] < 0) {\n throw new Error(\"noUiSlider: 'padding' option must be a positive number(s).\");\n }\n }\n var totalPadding = entry[0] + entry[1];\n var firstValue = parsed.spectrum.xVal[0];\n var lastValue = parsed.spectrum.xVal[parsed.spectrum.xVal.length - 1];\n if (totalPadding / (lastValue - firstValue) > 1) {\n throw new Error(\"noUiSlider: 'padding' option must not exceed 100% of the range.\");\n }\n }\n function testDirection(parsed, entry) {\n // Set direction as a numerical value for easy parsing.\n // Invert connection for RTL sliders, so that the proper\n // handles get the connect/background classes.\n switch (entry) {\n case \"ltr\":\n parsed.dir = 0;\n break;\n case \"rtl\":\n parsed.dir = 1;\n break;\n default:\n throw new Error(\"noUiSlider: 'direction' option was not recognized.\");\n }\n }\n function testBehaviour(parsed, entry) {\n // Make sure the input is a string.\n if (typeof entry !== \"string\") {\n throw new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");\n }\n // Check if the string contains any keywords.\n // None are required.\n var tap = entry.indexOf(\"tap\") >= 0;\n var drag = entry.indexOf(\"drag\") >= 0;\n var fixed = entry.indexOf(\"fixed\") >= 0;\n var snap = entry.indexOf(\"snap\") >= 0;\n var hover = entry.indexOf(\"hover\") >= 0;\n var unconstrained = entry.indexOf(\"unconstrained\") >= 0;\n var dragAll = entry.indexOf(\"drag-all\") >= 0;\n if (fixed) {\n if (parsed.handles !== 2) {\n throw new Error(\"noUiSlider: 'fixed' behaviour must be used with 2 handles\");\n }\n // Use margin to enforce fixed state\n testMargin(parsed, parsed.start[1] - parsed.start[0]);\n }\n if (unconstrained && (parsed.margin || parsed.limit)) {\n throw new Error(\"noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit\");\n }\n parsed.events = {\n tap: tap || snap,\n drag: drag,\n dragAll: dragAll,\n fixed: fixed,\n snap: snap,\n hover: hover,\n unconstrained: unconstrained\n };\n }\n function testTooltips(parsed, entry) {\n if (entry === false) {\n return;\n }\n if (entry === true || isValidPartialFormatter(entry)) {\n parsed.tooltips = [];\n for (var i = 0; i < parsed.handles; i++) {\n parsed.tooltips.push(entry);\n }\n }\n else {\n entry = asArray(entry);\n if (entry.length !== parsed.handles) {\n throw new Error(\"noUiSlider: must pass a formatter for all handles.\");\n }\n entry.forEach(function (formatter) {\n if (typeof formatter !== \"boolean\" && !isValidPartialFormatter(formatter)) {\n throw new Error(\"noUiSlider: 'tooltips' must be passed a formatter or 'false'.\");\n }\n });\n parsed.tooltips = entry;\n }\n }\n function testHandleAttributes(parsed, entry) {\n if (entry.length !== parsed.handles) {\n throw new Error(\"noUiSlider: must pass a attributes for all handles.\");\n }\n parsed.handleAttributes = entry;\n }\n function testAriaFormat(parsed, entry) {\n if (!isValidPartialFormatter(entry)) {\n throw new Error(\"noUiSlider: 'ariaFormat' requires 'to' method.\");\n }\n parsed.ariaFormat = entry;\n }\n function testFormat(parsed, entry) {\n if (!isValidFormatter(entry)) {\n throw new Error(\"noUiSlider: 'format' requires 'to' and 'from' methods.\");\n }\n parsed.format = entry;\n }\n function testKeyboardSupport(parsed, entry) {\n if (typeof entry !== \"boolean\") {\n throw new Error(\"noUiSlider: 'keyboardSupport' option must be a boolean.\");\n }\n parsed.keyboardSupport = entry;\n }\n function testDocumentElement(parsed, entry) {\n // This is an advanced option. Passed values are used without validation.\n parsed.documentElement = entry;\n }\n function testCssPrefix(parsed, entry) {\n if (typeof entry !== \"string\" && entry !== false) {\n throw new Error(\"noUiSlider: 'cssPrefix' must be a string or `false`.\");\n }\n parsed.cssPrefix = entry;\n }\n function testCssClasses(parsed, entry) {\n if (typeof entry !== \"object\") {\n throw new Error(\"noUiSlider: 'cssClasses' must be an object.\");\n }\n if (typeof parsed.cssPrefix === \"string\") {\n parsed.cssClasses = {};\n Object.keys(entry).forEach(function (key) {\n parsed.cssClasses[key] = parsed.cssPrefix + entry[key];\n });\n }\n else {\n parsed.cssClasses = entry;\n }\n }\n // Test all developer settings and parse to assumption-safe values.\n function testOptions(options) {\n // To prove a fix for #537, freeze options here.\n // If the object is modified, an error will be thrown.\n // Object.freeze(options);\n var parsed = {\n margin: null,\n limit: null,\n padding: null,\n animate: true,\n animationDuration: 300,\n ariaFormat: defaultFormatter,\n format: defaultFormatter\n };\n // Tests are executed in the order they are presented here.\n var tests = {\n step: { r: false, t: testStep },\n keyboardPageMultiplier: { r: false, t: testKeyboardPageMultiplier },\n keyboardMultiplier: { r: false, t: testKeyboardMultiplier },\n keyboardDefaultStep: { r: false, t: testKeyboardDefaultStep },\n start: { r: true, t: testStart },\n connect: { r: true, t: testConnect },\n direction: { r: true, t: testDirection },\n snap: { r: false, t: testSnap },\n animate: { r: false, t: testAnimate },\n animationDuration: { r: false, t: testAnimationDuration },\n range: { r: true, t: testRange },\n orientation: { r: false, t: testOrientation },\n margin: { r: false, t: testMargin },\n limit: { r: false, t: testLimit },\n padding: { r: false, t: testPadding },\n behaviour: { r: true, t: testBehaviour },\n ariaFormat: { r: false, t: testAriaFormat },\n format: { r: false, t: testFormat },\n tooltips: { r: false, t: testTooltips },\n keyboardSupport: { r: true, t: testKeyboardSupport },\n documentElement: { r: false, t: testDocumentElement },\n cssPrefix: { r: true, t: testCssPrefix },\n cssClasses: { r: true, t: testCssClasses },\n handleAttributes: { r: false, t: testHandleAttributes }\n };\n var defaults = {\n connect: false,\n direction: \"ltr\",\n behaviour: \"tap\",\n orientation: \"horizontal\",\n keyboardSupport: true,\n cssPrefix: \"noUi-\",\n cssClasses: cssClasses,\n keyboardPageMultiplier: 5,\n keyboardMultiplier: 1,\n keyboardDefaultStep: 10\n };\n // AriaFormat defaults to regular format, if any.\n if (options.format && !options.ariaFormat) {\n options.ariaFormat = options.format;\n }\n // Run all options through a testing mechanism to ensure correct\n // input. It should be noted that options might get modified to\n // be handled properly. E.g. wrapping integers in arrays.\n Object.keys(tests).forEach(function (name) {\n // If the option isn't set, but it is required, throw an error.\n if (!isSet(options[name]) && defaults[name] === undefined) {\n if (tests[name].r) {\n throw new Error(\"noUiSlider: '\" + name + \"' is required.\");\n }\n return;\n }\n tests[name].t(parsed, !isSet(options[name]) ? defaults[name] : options[name]);\n });\n // Forward pips options\n parsed.pips = options.pips;\n // All recent browsers accept unprefixed transform.\n // We need -ms- for IE9 and -webkit- for older Android;\n // Assume use of -webkit- if unprefixed and -ms- are not supported.\n // https://caniuse.com/#feat=transforms2d\n var d = document.createElement(\"div\");\n var msPrefix = d.style.msTransform !== undefined;\n var noPrefix = d.style.transform !== undefined;\n parsed.transformRule = noPrefix ? \"transform\" : msPrefix ? \"msTransform\" : \"webkitTransform\";\n // Pips don't move, so we can place them using left/top.\n var styles = [\n [\"left\", \"top\"],\n [\"right\", \"bottom\"]\n ];\n parsed.style = styles[parsed.dir][parsed.ort];\n return parsed;\n }\n //endregion\n function scope(target, options, originalOptions) {\n var actions = getActions();\n var supportsTouchActionNone = getSupportsTouchActionNone();\n var supportsPassive = supportsTouchActionNone && getSupportsPassive();\n // All variables local to 'scope' are prefixed with 'scope_'\n // Slider DOM Nodes\n var scope_Target = target;\n var scope_Base;\n var scope_Handles;\n var scope_Connects;\n var scope_Pips;\n var scope_Tooltips;\n // Slider state values\n var scope_Spectrum = options.spectrum;\n var scope_Values = [];\n var scope_Locations = [];\n var scope_HandleNumbers = [];\n var scope_ActiveHandlesCount = 0;\n var scope_Events = {};\n // Document Nodes\n var scope_Document = target.ownerDocument;\n var scope_DocumentElement = options.documentElement || scope_Document.documentElement;\n var scope_Body = scope_Document.body;\n // For horizontal sliders in standard ltr documents,\n // make .noUi-origin overflow to the left so the document doesn't scroll.\n var scope_DirOffset = scope_Document.dir === \"rtl\" || options.ort === 1 ? 0 : 100;\n // Creates a node, adds it to target, returns the new node.\n function addNodeTo(addTarget, className) {\n var div = scope_Document.createElement(\"div\");\n if (className) {\n addClass(div, className);\n }\n addTarget.appendChild(div);\n return div;\n }\n // Append a origin to the base\n function addOrigin(base, handleNumber) {\n var origin = addNodeTo(base, options.cssClasses.origin);\n var handle = addNodeTo(origin, options.cssClasses.handle);\n addNodeTo(handle, options.cssClasses.touchArea);\n handle.setAttribute(\"data-handle\", String(handleNumber));\n if (options.keyboardSupport) {\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\n // 0 = focusable and reachable\n handle.setAttribute(\"tabindex\", \"0\");\n handle.addEventListener(\"keydown\", function (event) {\n return eventKeydown(event, handleNumber);\n });\n }\n if (options.handleAttributes !== undefined) {\n var attributes_1 = options.handleAttributes[handleNumber];\n Object.keys(attributes_1).forEach(function (attribute) {\n handle.setAttribute(attribute, attributes_1[attribute]);\n });\n }\n handle.setAttribute(\"role\", \"slider\");\n handle.setAttribute(\"aria-orientation\", options.ort ? \"vertical\" : \"horizontal\");\n if (handleNumber === 0) {\n addClass(handle, options.cssClasses.handleLower);\n }\n else if (handleNumber === options.handles - 1) {\n addClass(handle, options.cssClasses.handleUpper);\n }\n return origin;\n }\n // Insert nodes for connect elements\n function addConnect(base, add) {\n if (!add) {\n return false;\n }\n return addNodeTo(base, options.cssClasses.connect);\n }\n // Add handles to the slider base.\n function addElements(connectOptions, base) {\n var connectBase = addNodeTo(base, options.cssClasses.connects);\n scope_Handles = [];\n scope_Connects = [];\n scope_Connects.push(addConnect(connectBase, connectOptions[0]));\n // [::::O====O====O====]\n // connectOptions = [0, 1, 1, 1]\n for (var i = 0; i < options.handles; i++) {\n // Keep a list of all added handles.\n scope_Handles.push(addOrigin(base, i));\n scope_HandleNumbers[i] = i;\n scope_Connects.push(addConnect(connectBase, connectOptions[i + 1]));\n }\n }\n // Initialize a single slider.\n function addSlider(addTarget) {\n // Apply classes and data to the target.\n addClass(addTarget, options.cssClasses.target);\n if (options.dir === 0) {\n addClass(addTarget, options.cssClasses.ltr);\n }\n else {\n addClass(addTarget, options.cssClasses.rtl);\n }\n if (options.ort === 0) {\n addClass(addTarget, options.cssClasses.horizontal);\n }\n else {\n addClass(addTarget, options.cssClasses.vertical);\n }\n var textDirection = getComputedStyle(addTarget).direction;\n if (textDirection === \"rtl\") {\n addClass(addTarget, options.cssClasses.textDirectionRtl);\n }\n else {\n addClass(addTarget, options.cssClasses.textDirectionLtr);\n }\n return addNodeTo(addTarget, options.cssClasses.base);\n }\n function addTooltip(handle, handleNumber) {\n if (!options.tooltips || !options.tooltips[handleNumber]) {\n return false;\n }\n return addNodeTo(handle.firstChild, options.cssClasses.tooltip);\n }\n function isSliderDisabled() {\n return scope_Target.hasAttribute(\"disabled\");\n }\n // Disable the slider dragging if any handle is disabled\n function isHandleDisabled(handleNumber) {\n var handleOrigin = scope_Handles[handleNumber];\n return handleOrigin.hasAttribute(\"disabled\");\n }\n function removeTooltips() {\n if (scope_Tooltips) {\n removeEvent(\"update\" + INTERNAL_EVENT_NS.tooltips);\n scope_Tooltips.forEach(function (tooltip) {\n if (tooltip) {\n removeElement(tooltip);\n }\n });\n scope_Tooltips = null;\n }\n }\n // The tooltips option is a shorthand for using the 'update' event.\n function tooltips() {\n removeTooltips();\n // Tooltips are added with options.tooltips in original order.\n scope_Tooltips = scope_Handles.map(addTooltip);\n bindEvent(\"update\" + INTERNAL_EVENT_NS.tooltips, function (values, handleNumber, unencoded) {\n if (!scope_Tooltips || !options.tooltips) {\n return;\n }\n if (scope_Tooltips[handleNumber] === false) {\n return;\n }\n var formattedValue = values[handleNumber];\n if (options.tooltips[handleNumber] !== true) {\n formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]);\n }\n scope_Tooltips[handleNumber].innerHTML = formattedValue;\n });\n }\n function aria() {\n removeEvent(\"update\" + INTERNAL_EVENT_NS.aria);\n bindEvent(\"update\" + INTERNAL_EVENT_NS.aria, function (values, handleNumber, unencoded, tap, positions) {\n // Update Aria Values for all handles, as a change in one changes min and max values for the next.\n scope_HandleNumbers.forEach(function (index) {\n var handle = scope_Handles[index];\n var min = checkHandlePosition(scope_Locations, index, 0, true, true, true);\n var max = checkHandlePosition(scope_Locations, index, 100, true, true, true);\n var now = positions[index];\n // Formatted value for display\n var text = String(options.ariaFormat.to(unencoded[index]));\n // Map to slider range values\n min = scope_Spectrum.fromStepping(min).toFixed(1);\n max = scope_Spectrum.fromStepping(max).toFixed(1);\n now = scope_Spectrum.fromStepping(now).toFixed(1);\n handle.children[0].setAttribute(\"aria-valuemin\", min);\n handle.children[0].setAttribute(\"aria-valuemax\", max);\n handle.children[0].setAttribute(\"aria-valuenow\", now);\n handle.children[0].setAttribute(\"aria-valuetext\", text);\n });\n });\n }\n function getGroup(pips) {\n // Use the range.\n if (pips.mode === exports.PipsMode.Range || pips.mode === exports.PipsMode.Steps) {\n return scope_Spectrum.xVal;\n }\n if (pips.mode === exports.PipsMode.Count) {\n if (pips.values < 2) {\n throw new Error(\"noUiSlider: 'values' (>= 2) required for mode 'count'.\");\n }\n // Divide 0 - 100 in 'count' parts.\n var interval = pips.values - 1;\n var spread = 100 / interval;\n var values = [];\n // List these parts and have them handled as 'positions'.\n while (interval--) {\n values[interval] = interval * spread;\n }\n values.push(100);\n return mapToRange(values, pips.stepped);\n }\n if (pips.mode === exports.PipsMode.Positions) {\n // Map all percentages to on-range values.\n return mapToRange(pips.values, pips.stepped);\n }\n if (pips.mode === exports.PipsMode.Values) {\n // If the value must be stepped, it needs to be converted to a percentage first.\n if (pips.stepped) {\n return pips.values.map(function (value) {\n // Convert to percentage, apply step, return to value.\n return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value)));\n });\n }\n // Otherwise, we can simply use the values.\n return pips.values;\n }\n return []; // pips.mode = never\n }\n function mapToRange(values, stepped) {\n return values.map(function (value) {\n return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value);\n });\n }\n function generateSpread(pips) {\n function safeIncrement(value, increment) {\n // Avoid floating point variance by dropping the smallest decimal places.\n return Number((value + increment).toFixed(7));\n }\n var group = getGroup(pips);\n var indexes = {};\n var firstInRange = scope_Spectrum.xVal[0];\n var lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1];\n var ignoreFirst = false;\n var ignoreLast = false;\n var prevPct = 0;\n // Create a copy of the group, sort it and filter away all duplicates.\n group = unique(group.slice().sort(function (a, b) {\n return a - b;\n }));\n // Make sure the range starts with the first element.\n if (group[0] !== firstInRange) {\n group.unshift(firstInRange);\n ignoreFirst = true;\n }\n // Likewise for the last one.\n if (group[group.length - 1] !== lastInRange) {\n group.push(lastInRange);\n ignoreLast = true;\n }\n group.forEach(function (current, index) {\n // Get the current step and the lower + upper positions.\n var step;\n var i;\n var q;\n var low = current;\n var high = group[index + 1];\n var newPct;\n var pctDifference;\n var pctPos;\n var type;\n var steps;\n var realSteps;\n var stepSize;\n var isSteps = pips.mode === exports.PipsMode.Steps;\n // When using 'steps' mode, use the provided steps.\n // Otherwise, we'll step on to the next subrange.\n if (isSteps) {\n step = scope_Spectrum.xNumSteps[index];\n }\n // Default to a 'full' step.\n if (!step) {\n step = high - low;\n }\n // If high is undefined we are at the last subrange. Make sure it iterates once (#1088)\n if (high === undefined) {\n high = low;\n }\n // Make sure step isn't 0, which would cause an infinite loop (#654)\n step = Math.max(step, 0.0000001);\n // Find all steps in the subrange.\n for (i = low; i <= high; i = safeIncrement(i, step)) {\n // Get the percentage value for the current step,\n // calculate the size for the subrange.\n newPct = scope_Spectrum.toStepping(i);\n pctDifference = newPct - prevPct;\n steps = pctDifference / (pips.density || 1);\n realSteps = Math.round(steps);\n // This ratio represents the amount of percentage-space a point indicates.\n // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-divided.\n // Round the percentage offset to an even number, then divide by two\n // to spread the offset on both sides of the range.\n stepSize = pctDifference / realSteps;\n // Divide all points evenly, adding the correct number to this subrange.\n // Run up to <= so that 100% gets a point, event if ignoreLast is set.\n for (q = 1; q <= realSteps; q += 1) {\n // The ratio between the rounded value and the actual size might be ~1% off.\n // Correct the percentage offset by the number of points\n // per subrange. density = 1 will result in 100 points on the\n // full range, 2 for 50, 4 for 25, etc.\n pctPos = prevPct + q * stepSize;\n indexes[pctPos.toFixed(5)] = [scope_Spectrum.fromStepping(pctPos), 0];\n }\n // Determine the point type.\n type = group.indexOf(i) > -1 ? exports.PipsType.LargeValue : isSteps ? exports.PipsType.SmallValue : exports.PipsType.NoValue;\n // Enforce the 'ignoreFirst' option by overwriting the type for 0.\n if (!index && ignoreFirst && i !== high) {\n type = 0;\n }\n if (!(i === high && ignoreLast)) {\n // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.\n indexes[newPct.toFixed(5)] = [i, type];\n }\n // Update the percentage count.\n prevPct = newPct;\n }\n });\n return indexes;\n }\n function addMarking(spread, filterFunc, formatter) {\n var _a, _b;\n var element = scope_Document.createElement(\"div\");\n var valueSizeClasses = (_a = {},\n _a[exports.PipsType.None] = \"\",\n _a[exports.PipsType.NoValue] = options.cssClasses.valueNormal,\n _a[exports.PipsType.LargeValue] = options.cssClasses.valueLarge,\n _a[exports.PipsType.SmallValue] = options.cssClasses.valueSub,\n _a);\n var markerSizeClasses = (_b = {},\n _b[exports.PipsType.None] = \"\",\n _b[exports.PipsType.NoValue] = options.cssClasses.markerNormal,\n _b[exports.PipsType.LargeValue] = options.cssClasses.markerLarge,\n _b[exports.PipsType.SmallValue] = options.cssClasses.markerSub,\n _b);\n var valueOrientationClasses = [options.cssClasses.valueHorizontal, options.cssClasses.valueVertical];\n var markerOrientationClasses = [options.cssClasses.markerHorizontal, options.cssClasses.markerVertical];\n addClass(element, options.cssClasses.pips);\n addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);\n function getClasses(type, source) {\n var a = source === options.cssClasses.value;\n var orientationClasses = a ? valueOrientationClasses : markerOrientationClasses;\n var sizeClasses = a ? valueSizeClasses : markerSizeClasses;\n return source + \" \" + orientationClasses[options.ort] + \" \" + sizeClasses[type];\n }\n function addSpread(offset, value, type) {\n // Apply the filter function, if it is set.\n type = filterFunc ? filterFunc(value, type) : type;\n if (type === exports.PipsType.None) {\n return;\n }\n // Add a marker for every point\n var node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.marker);\n node.style[options.style] = offset + \"%\";\n // Values are only appended for points marked '1' or '2'.\n if (type > exports.PipsType.NoValue) {\n node = addNodeTo(element, false);\n node.className = getClasses(type, options.cssClasses.value);\n node.setAttribute(\"data-value\", String(value));\n node.style[options.style] = offset + \"%\";\n node.innerHTML = String(formatter.to(value));\n }\n }\n // Append all points.\n Object.keys(spread).forEach(function (offset) {\n addSpread(offset, spread[offset][0], spread[offset][1]);\n });\n return element;\n }\n function removePips() {\n if (scope_Pips) {\n removeElement(scope_Pips);\n scope_Pips = null;\n }\n }\n function pips(pips) {\n // Fix #669\n removePips();\n var spread = generateSpread(pips);\n var filter = pips.filter;\n var format = pips.format || {\n to: function (value) {\n return String(Math.round(value));\n }\n };\n scope_Pips = scope_Target.appendChild(addMarking(spread, filter, format));\n return scope_Pips;\n }\n // Shorthand for base dimensions.\n function baseSize() {\n var rect = scope_Base.getBoundingClientRect();\n var alt = (\"offset\" + [\"Width\", \"Height\"][options.ort]);\n return options.ort === 0 ? rect.width || scope_Base[alt] : rect.height || scope_Base[alt];\n }\n // Handler for attaching events trough a proxy.\n function attachEvent(events, element, callback, data) {\n // This function can be used to 'filter' events to the slider.\n // element is a node, not a nodeList\n var method = function (event) {\n var e = fixEvent(event, data.pageOffset, data.target || element);\n // fixEvent returns false if this event has a different target\n // when handling (multi-) touch events;\n if (!e) {\n return false;\n }\n // doNotReject is passed by all end events to make sure released touches\n // are not rejected, leaving the slider \"stuck\" to the cursor;\n if (isSliderDisabled() && !data.doNotReject) {\n return false;\n }\n // Stop if an active 'tap' transition is taking place.\n if (hasClass(scope_Target, options.cssClasses.tap) && !data.doNotReject) {\n return false;\n }\n // Ignore right or middle clicks on start #454\n if (events === actions.start && e.buttons !== undefined && e.buttons > 1) {\n return false;\n }\n // Ignore right or middle clicks on start #454\n if (data.hover && e.buttons) {\n return false;\n }\n // 'supportsPassive' is only true if a browser also supports touch-action: none in CSS.\n // iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support\n // touch-action: manipulation, but that allows panning, which breaks\n // sliders after zooming/on non-responsive pages.\n // See: https://bugs.webkit.org/show_bug.cgi?id=133112\n if (!supportsPassive) {\n e.preventDefault();\n }\n e.calcPoint = e.points[options.ort];\n // Call the event handler with the event [ and additional data ].\n callback(e, data);\n return;\n };\n var methods = [];\n // Bind a closure on the target for every event type.\n events.split(\" \").forEach(function (eventName) {\n element.addEventListener(eventName, method, supportsPassive ? { passive: true } : false);\n methods.push([eventName, method]);\n });\n return methods;\n }\n // Provide a clean event with standardized offset values.\n function fixEvent(e, pageOffset, eventTarget) {\n // Filter the event to register the type, which can be\n // touch, mouse or pointer. Offset changes need to be\n // made on an event specific basis.\n var touch = e.type.indexOf(\"touch\") === 0;\n var mouse = e.type.indexOf(\"mouse\") === 0;\n var pointer = e.type.indexOf(\"pointer\") === 0;\n var x = 0;\n var y = 0;\n // IE10 implemented pointer events with a prefix;\n if (e.type.indexOf(\"MSPointer\") === 0) {\n pointer = true;\n }\n // Erroneous events seem to be passed in occasionally on iOS/iPadOS after user finishes interacting with\n // the slider. They appear to be of type MouseEvent, yet they don't have usual properties set. Ignore\n // events that have no touches or buttons associated with them. (#1057, #1079, #1095)\n if (e.type === \"mousedown\" && !e.buttons && !e.touches) {\n return false;\n }\n // The only thing one handle should be concerned about is the touches that originated on top of it.\n if (touch) {\n // Returns true if a touch originated on the target.\n var isTouchOnTarget = function (checkTouch) {\n var target = checkTouch.target;\n return (target === eventTarget ||\n eventTarget.contains(target) ||\n (e.composed && e.composedPath().shift() === eventTarget));\n };\n // In the case of touchstart events, we need to make sure there is still no more than one\n // touch on the target so we look amongst all touches.\n if (e.type === \"touchstart\") {\n var targetTouches = Array.prototype.filter.call(e.touches, isTouchOnTarget);\n // Do not support more than one touch per handle.\n if (targetTouches.length > 1) {\n return false;\n }\n x = targetTouches[0].pageX;\n y = targetTouches[0].pageY;\n }\n else {\n // In the other cases, find on changedTouches is enough.\n var targetTouch = Array.prototype.find.call(e.changedTouches, isTouchOnTarget);\n // Cancel if the target touch has not moved.\n if (!targetTouch) {\n return false;\n }\n x = targetTouch.pageX;\n y = targetTouch.pageY;\n }\n }\n pageOffset = pageOffset || getPageOffset(scope_Document);\n if (mouse || pointer) {\n x = e.clientX + pageOffset.x;\n y = e.clientY + pageOffset.y;\n }\n e.pageOffset = pageOffset;\n e.points = [x, y];\n e.cursor = mouse || pointer; // Fix #435\n return e;\n }\n // Translate a coordinate in the document to a percentage on the slider\n function calcPointToPercentage(calcPoint) {\n var location = calcPoint - offset(scope_Base, options.ort);\n var proposal = (location * 100) / baseSize();\n // Clamp proposal between 0% and 100%\n // Out-of-bound coordinates may occur when .noUi-base pseudo-elements\n // are used (e.g. contained handles feature)\n proposal = limit(proposal);\n return options.dir ? 100 - proposal : proposal;\n }\n // Find handle closest to a certain percentage on the slider\n function getClosestHandle(clickedPosition) {\n var smallestDifference = 100;\n var handleNumber = false;\n scope_Handles.forEach(function (handle, index) {\n // Disabled handles are ignored\n if (isHandleDisabled(index)) {\n return;\n }\n var handlePosition = scope_Locations[index];\n var differenceWithThisHandle = Math.abs(handlePosition - clickedPosition);\n // Initial state\n var clickAtEdge = differenceWithThisHandle === 100 && smallestDifference === 100;\n // Difference with this handle is smaller than the previously checked handle\n var isCloser = differenceWithThisHandle < smallestDifference;\n var isCloserAfter = differenceWithThisHandle <= smallestDifference && clickedPosition > handlePosition;\n if (isCloser || isCloserAfter || clickAtEdge) {\n handleNumber = index;\n smallestDifference = differenceWithThisHandle;\n }\n });\n return handleNumber;\n }\n // Fire 'end' when a mouse or pen leaves the document.\n function documentLeave(event, data) {\n if (event.type === \"mouseout\" &&\n event.target.nodeName === \"HTML\" &&\n event.relatedTarget === null) {\n eventEnd(event, data);\n }\n }\n // Handle movement on document for handle and range drag.\n function eventMove(event, data) {\n // Fix #498\n // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).\n // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero\n // IE9 has .buttons and .which zero on mousemove.\n // Firefox breaks the spec MDN defines.\n if (navigator.appVersion.indexOf(\"MSIE 9\") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) {\n return eventEnd(event, data);\n }\n // Check if we are moving up or down\n var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint);\n // Convert the movement into a percentage of the slider width/height\n var proposal = (movement * 100) / data.baseSize;\n moveHandles(movement > 0, proposal, data.locations, data.handleNumbers, data.connect);\n }\n // Unbind move events on document, call callbacks.\n function eventEnd(event, data) {\n // The handle is no longer active, so remove the class.\n if (data.handle) {\n removeClass(data.handle, options.cssClasses.active);\n scope_ActiveHandlesCount -= 1;\n }\n // Unbind the move and end events, which are added on 'start'.\n data.listeners.forEach(function (c) {\n scope_DocumentElement.removeEventListener(c[0], c[1]);\n });\n if (scope_ActiveHandlesCount === 0) {\n // Remove dragging class.\n removeClass(scope_Target, options.cssClasses.drag);\n setZindex();\n // Remove cursor styles and text-selection events bound to the body.\n if (event.cursor) {\n scope_Body.style.cursor = \"\";\n scope_Body.removeEventListener(\"selectstart\", preventDefault);\n }\n }\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n fireEvent(\"end\", handleNumber);\n });\n }\n // Bind move events on document.\n function eventStart(event, data) {\n // Ignore event if any handle is disabled\n if (data.handleNumbers.some(isHandleDisabled)) {\n return;\n }\n var handle;\n if (data.handleNumbers.length === 1) {\n var handleOrigin = scope_Handles[data.handleNumbers[0]];\n handle = handleOrigin.children[0];\n scope_ActiveHandlesCount += 1;\n // Mark the handle as 'active' so it can be styled.\n addClass(handle, options.cssClasses.active);\n }\n // A drag should never propagate up to the 'tap' event.\n event.stopPropagation();\n // Record the event listeners.\n var listeners = [];\n // Attach the move and end events.\n var moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, {\n // The event target has changed so we need to propagate the original one so that we keep\n // relying on it to extract target touches.\n target: event.target,\n handle: handle,\n connect: data.connect,\n listeners: listeners,\n startCalcPoint: event.calcPoint,\n baseSize: baseSize(),\n pageOffset: event.pageOffset,\n handleNumbers: data.handleNumbers,\n buttonsProperty: event.buttons,\n locations: scope_Locations.slice()\n });\n var endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers\n });\n var outEvent = attachEvent(\"mouseout\", scope_DocumentElement, documentLeave, {\n target: event.target,\n handle: handle,\n listeners: listeners,\n doNotReject: true,\n handleNumbers: data.handleNumbers\n });\n // We want to make sure we pushed the listeners in the listener list rather than creating\n // a new one as it has already been passed to the event handlers.\n listeners.push.apply(listeners, moveEvent.concat(endEvent, outEvent));\n // Text selection isn't an issue on touch devices,\n // so adding cursor styles can be skipped.\n if (event.cursor) {\n // Prevent the 'I' cursor and extend the range-drag cursor.\n scope_Body.style.cursor = getComputedStyle(event.target).cursor;\n // Mark the target with a dragging state.\n if (scope_Handles.length > 1) {\n addClass(scope_Target, options.cssClasses.drag);\n }\n // Prevent text selection when dragging the handles.\n // In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move,\n // which is scroll blocking. The selectstart event is supported by FireFox starting from version 52,\n // meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there.\n // The 'cursor' flag is false.\n // See: http://caniuse.com/#search=selectstart\n scope_Body.addEventListener(\"selectstart\", preventDefault, false);\n }\n data.handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"start\", handleNumber);\n });\n }\n // Move closest handle to tapped location.\n function eventTap(event) {\n // The tap event shouldn't propagate up\n event.stopPropagation();\n var proposal = calcPointToPercentage(event.calcPoint);\n var handleNumber = getClosestHandle(proposal);\n // Tackle the case that all handles are 'disabled'.\n if (handleNumber === false) {\n return;\n }\n // Flag the slider as it is now in a transitional state.\n // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.\n if (!options.events.snap) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n setHandle(handleNumber, proposal, true, true);\n setZindex();\n fireEvent(\"slide\", handleNumber, true);\n fireEvent(\"update\", handleNumber, true);\n if (!options.events.snap) {\n fireEvent(\"change\", handleNumber, true);\n fireEvent(\"set\", handleNumber, true);\n }\n else {\n eventStart(event, { handleNumbers: [handleNumber] });\n }\n }\n // Fires a 'hover' event for a hovered mouse/pen position.\n function eventHover(event) {\n var proposal = calcPointToPercentage(event.calcPoint);\n var to = scope_Spectrum.getStep(proposal);\n var value = scope_Spectrum.fromStepping(to);\n Object.keys(scope_Events).forEach(function (targetEvent) {\n if (\"hover\" === targetEvent.split(\".\")[0]) {\n scope_Events[targetEvent].forEach(function (callback) {\n callback.call(scope_Self, value);\n });\n }\n });\n }\n // Handles keydown on focused handles\n // Don't move the document when pressing arrow keys on focused handles\n function eventKeydown(event, handleNumber) {\n if (isSliderDisabled() || isHandleDisabled(handleNumber)) {\n return false;\n }\n var horizontalKeys = [\"Left\", \"Right\"];\n var verticalKeys = [\"Down\", \"Up\"];\n var largeStepKeys = [\"PageDown\", \"PageUp\"];\n var edgeKeys = [\"Home\", \"End\"];\n if (options.dir && !options.ort) {\n // On an right-to-left slider, the left and right keys act inverted\n horizontalKeys.reverse();\n }\n else if (options.ort && !options.dir) {\n // On a top-to-bottom slider, the up and down keys act inverted\n verticalKeys.reverse();\n largeStepKeys.reverse();\n }\n // Strip \"Arrow\" for IE compatibility. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n var key = event.key.replace(\"Arrow\", \"\");\n var isLargeDown = key === largeStepKeys[0];\n var isLargeUp = key === largeStepKeys[1];\n var isDown = key === verticalKeys[0] || key === horizontalKeys[0] || isLargeDown;\n var isUp = key === verticalKeys[1] || key === horizontalKeys[1] || isLargeUp;\n var isMin = key === edgeKeys[0];\n var isMax = key === edgeKeys[1];\n if (!isDown && !isUp && !isMin && !isMax) {\n return true;\n }\n event.preventDefault();\n var to;\n if (isUp || isDown) {\n var direction = isDown ? 0 : 1;\n var steps = getNextStepsForHandle(handleNumber);\n var step = steps[direction];\n // At the edge of a slider, do nothing\n if (step === null) {\n return false;\n }\n // No step set, use the default of 10% of the sub-range\n if (step === false) {\n step = scope_Spectrum.getDefaultStep(scope_Locations[handleNumber], isDown, options.keyboardDefaultStep);\n }\n if (isLargeUp || isLargeDown) {\n step *= options.keyboardPageMultiplier;\n }\n else {\n step *= options.keyboardMultiplier;\n }\n // Step over zero-length ranges (#948);\n step = Math.max(step, 0.0000001);\n // Decrement for down steps\n step = (isDown ? -1 : 1) * step;\n to = scope_Values[handleNumber] + step;\n }\n else if (isMax) {\n // End key\n to = options.spectrum.xVal[options.spectrum.xVal.length - 1];\n }\n else {\n // Home key\n to = options.spectrum.xVal[0];\n }\n setHandle(handleNumber, scope_Spectrum.toStepping(to), true, true);\n fireEvent(\"slide\", handleNumber);\n fireEvent(\"update\", handleNumber);\n fireEvent(\"change\", handleNumber);\n fireEvent(\"set\", handleNumber);\n return false;\n }\n // Attach events to several slider parts.\n function bindSliderEvents(behaviour) {\n // Attach the standard drag event to the handles.\n if (!behaviour.fixed) {\n scope_Handles.forEach(function (handle, index) {\n // These events are only bound to the visual handle\n // element, not the 'real' origin element.\n attachEvent(actions.start, handle.children[0], eventStart, {\n handleNumbers: [index]\n });\n });\n }\n // Attach the tap event to the slider base.\n if (behaviour.tap) {\n attachEvent(actions.start, scope_Base, eventTap, {});\n }\n // Fire hover events\n if (behaviour.hover) {\n attachEvent(actions.move, scope_Base, eventHover, {\n hover: true\n });\n }\n // Make the range draggable.\n if (behaviour.drag) {\n scope_Connects.forEach(function (connect, index) {\n if (connect === false || index === 0 || index === scope_Connects.length - 1) {\n return;\n }\n var handleBefore = scope_Handles[index - 1];\n var handleAfter = scope_Handles[index];\n var eventHolders = [connect];\n var handlesToDrag = [handleBefore, handleAfter];\n var handleNumbersToDrag = [index - 1, index];\n addClass(connect, options.cssClasses.draggable);\n // When the range is fixed, the entire range can\n // be dragged by the handles. The handle in the first\n // origin will propagate the start event upward,\n // but it needs to be bound manually on the other.\n if (behaviour.fixed) {\n eventHolders.push(handleBefore.children[0]);\n eventHolders.push(handleAfter.children[0]);\n }\n if (behaviour.dragAll) {\n handlesToDrag = scope_Handles;\n handleNumbersToDrag = scope_HandleNumbers;\n }\n eventHolders.forEach(function (eventHolder) {\n attachEvent(actions.start, eventHolder, eventStart, {\n handles: handlesToDrag,\n handleNumbers: handleNumbersToDrag,\n connect: connect\n });\n });\n });\n }\n }\n // Attach an event to this slider, possibly including a namespace\n function bindEvent(namespacedEvent, callback) {\n scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];\n scope_Events[namespacedEvent].push(callback);\n // If the event bound is 'update,' fire it immediately for all handles.\n if (namespacedEvent.split(\".\")[0] === \"update\") {\n scope_Handles.forEach(function (a, index) {\n fireEvent(\"update\", index);\n });\n }\n }\n function isInternalNamespace(namespace) {\n return namespace === INTERNAL_EVENT_NS.aria || namespace === INTERNAL_EVENT_NS.tooltips;\n }\n // Undo attachment of event\n function removeEvent(namespacedEvent) {\n var event = namespacedEvent && namespacedEvent.split(\".\")[0];\n var namespace = event ? namespacedEvent.substring(event.length) : namespacedEvent;\n Object.keys(scope_Events).forEach(function (bind) {\n var tEvent = bind.split(\".\")[0];\n var tNamespace = bind.substring(tEvent.length);\n if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) {\n // only delete protected internal event if intentional\n if (!isInternalNamespace(tNamespace) || namespace === tNamespace) {\n delete scope_Events[bind];\n }\n }\n });\n }\n // External event handling\n function fireEvent(eventName, handleNumber, tap) {\n Object.keys(scope_Events).forEach(function (targetEvent) {\n var eventType = targetEvent.split(\".\")[0];\n if (eventName === eventType) {\n scope_Events[targetEvent].forEach(function (callback) {\n callback.call(\n // Use the slider public API as the scope ('this')\n scope_Self, \n // Return values as array, so arg_1[arg_2] is always valid.\n scope_Values.map(options.format.to), \n // Handle index, 0 or 1\n handleNumber, \n // Un-formatted slider values\n scope_Values.slice(), \n // Event is fired by tap, true or false\n tap || false, \n // Left offset of the handle, in relation to the slider\n scope_Locations.slice(), \n // add the slider public API to an accessible parameter when this is unavailable\n scope_Self);\n });\n }\n });\n }\n // Split out the handle positioning logic so the Move event can use it, too\n function checkHandlePosition(reference, handleNumber, to, lookBackward, lookForward, getValue) {\n var distance;\n // For sliders with multiple handles, limit movement to the other handle.\n // Apply the margin option by adding it to the handle positions.\n if (scope_Handles.length > 1 && !options.events.unconstrained) {\n if (lookBackward && handleNumber > 0) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.margin, false);\n to = Math.max(to, distance);\n }\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.margin, true);\n to = Math.min(to, distance);\n }\n }\n // The limit option has the opposite effect, limiting handles to a\n // maximum distance from another. Limit must be > 0, as otherwise\n // handles would be unmovable.\n if (scope_Handles.length > 1 && options.limit) {\n if (lookBackward && handleNumber > 0) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.limit, false);\n to = Math.min(to, distance);\n }\n if (lookForward && handleNumber < scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.limit, true);\n to = Math.max(to, distance);\n }\n }\n // The padding option keeps the handles a certain distance from the\n // edges of the slider. Padding must be > 0.\n if (options.padding) {\n if (handleNumber === 0) {\n distance = scope_Spectrum.getAbsoluteDistance(0, options.padding[0], false);\n to = Math.max(to, distance);\n }\n if (handleNumber === scope_Handles.length - 1) {\n distance = scope_Spectrum.getAbsoluteDistance(100, options.padding[1], true);\n to = Math.min(to, distance);\n }\n }\n to = scope_Spectrum.getStep(to);\n // Limit percentage to the 0 - 100 range\n to = limit(to);\n // Return false if handle can't move\n if (to === reference[handleNumber] && !getValue) {\n return false;\n }\n return to;\n }\n // Uses slider orientation to create CSS rules. a = base value;\n function inRuleOrder(v, a) {\n var o = options.ort;\n return (o ? a : v) + \", \" + (o ? v : a);\n }\n // Moves handle(s) by a percentage\n // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...])\n function moveHandles(upward, proposal, locations, handleNumbers, connect) {\n var proposals = locations.slice();\n // Store first handle now, so we still have it in case handleNumbers is reversed\n var firstHandle = handleNumbers[0];\n var b = [!upward, upward];\n var f = [upward, !upward];\n // Copy handleNumbers so we don't change the dataset\n handleNumbers = handleNumbers.slice();\n // Check to see which handle is 'leading'.\n // If that one can't move the second can't either.\n if (upward) {\n handleNumbers.reverse();\n }\n // Step 1: get the maximum percentage that any of the handles can move\n if (handleNumbers.length > 1) {\n handleNumbers.forEach(function (handleNumber, o) {\n var to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o], false);\n // Stop if one of the handles can't move.\n if (to === false) {\n proposal = 0;\n }\n else {\n proposal = to - proposals[handleNumber];\n proposals[handleNumber] = to;\n }\n });\n }\n // If using one handle, check backward AND forward\n else {\n b = f = [true];\n }\n var state = false;\n // Step 2: Try to set the handles with the found percentage\n handleNumbers.forEach(function (handleNumber, o) {\n state = setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o]) || state;\n });\n // Step 3: If a handle moved, fire events\n if (state) {\n handleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n fireEvent(\"slide\", handleNumber);\n });\n // If target is a connect, then fire drag event\n if (connect != undefined) {\n fireEvent(\"drag\", firstHandle);\n }\n }\n }\n // Takes a base value and an offset. This offset is used for the connect bar size.\n // In the initial design for this feature, the origin element was 1% wide.\n // Unfortunately, a rounding bug in Chrome makes it impossible to implement this feature\n // in this manner: https://bugs.chromium.org/p/chromium/issues/detail?id=798223\n function transformDirection(a, b) {\n return options.dir ? 100 - a - b : a;\n }\n // Updates scope_Locations and scope_Values, updates visual state\n function updateHandlePosition(handleNumber, to) {\n // Update locations.\n scope_Locations[handleNumber] = to;\n // Convert the value to the slider stepping/range.\n scope_Values[handleNumber] = scope_Spectrum.fromStepping(to);\n var translation = 10 * (transformDirection(to, 0) - scope_DirOffset);\n var translateRule = \"translate(\" + inRuleOrder(translation + \"%\", \"0\") + \")\";\n scope_Handles[handleNumber].style[options.transformRule] = translateRule;\n updateConnect(handleNumber);\n updateConnect(handleNumber + 1);\n }\n // Handles before the slider middle are stacked later = higher,\n // Handles after the middle later is lower\n // [[7] [8] .......... | .......... [5] [4]\n function setZindex() {\n scope_HandleNumbers.forEach(function (handleNumber) {\n var dir = scope_Locations[handleNumber] > 50 ? -1 : 1;\n var zIndex = 3 + (scope_Handles.length + dir * handleNumber);\n scope_Handles[handleNumber].style.zIndex = String(zIndex);\n });\n }\n // Test suggested values and apply margin, step.\n // if exactInput is true, don't run checkHandlePosition, then the handle can be placed in between steps (#436)\n function setHandle(handleNumber, to, lookBackward, lookForward, exactInput) {\n if (!exactInput) {\n to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false);\n }\n if (to === false) {\n return false;\n }\n updateHandlePosition(handleNumber, to);\n return true;\n }\n // Updates style attribute for connect nodes\n function updateConnect(index) {\n // Skip connects set to false\n if (!scope_Connects[index]) {\n return;\n }\n var l = 0;\n var h = 100;\n if (index !== 0) {\n l = scope_Locations[index - 1];\n }\n if (index !== scope_Connects.length - 1) {\n h = scope_Locations[index];\n }\n // We use two rules:\n // 'translate' to change the left/top offset;\n // 'scale' to change the width of the element;\n // As the element has a width of 100%, a translation of 100% is equal to 100% of the parent (.noUi-base)\n var connectWidth = h - l;\n var translateRule = \"translate(\" + inRuleOrder(transformDirection(l, connectWidth) + \"%\", \"0\") + \")\";\n var scaleRule = \"scale(\" + inRuleOrder(connectWidth / 100, \"1\") + \")\";\n scope_Connects[index].style[options.transformRule] =\n translateRule + \" \" + scaleRule;\n }\n // Parses value passed to .set method. Returns current value if not parse-able.\n function resolveToValue(to, handleNumber) {\n // Setting with null indicates an 'ignore'.\n // Inputting 'false' is invalid.\n if (to === null || to === false || to === undefined) {\n return scope_Locations[handleNumber];\n }\n // If a formatted number was passed, attempt to decode it.\n if (typeof to === \"number\") {\n to = String(to);\n }\n to = options.format.from(to);\n if (to !== false) {\n to = scope_Spectrum.toStepping(to);\n }\n // If parsing the number failed, use the current value.\n if (to === false || isNaN(to)) {\n return scope_Locations[handleNumber];\n }\n return to;\n }\n // Set the slider value.\n function valueSet(input, fireSetEvent, exactInput) {\n var values = asArray(input);\n var isInit = scope_Locations[0] === undefined;\n // Event fires by default\n fireSetEvent = fireSetEvent === undefined ? true : fireSetEvent;\n // Animation is optional.\n // Make sure the initial values were set before using animated placement.\n if (options.animate && !isInit) {\n addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration);\n }\n // First pass, without lookAhead but with lookBackward. Values are set from left to right.\n scope_HandleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, resolveToValue(values[handleNumber], handleNumber), true, false, exactInput);\n });\n var i = scope_HandleNumbers.length === 1 ? 0 : 1;\n // Spread handles evenly across the slider if the range has no size (min=max)\n if (isInit && scope_Spectrum.hasNoSize()) {\n exactInput = true;\n scope_Locations[0] = 0;\n if (scope_HandleNumbers.length > 1) {\n var space_1 = 100 / (scope_HandleNumbers.length - 1);\n scope_HandleNumbers.forEach(function (handleNumber) {\n scope_Locations[handleNumber] = handleNumber * space_1;\n });\n }\n }\n // Secondary passes. Now that all base values are set, apply constraints.\n // Iterate all handles to ensure constraints are applied for the entire slider (Issue #1009)\n for (; i < scope_HandleNumbers.length; ++i) {\n scope_HandleNumbers.forEach(function (handleNumber) {\n setHandle(handleNumber, scope_Locations[handleNumber], true, true, exactInput);\n });\n }\n setZindex();\n scope_HandleNumbers.forEach(function (handleNumber) {\n fireEvent(\"update\", handleNumber);\n // Fire the event only for handles that received a new value, as per #579\n if (values[handleNumber] !== null && fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n });\n }\n // Reset slider to initial values\n function valueReset(fireSetEvent) {\n valueSet(options.start, fireSetEvent);\n }\n // Set value for a single handle\n function valueSetHandle(handleNumber, value, fireSetEvent, exactInput) {\n // Ensure numeric input\n handleNumber = Number(handleNumber);\n if (!(handleNumber >= 0 && handleNumber < scope_HandleNumbers.length)) {\n throw new Error(\"noUiSlider: invalid handle number, got: \" + handleNumber);\n }\n // Look both backward and forward, since we don't want this handle to \"push\" other handles (#960);\n // The exactInput argument can be used to ignore slider stepping (#436)\n setHandle(handleNumber, resolveToValue(value, handleNumber), true, true, exactInput);\n fireEvent(\"update\", handleNumber);\n if (fireSetEvent) {\n fireEvent(\"set\", handleNumber);\n }\n }\n // Get the slider value.\n function valueGet(unencoded) {\n if (unencoded === void 0) { unencoded = false; }\n if (unencoded) {\n // return a copy of the raw values\n return scope_Values.length === 1 ? scope_Values[0] : scope_Values.slice(0);\n }\n var values = scope_Values.map(options.format.to);\n // If only one handle is used, return a single value.\n if (values.length === 1) {\n return values[0];\n }\n return values;\n }\n // Removes classes from the root and empties it.\n function destroy() {\n // remove protected internal listeners\n removeEvent(INTERNAL_EVENT_NS.aria);\n removeEvent(INTERNAL_EVENT_NS.tooltips);\n Object.keys(options.cssClasses).forEach(function (key) {\n removeClass(scope_Target, options.cssClasses[key]);\n });\n while (scope_Target.firstChild) {\n scope_Target.removeChild(scope_Target.firstChild);\n }\n delete scope_Target.noUiSlider;\n }\n function getNextStepsForHandle(handleNumber) {\n var location = scope_Locations[handleNumber];\n var nearbySteps = scope_Spectrum.getNearbySteps(location);\n var value = scope_Values[handleNumber];\n var increment = nearbySteps.thisStep.step;\n var decrement = null;\n // If snapped, directly use defined step value\n if (options.snap) {\n return [\n value - nearbySteps.stepBefore.startValue || null,\n nearbySteps.stepAfter.startValue - value || null\n ];\n }\n // If the next value in this step moves into the next step,\n // the increment is the start of the next step - the current value\n if (increment !== false) {\n if (value + increment > nearbySteps.stepAfter.startValue) {\n increment = nearbySteps.stepAfter.startValue - value;\n }\n }\n // If the value is beyond the starting point\n if (value > nearbySteps.thisStep.startValue) {\n decrement = nearbySteps.thisStep.step;\n }\n else if (nearbySteps.stepBefore.step === false) {\n decrement = false;\n }\n // If a handle is at the start of a step, it always steps back into the previous step first\n else {\n decrement = value - nearbySteps.stepBefore.highestStep;\n }\n // Now, if at the slider edges, there is no in/decrement\n if (location === 100) {\n increment = null;\n }\n else if (location === 0) {\n decrement = null;\n }\n // As per #391, the comparison for the decrement step can have some rounding issues.\n var stepDecimals = scope_Spectrum.countStepDecimals();\n // Round per #391\n if (increment !== null && increment !== false) {\n increment = Number(increment.toFixed(stepDecimals));\n }\n if (decrement !== null && decrement !== false) {\n decrement = Number(decrement.toFixed(stepDecimals));\n }\n return [decrement, increment];\n }\n // Get the current step size for the slider.\n function getNextSteps() {\n return scope_HandleNumbers.map(getNextStepsForHandle);\n }\n // Updatable: margin, limit, padding, step, range, animate, snap\n function updateOptions(optionsToUpdate, fireSetEvent) {\n // Spectrum is created using the range, snap, direction and step options.\n // 'snap' and 'step' can be updated.\n // If 'snap' and 'step' are not passed, they should remain unchanged.\n var v = valueGet();\n var updateAble = [\n \"margin\",\n \"limit\",\n \"padding\",\n \"range\",\n \"animate\",\n \"snap\",\n \"step\",\n \"format\",\n \"pips\",\n \"tooltips\"\n ];\n // Only change options that we're actually passed to update.\n updateAble.forEach(function (name) {\n // Check for undefined. null removes the value.\n if (optionsToUpdate[name] !== undefined) {\n originalOptions[name] = optionsToUpdate[name];\n }\n });\n var newOptions = testOptions(originalOptions);\n // Load new options into the slider state\n updateAble.forEach(function (name) {\n if (optionsToUpdate[name] !== undefined) {\n options[name] = newOptions[name];\n }\n });\n scope_Spectrum = newOptions.spectrum;\n // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)\n options.margin = newOptions.margin;\n options.limit = newOptions.limit;\n options.padding = newOptions.padding;\n // Update pips, removes existing.\n if (options.pips) {\n pips(options.pips);\n }\n else {\n removePips();\n }\n // Update tooltips, removes existing.\n if (options.tooltips) {\n tooltips();\n }\n else {\n removeTooltips();\n }\n // Invalidate the current positioning so valueSet forces an update.\n scope_Locations = [];\n valueSet(isSet(optionsToUpdate.start) ? optionsToUpdate.start : v, fireSetEvent);\n }\n // Initialization steps\n function setupSlider() {\n // Create the base element, initialize HTML and set classes.\n // Add handles and connect elements.\n scope_Base = addSlider(scope_Target);\n addElements(options.connect, scope_Base);\n // Attach user events.\n bindSliderEvents(options.events);\n // Use the public value method to set the start values.\n valueSet(options.start);\n if (options.pips) {\n pips(options.pips);\n }\n if (options.tooltips) {\n tooltips();\n }\n aria();\n }\n setupSlider();\n var scope_Self = {\n destroy: destroy,\n steps: getNextSteps,\n on: bindEvent,\n off: removeEvent,\n get: valueGet,\n set: valueSet,\n setHandle: valueSetHandle,\n reset: valueReset,\n // Exposed for unit testing, don't use this in your application.\n __moveHandles: function (upward, proposal, handleNumbers) {\n moveHandles(upward, proposal, scope_Locations, handleNumbers);\n },\n options: originalOptions,\n updateOptions: updateOptions,\n target: scope_Target,\n removePips: removePips,\n removeTooltips: removeTooltips,\n getPositions: function () {\n return scope_Locations.slice();\n },\n getTooltips: function () {\n return scope_Tooltips;\n },\n getOrigins: function () {\n return scope_Handles;\n },\n pips: pips // Issue #594\n };\n return scope_Self;\n }\n // Run the standard initializer\n function initialize(target, originalOptions) {\n if (!target || !target.nodeName) {\n throw new Error(\"noUiSlider: create requires a single element, got: \" + target);\n }\n // Throw an error if the slider was already initialized.\n if (target.noUiSlider) {\n throw new Error(\"noUiSlider: Slider was already initialized.\");\n }\n // Test the options and create the slider environment;\n var options = testOptions(originalOptions);\n var api = scope(target, options, originalOptions);\n target.noUiSlider = api;\n return api;\n }\n var nouislider = {\n // Exposed for unit testing, don't use this in your application.\n __spectrum: Spectrum,\n // A reference to the default classes, allows global changes.\n // Use the cssClasses option for changes to one slider.\n cssClasses: cssClasses,\n create: initialize\n };\n\n exports.create = initialize;\n exports.cssClasses = cssClasses;\n exports['default'] = nouislider;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n root.SimpleLightbox = factory();\n }\n\n}(this, function() {\n\n function assign(target) {\n\n for (var i = 1; i < arguments.length; i++) {\n\n var obj = arguments[i];\n\n if (obj) {\n for (var key in obj) {\n obj.hasOwnProperty(key) && (target[key] = obj[key]);\n }\n }\n\n }\n\n return target;\n\n }\n\n function addClass(element, className) {\n\n if (element && className) {\n element.className += ' ' + className;\n }\n\n }\n\n function removeClass(element, className) {\n\n if (element && className) {\n element.className = element.className.replace(\n new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'), ' '\n ).trim();\n }\n\n }\n\n function parseHtml(html) {\n\n var div = document.createElement('div');\n div.innerHTML = html.trim();\n\n return div.childNodes[0];\n\n }\n\n function matches(el, selector) {\n\n return (el.matches || el.matchesSelector || el.msMatchesSelector).call(el, selector);\n\n }\n\n function getWindowHeight() {\n\n return 'innerHeight' in window\n ? window.innerHeight\n : document.documentElement.offsetHeight;\n\n }\n\n function SimpleLightbox(options) {\n\n this.init.apply(this, arguments);\n\n }\n\n SimpleLightbox.defaults = {\n\n // add custom classes to lightbox elements\n elementClass: '',\n elementLoadingClass: 'slbLoading',\n htmlClass: 'slbActive',\n closeBtnClass: '',\n nextBtnClass: '',\n prevBtnClass: '',\n loadingTextClass: '',\n\n // customize / localize controls captions\n closeBtnCaption: 'Close',\n nextBtnCaption: 'Next',\n prevBtnCaption: 'Previous',\n loadingCaption: 'Loading...',\n\n bindToItems: true, // set click event handler to trigger lightbox on provided $items\n closeOnOverlayClick: true,\n closeOnEscapeKey: true,\n nextOnImageClick: true,\n showCaptions: true,\n\n captionAttribute: 'title', // choose data source for library to glean image caption from\n urlAttribute: 'href', // where to expect large image\n\n startAt: 0, // start gallery at custom index\n loadingTimeout: 100, // time after loading element will appear\n\n appendTarget: 'body', // append elsewhere if needed\n\n beforeSetContent: null, // convenient hooks for extending library behavoiur\n beforeClose: null,\n afterClose: null,\n beforeDestroy: null,\n afterDestroy: null,\n\n videoRegex: new RegExp(/youtube.com|vimeo.com/) // regex which tests load url for iframe content\n\n };\n\n assign(SimpleLightbox.prototype, {\n\n init: function(options) {\n\n options = this.options = assign({}, SimpleLightbox.defaults, options);\n\n var self = this;\n var elements;\n\n if (options.$items) {\n elements = options.$items.get();\n }\n\n if (options.elements) {\n elements = [].slice.call(\n typeof options.elements === 'string'\n ? document.querySelectorAll(options.elements)\n : options.elements\n );\n }\n\n this.eventRegistry = {lightbox: [], thumbnails: []};\n this.items = [];\n this.captions = [];\n\n if (elements) {\n\n elements.forEach(function(element, index) {\n\n self.items.push(element.getAttribute(options.urlAttribute));\n self.captions.push(element.getAttribute(options.captionAttribute));\n\n if (options.bindToItems) {\n\n self.addEvent(element, 'click', function(e) {\n\n e.preventDefault();\n self.showPosition(index);\n\n }, 'thumbnails');\n\n }\n\n });\n\n }\n\n if (options.items) {\n this.items = options.items;\n }\n\n if (options.captions) {\n this.captions = options.captions;\n }\n\n },\n\n addEvent: function(element, eventName, callback, scope) {\n\n this.eventRegistry[scope || 'lightbox'].push({\n element: element,\n eventName: eventName,\n callback: callback\n });\n\n element.addEventListener(eventName, callback);\n\n return this;\n\n },\n\n removeEvents: function(scope) {\n\n this.eventRegistry[scope].forEach(function(item) {\n item.element.removeEventListener(item.eventName, item.callback);\n });\n\n this.eventRegistry[scope] = [];\n\n return this;\n\n },\n\n next: function() {\n\n return this.showPosition(this.currentPosition + 1);\n\n },\n\n prev: function() {\n\n return this.showPosition(this.currentPosition - 1);\n\n },\n\n normalizePosition: function(position) {\n\n if (position >= this.items.length) {\n position = 0;\n } else if (position < 0) {\n position = this.items.length - 1;\n }\n\n return position;\n\n },\n\n showPosition: function(position) {\n\n var newPosition = this.normalizePosition(position);\n\n if (typeof this.currentPosition !== 'undefined') {\n this.direction = newPosition > this.currentPosition ? 'next' : 'prev';\n }\n\n this.currentPosition = newPosition;\n\n return this.setupLightboxHtml()\n .prepareItem(this.currentPosition, this.setContent)\n .show();\n\n },\n\n loading: function(on) {\n\n var self = this;\n var options = this.options;\n\n if (on) {\n\n this.loadingTimeout = setTimeout(function() {\n\n addClass(self.$el, options.elementLoadingClass);\n\n self.$content.innerHTML =\n '<p class=\"slbLoadingText ' + options.loadingTextClass + '\">' +\n options.loadingCaption +\n '</p>';\n self.show();\n\n }, options.loadingTimeout);\n\n } else {\n\n removeClass(this.$el, options.elementLoadingClass);\n clearTimeout(this.loadingTimeout);\n\n }\n\n },\n\n prepareItem: function(position, callback) {\n\n var self = this;\n var url = this.items[position];\n\n this.loading(true);\n\n if (this.options.videoRegex.test(url)) {\n\n callback.call(self, parseHtml(\n '<div class=\"slbIframeCont\"><iframe class=\"slbIframe\" frameborder=\"0\" allowfullscreen src=\"' + url + '\"></iframe></div>')\n );\n\n } else {\n\n var $imageCont = parseHtml(\n '<div class=\"slbImageWrap\"><img class=\"slbImage\" src=\"' + url + '\" /></div>'\n );\n\n this.$currentImage = $imageCont.querySelector('.slbImage');\n\n if (this.options.showCaptions && this.captions[position]) {\n $imageCont.appendChild(parseHtml(\n '<div class=\"slbCaption\">' + this.captions[position] + '</div>')\n );\n }\n\n this.loadImage(url, function() {\n\n self.setImageDimensions();\n\n callback.call(self, $imageCont);\n\n self.loadImage(self.items[self.normalizePosition(self.currentPosition + 1)]);\n\n });\n\n }\n\n return this;\n\n },\n\n loadImage: function(url, callback) {\n\n if (!this.options.videoRegex.test(url)) {\n\n var image = new Image();\n callback && (image.onload = callback);\n image.src = url;\n\n }\n\n },\n\n setupLightboxHtml: function() {\n\n var o = this.options;\n\n if (!this.$el) {\n\n this.$el = parseHtml(\n '<div class=\"slbElement ' + o.elementClass + '\">' +\n '<div class=\"slbOverlay\"></div>' +\n '<div class=\"slbWrapOuter\">' +\n '<div class=\"slbWrap\">' +\n '<div class=\"slbContentOuter\">' +\n '<div class=\"slbContent\"></div>' +\n '<button type=\"button\" title=\"' + o.closeBtnCaption + '\" class=\"slbCloseBtn ' + o.closeBtnClass + '\">\u00D7</button>' +\n (this.items.length > 1\n ? '<div class=\"slbArrows\">' +\n '<button type=\"button\" title=\"' + o.prevBtnCaption + '\" class=\"prev slbArrow' + o.prevBtnClass + '\">' + o.prevBtnCaption + '</button>' +\n '<button type=\"button\" title=\"' + o.nextBtnCaption + '\" class=\"next slbArrow' + o.nextBtnClass + '\">' + o.nextBtnCaption + '</button>' +\n '</div>'\n : ''\n ) +\n '</div>' +\n '</div>' +\n '</div>' +\n '</div>'\n );\n\n this.$content = this.$el.querySelector('.slbContent');\n\n }\n\n this.$content.innerHTML = '';\n\n return this;\n\n },\n\n show: function() {\n\n if (!this.modalInDom) {\n\n document.querySelector(this.options.appendTarget).appendChild(this.$el);\n addClass(document.documentElement, this.options.htmlClass);\n this.setupLightboxEvents();\n this.modalInDom = true;\n\n }\n\n return this;\n\n },\n\n setContent: function(content) {\n\n var $content = typeof content === 'string'\n ? parseHtml(content)\n : content\n ;\n\n this.loading(false);\n\n this.setupLightboxHtml();\n\n removeClass(this.$content, 'slbDirectionNext');\n removeClass(this.$content, 'slbDirectionPrev');\n\n if (this.direction) {\n addClass(this.$content, this.direction === 'next'\n ? 'slbDirectionNext'\n : 'slbDirectionPrev'\n );\n }\n\n if (this.options.beforeSetContent) {\n this.options.beforeSetContent($content, this);\n }\n\n this.$content.appendChild($content);\n\n return this;\n\n },\n\n setImageDimensions: function() {\n\n if (this.$currentImage) {\n this.$currentImage.style.maxHeight = getWindowHeight() + 'px';\n }\n\n },\n\n setupLightboxEvents: function() {\n\n var self = this;\n\n if (this.eventRegistry.lightbox.length) {\n return this;\n }\n\n this.addEvent(this.$el, 'click', function(e) {\n\n var $target = e.target;\n\n if (matches($target, '.slbCloseBtn') || (self.options.closeOnOverlayClick && matches($target, '.slbWrap'))) {\n\n self.close();\n\n } else if (matches($target, '.slbArrow')) {\n\n matches($target, '.next') ? self.next() : self.prev();\n\n } else if (self.options.nextOnImageClick && self.items.length > 1 && matches($target, '.slbImage')) {\n\n self.next();\n\n }\n\n }).addEvent(document, 'keyup', function(e) {\n\n self.options.closeOnEscapeKey && e.keyCode === 27 && self.close();\n\n if (self.items.length > 1) {\n (e.keyCode === 39 || e.keyCode === 68) && self.next();\n (e.keyCode === 37 || e.keyCode === 65) && self.prev();\n }\n\n }).addEvent(window, 'resize', function() {\n\n self.setImageDimensions();\n\n });\n\n return this;\n\n },\n\n close: function() {\n\n if (this.modalInDom) {\n\n this.runHook('beforeClose');\n this.removeEvents('lightbox');\n this.$el && this.$el.parentNode.removeChild(this.$el);\n removeClass(document.documentElement, this.options.htmlClass);\n this.modalInDom = false;\n this.runHook('afterClose');\n\n }\n\n this.direction = undefined;\n this.currentPosition = this.options.startAt;\n\n },\n\n destroy: function() {\n\n this.close();\n this.runHook('beforeDestroy');\n this.removeEvents('thumbnails');\n this.runHook('afterDestroy');\n\n },\n\n runHook: function(name) {\n\n this.options[name] && this.options[name](this);\n\n }\n\n });\n\n SimpleLightbox.open = function(options) {\n\n var instance = new SimpleLightbox(options);\n\n return options.content\n ? instance.setContent(options.content).show()\n : instance.showPosition(instance.options.startAt);\n\n };\n\n SimpleLightbox.registerAsJqueryPlugin = function($) {\n\n $.fn.simpleLightbox = function(options) {\n\n var lightboxInstance;\n var $items = this;\n\n return this.each(function() {\n if (!$.data(this, 'simpleLightbox')) {\n lightboxInstance = lightboxInstance || new SimpleLightbox($.extend({}, options, {$items: $items}));\n $.data(this, 'simpleLightbox', lightboxInstance);\n }\n });\n\n };\n\n $.SimpleLightbox = SimpleLightbox;\n\n };\n\n if (typeof window !== 'undefined' && window.jQuery) {\n SimpleLightbox.registerAsJqueryPlugin(window.jQuery);\n }\n\n return SimpleLightbox;\n\n}));\n", "// Polyfills\r\nimport objectFitImages from \"object-fit-images\"\r\nimport objectFitVideos from \"object-fit-videos\"\r\n\r\nobjectFitImages()\r\nobjectFitVideos()\r\n\r\nimport \"picturefill\"\r\nimport \"lazysizes\"\r\n\r\nimport { tns } from \"./../node_modules/tiny-slider/src/tiny-slider\"\r\nwindow.tns = tns\r\n\r\nvar SimpleLightbox = require('simple-lightbox');\r\nwindow.lightbox = SimpleLightbox\r\nvar lightboxes = document.querySelectorAll(\".lightbox-wrapper\")\r\nif (lightboxes) {\r\n\tlightboxes.forEach(lightbox => {\r\n\t\tnew SimpleLightbox({\r\n\t\t\telements: lightbox.querySelectorAll(\".lightbox-element\"),\r\n\t\t\tcloseBtnCaption: '',\r\n\t\t\tnextBtnCaption: '',\r\n\t\t\tprevBtnCaption: '',\r\n\t\t})\r\n\t});\r\n}\r\n\r\nimport { screens } from './../styles/tailwind/tailwind.screens'\r\nwindow.screens = {}\r\n\r\nObject.keys(screens).map(screen => {\r\n\tlet mm = window.matchMedia(`(min-width:${screens[screen]})`)\r\n\r\n\tmm.addListener(event =>\r\n\t\twindow.dispatchEvent(new CustomEvent('matchmedia', {\r\n\t\t\t'detail': {\r\n\t\t\t\t'screen': screen,\r\n\t\t\t\t'media': event.media,\r\n\t\t\t\t'matches': event.matches\r\n\t\t\t}\r\n\t\t}))\r\n\t)\r\n\r\n\twindow.screens[screen] = mm\r\n})\r\n\r\nimport { Iodine } from '@kingshott/iodine';\r\n\r\nimport Alpine from 'alpinejs'\r\nimport Clipboard from \"@ryangjchandler/alpine-clipboard\"\r\n\r\nAlpine.plugin(Clipboard)\r\n\r\nwindow.Alpine = Alpine\r\n\r\nimport './store'\r\n\r\nimport { xAsyncForm } from './xAsyncForm'\r\nwindow.xAsyncForm = xAsyncForm\r\n\r\nimport { favorites } from './favorites'\r\nwindow.favorites = favorites\r\n\r\nimport noUiSlider from 'nouislider'\r\nwindow.rangeSlider = noUiSlider\r\n\r\nAlpine.start()\r\n\r\n", "var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n", "var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n", "export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}", "export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}", "export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}", "export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}", "export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}", "export var docElement = document.documentElement;", "import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}", "import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}", "// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}", "// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '<div></div>';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}", "import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}\n", "// create and append style sheet\nexport function createStyleSheet (media, nonce) {\n // Create the <style> tag\n var style = document.createElement(\"style\");\n // style.setAttribute(\"type\", \"text/css\");\n\n // Add a media (and/or media query) here if you'd like!\n // style.setAttribute(\"media\", \"screen\")\n // style.setAttribute(\"media\", \"only screen and (max-width : 1024px)\")\n if (media) { style.setAttribute(\"media\", media); }\n\n // Add nonce attribute for Content Security Policy\n if (nonce) { style.setAttribute(\"nonce\", nonce); }\n\n // WebKit hack :(\n // style.appendChild(document.createTextNode(\"\"));\n\n // Add the <style> element to the page\n document.querySelector('head').appendChild(style);\n\n return style.sheet ? style.sheet : style.styleSheet;\n};", "// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}", "// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function removeCSSRule(sheet, index) {\n // return raf(function() {\n 'deleteRule' in sheet ?\n sheet.deleteRule(index) :\n sheet.removeRule(index);\n // });\n}", "export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}", "export function toDegree (y, x) {\n return Math.atan2(y, x) * (180 / Math.PI);\n}", "export function getTouchDirection(angle, range) {\n var direction = false,\n gap = Math.abs(90 - Math.abs(angle));\n \n if (gap >= 90 - range) {\n direction = 'horizontal';\n } else if (gap <= range) {\n direction = 'vertical';\n }\n\n return direction;\n}", "// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}", "export var classListSupport = 'classList' in document.createElement('_');", "import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };", "import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };", "import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nexport { removeClass };", "export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}", "export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}", "export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}", "import { isNodeList } from \"./isNodeList.js\";\n\nexport function setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}", "import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}", "export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}", "export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}", "export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}", "export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}", "export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n", "import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n", "// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}", "// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;", "import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}", "import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}", "export function Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n};", "export function jsTransform(element, attr, prefix, postfix, to, duration, callback) {\n var tick = Math.min(duration, 10),\n unit = (to.indexOf('%') >= 0) ? '%' : 'px',\n to = to.replace(unit, ''),\n from = Number(element.style[attr].replace(prefix, '').replace(postfix, '').replace(unit, '')),\n positionTick = (to - from) / duration * tick,\n running;\n\n setTimeout(moveElement, tick);\n function moveElement() {\n duration -= tick;\n from += positionTick;\n element.style[attr] = prefix + from + unit + postfix;\n if (duration > 0) { \n setTimeout(moveElement, tick); \n } else {\n callback();\n }\n }\n}", "// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}\n\n// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n nonce: false\n }, options || {});\n\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n\n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['<span class=\\'tns-visually-hidden\\'>', ' animation</span>'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ?\n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n\n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex :\n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) :\n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n if (el == null) { return; }\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ?\n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' :\n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ?\n CALC + '(100% / ' + dividend + ')' :\n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes\n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add img load event listener\n forEach(imgs, function(img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n\n (Math.abs(left - right) <= 1) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '<div class=\"tns-liveregion tns-visually-hidden\" aria-live=\"polite\" aria-atomic=\"true\">slide <span class=\"current\">' + getLiveRegionStr() + '</span> of ' + slideCount + '</div>');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '<button type=\"button\" data-action=\"' + txt + '\">' + autoplayHtmlStrings[0] + txt + autoplayHtmlStrings[1] + autoplayText[0] + '</button>');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n\n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '<button type=\"button\" data-nav=\"' + i +'\" tabindex=\"-1\" aria-controls=\"' + slideId + '\" ' + hiddenStr + ' aria-label=\"' + navStr + (i + 1) +'\"></button>';\n }\n navHtml = '<div class=\"tns-nav\" aria-label=\"Carousel Pagination\">' + navHtml + '</div>';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '<div class=\"tns-controls\" aria-label=\"Carousel Navigation\" tabindex=\"0\"><button type=\"button\" data-controls=\"prev\" tabindex=\"-1\" aria-controls=\"' + slideId +'\">' + controlsText[0] + '</button><button type=\"button\" data-controls=\"next\" tabindex=\"-1\" aria-controls=\"' + slideId +'\">' + controlsText[1] + '</button></div>');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer)\n }\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) +\n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ?\n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) { imgSelector = 'img'; }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) { imgCompleted(img); } // Check image.complete\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n }\n\n function additionalUpdates () {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n\n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually\n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually\n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n if (!event ||\n !carousel && event.target.parentNode === container ||\n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document\n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n\n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }});\n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; }\n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.3',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n", "// packages/alpinejs/src/scheduler.js\nvar flushPending = false;\nvar flushing = false;\nvar queue = [];\nvar lastFlushedIndex = -1;\nfunction scheduler(callback) {\n queueJob(callback);\n}\nfunction queueJob(job) {\n if (!queue.includes(job))\n queue.push(job);\n queueFlush();\n}\nfunction dequeueJob(job) {\n let index = queue.indexOf(job);\n if (index !== -1 && index > lastFlushedIndex)\n queue.splice(index, 1);\n}\nfunction queueFlush() {\n if (!flushing && !flushPending) {\n flushPending = true;\n queueMicrotask(flushJobs);\n }\n}\nfunction flushJobs() {\n flushPending = false;\n flushing = true;\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n lastFlushedIndex = i;\n }\n queue.length = 0;\n lastFlushedIndex = -1;\n flushing = false;\n}\n\n// packages/alpinejs/src/reactivity.js\nvar reactive;\nvar effect;\nvar release;\nvar raw;\nvar shouldSchedule = true;\nfunction disableEffectScheduling(callback) {\n shouldSchedule = false;\n callback();\n shouldSchedule = true;\n}\nfunction setReactivityEngine(engine) {\n reactive = engine.reactive;\n release = engine.release;\n effect = (callback) => engine.effect(callback, { scheduler: (task) => {\n if (shouldSchedule) {\n scheduler(task);\n } else {\n task();\n }\n } });\n raw = engine.raw;\n}\nfunction overrideEffect(override) {\n effect = override;\n}\nfunction elementBoundEffect(el) {\n let cleanup2 = () => {\n };\n let wrappedEffect = (callback) => {\n let effectReference = effect(callback);\n if (!el._x_effects) {\n el._x_effects = /* @__PURE__ */ new Set();\n el._x_runEffects = () => {\n el._x_effects.forEach((i) => i());\n };\n }\n el._x_effects.add(effectReference);\n cleanup2 = () => {\n if (effectReference === void 0)\n return;\n el._x_effects.delete(effectReference);\n release(effectReference);\n };\n return effectReference;\n };\n return [wrappedEffect, () => {\n cleanup2();\n }];\n}\nfunction watch(getter, callback) {\n let firstTime = true;\n let oldValue;\n let effectReference = effect(() => {\n let value = getter();\n JSON.stringify(value);\n if (!firstTime) {\n queueMicrotask(() => {\n callback(value, oldValue);\n oldValue = value;\n });\n } else {\n oldValue = value;\n }\n firstTime = false;\n });\n return () => release(effectReference);\n}\n\n// packages/alpinejs/src/utils/dispatch.js\nfunction dispatch(el, name, detail = {}) {\n el.dispatchEvent(\n new CustomEvent(name, {\n detail,\n bubbles: true,\n // Allows events to pass the shadow DOM barrier.\n composed: true,\n cancelable: true\n })\n );\n}\n\n// packages/alpinejs/src/utils/walk.js\nfunction walk(el, callback) {\n if (typeof ShadowRoot === \"function\" && el instanceof ShadowRoot) {\n Array.from(el.children).forEach((el2) => walk(el2, callback));\n return;\n }\n let skip = false;\n callback(el, () => skip = true);\n if (skip)\n return;\n let node = el.firstElementChild;\n while (node) {\n walk(node, callback, false);\n node = node.nextElementSibling;\n }\n}\n\n// packages/alpinejs/src/utils/warn.js\nfunction warn(message, ...args) {\n console.warn(`Alpine Warning: ${message}`, ...args);\n}\n\n// packages/alpinejs/src/lifecycle.js\nvar started = false;\nfunction start() {\n if (started)\n warn(\"Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.\");\n started = true;\n if (!document.body)\n warn(\"Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?\");\n dispatch(document, \"alpine:init\");\n dispatch(document, \"alpine:initializing\");\n startObservingMutations();\n onElAdded((el) => initTree(el, walk));\n onElRemoved((el) => destroyTree(el));\n onAttributesAdded((el, attrs) => {\n directives(el, attrs).forEach((handle) => handle());\n });\n let outNestedComponents = (el) => !closestRoot(el.parentElement, true);\n Array.from(document.querySelectorAll(allSelectors().join(\",\"))).filter(outNestedComponents).forEach((el) => {\n initTree(el);\n });\n dispatch(document, \"alpine:initialized\");\n}\nvar rootSelectorCallbacks = [];\nvar initSelectorCallbacks = [];\nfunction rootSelectors() {\n return rootSelectorCallbacks.map((fn) => fn());\n}\nfunction allSelectors() {\n return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());\n}\nfunction addRootSelector(selectorCallback) {\n rootSelectorCallbacks.push(selectorCallback);\n}\nfunction addInitSelector(selectorCallback) {\n initSelectorCallbacks.push(selectorCallback);\n}\nfunction closestRoot(el, includeInitSelectors = false) {\n return findClosest(el, (element) => {\n const selectors = includeInitSelectors ? allSelectors() : rootSelectors();\n if (selectors.some((selector) => element.matches(selector)))\n return true;\n });\n}\nfunction findClosest(el, callback) {\n if (!el)\n return;\n if (callback(el))\n return el;\n if (el._x_teleportBack)\n el = el._x_teleportBack;\n if (!el.parentElement)\n return;\n return findClosest(el.parentElement, callback);\n}\nfunction isRoot(el) {\n return rootSelectors().some((selector) => el.matches(selector));\n}\nvar initInterceptors = [];\nfunction interceptInit(callback) {\n initInterceptors.push(callback);\n}\nfunction initTree(el, walker = walk, intercept = () => {\n}) {\n deferHandlingDirectives(() => {\n walker(el, (el2, skip) => {\n intercept(el2, skip);\n initInterceptors.forEach((i) => i(el2, skip));\n directives(el2, el2.attributes).forEach((handle) => handle());\n el2._x_ignore && skip();\n });\n });\n}\nfunction destroyTree(root, walker = walk) {\n walker(root, (el) => {\n cleanupAttributes(el);\n cleanupElement(el);\n });\n}\n\n// packages/alpinejs/src/mutation.js\nvar onAttributeAddeds = [];\nvar onElRemoveds = [];\nvar onElAddeds = [];\nfunction onElAdded(callback) {\n onElAddeds.push(callback);\n}\nfunction onElRemoved(el, callback) {\n if (typeof callback === \"function\") {\n if (!el._x_cleanups)\n el._x_cleanups = [];\n el._x_cleanups.push(callback);\n } else {\n callback = el;\n onElRemoveds.push(callback);\n }\n}\nfunction onAttributesAdded(callback) {\n onAttributeAddeds.push(callback);\n}\nfunction onAttributeRemoved(el, name, callback) {\n if (!el._x_attributeCleanups)\n el._x_attributeCleanups = {};\n if (!el._x_attributeCleanups[name])\n el._x_attributeCleanups[name] = [];\n el._x_attributeCleanups[name].push(callback);\n}\nfunction cleanupAttributes(el, names) {\n if (!el._x_attributeCleanups)\n return;\n Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {\n if (names === void 0 || names.includes(name)) {\n value.forEach((i) => i());\n delete el._x_attributeCleanups[name];\n }\n });\n}\nfunction cleanupElement(el) {\n if (el._x_cleanups) {\n while (el._x_cleanups.length)\n el._x_cleanups.pop()();\n }\n}\nvar observer = new MutationObserver(onMutate);\nvar currentlyObserving = false;\nfunction startObservingMutations() {\n observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true });\n currentlyObserving = true;\n}\nfunction stopObservingMutations() {\n flushObserver();\n observer.disconnect();\n currentlyObserving = false;\n}\nvar queuedMutations = [];\nfunction flushObserver() {\n let records = observer.takeRecords();\n queuedMutations.push(() => records.length > 0 && onMutate(records));\n let queueLengthWhenTriggered = queuedMutations.length;\n queueMicrotask(() => {\n if (queuedMutations.length === queueLengthWhenTriggered) {\n while (queuedMutations.length > 0)\n queuedMutations.shift()();\n }\n });\n}\nfunction mutateDom(callback) {\n if (!currentlyObserving)\n return callback();\n stopObservingMutations();\n let result = callback();\n startObservingMutations();\n return result;\n}\nvar isCollecting = false;\nvar deferredMutations = [];\nfunction deferMutations() {\n isCollecting = true;\n}\nfunction flushAndStopDeferringMutations() {\n isCollecting = false;\n onMutate(deferredMutations);\n deferredMutations = [];\n}\nfunction onMutate(mutations) {\n if (isCollecting) {\n deferredMutations = deferredMutations.concat(mutations);\n return;\n }\n let addedNodes = /* @__PURE__ */ new Set();\n let removedNodes = /* @__PURE__ */ new Set();\n let addedAttributes = /* @__PURE__ */ new Map();\n let removedAttributes = /* @__PURE__ */ new Map();\n for (let i = 0; i < mutations.length; i++) {\n if (mutations[i].target._x_ignoreMutationObserver)\n continue;\n if (mutations[i].type === \"childList\") {\n mutations[i].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.add(node));\n mutations[i].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.add(node));\n }\n if (mutations[i].type === \"attributes\") {\n let el = mutations[i].target;\n let name = mutations[i].attributeName;\n let oldValue = mutations[i].oldValue;\n let add2 = () => {\n if (!addedAttributes.has(el))\n addedAttributes.set(el, []);\n addedAttributes.get(el).push({ name, value: el.getAttribute(name) });\n };\n let remove = () => {\n if (!removedAttributes.has(el))\n removedAttributes.set(el, []);\n removedAttributes.get(el).push(name);\n };\n if (el.hasAttribute(name) && oldValue === null) {\n add2();\n } else if (el.hasAttribute(name)) {\n remove();\n add2();\n } else {\n remove();\n }\n }\n }\n removedAttributes.forEach((attrs, el) => {\n cleanupAttributes(el, attrs);\n });\n addedAttributes.forEach((attrs, el) => {\n onAttributeAddeds.forEach((i) => i(el, attrs));\n });\n for (let node of removedNodes) {\n if (addedNodes.has(node))\n continue;\n onElRemoveds.forEach((i) => i(node));\n destroyTree(node);\n }\n addedNodes.forEach((node) => {\n node._x_ignoreSelf = true;\n node._x_ignore = true;\n });\n for (let node of addedNodes) {\n if (removedNodes.has(node))\n continue;\n if (!node.isConnected)\n continue;\n delete node._x_ignoreSelf;\n delete node._x_ignore;\n onElAddeds.forEach((i) => i(node));\n node._x_ignore = true;\n node._x_ignoreSelf = true;\n }\n addedNodes.forEach((node) => {\n delete node._x_ignoreSelf;\n delete node._x_ignore;\n });\n addedNodes = null;\n removedNodes = null;\n addedAttributes = null;\n removedAttributes = null;\n}\n\n// packages/alpinejs/src/scope.js\nfunction scope(node) {\n return mergeProxies(closestDataStack(node));\n}\nfunction addScopeToNode(node, data2, referenceNode) {\n node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];\n return () => {\n node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);\n };\n}\nfunction closestDataStack(node) {\n if (node._x_dataStack)\n return node._x_dataStack;\n if (typeof ShadowRoot === \"function\" && node instanceof ShadowRoot) {\n return closestDataStack(node.host);\n }\n if (!node.parentNode) {\n return [];\n }\n return closestDataStack(node.parentNode);\n}\nfunction mergeProxies(objects) {\n return new Proxy({ objects }, mergeProxyTrap);\n}\nvar mergeProxyTrap = {\n ownKeys({ objects }) {\n return Array.from(\n new Set(objects.flatMap((i) => Object.keys(i)))\n );\n },\n has({ objects }, name) {\n if (name == Symbol.unscopables)\n return false;\n return objects.some(\n (obj) => Object.prototype.hasOwnProperty.call(obj, name) || Reflect.has(obj, name)\n );\n },\n get({ objects }, name, thisProxy) {\n if (name == \"toJSON\")\n return collapseProxies;\n return Reflect.get(\n objects.find(\n (obj) => Reflect.has(obj, name)\n ) || {},\n name,\n thisProxy\n );\n },\n set({ objects }, name, value, thisProxy) {\n const target = objects.find(\n (obj) => Object.prototype.hasOwnProperty.call(obj, name)\n ) || objects[objects.length - 1];\n const descriptor = Object.getOwnPropertyDescriptor(target, name);\n if (descriptor?.set && descriptor?.get)\n return Reflect.set(target, name, value, thisProxy);\n return Reflect.set(target, name, value);\n }\n};\nfunction collapseProxies() {\n let keys = Reflect.ownKeys(this);\n return keys.reduce((acc, key) => {\n acc[key] = Reflect.get(this, key);\n return acc;\n }, {});\n}\n\n// packages/alpinejs/src/interceptor.js\nfunction initInterceptors2(data2) {\n let isObject2 = (val) => typeof val === \"object\" && !Array.isArray(val) && val !== null;\n let recurse = (obj, basePath = \"\") => {\n Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => {\n if (enumerable === false || value === void 0)\n return;\n if (typeof value === \"object\" && value !== null && value.__v_skip)\n return;\n let path = basePath === \"\" ? key : `${basePath}.${key}`;\n if (typeof value === \"object\" && value !== null && value._x_interceptor) {\n obj[key] = value.initialize(data2, path, key);\n } else {\n if (isObject2(value) && value !== obj && !(value instanceof Element)) {\n recurse(value, path);\n }\n }\n });\n };\n return recurse(data2);\n}\nfunction interceptor(callback, mutateObj = () => {\n}) {\n let obj = {\n initialValue: void 0,\n _x_interceptor: true,\n initialize(data2, path, key) {\n return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);\n }\n };\n mutateObj(obj);\n return (initialValue) => {\n if (typeof initialValue === \"object\" && initialValue !== null && initialValue._x_interceptor) {\n let initialize = obj.initialize.bind(obj);\n obj.initialize = (data2, path, key) => {\n let innerValue = initialValue.initialize(data2, path, key);\n obj.initialValue = innerValue;\n return initialize(data2, path, key);\n };\n } else {\n obj.initialValue = initialValue;\n }\n return obj;\n };\n}\nfunction get(obj, path) {\n return path.split(\".\").reduce((carry, segment) => carry[segment], obj);\n}\nfunction set(obj, path, value) {\n if (typeof path === \"string\")\n path = path.split(\".\");\n if (path.length === 1)\n obj[path[0]] = value;\n else if (path.length === 0)\n throw error;\n else {\n if (obj[path[0]])\n return set(obj[path[0]], path.slice(1), value);\n else {\n obj[path[0]] = {};\n return set(obj[path[0]], path.slice(1), value);\n }\n }\n}\n\n// packages/alpinejs/src/magics.js\nvar magics = {};\nfunction magic(name, callback) {\n magics[name] = callback;\n}\nfunction injectMagics(obj, el) {\n Object.entries(magics).forEach(([name, callback]) => {\n let memoizedUtilities = null;\n function getUtilities() {\n if (memoizedUtilities) {\n return memoizedUtilities;\n } else {\n let [utilities, cleanup2] = getElementBoundUtilities(el);\n memoizedUtilities = { interceptor, ...utilities };\n onElRemoved(el, cleanup2);\n return memoizedUtilities;\n }\n }\n Object.defineProperty(obj, `$${name}`, {\n get() {\n return callback(el, getUtilities());\n },\n enumerable: false\n });\n });\n return obj;\n}\n\n// packages/alpinejs/src/utils/error.js\nfunction tryCatch(el, expression, callback, ...args) {\n try {\n return callback(...args);\n } catch (e) {\n handleError(e, el, expression);\n }\n}\nfunction handleError(error2, el, expression = void 0) {\n error2 = Object.assign(\n error2 ?? { message: \"No error message given.\" },\n { el, expression }\n );\n console.warn(`Alpine Expression Error: ${error2.message}\n\n${expression ? 'Expression: \"' + expression + '\"\\n\\n' : \"\"}`, el);\n setTimeout(() => {\n throw error2;\n }, 0);\n}\n\n// packages/alpinejs/src/evaluator.js\nvar shouldAutoEvaluateFunctions = true;\nfunction dontAutoEvaluateFunctions(callback) {\n let cache = shouldAutoEvaluateFunctions;\n shouldAutoEvaluateFunctions = false;\n let result = callback();\n shouldAutoEvaluateFunctions = cache;\n return result;\n}\nfunction evaluate(el, expression, extras = {}) {\n let result;\n evaluateLater(el, expression)((value) => result = value, extras);\n return result;\n}\nfunction evaluateLater(...args) {\n return theEvaluatorFunction(...args);\n}\nvar theEvaluatorFunction = normalEvaluator;\nfunction setEvaluator(newEvaluator) {\n theEvaluatorFunction = newEvaluator;\n}\nfunction normalEvaluator(el, expression) {\n let overriddenMagics = {};\n injectMagics(overriddenMagics, el);\n let dataStack = [overriddenMagics, ...closestDataStack(el)];\n let evaluator = typeof expression === \"function\" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el);\n return tryCatch.bind(null, el, expression, evaluator);\n}\nfunction generateEvaluatorFromFunction(dataStack, func) {\n return (receiver = () => {\n }, { scope: scope2 = {}, params = [] } = {}) => {\n let result = func.apply(mergeProxies([scope2, ...dataStack]), params);\n runIfTypeOfFunction(receiver, result);\n };\n}\nvar evaluatorMemo = {};\nfunction generateFunctionFromString(expression, el) {\n if (evaluatorMemo[expression]) {\n return evaluatorMemo[expression];\n }\n let AsyncFunction = Object.getPrototypeOf(async function() {\n }).constructor;\n let rightSideSafeExpression = /^[\\n\\s]*if.*\\(.*\\)/.test(expression.trim()) || /^(let|const)\\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression;\n const safeAsyncFunction = () => {\n try {\n let func2 = new AsyncFunction(\n [\"__self\", \"scope\"],\n `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`\n );\n Object.defineProperty(func2, \"name\", {\n value: `[Alpine] ${expression}`\n });\n return func2;\n } catch (error2) {\n handleError(error2, el, expression);\n return Promise.resolve();\n }\n };\n let func = safeAsyncFunction();\n evaluatorMemo[expression] = func;\n return func;\n}\nfunction generateEvaluatorFromString(dataStack, expression, el) {\n let func = generateFunctionFromString(expression, el);\n return (receiver = () => {\n }, { scope: scope2 = {}, params = [] } = {}) => {\n func.result = void 0;\n func.finished = false;\n let completeScope = mergeProxies([scope2, ...dataStack]);\n if (typeof func === \"function\") {\n let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression));\n if (func.finished) {\n runIfTypeOfFunction(receiver, func.result, completeScope, params, el);\n func.result = void 0;\n } else {\n promise.then((result) => {\n runIfTypeOfFunction(receiver, result, completeScope, params, el);\n }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);\n }\n }\n };\n}\nfunction runIfTypeOfFunction(receiver, value, scope2, params, el) {\n if (shouldAutoEvaluateFunctions && typeof value === \"function\") {\n let result = value.apply(scope2, params);\n if (result instanceof Promise) {\n result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));\n } else {\n receiver(result);\n }\n } else if (typeof value === \"object\" && value instanceof Promise) {\n value.then((i) => receiver(i));\n } else {\n receiver(value);\n }\n}\n\n// packages/alpinejs/src/directives.js\nvar prefixAsString = \"x-\";\nfunction prefix(subject = \"\") {\n return prefixAsString + subject;\n}\nfunction setPrefix(newPrefix) {\n prefixAsString = newPrefix;\n}\nvar directiveHandlers = {};\nfunction directive(name, callback) {\n directiveHandlers[name] = callback;\n return {\n before(directive2) {\n if (!directiveHandlers[directive2]) {\n console.warn(String.raw`Cannot find directive \\`${directive2}\\`. \\`${name}\\` will use the default order of execution`);\n return;\n }\n const pos = directiveOrder.indexOf(directive2);\n directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf(\"DEFAULT\"), 0, name);\n }\n };\n}\nfunction directives(el, attributes, originalAttributeOverride) {\n attributes = Array.from(attributes);\n if (el._x_virtualDirectives) {\n let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value }));\n let staticAttributes = attributesOnly(vAttributes);\n vAttributes = vAttributes.map((attribute) => {\n if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n return {\n name: `x-bind:${attribute.name}`,\n value: `\"${attribute.value}\"`\n };\n }\n return attribute;\n });\n attributes = attributes.concat(vAttributes);\n }\n let transformedAttributeMap = {};\n let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);\n return directives2.map((directive2) => {\n return getDirectiveHandler(el, directive2);\n });\n}\nfunction attributesOnly(attributes) {\n return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));\n}\nvar isDeferringHandlers = false;\nvar directiveHandlerStacks = /* @__PURE__ */ new Map();\nvar currentHandlerStackKey = Symbol();\nfunction deferHandlingDirectives(callback) {\n isDeferringHandlers = true;\n let key = Symbol();\n currentHandlerStackKey = key;\n directiveHandlerStacks.set(key, []);\n let flushHandlers = () => {\n while (directiveHandlerStacks.get(key).length)\n directiveHandlerStacks.get(key).shift()();\n directiveHandlerStacks.delete(key);\n };\n let stopDeferring = () => {\n isDeferringHandlers = false;\n flushHandlers();\n };\n callback(flushHandlers);\n stopDeferring();\n}\nfunction getElementBoundUtilities(el) {\n let cleanups = [];\n let cleanup2 = (callback) => cleanups.push(callback);\n let [effect3, cleanupEffect] = elementBoundEffect(el);\n cleanups.push(cleanupEffect);\n let utilities = {\n Alpine: alpine_default,\n effect: effect3,\n cleanup: cleanup2,\n evaluateLater: evaluateLater.bind(evaluateLater, el),\n evaluate: evaluate.bind(evaluate, el)\n };\n let doCleanup = () => cleanups.forEach((i) => i());\n return [utilities, doCleanup];\n}\nfunction getDirectiveHandler(el, directive2) {\n let noop = () => {\n };\n let handler4 = directiveHandlers[directive2.type] || noop;\n let [utilities, cleanup2] = getElementBoundUtilities(el);\n onAttributeRemoved(el, directive2.original, cleanup2);\n let fullHandler = () => {\n if (el._x_ignore || el._x_ignoreSelf)\n return;\n handler4.inline && handler4.inline(el, directive2, utilities);\n handler4 = handler4.bind(handler4, el, directive2, utilities);\n isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4();\n };\n fullHandler.runCleanups = cleanup2;\n return fullHandler;\n}\nvar startingWith = (subject, replacement) => ({ name, value }) => {\n if (name.startsWith(subject))\n name = name.replace(subject, replacement);\n return { name, value };\n};\nvar into = (i) => i;\nfunction toTransformedAttributes(callback = () => {\n}) {\n return ({ name, value }) => {\n let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => {\n return transform(carry);\n }, { name, value });\n if (newName !== name)\n callback(newName, name);\n return { name: newName, value: newValue };\n };\n}\nvar attributeTransformers = [];\nfunction mapAttributes(callback) {\n attributeTransformers.push(callback);\n}\nfunction outNonAlpineAttributes({ name }) {\n return alpineAttributeRegex().test(name);\n}\nvar alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\\\b`);\nfunction toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {\n return ({ name, value }) => {\n let typeMatch = name.match(alpineAttributeRegex());\n let valueMatch = name.match(/:([a-zA-Z0-9\\-_:]+)/);\n let modifiers = name.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n let original = originalAttributeOverride || transformedAttributeMap[name] || name;\n return {\n type: typeMatch ? typeMatch[1] : null,\n value: valueMatch ? valueMatch[1] : null,\n modifiers: modifiers.map((i) => i.replace(\".\", \"\")),\n expression: value,\n original\n };\n };\n}\nvar DEFAULT = \"DEFAULT\";\nvar directiveOrder = [\n \"ignore\",\n \"ref\",\n \"data\",\n \"id\",\n \"anchor\",\n \"bind\",\n \"init\",\n \"for\",\n \"model\",\n \"modelable\",\n \"transition\",\n \"show\",\n \"if\",\n DEFAULT,\n \"teleport\"\n];\nfunction byPriority(a, b) {\n let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;\n let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;\n return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);\n}\n\n// packages/alpinejs/src/nextTick.js\nvar tickStack = [];\nvar isHolding = false;\nfunction nextTick(callback = () => {\n}) {\n queueMicrotask(() => {\n isHolding || setTimeout(() => {\n releaseNextTicks();\n });\n });\n return new Promise((res) => {\n tickStack.push(() => {\n callback();\n res();\n });\n });\n}\nfunction releaseNextTicks() {\n isHolding = false;\n while (tickStack.length)\n tickStack.shift()();\n}\nfunction holdNextTicks() {\n isHolding = true;\n}\n\n// packages/alpinejs/src/utils/classes.js\nfunction setClasses(el, value) {\n if (Array.isArray(value)) {\n return setClassesFromString(el, value.join(\" \"));\n } else if (typeof value === \"object\" && value !== null) {\n return setClassesFromObject(el, value);\n } else if (typeof value === \"function\") {\n return setClasses(el, value());\n }\n return setClassesFromString(el, value);\n}\nfunction setClassesFromString(el, classString) {\n let split = (classString2) => classString2.split(\" \").filter(Boolean);\n let missingClasses = (classString2) => classString2.split(\" \").filter((i) => !el.classList.contains(i)).filter(Boolean);\n let addClassesAndReturnUndo = (classes) => {\n el.classList.add(...classes);\n return () => {\n el.classList.remove(...classes);\n };\n };\n classString = classString === true ? classString = \"\" : classString || \"\";\n return addClassesAndReturnUndo(missingClasses(classString));\n}\nfunction setClassesFromObject(el, classObject) {\n let split = (classString) => classString.split(\" \").filter(Boolean);\n let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean);\n let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean);\n let added = [];\n let removed = [];\n forRemove.forEach((i) => {\n if (el.classList.contains(i)) {\n el.classList.remove(i);\n removed.push(i);\n }\n });\n forAdd.forEach((i) => {\n if (!el.classList.contains(i)) {\n el.classList.add(i);\n added.push(i);\n }\n });\n return () => {\n removed.forEach((i) => el.classList.add(i));\n added.forEach((i) => el.classList.remove(i));\n };\n}\n\n// packages/alpinejs/src/utils/styles.js\nfunction setStyles(el, value) {\n if (typeof value === \"object\" && value !== null) {\n return setStylesFromObject(el, value);\n }\n return setStylesFromString(el, value);\n}\nfunction setStylesFromObject(el, value) {\n let previousStyles = {};\n Object.entries(value).forEach(([key, value2]) => {\n previousStyles[key] = el.style[key];\n if (!key.startsWith(\"--\")) {\n key = kebabCase(key);\n }\n el.style.setProperty(key, value2);\n });\n setTimeout(() => {\n if (el.style.length === 0) {\n el.removeAttribute(\"style\");\n }\n });\n return () => {\n setStyles(el, previousStyles);\n };\n}\nfunction setStylesFromString(el, value) {\n let cache = el.getAttribute(\"style\", value);\n el.setAttribute(\"style\", value);\n return () => {\n el.setAttribute(\"style\", cache || \"\");\n };\n}\nfunction kebabCase(subject) {\n return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\n// packages/alpinejs/src/utils/once.js\nfunction once(callback, fallback = () => {\n}) {\n let called = false;\n return function() {\n if (!called) {\n called = true;\n callback.apply(this, arguments);\n } else {\n fallback.apply(this, arguments);\n }\n };\n}\n\n// packages/alpinejs/src/directives/x-transition.js\ndirective(\"transition\", (el, { value, modifiers, expression }, { evaluate: evaluate2 }) => {\n if (typeof expression === \"function\")\n expression = evaluate2(expression);\n if (expression === false)\n return;\n if (!expression || typeof expression === \"boolean\") {\n registerTransitionsFromHelper(el, modifiers, value);\n } else {\n registerTransitionsFromClassString(el, expression, value);\n }\n});\nfunction registerTransitionsFromClassString(el, classString, stage) {\n registerTransitionObject(el, setClasses, \"\");\n let directiveStorageMap = {\n \"enter\": (classes) => {\n el._x_transition.enter.during = classes;\n },\n \"enter-start\": (classes) => {\n el._x_transition.enter.start = classes;\n },\n \"enter-end\": (classes) => {\n el._x_transition.enter.end = classes;\n },\n \"leave\": (classes) => {\n el._x_transition.leave.during = classes;\n },\n \"leave-start\": (classes) => {\n el._x_transition.leave.start = classes;\n },\n \"leave-end\": (classes) => {\n el._x_transition.leave.end = classes;\n }\n };\n directiveStorageMap[stage](classString);\n}\nfunction registerTransitionsFromHelper(el, modifiers, stage) {\n registerTransitionObject(el, setStyles);\n let doesntSpecify = !modifiers.includes(\"in\") && !modifiers.includes(\"out\") && !stage;\n let transitioningIn = doesntSpecify || modifiers.includes(\"in\") || [\"enter\"].includes(stage);\n let transitioningOut = doesntSpecify || modifiers.includes(\"out\") || [\"leave\"].includes(stage);\n if (modifiers.includes(\"in\") && !doesntSpecify) {\n modifiers = modifiers.filter((i, index) => index < modifiers.indexOf(\"out\"));\n }\n if (modifiers.includes(\"out\") && !doesntSpecify) {\n modifiers = modifiers.filter((i, index) => index > modifiers.indexOf(\"out\"));\n }\n let wantsAll = !modifiers.includes(\"opacity\") && !modifiers.includes(\"scale\");\n let wantsOpacity = wantsAll || modifiers.includes(\"opacity\");\n let wantsScale = wantsAll || modifiers.includes(\"scale\");\n let opacityValue = wantsOpacity ? 0 : 1;\n let scaleValue = wantsScale ? modifierValue(modifiers, \"scale\", 95) / 100 : 1;\n let delay = modifierValue(modifiers, \"delay\", 0) / 1e3;\n let origin = modifierValue(modifiers, \"origin\", \"center\");\n let property = \"opacity, transform\";\n let durationIn = modifierValue(modifiers, \"duration\", 150) / 1e3;\n let durationOut = modifierValue(modifiers, \"duration\", 75) / 1e3;\n let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`;\n if (transitioningIn) {\n el._x_transition.enter.during = {\n transformOrigin: origin,\n transitionDelay: `${delay}s`,\n transitionProperty: property,\n transitionDuration: `${durationIn}s`,\n transitionTimingFunction: easing\n };\n el._x_transition.enter.start = {\n opacity: opacityValue,\n transform: `scale(${scaleValue})`\n };\n el._x_transition.enter.end = {\n opacity: 1,\n transform: `scale(1)`\n };\n }\n if (transitioningOut) {\n el._x_transition.leave.during = {\n transformOrigin: origin,\n transitionDelay: `${delay}s`,\n transitionProperty: property,\n transitionDuration: `${durationOut}s`,\n transitionTimingFunction: easing\n };\n el._x_transition.leave.start = {\n opacity: 1,\n transform: `scale(1)`\n };\n el._x_transition.leave.end = {\n opacity: opacityValue,\n transform: `scale(${scaleValue})`\n };\n }\n}\nfunction registerTransitionObject(el, setFunction, defaultValue = {}) {\n if (!el._x_transition)\n el._x_transition = {\n enter: { during: defaultValue, start: defaultValue, end: defaultValue },\n leave: { during: defaultValue, start: defaultValue, end: defaultValue },\n in(before = () => {\n }, after = () => {\n }) {\n transition(el, setFunction, {\n during: this.enter.during,\n start: this.enter.start,\n end: this.enter.end\n }, before, after);\n },\n out(before = () => {\n }, after = () => {\n }) {\n transition(el, setFunction, {\n during: this.leave.during,\n start: this.leave.start,\n end: this.leave.end\n }, before, after);\n }\n };\n}\nwindow.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) {\n const nextTick2 = document.visibilityState === \"visible\" ? requestAnimationFrame : setTimeout;\n let clickAwayCompatibleShow = () => nextTick2(show);\n if (value) {\n if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) {\n el._x_transition.enter && (Object.entries(el._x_transition.enter.during).length || Object.entries(el._x_transition.enter.start).length || Object.entries(el._x_transition.enter.end).length) ? el._x_transition.in(show) : clickAwayCompatibleShow();\n } else {\n el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow();\n }\n return;\n }\n el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => {\n el._x_transition.out(() => {\n }, () => resolve(hide));\n el._x_transitioning && el._x_transitioning.beforeCancel(() => reject({ isFromCancelledTransition: true }));\n }) : Promise.resolve(hide);\n queueMicrotask(() => {\n let closest = closestHide(el);\n if (closest) {\n if (!closest._x_hideChildren)\n closest._x_hideChildren = [];\n closest._x_hideChildren.push(el);\n } else {\n nextTick2(() => {\n let hideAfterChildren = (el2) => {\n let carry = Promise.all([\n el2._x_hidePromise,\n ...(el2._x_hideChildren || []).map(hideAfterChildren)\n ]).then(([i]) => i());\n delete el2._x_hidePromise;\n delete el2._x_hideChildren;\n return carry;\n };\n hideAfterChildren(el).catch((e) => {\n if (!e.isFromCancelledTransition)\n throw e;\n });\n });\n }\n });\n};\nfunction closestHide(el) {\n let parent = el.parentNode;\n if (!parent)\n return;\n return parent._x_hidePromise ? parent : closestHide(parent);\n}\nfunction transition(el, setFunction, { during, start: start2, end } = {}, before = () => {\n}, after = () => {\n}) {\n if (el._x_transitioning)\n el._x_transitioning.cancel();\n if (Object.keys(during).length === 0 && Object.keys(start2).length === 0 && Object.keys(end).length === 0) {\n before();\n after();\n return;\n }\n let undoStart, undoDuring, undoEnd;\n performTransition(el, {\n start() {\n undoStart = setFunction(el, start2);\n },\n during() {\n undoDuring = setFunction(el, during);\n },\n before,\n end() {\n undoStart();\n undoEnd = setFunction(el, end);\n },\n after,\n cleanup() {\n undoDuring();\n undoEnd();\n }\n });\n}\nfunction performTransition(el, stages) {\n let interrupted, reachedBefore, reachedEnd;\n let finish = once(() => {\n mutateDom(() => {\n interrupted = true;\n if (!reachedBefore)\n stages.before();\n if (!reachedEnd) {\n stages.end();\n releaseNextTicks();\n }\n stages.after();\n if (el.isConnected)\n stages.cleanup();\n delete el._x_transitioning;\n });\n });\n el._x_transitioning = {\n beforeCancels: [],\n beforeCancel(callback) {\n this.beforeCancels.push(callback);\n },\n cancel: once(function() {\n while (this.beforeCancels.length) {\n this.beforeCancels.shift()();\n }\n ;\n finish();\n }),\n finish\n };\n mutateDom(() => {\n stages.start();\n stages.during();\n });\n holdNextTicks();\n requestAnimationFrame(() => {\n if (interrupted)\n return;\n let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n let delay = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n if (duration === 0)\n duration = Number(getComputedStyle(el).animationDuration.replace(\"s\", \"\")) * 1e3;\n mutateDom(() => {\n stages.before();\n });\n reachedBefore = true;\n requestAnimationFrame(() => {\n if (interrupted)\n return;\n mutateDom(() => {\n stages.end();\n });\n releaseNextTicks();\n setTimeout(el._x_transitioning.finish, duration + delay);\n reachedEnd = true;\n });\n });\n}\nfunction modifierValue(modifiers, key, fallback) {\n if (modifiers.indexOf(key) === -1)\n return fallback;\n const rawValue = modifiers[modifiers.indexOf(key) + 1];\n if (!rawValue)\n return fallback;\n if (key === \"scale\") {\n if (isNaN(rawValue))\n return fallback;\n }\n if (key === \"duration\" || key === \"delay\") {\n let match = rawValue.match(/([0-9]+)ms/);\n if (match)\n return match[1];\n }\n if (key === \"origin\") {\n if ([\"top\", \"right\", \"left\", \"center\", \"bottom\"].includes(modifiers[modifiers.indexOf(key) + 2])) {\n return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(\" \");\n }\n }\n return rawValue;\n}\n\n// packages/alpinejs/src/clone.js\nvar isCloning = false;\nfunction skipDuringClone(callback, fallback = () => {\n}) {\n return (...args) => isCloning ? fallback(...args) : callback(...args);\n}\nfunction onlyDuringClone(callback) {\n return (...args) => isCloning && callback(...args);\n}\nvar interceptors = [];\nfunction interceptClone(callback) {\n interceptors.push(callback);\n}\nfunction cloneNode(from, to) {\n interceptors.forEach((i) => i(from, to));\n isCloning = true;\n dontRegisterReactiveSideEffects(() => {\n initTree(to, (el, callback) => {\n callback(el, () => {\n });\n });\n });\n isCloning = false;\n}\nvar isCloningLegacy = false;\nfunction clone(oldEl, newEl) {\n if (!newEl._x_dataStack)\n newEl._x_dataStack = oldEl._x_dataStack;\n isCloning = true;\n isCloningLegacy = true;\n dontRegisterReactiveSideEffects(() => {\n cloneTree(newEl);\n });\n isCloning = false;\n isCloningLegacy = false;\n}\nfunction cloneTree(el) {\n let hasRunThroughFirstEl = false;\n let shallowWalker = (el2, callback) => {\n walk(el2, (el3, skip) => {\n if (hasRunThroughFirstEl && isRoot(el3))\n return skip();\n hasRunThroughFirstEl = true;\n callback(el3, skip);\n });\n };\n initTree(el, shallowWalker);\n}\nfunction dontRegisterReactiveSideEffects(callback) {\n let cache = effect;\n overrideEffect((callback2, el) => {\n let storedEffect = cache(callback2);\n release(storedEffect);\n return () => {\n };\n });\n callback();\n overrideEffect(cache);\n}\n\n// packages/alpinejs/src/utils/bind.js\nfunction bind(el, name, value, modifiers = []) {\n if (!el._x_bindings)\n el._x_bindings = reactive({});\n el._x_bindings[name] = value;\n name = modifiers.includes(\"camel\") ? camelCase(name) : name;\n switch (name) {\n case \"value\":\n bindInputValue(el, value);\n break;\n case \"style\":\n bindStyles(el, value);\n break;\n case \"class\":\n bindClasses(el, value);\n break;\n case \"selected\":\n case \"checked\":\n bindAttributeAndProperty(el, name, value);\n break;\n default:\n bindAttribute(el, name, value);\n break;\n }\n}\nfunction bindInputValue(el, value) {\n if (el.type === \"radio\") {\n if (el.attributes.value === void 0) {\n el.value = value;\n }\n if (window.fromModel) {\n if (typeof value === \"boolean\") {\n el.checked = safeParseBoolean(el.value) === value;\n } else {\n el.checked = checkedAttrLooseCompare(el.value, value);\n }\n }\n } else if (el.type === \"checkbox\") {\n if (Number.isInteger(value)) {\n el.value = value;\n } else if (!Array.isArray(value) && typeof value !== \"boolean\" && ![null, void 0].includes(value)) {\n el.value = String(value);\n } else {\n if (Array.isArray(value)) {\n el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value));\n } else {\n el.checked = !!value;\n }\n }\n } else if (el.tagName === \"SELECT\") {\n updateSelect(el, value);\n } else {\n if (el.value === value)\n return;\n el.value = value === void 0 ? \"\" : value;\n }\n}\nfunction bindClasses(el, value) {\n if (el._x_undoAddedClasses)\n el._x_undoAddedClasses();\n el._x_undoAddedClasses = setClasses(el, value);\n}\nfunction bindStyles(el, value) {\n if (el._x_undoAddedStyles)\n el._x_undoAddedStyles();\n el._x_undoAddedStyles = setStyles(el, value);\n}\nfunction bindAttributeAndProperty(el, name, value) {\n bindAttribute(el, name, value);\n setPropertyIfChanged(el, name, value);\n}\nfunction bindAttribute(el, name, value) {\n if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) {\n el.removeAttribute(name);\n } else {\n if (isBooleanAttr(name))\n value = name;\n setIfChanged(el, name, value);\n }\n}\nfunction setIfChanged(el, attrName, value) {\n if (el.getAttribute(attrName) != value) {\n el.setAttribute(attrName, value);\n }\n}\nfunction setPropertyIfChanged(el, propName, value) {\n if (el[propName] !== value) {\n el[propName] = value;\n }\n}\nfunction updateSelect(el, value) {\n const arrayWrappedValue = [].concat(value).map((value2) => {\n return value2 + \"\";\n });\n Array.from(el.options).forEach((option) => {\n option.selected = arrayWrappedValue.includes(option.value);\n });\n}\nfunction camelCase(subject) {\n return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n}\nfunction checkedAttrLooseCompare(valueA, valueB) {\n return valueA == valueB;\n}\nfunction safeParseBoolean(rawValue) {\n if ([1, \"1\", \"true\", \"on\", \"yes\", true].includes(rawValue)) {\n return true;\n }\n if ([0, \"0\", \"false\", \"off\", \"no\", false].includes(rawValue)) {\n return false;\n }\n return rawValue ? Boolean(rawValue) : null;\n}\nfunction isBooleanAttr(attrName) {\n const booleanAttributes = [\n \"disabled\",\n \"checked\",\n \"required\",\n \"readonly\",\n \"hidden\",\n \"open\",\n \"selected\",\n \"autofocus\",\n \"itemscope\",\n \"multiple\",\n \"novalidate\",\n \"allowfullscreen\",\n \"allowpaymentrequest\",\n \"formnovalidate\",\n \"autoplay\",\n \"controls\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"default\",\n \"ismap\",\n \"reversed\",\n \"async\",\n \"defer\",\n \"nomodule\"\n ];\n return booleanAttributes.includes(attrName);\n}\nfunction attributeShouldntBePreservedIfFalsy(name) {\n return ![\"aria-pressed\", \"aria-checked\", \"aria-expanded\", \"aria-selected\"].includes(name);\n}\nfunction getBinding(el, name, fallback) {\n if (el._x_bindings && el._x_bindings[name] !== void 0)\n return el._x_bindings[name];\n return getAttributeBinding(el, name, fallback);\n}\nfunction extractProp(el, name, fallback, extract = true) {\n if (el._x_bindings && el._x_bindings[name] !== void 0)\n return el._x_bindings[name];\n if (el._x_inlineBindings && el._x_inlineBindings[name] !== void 0) {\n let binding = el._x_inlineBindings[name];\n binding.extract = extract;\n return dontAutoEvaluateFunctions(() => {\n return evaluate(el, binding.expression);\n });\n }\n return getAttributeBinding(el, name, fallback);\n}\nfunction getAttributeBinding(el, name, fallback) {\n let attr = el.getAttribute(name);\n if (attr === null)\n return typeof fallback === \"function\" ? fallback() : fallback;\n if (attr === \"\")\n return true;\n if (isBooleanAttr(name)) {\n return !![name, \"true\"].includes(attr);\n }\n return attr;\n}\n\n// packages/alpinejs/src/utils/debounce.js\nfunction debounce(func, wait) {\n var timeout;\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n func.apply(context, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n\n// packages/alpinejs/src/utils/throttle.js\nfunction throttle(func, limit) {\n let inThrottle;\n return function() {\n let context = this, args = arguments;\n if (!inThrottle) {\n func.apply(context, args);\n inThrottle = true;\n setTimeout(() => inThrottle = false, limit);\n }\n };\n}\n\n// packages/alpinejs/src/entangle.js\nfunction entangle({ get: outerGet, set: outerSet }, { get: innerGet, set: innerSet }) {\n let firstRun = true;\n let outerHash;\n let innerHash;\n let reference = effect(() => {\n let outer = outerGet();\n let inner = innerGet();\n if (firstRun) {\n innerSet(cloneIfObject(outer));\n firstRun = false;\n } else {\n let outerHashLatest = JSON.stringify(outer);\n let innerHashLatest = JSON.stringify(inner);\n if (outerHashLatest !== outerHash) {\n innerSet(cloneIfObject(outer));\n } else if (outerHashLatest !== innerHashLatest) {\n outerSet(cloneIfObject(inner));\n } else {\n }\n }\n outerHash = JSON.stringify(outerGet());\n innerHash = JSON.stringify(innerGet());\n });\n return () => {\n release(reference);\n };\n}\nfunction cloneIfObject(value) {\n return typeof value === \"object\" ? JSON.parse(JSON.stringify(value)) : value;\n}\n\n// packages/alpinejs/src/plugin.js\nfunction plugin(callback) {\n let callbacks = Array.isArray(callback) ? callback : [callback];\n callbacks.forEach((i) => i(alpine_default));\n}\n\n// packages/alpinejs/src/store.js\nvar stores = {};\nvar isReactive = false;\nfunction store(name, value) {\n if (!isReactive) {\n stores = reactive(stores);\n isReactive = true;\n }\n if (value === void 0) {\n return stores[name];\n }\n stores[name] = value;\n if (typeof value === \"object\" && value !== null && value.hasOwnProperty(\"init\") && typeof value.init === \"function\") {\n stores[name].init();\n }\n initInterceptors2(stores[name]);\n}\nfunction getStores() {\n return stores;\n}\n\n// packages/alpinejs/src/binds.js\nvar binds = {};\nfunction bind2(name, bindings) {\n let getBindings = typeof bindings !== \"function\" ? () => bindings : bindings;\n if (name instanceof Element) {\n return applyBindingsObject(name, getBindings());\n } else {\n binds[name] = getBindings;\n }\n return () => {\n };\n}\nfunction injectBindingProviders(obj) {\n Object.entries(binds).forEach(([name, callback]) => {\n Object.defineProperty(obj, name, {\n get() {\n return (...args) => {\n return callback(...args);\n };\n }\n });\n });\n return obj;\n}\nfunction applyBindingsObject(el, obj, original) {\n let cleanupRunners = [];\n while (cleanupRunners.length)\n cleanupRunners.pop()();\n let attributes = Object.entries(obj).map(([name, value]) => ({ name, value }));\n let staticAttributes = attributesOnly(attributes);\n attributes = attributes.map((attribute) => {\n if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n return {\n name: `x-bind:${attribute.name}`,\n value: `\"${attribute.value}\"`\n };\n }\n return attribute;\n });\n directives(el, attributes, original).map((handle) => {\n cleanupRunners.push(handle.runCleanups);\n handle();\n });\n return () => {\n while (cleanupRunners.length)\n cleanupRunners.pop()();\n };\n}\n\n// packages/alpinejs/src/datas.js\nvar datas = {};\nfunction data(name, callback) {\n datas[name] = callback;\n}\nfunction injectDataProviders(obj, context) {\n Object.entries(datas).forEach(([name, callback]) => {\n Object.defineProperty(obj, name, {\n get() {\n return (...args) => {\n return callback.bind(context)(...args);\n };\n },\n enumerable: false\n });\n });\n return obj;\n}\n\n// packages/alpinejs/src/alpine.js\nvar Alpine = {\n get reactive() {\n return reactive;\n },\n get release() {\n return release;\n },\n get effect() {\n return effect;\n },\n get raw() {\n return raw;\n },\n version: \"3.13.7\",\n flushAndStopDeferringMutations,\n dontAutoEvaluateFunctions,\n disableEffectScheduling,\n startObservingMutations,\n stopObservingMutations,\n setReactivityEngine,\n onAttributeRemoved,\n onAttributesAdded,\n closestDataStack,\n skipDuringClone,\n onlyDuringClone,\n addRootSelector,\n addInitSelector,\n interceptClone,\n addScopeToNode,\n deferMutations,\n mapAttributes,\n evaluateLater,\n interceptInit,\n setEvaluator,\n mergeProxies,\n extractProp,\n findClosest,\n onElRemoved,\n closestRoot,\n destroyTree,\n interceptor,\n // INTERNAL: not public API and is subject to change without major release.\n transition,\n // INTERNAL\n setStyles,\n // INTERNAL\n mutateDom,\n directive,\n entangle,\n throttle,\n debounce,\n evaluate,\n initTree,\n nextTick,\n prefixed: prefix,\n prefix: setPrefix,\n plugin,\n magic,\n store,\n start,\n clone,\n // INTERNAL\n cloneNode,\n // INTERNAL\n bound: getBinding,\n $data: scope,\n watch,\n walk,\n data,\n bind: bind2\n};\nvar alpine_default = Alpine;\n\n// node_modules/@vue/shared/dist/shared.esm-bundler.js\nfunction makeMap(str, expectsLowerCase) {\n const map = /* @__PURE__ */ Object.create(null);\n const list = str.split(\",\");\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nvar specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nvar isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);\nvar EMPTY_OBJ = true ? Object.freeze({}) : {};\nvar EMPTY_ARR = true ? Object.freeze([]) : [];\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hasOwn = (val, key) => hasOwnProperty.call(val, key);\nvar isArray = Array.isArray;\nvar isMap = (val) => toTypeString(val) === \"[object Map]\";\nvar isString = (val) => typeof val === \"string\";\nvar isSymbol = (val) => typeof val === \"symbol\";\nvar isObject = (val) => val !== null && typeof val === \"object\";\nvar objectToString = Object.prototype.toString;\nvar toTypeString = (value) => objectToString.call(value);\nvar toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nvar isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nvar cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nvar capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\nvar toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\nvar hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);\n\n// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js\nvar targetMap = /* @__PURE__ */ new WeakMap();\nvar effectStack = [];\nvar activeEffect;\nvar ITERATE_KEY = Symbol(true ? \"iterate\" : \"\");\nvar MAP_KEY_ITERATE_KEY = Symbol(true ? \"Map key iterate\" : \"\");\nfunction isEffect(fn) {\n return fn && fn._isEffect === true;\n}\nfunction effect2(fn, options = EMPTY_OBJ) {\n if (isEffect(fn)) {\n fn = fn.raw;\n }\n const effect3 = createReactiveEffect(fn, options);\n if (!options.lazy) {\n effect3();\n }\n return effect3;\n}\nfunction stop(effect3) {\n if (effect3.active) {\n cleanup(effect3);\n if (effect3.options.onStop) {\n effect3.options.onStop();\n }\n effect3.active = false;\n }\n}\nvar uid = 0;\nfunction createReactiveEffect(fn, options) {\n const effect3 = function reactiveEffect() {\n if (!effect3.active) {\n return fn();\n }\n if (!effectStack.includes(effect3)) {\n cleanup(effect3);\n try {\n enableTracking();\n effectStack.push(effect3);\n activeEffect = effect3;\n return fn();\n } finally {\n effectStack.pop();\n resetTracking();\n activeEffect = effectStack[effectStack.length - 1];\n }\n }\n };\n effect3.id = uid++;\n effect3.allowRecurse = !!options.allowRecurse;\n effect3._isEffect = true;\n effect3.active = true;\n effect3.raw = fn;\n effect3.deps = [];\n effect3.options = options;\n return effect3;\n}\nfunction cleanup(effect3) {\n const { deps } = effect3;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect3);\n }\n deps.length = 0;\n }\n}\nvar shouldTrack = true;\nvar trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction track(target, type, key) {\n if (!shouldTrack || activeEffect === void 0) {\n return;\n }\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = /* @__PURE__ */ new Set());\n }\n if (!dep.has(activeEffect)) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if (activeEffect.options.onTrack) {\n activeEffect.options.onTrack({\n effect: activeEffect,\n target,\n type,\n key\n });\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n const effects = /* @__PURE__ */ new Set();\n const add2 = (effectsToAdd) => {\n if (effectsToAdd) {\n effectsToAdd.forEach((effect3) => {\n if (effect3 !== activeEffect || effect3.allowRecurse) {\n effects.add(effect3);\n }\n });\n }\n };\n if (type === \"clear\") {\n depsMap.forEach(add2);\n } else if (key === \"length\" && isArray(target)) {\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 >= newValue) {\n add2(dep);\n }\n });\n } else {\n if (key !== void 0) {\n add2(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n add2(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n add2(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n add2(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n add2(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n add2(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n add2(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const run = (effect3) => {\n if (effect3.options.onTrigger) {\n effect3.options.onTrigger({\n effect: effect3,\n target,\n key,\n type,\n newValue,\n oldValue,\n oldTarget\n });\n }\n if (effect3.options.scheduler) {\n effect3.options.scheduler(effect3);\n } else {\n effect3();\n }\n };\n effects.forEach(run);\n}\nvar isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nvar builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol));\nvar get2 = /* @__PURE__ */ createGetter();\nvar readonlyGet = /* @__PURE__ */ createGetter(true);\nvar arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n return function get3(target, key, receiver) {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly) {\n track(target, \"get\", key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n const shouldUnwrap = !targetIsArray || !isIntegerKey(key);\n return shouldUnwrap ? res.value : res;\n }\n if (isObject(res)) {\n return isReadonly ? readonly(res) : reactive2(res);\n }\n return res;\n };\n}\nvar set2 = /* @__PURE__ */ createSetter();\nfunction createSetter(shallow = false) {\n return function set3(target, key, value, receiver) {\n let oldValue = target[key];\n if (!shallow) {\n value = toRaw(value);\n oldValue = toRaw(oldValue);\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\", isArray(target) ? \"length\" : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nvar mutableHandlers = {\n get: get2,\n set: set2,\n deleteProperty,\n has,\n ownKeys\n};\nvar readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if (true) {\n console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n },\n deleteProperty(target, key) {\n if (true) {\n console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n }\n};\nvar toReactive = (value) => isObject(value) ? reactive2(value) : value;\nvar toReadonly = (value) => isObject(value) ? readonly(value) : value;\nvar toShallow = (value) => value;\nvar getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n target = target[\n \"__v_raw\"\n /* RAW */\n ];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (key !== rawKey) {\n !isReadonly && track(rawTarget, \"get\", key);\n }\n !isReadonly && track(rawTarget, \"get\", rawKey);\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has$1(key, isReadonly = false) {\n const target = this[\n \"__v_raw\"\n /* RAW */\n ];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (key !== rawKey) {\n !isReadonly && track(rawTarget, \"has\", key);\n }\n !isReadonly && track(rawTarget, \"has\", rawKey);\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\n \"__v_raw\"\n /* RAW */\n ];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get3 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (true) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get3.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get3 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (true) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get3 ? get3.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\n \"__v_raw\"\n /* RAW */\n ];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\n \"__v_raw\"\n /* RAW */\n ];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (true) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n }\n return type === \"delete\" ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\n \"add\"\n /* ADD */\n ),\n set: createReadonlyMethod(\n \"set\"\n /* SET */\n ),\n delete: createReadonlyMethod(\n \"delete\"\n /* DELETE */\n ),\n clear: createReadonlyMethod(\n \"clear\"\n /* CLEAR */\n ),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\n \"add\"\n /* ADD */\n ),\n set: createReadonlyMethod(\n \"set\"\n /* SET */\n ),\n delete: createReadonlyMethod(\n \"delete\"\n /* DELETE */\n ),\n clear: createReadonlyMethod(\n \"clear\"\n /* CLEAR */\n ),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nvar [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\n };\n}\nvar mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nvar readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);\n }\n}\nvar reactiveMap = /* @__PURE__ */ new WeakMap();\nvar shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nvar readonlyMap = /* @__PURE__ */ new WeakMap();\nvar shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getTargetType(value) {\n return value[\n \"__v_skip\"\n /* SKIP */\n ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));\n}\nfunction reactive2(target) {\n if (target && target[\n \"__v_isReadonly\"\n /* IS_READONLY */\n ]) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (true) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\n \"__v_raw\"\n /* RAW */\n ] && !(isReadonly && target[\n \"__v_isReactive\"\n /* IS_REACTIVE */\n ])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction toRaw(observed) {\n return observed && toRaw(observed[\n \"__v_raw\"\n /* RAW */\n ]) || observed;\n}\nfunction isRef(r) {\n return Boolean(r && r.__v_isRef === true);\n}\n\n// packages/alpinejs/src/magics/$nextTick.js\nmagic(\"nextTick\", () => nextTick);\n\n// packages/alpinejs/src/magics/$dispatch.js\nmagic(\"dispatch\", (el) => dispatch.bind(dispatch, el));\n\n// packages/alpinejs/src/magics/$watch.js\nmagic(\"watch\", (el, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => (key, callback) => {\n let evaluate2 = evaluateLater2(key);\n let getter = () => {\n let value;\n evaluate2((i) => value = i);\n return value;\n };\n let unwatch = watch(getter, callback);\n cleanup2(unwatch);\n});\n\n// packages/alpinejs/src/magics/$store.js\nmagic(\"store\", getStores);\n\n// packages/alpinejs/src/magics/$data.js\nmagic(\"data\", (el) => scope(el));\n\n// packages/alpinejs/src/magics/$root.js\nmagic(\"root\", (el) => closestRoot(el));\n\n// packages/alpinejs/src/magics/$refs.js\nmagic(\"refs\", (el) => {\n if (el._x_refs_proxy)\n return el._x_refs_proxy;\n el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el));\n return el._x_refs_proxy;\n});\nfunction getArrayOfRefObject(el) {\n let refObjects = [];\n findClosest(el, (i) => {\n if (i._x_refs)\n refObjects.push(i._x_refs);\n });\n return refObjects;\n}\n\n// packages/alpinejs/src/ids.js\nvar globalIdMemo = {};\nfunction findAndIncrementId(name) {\n if (!globalIdMemo[name])\n globalIdMemo[name] = 0;\n return ++globalIdMemo[name];\n}\nfunction closestIdRoot(el, name) {\n return findClosest(el, (element) => {\n if (element._x_ids && element._x_ids[name])\n return true;\n });\n}\nfunction setIdRoot(el, name) {\n if (!el._x_ids)\n el._x_ids = {};\n if (!el._x_ids[name])\n el._x_ids[name] = findAndIncrementId(name);\n}\n\n// packages/alpinejs/src/magics/$id.js\nmagic(\"id\", (el, { cleanup: cleanup2 }) => (name, key = null) => {\n let cacheKey = `${name}${key ? `-${key}` : \"\"}`;\n return cacheIdByNameOnElement(el, cacheKey, cleanup2, () => {\n let root = closestIdRoot(el, name);\n let id = root ? root._x_ids[name] : findAndIncrementId(name);\n return key ? `${name}-${id}-${key}` : `${name}-${id}`;\n });\n});\ninterceptClone((from, to) => {\n if (from._x_id) {\n to._x_id = from._x_id;\n }\n});\nfunction cacheIdByNameOnElement(el, cacheKey, cleanup2, callback) {\n if (!el._x_id)\n el._x_id = {};\n if (el._x_id[cacheKey])\n return el._x_id[cacheKey];\n let output = callback();\n el._x_id[cacheKey] = output;\n cleanup2(() => {\n delete el._x_id[cacheKey];\n });\n return output;\n}\n\n// packages/alpinejs/src/magics/$el.js\nmagic(\"el\", (el) => el);\n\n// packages/alpinejs/src/magics/index.js\nwarnMissingPluginMagic(\"Focus\", \"focus\", \"focus\");\nwarnMissingPluginMagic(\"Persist\", \"persist\", \"persist\");\nfunction warnMissingPluginMagic(name, magicName, slug) {\n magic(magicName, (el) => warn(`You can't use [$${magicName}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n\n// packages/alpinejs/src/directives/x-modelable.js\ndirective(\"modelable\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {\n let func = evaluateLater2(expression);\n let innerGet = () => {\n let result;\n func((i) => result = i);\n return result;\n };\n let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`);\n let innerSet = (val) => evaluateInnerSet(() => {\n }, { scope: { \"__placeholder\": val } });\n let initialValue = innerGet();\n innerSet(initialValue);\n queueMicrotask(() => {\n if (!el._x_model)\n return;\n el._x_removeModelListeners[\"default\"]();\n let outerGet = el._x_model.get;\n let outerSet = el._x_model.set;\n let releaseEntanglement = entangle(\n {\n get() {\n return outerGet();\n },\n set(value) {\n outerSet(value);\n }\n },\n {\n get() {\n return innerGet();\n },\n set(value) {\n innerSet(value);\n }\n }\n );\n cleanup2(releaseEntanglement);\n });\n});\n\n// packages/alpinejs/src/directives/x-teleport.js\ndirective(\"teleport\", (el, { modifiers, expression }, { cleanup: cleanup2 }) => {\n if (el.tagName.toLowerCase() !== \"template\")\n warn(\"x-teleport can only be used on a <template> tag\", el);\n let target = getTarget(expression);\n let clone2 = el.content.cloneNode(true).firstElementChild;\n el._x_teleport = clone2;\n clone2._x_teleportBack = el;\n el.setAttribute(\"data-teleport-template\", true);\n clone2.setAttribute(\"data-teleport-target\", true);\n if (el._x_forwardEvents) {\n el._x_forwardEvents.forEach((eventName) => {\n clone2.addEventListener(eventName, (e) => {\n e.stopPropagation();\n el.dispatchEvent(new e.constructor(e.type, e));\n });\n });\n }\n addScopeToNode(clone2, {}, el);\n let placeInDom = (clone3, target2, modifiers2) => {\n if (modifiers2.includes(\"prepend\")) {\n target2.parentNode.insertBefore(clone3, target2);\n } else if (modifiers2.includes(\"append\")) {\n target2.parentNode.insertBefore(clone3, target2.nextSibling);\n } else {\n target2.appendChild(clone3);\n }\n };\n mutateDom(() => {\n placeInDom(clone2, target, modifiers);\n initTree(clone2);\n clone2._x_ignore = true;\n });\n el._x_teleportPutBack = () => {\n let target2 = getTarget(expression);\n mutateDom(() => {\n placeInDom(el._x_teleport, target2, modifiers);\n });\n };\n cleanup2(() => clone2.remove());\n});\nvar teleportContainerDuringClone = document.createElement(\"div\");\nfunction getTarget(expression) {\n let target = skipDuringClone(() => {\n return document.querySelector(expression);\n }, () => {\n return teleportContainerDuringClone;\n })();\n if (!target)\n warn(`Cannot find x-teleport element for selector: \"${expression}\"`);\n return target;\n}\n\n// packages/alpinejs/src/directives/x-ignore.js\nvar handler = () => {\n};\nhandler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => {\n modifiers.includes(\"self\") ? el._x_ignoreSelf = true : el._x_ignore = true;\n cleanup2(() => {\n modifiers.includes(\"self\") ? delete el._x_ignoreSelf : delete el._x_ignore;\n });\n};\ndirective(\"ignore\", handler);\n\n// packages/alpinejs/src/directives/x-effect.js\ndirective(\"effect\", skipDuringClone((el, { expression }, { effect: effect3 }) => {\n effect3(evaluateLater(el, expression));\n}));\n\n// packages/alpinejs/src/utils/on.js\nfunction on(el, event, modifiers, callback) {\n let listenerTarget = el;\n let handler4 = (e) => callback(e);\n let options = {};\n let wrapHandler = (callback2, wrapper) => (e) => wrapper(callback2, e);\n if (modifiers.includes(\"dot\"))\n event = dotSyntax(event);\n if (modifiers.includes(\"camel\"))\n event = camelCase2(event);\n if (modifiers.includes(\"passive\"))\n options.passive = true;\n if (modifiers.includes(\"capture\"))\n options.capture = true;\n if (modifiers.includes(\"window\"))\n listenerTarget = window;\n if (modifiers.includes(\"document\"))\n listenerTarget = document;\n if (modifiers.includes(\"debounce\")) {\n let nextModifier = modifiers[modifiers.indexOf(\"debounce\") + 1] || \"invalid-wait\";\n let wait = isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n handler4 = debounce(handler4, wait);\n }\n if (modifiers.includes(\"throttle\")) {\n let nextModifier = modifiers[modifiers.indexOf(\"throttle\") + 1] || \"invalid-wait\";\n let wait = isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n handler4 = throttle(handler4, wait);\n }\n if (modifiers.includes(\"prevent\"))\n handler4 = wrapHandler(handler4, (next, e) => {\n e.preventDefault();\n next(e);\n });\n if (modifiers.includes(\"stop\"))\n handler4 = wrapHandler(handler4, (next, e) => {\n e.stopPropagation();\n next(e);\n });\n if (modifiers.includes(\"self\"))\n handler4 = wrapHandler(handler4, (next, e) => {\n e.target === el && next(e);\n });\n if (modifiers.includes(\"away\") || modifiers.includes(\"outside\")) {\n listenerTarget = document;\n handler4 = wrapHandler(handler4, (next, e) => {\n if (el.contains(e.target))\n return;\n if (e.target.isConnected === false)\n return;\n if (el.offsetWidth < 1 && el.offsetHeight < 1)\n return;\n if (el._x_isShown === false)\n return;\n next(e);\n });\n }\n if (modifiers.includes(\"once\")) {\n handler4 = wrapHandler(handler4, (next, e) => {\n next(e);\n listenerTarget.removeEventListener(event, handler4, options);\n });\n }\n handler4 = wrapHandler(handler4, (next, e) => {\n if (isKeyEvent(event)) {\n if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {\n return;\n }\n }\n next(e);\n });\n listenerTarget.addEventListener(event, handler4, options);\n return () => {\n listenerTarget.removeEventListener(event, handler4, options);\n };\n}\nfunction dotSyntax(subject) {\n return subject.replace(/-/g, \".\");\n}\nfunction camelCase2(subject) {\n return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n}\nfunction isNumeric(subject) {\n return !Array.isArray(subject) && !isNaN(subject);\n}\nfunction kebabCase2(subject) {\n if ([\" \", \"_\"].includes(\n subject\n ))\n return subject;\n return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[_\\s]/, \"-\").toLowerCase();\n}\nfunction isKeyEvent(event) {\n return [\"keydown\", \"keyup\"].includes(event);\n}\nfunction isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {\n let keyModifiers = modifiers.filter((i) => {\n return ![\"window\", \"document\", \"prevent\", \"stop\", \"once\", \"capture\"].includes(i);\n });\n if (keyModifiers.includes(\"debounce\")) {\n let debounceIndex = keyModifiers.indexOf(\"debounce\");\n keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || \"invalid-wait\").split(\"ms\")[0]) ? 2 : 1);\n }\n if (keyModifiers.includes(\"throttle\")) {\n let debounceIndex = keyModifiers.indexOf(\"throttle\");\n keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || \"invalid-wait\").split(\"ms\")[0]) ? 2 : 1);\n }\n if (keyModifiers.length === 0)\n return false;\n if (keyModifiers.length === 1 && keyToModifiers(e.key).includes(keyModifiers[0]))\n return false;\n const systemKeyModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\", \"cmd\", \"super\"];\n const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier));\n keyModifiers = keyModifiers.filter((i) => !selectedSystemKeyModifiers.includes(i));\n if (selectedSystemKeyModifiers.length > 0) {\n const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => {\n if (modifier === \"cmd\" || modifier === \"super\")\n modifier = \"meta\";\n return e[`${modifier}Key`];\n });\n if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {\n if (keyToModifiers(e.key).includes(keyModifiers[0]))\n return false;\n }\n }\n return true;\n}\nfunction keyToModifiers(key) {\n if (!key)\n return [];\n key = kebabCase2(key);\n let modifierToKeyMap = {\n \"ctrl\": \"control\",\n \"slash\": \"/\",\n \"space\": \" \",\n \"spacebar\": \" \",\n \"cmd\": \"meta\",\n \"esc\": \"escape\",\n \"up\": \"arrow-up\",\n \"down\": \"arrow-down\",\n \"left\": \"arrow-left\",\n \"right\": \"arrow-right\",\n \"period\": \".\",\n \"equal\": \"=\",\n \"minus\": \"-\",\n \"underscore\": \"_\"\n };\n modifierToKeyMap[key] = key;\n return Object.keys(modifierToKeyMap).map((modifier) => {\n if (modifierToKeyMap[modifier] === key)\n return modifier;\n }).filter((modifier) => modifier);\n}\n\n// packages/alpinejs/src/directives/x-model.js\ndirective(\"model\", (el, { modifiers, expression }, { effect: effect3, cleanup: cleanup2 }) => {\n let scopeTarget = el;\n if (modifiers.includes(\"parent\")) {\n scopeTarget = el.parentNode;\n }\n let evaluateGet = evaluateLater(scopeTarget, expression);\n let evaluateSet;\n if (typeof expression === \"string\") {\n evaluateSet = evaluateLater(scopeTarget, `${expression} = __placeholder`);\n } else if (typeof expression === \"function\" && typeof expression() === \"string\") {\n evaluateSet = evaluateLater(scopeTarget, `${expression()} = __placeholder`);\n } else {\n evaluateSet = () => {\n };\n }\n let getValue = () => {\n let result;\n evaluateGet((value) => result = value);\n return isGetterSetter(result) ? result.get() : result;\n };\n let setValue = (value) => {\n let result;\n evaluateGet((value2) => result = value2);\n if (isGetterSetter(result)) {\n result.set(value);\n } else {\n evaluateSet(() => {\n }, {\n scope: { \"__placeholder\": value }\n });\n }\n };\n if (typeof expression === \"string\" && el.type === \"radio\") {\n mutateDom(() => {\n if (!el.hasAttribute(\"name\"))\n el.setAttribute(\"name\", expression);\n });\n }\n var event = el.tagName.toLowerCase() === \"select\" || [\"checkbox\", \"radio\"].includes(el.type) || modifiers.includes(\"lazy\") ? \"change\" : \"input\";\n let removeListener = isCloning ? () => {\n } : on(el, event, modifiers, (e) => {\n setValue(getInputValue(el, modifiers, e, getValue()));\n });\n if (modifiers.includes(\"fill\")) {\n if ([void 0, null, \"\"].includes(getValue()) || el.type === \"checkbox\" && Array.isArray(getValue())) {\n el.dispatchEvent(new Event(event, {}));\n }\n }\n if (!el._x_removeModelListeners)\n el._x_removeModelListeners = {};\n el._x_removeModelListeners[\"default\"] = removeListener;\n cleanup2(() => el._x_removeModelListeners[\"default\"]());\n if (el.form) {\n let removeResetListener = on(el.form, \"reset\", [], (e) => {\n nextTick(() => el._x_model && el._x_model.set(el.value));\n });\n cleanup2(() => removeResetListener());\n }\n el._x_model = {\n get() {\n return getValue();\n },\n set(value) {\n setValue(value);\n }\n };\n el._x_forceModelUpdate = (value) => {\n if (value === void 0 && typeof expression === \"string\" && expression.match(/\\./))\n value = \"\";\n window.fromModel = true;\n mutateDom(() => bind(el, \"value\", value));\n delete window.fromModel;\n };\n effect3(() => {\n let value = getValue();\n if (modifiers.includes(\"unintrusive\") && document.activeElement.isSameNode(el))\n return;\n el._x_forceModelUpdate(value);\n });\n});\nfunction getInputValue(el, modifiers, event, currentValue) {\n return mutateDom(() => {\n if (event instanceof CustomEvent && event.detail !== void 0)\n return event.detail !== null && event.detail !== void 0 ? event.detail : event.target.value;\n else if (el.type === \"checkbox\") {\n if (Array.isArray(currentValue)) {\n let newValue = null;\n if (modifiers.includes(\"number\")) {\n newValue = safeParseNumber(event.target.value);\n } else if (modifiers.includes(\"boolean\")) {\n newValue = safeParseBoolean(event.target.value);\n } else {\n newValue = event.target.value;\n }\n return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));\n } else {\n return event.target.checked;\n }\n } else if (el.tagName.toLowerCase() === \"select\" && el.multiple) {\n if (modifiers.includes(\"number\")) {\n return Array.from(event.target.selectedOptions).map((option) => {\n let rawValue = option.value || option.text;\n return safeParseNumber(rawValue);\n });\n } else if (modifiers.includes(\"boolean\")) {\n return Array.from(event.target.selectedOptions).map((option) => {\n let rawValue = option.value || option.text;\n return safeParseBoolean(rawValue);\n });\n }\n return Array.from(event.target.selectedOptions).map((option) => {\n return option.value || option.text;\n });\n } else {\n if (modifiers.includes(\"number\")) {\n return safeParseNumber(event.target.value);\n } else if (modifiers.includes(\"boolean\")) {\n return safeParseBoolean(event.target.value);\n }\n return modifiers.includes(\"trim\") ? event.target.value.trim() : event.target.value;\n }\n });\n}\nfunction safeParseNumber(rawValue) {\n let number = rawValue ? parseFloat(rawValue) : null;\n return isNumeric2(number) ? number : rawValue;\n}\nfunction checkedAttrLooseCompare2(valueA, valueB) {\n return valueA == valueB;\n}\nfunction isNumeric2(subject) {\n return !Array.isArray(subject) && !isNaN(subject);\n}\nfunction isGetterSetter(value) {\n return value !== null && typeof value === \"object\" && typeof value.get === \"function\" && typeof value.set === \"function\";\n}\n\n// packages/alpinejs/src/directives/x-cloak.js\ndirective(\"cloak\", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix(\"cloak\")))));\n\n// packages/alpinejs/src/directives/x-init.js\naddInitSelector(() => `[${prefix(\"init\")}]`);\ndirective(\"init\", skipDuringClone((el, { expression }, { evaluate: evaluate2 }) => {\n if (typeof expression === \"string\") {\n return !!expression.trim() && evaluate2(expression, {}, false);\n }\n return evaluate2(expression, {}, false);\n}));\n\n// packages/alpinejs/src/directives/x-text.js\ndirective(\"text\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {\n let evaluate2 = evaluateLater2(expression);\n effect3(() => {\n evaluate2((value) => {\n mutateDom(() => {\n el.textContent = value;\n });\n });\n });\n});\n\n// packages/alpinejs/src/directives/x-html.js\ndirective(\"html\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {\n let evaluate2 = evaluateLater2(expression);\n effect3(() => {\n evaluate2((value) => {\n mutateDom(() => {\n el.innerHTML = value;\n el._x_ignoreSelf = true;\n initTree(el);\n delete el._x_ignoreSelf;\n });\n });\n });\n});\n\n// packages/alpinejs/src/directives/x-bind.js\nmapAttributes(startingWith(\":\", into(prefix(\"bind:\"))));\nvar handler2 = (el, { value, modifiers, expression, original }, { effect: effect3 }) => {\n if (!value) {\n let bindingProviders = {};\n injectBindingProviders(bindingProviders);\n let getBindings = evaluateLater(el, expression);\n getBindings((bindings) => {\n applyBindingsObject(el, bindings, original);\n }, { scope: bindingProviders });\n return;\n }\n if (value === \"key\")\n return storeKeyForXFor(el, expression);\n if (el._x_inlineBindings && el._x_inlineBindings[value] && el._x_inlineBindings[value].extract) {\n return;\n }\n let evaluate2 = evaluateLater(el, expression);\n effect3(() => evaluate2((result) => {\n if (result === void 0 && typeof expression === \"string\" && expression.match(/\\./)) {\n result = \"\";\n }\n mutateDom(() => bind(el, value, result, modifiers));\n }));\n};\nhandler2.inline = (el, { value, modifiers, expression }) => {\n if (!value)\n return;\n if (!el._x_inlineBindings)\n el._x_inlineBindings = {};\n el._x_inlineBindings[value] = { expression, extract: false };\n};\ndirective(\"bind\", handler2);\nfunction storeKeyForXFor(el, expression) {\n el._x_keyExpression = expression;\n}\n\n// packages/alpinejs/src/directives/x-data.js\naddRootSelector(() => `[${prefix(\"data\")}]`);\ndirective(\"data\", (el, { expression }, { cleanup: cleanup2 }) => {\n if (shouldSkipRegisteringDataDuringClone(el))\n return;\n expression = expression === \"\" ? \"{}\" : expression;\n let magicContext = {};\n injectMagics(magicContext, el);\n let dataProviderContext = {};\n injectDataProviders(dataProviderContext, magicContext);\n let data2 = evaluate(el, expression, { scope: dataProviderContext });\n if (data2 === void 0 || data2 === true)\n data2 = {};\n injectMagics(data2, el);\n let reactiveData = reactive(data2);\n initInterceptors2(reactiveData);\n let undo = addScopeToNode(el, reactiveData);\n reactiveData[\"init\"] && evaluate(el, reactiveData[\"init\"]);\n cleanup2(() => {\n reactiveData[\"destroy\"] && evaluate(el, reactiveData[\"destroy\"]);\n undo();\n });\n});\ninterceptClone((from, to) => {\n if (from._x_dataStack) {\n to._x_dataStack = from._x_dataStack;\n to.setAttribute(\"data-has-alpine-state\", true);\n }\n});\nfunction shouldSkipRegisteringDataDuringClone(el) {\n if (!isCloning)\n return false;\n if (isCloningLegacy)\n return true;\n return el.hasAttribute(\"data-has-alpine-state\");\n}\n\n// packages/alpinejs/src/directives/x-show.js\ndirective(\"show\", (el, { modifiers, expression }, { effect: effect3 }) => {\n let evaluate2 = evaluateLater(el, expression);\n if (!el._x_doHide)\n el._x_doHide = () => {\n mutateDom(() => {\n el.style.setProperty(\"display\", \"none\", modifiers.includes(\"important\") ? \"important\" : void 0);\n });\n };\n if (!el._x_doShow)\n el._x_doShow = () => {\n mutateDom(() => {\n if (el.style.length === 1 && el.style.display === \"none\") {\n el.removeAttribute(\"style\");\n } else {\n el.style.removeProperty(\"display\");\n }\n });\n };\n let hide = () => {\n el._x_doHide();\n el._x_isShown = false;\n };\n let show = () => {\n el._x_doShow();\n el._x_isShown = true;\n };\n let clickAwayCompatibleShow = () => setTimeout(show);\n let toggle = once(\n (value) => value ? show() : hide(),\n (value) => {\n if (typeof el._x_toggleAndCascadeWithTransitions === \"function\") {\n el._x_toggleAndCascadeWithTransitions(el, value, show, hide);\n } else {\n value ? clickAwayCompatibleShow() : hide();\n }\n }\n );\n let oldValue;\n let firstTime = true;\n effect3(() => evaluate2((value) => {\n if (!firstTime && value === oldValue)\n return;\n if (modifiers.includes(\"immediate\"))\n value ? clickAwayCompatibleShow() : hide();\n toggle(value);\n oldValue = value;\n firstTime = false;\n }));\n});\n\n// packages/alpinejs/src/directives/x-for.js\ndirective(\"for\", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {\n let iteratorNames = parseForExpression(expression);\n let evaluateItems = evaluateLater(el, iteratorNames.items);\n let evaluateKey = evaluateLater(\n el,\n // the x-bind:key expression is stored for our use instead of evaluated.\n el._x_keyExpression || \"index\"\n );\n el._x_prevKeys = [];\n el._x_lookup = {};\n effect3(() => loop(el, iteratorNames, evaluateItems, evaluateKey));\n cleanup2(() => {\n Object.values(el._x_lookup).forEach((el2) => el2.remove());\n delete el._x_prevKeys;\n delete el._x_lookup;\n });\n});\nfunction loop(el, iteratorNames, evaluateItems, evaluateKey) {\n let isObject2 = (i) => typeof i === \"object\" && !Array.isArray(i);\n let templateEl = el;\n evaluateItems((items) => {\n if (isNumeric3(items) && items >= 0) {\n items = Array.from(Array(items).keys(), (i) => i + 1);\n }\n if (items === void 0)\n items = [];\n let lookup = el._x_lookup;\n let prevKeys = el._x_prevKeys;\n let scopes = [];\n let keys = [];\n if (isObject2(items)) {\n items = Object.entries(items).map(([key, value]) => {\n let scope2 = getIterationScopeVariables(iteratorNames, value, key, items);\n evaluateKey((value2) => {\n if (keys.includes(value2))\n warn(\"Duplicate key on x-for\", el);\n keys.push(value2);\n }, { scope: { index: key, ...scope2 } });\n scopes.push(scope2);\n });\n } else {\n for (let i = 0; i < items.length; i++) {\n let scope2 = getIterationScopeVariables(iteratorNames, items[i], i, items);\n evaluateKey((value) => {\n if (keys.includes(value))\n warn(\"Duplicate key on x-for\", el);\n keys.push(value);\n }, { scope: { index: i, ...scope2 } });\n scopes.push(scope2);\n }\n }\n let adds = [];\n let moves = [];\n let removes = [];\n let sames = [];\n for (let i = 0; i < prevKeys.length; i++) {\n let key = prevKeys[i];\n if (keys.indexOf(key) === -1)\n removes.push(key);\n }\n prevKeys = prevKeys.filter((key) => !removes.includes(key));\n let lastKey = \"template\";\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n let prevIndex = prevKeys.indexOf(key);\n if (prevIndex === -1) {\n prevKeys.splice(i, 0, key);\n adds.push([lastKey, i]);\n } else if (prevIndex !== i) {\n let keyInSpot = prevKeys.splice(i, 1)[0];\n let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0];\n prevKeys.splice(i, 0, keyForSpot);\n prevKeys.splice(prevIndex, 0, keyInSpot);\n moves.push([keyInSpot, keyForSpot]);\n } else {\n sames.push(key);\n }\n lastKey = key;\n }\n for (let i = 0; i < removes.length; i++) {\n let key = removes[i];\n if (!!lookup[key]._x_effects) {\n lookup[key]._x_effects.forEach(dequeueJob);\n }\n lookup[key].remove();\n lookup[key] = null;\n delete lookup[key];\n }\n for (let i = 0; i < moves.length; i++) {\n let [keyInSpot, keyForSpot] = moves[i];\n let elInSpot = lookup[keyInSpot];\n let elForSpot = lookup[keyForSpot];\n let marker = document.createElement(\"div\");\n mutateDom(() => {\n if (!elForSpot)\n warn(`x-for \":key\" is undefined or invalid`, templateEl, keyForSpot, lookup);\n elForSpot.after(marker);\n elInSpot.after(elForSpot);\n elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl);\n marker.before(elInSpot);\n elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl);\n marker.remove();\n });\n elForSpot._x_refreshXForScope(scopes[keys.indexOf(keyForSpot)]);\n }\n for (let i = 0; i < adds.length; i++) {\n let [lastKey2, index] = adds[i];\n let lastEl = lastKey2 === \"template\" ? templateEl : lookup[lastKey2];\n if (lastEl._x_currentIfEl)\n lastEl = lastEl._x_currentIfEl;\n let scope2 = scopes[index];\n let key = keys[index];\n let clone2 = document.importNode(templateEl.content, true).firstElementChild;\n let reactiveScope = reactive(scope2);\n addScopeToNode(clone2, reactiveScope, templateEl);\n clone2._x_refreshXForScope = (newScope) => {\n Object.entries(newScope).forEach(([key2, value]) => {\n reactiveScope[key2] = value;\n });\n };\n mutateDom(() => {\n lastEl.after(clone2);\n skipDuringClone(() => initTree(clone2))();\n });\n if (typeof key === \"object\") {\n warn(\"x-for key cannot be an object, it must be a string or an integer\", templateEl);\n }\n lookup[key] = clone2;\n }\n for (let i = 0; i < sames.length; i++) {\n lookup[sames[i]]._x_refreshXForScope(scopes[keys.indexOf(sames[i])]);\n }\n templateEl._x_prevKeys = keys;\n });\n}\nfunction parseForExpression(expression) {\n let forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\n let stripParensRE = /^\\s*\\(|\\)\\s*$/g;\n let forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n let inMatch = expression.match(forAliasRE);\n if (!inMatch)\n return;\n let res = {};\n res.items = inMatch[2].trim();\n let item = inMatch[1].replace(stripParensRE, \"\").trim();\n let iteratorMatch = item.match(forIteratorRE);\n if (iteratorMatch) {\n res.item = item.replace(forIteratorRE, \"\").trim();\n res.index = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.collection = iteratorMatch[2].trim();\n }\n } else {\n res.item = item;\n }\n return res;\n}\nfunction getIterationScopeVariables(iteratorNames, item, index, items) {\n let scopeVariables = {};\n if (/^\\[.*\\]$/.test(iteratorNames.item) && Array.isArray(item)) {\n let names = iteratorNames.item.replace(\"[\", \"\").replace(\"]\", \"\").split(\",\").map((i) => i.trim());\n names.forEach((name, i) => {\n scopeVariables[name] = item[i];\n });\n } else if (/^\\{.*\\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === \"object\") {\n let names = iteratorNames.item.replace(\"{\", \"\").replace(\"}\", \"\").split(\",\").map((i) => i.trim());\n names.forEach((name) => {\n scopeVariables[name] = item[name];\n });\n } else {\n scopeVariables[iteratorNames.item] = item;\n }\n if (iteratorNames.index)\n scopeVariables[iteratorNames.index] = index;\n if (iteratorNames.collection)\n scopeVariables[iteratorNames.collection] = items;\n return scopeVariables;\n}\nfunction isNumeric3(subject) {\n return !Array.isArray(subject) && !isNaN(subject);\n}\n\n// packages/alpinejs/src/directives/x-ref.js\nfunction handler3() {\n}\nhandler3.inline = (el, { expression }, { cleanup: cleanup2 }) => {\n let root = closestRoot(el);\n if (!root._x_refs)\n root._x_refs = {};\n root._x_refs[expression] = el;\n cleanup2(() => delete root._x_refs[expression]);\n};\ndirective(\"ref\", handler3);\n\n// packages/alpinejs/src/directives/x-if.js\ndirective(\"if\", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {\n if (el.tagName.toLowerCase() !== \"template\")\n warn(\"x-if can only be used on a <template> tag\", el);\n let evaluate2 = evaluateLater(el, expression);\n let show = () => {\n if (el._x_currentIfEl)\n return el._x_currentIfEl;\n let clone2 = el.content.cloneNode(true).firstElementChild;\n addScopeToNode(clone2, {}, el);\n mutateDom(() => {\n el.after(clone2);\n skipDuringClone(() => initTree(clone2))();\n });\n el._x_currentIfEl = clone2;\n el._x_undoIf = () => {\n walk(clone2, (node) => {\n if (!!node._x_effects) {\n node._x_effects.forEach(dequeueJob);\n }\n });\n clone2.remove();\n delete el._x_currentIfEl;\n };\n return clone2;\n };\n let hide = () => {\n if (!el._x_undoIf)\n return;\n el._x_undoIf();\n delete el._x_undoIf;\n };\n effect3(() => evaluate2((value) => {\n value ? show() : hide();\n }));\n cleanup2(() => el._x_undoIf && el._x_undoIf());\n});\n\n// packages/alpinejs/src/directives/x-id.js\ndirective(\"id\", (el, { expression }, { evaluate: evaluate2 }) => {\n let names = evaluate2(expression);\n names.forEach((name) => setIdRoot(el, name));\n});\ninterceptClone((from, to) => {\n if (from._x_ids) {\n to._x_ids = from._x_ids;\n }\n});\n\n// packages/alpinejs/src/directives/x-on.js\nmapAttributes(startingWith(\"@\", into(prefix(\"on:\"))));\ndirective(\"on\", skipDuringClone((el, { value, modifiers, expression }, { cleanup: cleanup2 }) => {\n let evaluate2 = expression ? evaluateLater(el, expression) : () => {\n };\n if (el.tagName.toLowerCase() === \"template\") {\n if (!el._x_forwardEvents)\n el._x_forwardEvents = [];\n if (!el._x_forwardEvents.includes(value))\n el._x_forwardEvents.push(value);\n }\n let removeListener = on(el, value, modifiers, (e) => {\n evaluate2(() => {\n }, { scope: { \"$event\": e }, params: [e] });\n });\n cleanup2(() => removeListener());\n}));\n\n// packages/alpinejs/src/directives/index.js\nwarnMissingPluginDirective(\"Collapse\", \"collapse\", \"collapse\");\nwarnMissingPluginDirective(\"Intersect\", \"intersect\", \"intersect\");\nwarnMissingPluginDirective(\"Focus\", \"trap\", \"focus\");\nwarnMissingPluginDirective(\"Mask\", \"mask\", \"mask\");\nfunction warnMissingPluginDirective(name, directiveName, slug) {\n directive(directiveName, (el) => warn(`You can't use [x-${directiveName}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n\n// packages/alpinejs/src/index.js\nalpine_default.setEvaluator(normalEvaluator);\nalpine_default.setReactivityEngine({ reactive: reactive2, effect: effect2, release: stop, raw: toRaw });\nvar src_default = alpine_default;\n\n// packages/alpinejs/builds/module.js\nvar module_default = src_default;\nexport {\n src_default as Alpine,\n module_default as default\n};\n", "let onCopy = () => {}\n\nconst copy = (target) => {\n if (typeof target === 'function') {\n target = target()\n }\n\n if (typeof target === 'object') {\n target = JSON.stringify(target)\n }\n\n return window.navigator.clipboard.writeText(target)\n .then(onCopy)\n}\n\nfunction Clipboard(Alpine) {\n Alpine.magic('clipboard', () => {\n return copy\n })\n\n Alpine.directive('clipboard', (el, { modifiers, expression }, { evaluateLater, cleanup }) => {\n const getCopyContent = modifiers.includes('raw') ? c => c(expression) : evaluateLater(expression)\n const clickHandler = () => getCopyContent(copy)\n\n el.addEventListener('click', clickHandler)\n\n cleanup(() => {\n el.removeEventListener('click', clickHandler)\n })\n })\n}\n\nClipboard.configure = (config) => {\n if (config.hasOwnProperty('onCopy') && typeof config.onCopy === 'function') {\n onCopy = config.onCopy\n }\n\n return Clipboard\n}\n\nexport default Clipboard;", "import Alpine from 'alpinejs'\r\n\r\nAlpine.store('basket', { data: '' })\r\nAlpine.store('suggestedProducts', { data: '' })\r\nAlpine.store('checkout', { data: '' })\r\n"], "mappings": "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", "names": ["require_ofi_common_js", "__commonJSMin", "exports", "module", "OFI", "propRegex", "testImg", "supportsObjectFit", "supportsObjectPosition", "supportsOFI", "supportsCurrentSrc", "nativeGetAttribute", "nativeSetAttribute", "autoModeEnabled", "createPlaceholder", "w", "h", "polyfillCurrentSrc", "el", "pf", "getStyle", "style", "parsed", "props", "setPlaceholder", "img", "width", "height", "placeholder", "onImageReady", "callback", "fixOne", "ofi", "keepSrcUsable", "descriptors", "prop", "value", "ss", "hijackAttributes", "getOfiImageMaybe", "name", "fix", "imgs", "opts", "startAutoMode", "e", "require_object_fit_videos", "__commonJSMin", "exports", "module", "objectFitVideos", "videos", "isEdge", "testImg", "supportsObjectFit", "supportsObjectPosition", "propRegex", "initialize", "throttle", "getStyle", "$el", "style", "parsed", "props", "parsePosition", "index", "fitIt", "setCss", "getCss", "$wrap", "wrapCss", "key", "doWork", "videoWidth", "videoHeight", "videoRatio", "wrapWidth", "wrapHeight", "wrapRatio", "newHeight", "newWidth", "type", "name", "obj", "running", "evt", "func", "require_picturefill", "__commonJSMin", "exports", "module", "window", "ua", "timer", "dummySrc", "fixRespimg", "img", "source", "sizes", "picture", "findPictureImgs", "i", "imgs", "onResize", "mq", "init", "document", "undefined", "warn", "eminpx", "alwaysCheckWDescriptor", "evalId", "pf", "isSupportTestReady", "noop", "image", "getImgAttr", "setImgAttr", "removeImgAttr", "docElem", "types", "cfg", "srcAttr", "srcsetAttr", "supportAbort", "curSrcProp", "regWDesc", "regSize", "setOptions", "baseStyle", "fsCss", "isVwDirty", "cssCache", "sizeLengthCache", "DPR", "units", "anchor", "alreadyRun", "regexLeadingSpaces", "regexLeadingCommasOrSpaces", "regexLeadingNotSpaces", "regexTrailingCommas", "regexNonNegativeInteger", "regexFloatingPoint", "on", "obj", "evt", "fn", "capture", "memoize", "cache", "input", "isSpace", "c", "evalCSS", "regLength", "replace", "args", "index", "string", "buildStr", "css", "length", "parsedLength", "setResolution", "candidate", "sizesattr", "picturefill", "opt", "elements", "plen", "options", "message", "detectTypeSupport", "type", "typeUri", "updateMetrics", "chooseLowRes", "lowerValue", "higherValue", "dprValue", "isCached", "bonusFactor", "tooMuch", "bonus", "meanDensity", "applyBestCandidate", "srcSetCandidates", "matchingSet", "evaluated", "ascendingSort", "a", "b", "setSrcToCur", "src", "set", "getCandidateForSrc", "candidates", "getAllSourceElements", "len", "srcset", "sources", "parseSrcset", "collectCharacters", "regEx", "chars", "match", "pos", "inputLength", "url", "descriptors", "currentDescriptor", "state", "parseDescriptors", "pError", "w", "d", "h", "desc", "lastChar", "value", "intVal", "floatVal", "tokenize", "parseSizes", "strValue", "regexCssLengthWithUnits", "regexCssCalc", "unparsedSizesList", "unparsedSizesListLength", "unparsedSize", "lastComponentValue", "size", "parseComponentValues", "str", "chrctr", "component", "componentArray", "listArray", "parenDepth", "inComment", "pushComponent", "pushComponentArray", "isValidNonNegativeSourceSizeValue", "s", "image2", "width2", "width1", "test", "width", "context", "sel", "media", "sourceSizeValue", "sourceSizeStr", "body", "div", "originalHTMLCSS", "originalBodyCSS", "sourceSizeListStr", "winningLength", "j", "bestCandidate", "curSrc", "curCan", "candidateSrc", "abortCurSrc", "imageData", "dpr", "origWidth", "supportsType", "sets", "element", "parent", "srcsetAttribute", "imageSet", "isWDescripor", "srcsetParsed", "hasPicture", "extreme", "isDomReady", "regReady", "run", "readyState", "timerId", "debounce", "func", "wait", "timeout", "timestamp", "later", "last", "lastClientWidth", "name", "require_lazysizes", "__commonJSMin", "exports", "module", "window", "factory", "lazySizes", "document", "Date", "lazysizes", "lazySizesCfg", "prop", "lazySizesDefaults", "docElem", "supportPicture", "_addEventListener", "_getAttribute", "addEventListener", "setTimeout", "requestAnimationFrame", "requestIdleCallback", "regPicture", "loadEvents", "regClassCache", "forEach", "hasClass", "ele", "cls", "addClass", "removeClass", "reg", "addRemoveLoadEvents", "dom", "fn", "add", "action", "evt", "triggerEvent", "elem", "name", "detail", "noBubbles", "noCancelable", "event", "updatePolyfill", "el", "full", "polyfill", "getCSS", "style", "getWidth", "parent", "width", "rAF", "running", "waiting", "firstFns", "secondFns", "fns", "run", "runFns", "rafBatch", "queue", "rAFIt", "simple", "that", "args", "throttle", "lastTime", "gDelay", "rICTimeout", "idleCallback", "isPriority", "delay", "debounce", "func", "timeout", "timestamp", "wait", "later", "last", "loader", "preloadElems", "isCompleted", "resetPreloadingTimer", "loadMode", "started", "eLvW", "elvH", "eLtop", "eLleft", "eLright", "eLbottom", "isBodyHidden", "regImg", "regIframe", "supportScroll", "shrinkExpand", "currentExpand", "isLoading", "lowRuns", "resetPreloading", "e", "isVisible", "isNestedVisible", "elemExpand", "outerRect", "visible", "checkElements", "eLlen", "i", "rect", "autoLoadElem", "loadedSomething", "elemNegativeExpand", "elemExpandVal", "beforeExpandVal", "defaultExpand", "preloadExpand", "hFac", "lazyloadElems", "unveilElement", "throttledCheckElements", "switchLoadingClass", "rafSwitchLoadingClass", "rafedSwitchLoadingClass", "changeIframeSrc", "src", "handleSources", "source", "customMedia", "sourceSrcset", "lazyUnveil", "isAuto", "sizes", "isImg", "srcset", "isPicture", "firesLoad", "isLoaded", "autoSizer", "afterScroll", "altLoadmodeScrollListner", "onload", "loadingElements", "img", "autosizesElems", "sizeElement", "sources", "len", "getSizeElement", "dataAttr", "updateElementsSizes", "debouncedUpdateElementsSizes", "init", "require_tailwind_screens", "__commonJSMin", "exports", "module", "Iodine", "constructor", "this", "locale", "messages", "_defaultMessages", "defaultFieldName", "_dateCompare", "first", "second", "type", "equals", "isDate", "isInteger", "getTime", "after", "afterOrEqual", "array", "before", "beforeOrEqual", "boolean", "date", "different", "endingWith", "email", "falsy", "in", "integer", "json", "maximum", "minimum", "max", "min", "maxLength", "minLength", "notIn", "numeric", "optional", "regexMatch", "required", "same", "startingWith", "string", "truthy", "url", "uuid", "addRule", "name", "closure", "prototype", "toUpperCase", "slice", "getErrorMessage", "rule", "args", "param", "field", "undefined", "chunks", "split", "key", "shift", "join", "includes", "Date", "parseInt", "toLocaleTimeString", "year", "month", "day", "hour", "minute", "hour12", "message", "replace", "isAfter", "value", "isAfterOrEqual", "isArray", "Array", "isBefore", "isBeforeOrEqual", "isBoolean", "Object", "toString", "call", "isNaN", "isDifferent", "isEndingWith", "sub", "isString", "endsWith", "isEmail", "RegExp", "test", "String", "toLowerCase", "isFalsy", "isIn", "options", "Number", "isJson", "JSON", "parse", "isMaximum", "limit", "console", "warn", "length", "parseFloat", "isMinimum", "isMax", "isMin", "isMaxLength", "isMinLength", "isNotIn", "isNumeric", "isFinite", "isOptional", "isRegexMatch", "expression", "isRequired", "isSame", "isStartingWith", "startsWith", "isTruthy", "isUrl", "isUuid", "is", "rules", "index", "ruleName", "apply", "isValid", "setErrorMessages", "setErrorMessage", "setLocale", "setDefaultFieldName", "fieldName", "window", "require_xAsyncForm", "__commonJSMin", "exports", "module", "value", "ele", "error", "address", "zip", "_self", "response", "data", "json", "id", "name", "parcelshop", "event", "invalidElements", "input", "selected", "privat", "customForm", "formData", "deliveryAddress", "require_favorites", "__commonJSMin", "exports", "module", "sku", "item", "response", "data", "error", "id", "require_nouislider", "__commonJSMin", "exports", "module", "global", "factory", "PipsMode", "PipsType", "isValidFormatter", "entry", "isValidPartialFormatter", "removeElement", "el", "isSet", "value", "preventDefault", "e", "unique", "array", "closest", "to", "offset", "elem", "orientation", "rect", "doc", "docElem", "pageOffset", "getPageOffset", "isNumeric", "a", "addClassFor", "element", "className", "duration", "addClass", "removeClass", "limit", "asArray", "countDecimals", "numStr", "pieces", "hasClass", "supportPageOffset", "isCSS1Compat", "x", "y", "getActions", "getSupportsPassive", "supportsPassive", "opts", "getSupportsTouchActionNone", "subRangeRatio", "pa", "pb", "fromPercentage", "range", "startRange", "toPercentage", "isPercentage", "getJ", "arr", "j", "toStepping", "xVal", "xPct", "va", "vb", "fromStepping", "getStep", "xSteps", "snap", "b", "Spectrum", "singleStep", "index", "ordered", "distances", "step", "direction", "xPct_index", "start_factor", "rest_factor", "rest_rel_distance", "range_pct", "rel_range_distance", "abs_distance_counter", "range_counter", "isDown", "size", "stepDecimals", "percentage", "value1", "i", "n", "totalSteps", "highestStep", "defaultFormatter", "cssClasses", "INTERNAL_EVENT_NS", "testStep", "parsed", "testKeyboardPageMultiplier", "testKeyboardMultiplier", "testKeyboardDefaultStep", "testRange", "testStart", "testSnap", "testAnimate", "testAnimationDuration", "testConnect", "connect", "testOrientation", "testMargin", "testLimit", "testPadding", "totalPadding", "firstValue", "lastValue", "testDirection", "testBehaviour", "tap", "drag", "fixed", "hover", "unconstrained", "dragAll", "testTooltips", "formatter", "testHandleAttributes", "testAriaFormat", "testFormat", "testKeyboardSupport", "testDocumentElement", "testCssPrefix", "testCssClasses", "key", "testOptions", "options", "tests", "defaults", "name", "d", "msPrefix", "noPrefix", "styles", "scope", "target", "originalOptions", "actions", "supportsTouchActionNone", "scope_Target", "scope_Base", "scope_Handles", "scope_Connects", "scope_Pips", "scope_Tooltips", "scope_Spectrum", "scope_Values", "scope_Locations", "scope_HandleNumbers", "scope_ActiveHandlesCount", "scope_Events", "scope_Document", "scope_DocumentElement", "scope_Body", "scope_DirOffset", "addNodeTo", "addTarget", "div", "addOrigin", "base", "handleNumber", "origin", "handle", "event", "eventKeydown", "attributes_1", "attribute", "addConnect", "add", "addElements", "connectOptions", "connectBase", "addSlider", "textDirection", "addTooltip", "isSliderDisabled", "isHandleDisabled", "handleOrigin", "removeTooltips", "removeEvent", "tooltip", "tooltips", "bindEvent", "values", "unencoded", "formattedValue", "aria", "positions", "min", "checkHandlePosition", "max", "now", "text", "getGroup", "pips", "interval", "spread", "mapToRange", "stepped", "generateSpread", "safeIncrement", "increment", "group", "indexes", "firstInRange", "lastInRange", "ignoreFirst", "ignoreLast", "prevPct", "current", "q", "low", "high", "newPct", "pctDifference", "pctPos", "type", "steps", "realSteps", "stepSize", "isSteps", "addMarking", "filterFunc", "_a", "_b", "valueSizeClasses", "markerSizeClasses", "valueOrientationClasses", "markerOrientationClasses", "getClasses", "source", "orientationClasses", "sizeClasses", "addSpread", "node", "removePips", "filter", "format", "baseSize", "alt", "attachEvent", "events", "callback", "data", "method", "fixEvent", "methods", "eventName", "eventTarget", "touch", "mouse", "pointer", "isTouchOnTarget", "checkTouch", "targetTouches", "targetTouch", "calcPointToPercentage", "calcPoint", "location", "proposal", "getClosestHandle", "clickedPosition", "smallestDifference", "handlePosition", "differenceWithThisHandle", "clickAtEdge", "isCloser", "isCloserAfter", "documentLeave", "eventEnd", "eventMove", "movement", "moveHandles", "c", "setZindex", "fireEvent", "eventStart", "listeners", "moveEvent", "endEvent", "outEvent", "eventTap", "setHandle", "eventHover", "targetEvent", "scope_Self", "horizontalKeys", "verticalKeys", "largeStepKeys", "edgeKeys", "isLargeDown", "isLargeUp", "isUp", "isMin", "isMax", "getNextStepsForHandle", "bindSliderEvents", "behaviour", "handleBefore", "handleAfter", "eventHolders", "handlesToDrag", "handleNumbersToDrag", "eventHolder", "namespacedEvent", "isInternalNamespace", "namespace", "bind", "tEvent", "tNamespace", "eventType", "reference", "lookBackward", "lookForward", "getValue", "distance", "inRuleOrder", "v", "o", "upward", "locations", "handleNumbers", "proposals", "firstHandle", "f", "state", "transformDirection", "updateHandlePosition", "translation", "translateRule", "updateConnect", "dir", "zIndex", "exactInput", "l", "h", "connectWidth", "scaleRule", "resolveToValue", "valueSet", "input", "fireSetEvent", "isInit", "space_1", "valueReset", "valueSetHandle", "valueGet", "destroy", "nearbySteps", "decrement", "getNextSteps", "updateOptions", "optionsToUpdate", "updateAble", "newOptions", "setupSlider", "initialize", "api", "nouislider", "require_simpleLightbox", "__commonJSMin", "exports", "module", "root", "factory", "assign", "target", "i", "obj", "key", "addClass", "element", "className", "removeClass", "parseHtml", "html", "div", "matches", "el", "selector", "getWindowHeight", "SimpleLightbox", "options", "self", "elements", "index", "e", "eventName", "callback", "scope", "item", "position", "newPosition", "on", "url", "$imageCont", "image", "o", "content", "$content", "$target", "name", "instance", "$", "lightboxInstance", "$items", "import_object_fit_images", "import_object_fit_videos", "import_picturefill", "import_lazysizes", "win", "raf", "cb", "win", "caf", "id", "extend", "obj", "name", "copy", "target", "i", "length", "checkStorageValue", "value", "setLocalStorage", "storage", "key", "value", "access", "getSlideId", "id", "getBody", "doc", "body", "docElement", "setFakeBody", "body", "docOverflow", "docElement", "resetFakeBody", "body", "docOverflow", "docElement", "calc", "doc", "body", "getBody", "docOverflow", "setFakeBody", "div", "result", "str", "vals", "val", "i", "resetFakeBody", "percentageLayout", "doc", "body", "getBody", "docOverflow", "setFakeBody", "wrapper", "outer", "str", "count", "perPage", "supported", "i", "resetFakeBody", "mediaquerySupport", "doc", "body", "getBody", "docOverflow", "setFakeBody", "div", "style", "rule", "position", "resetFakeBody", "createStyleSheet", "media", "nonce", "style", "addCSSRule", "sheet", "selector", "rules", "index", "removeCSSRule", "sheet", "index", "getCssRulesLength", "sheet", "rule", "toDegree", "y", "x", "getTouchDirection", "angle", "range", "direction", "gap", "forEach", "arr", "callback", "scope", "l", "classListSupport", "hasClass", "classListSupport", "el", "str", "addClass", "classListSupport", "el", "str", "hasClass", "removeClass", "classListSupport", "el", "str", "hasClass", "hasAttr", "el", "attr", "getAttr", "el", "attr", "isNodeList", "el", "setAttrs", "els", "attrs", "isNodeList", "i", "key", "removeAttrs", "els", "attrs", "isNodeList", "attrLength", "j", "arrayFromNodeList", "nl", "arr", "i", "l", "hideElement", "el", "forceHide", "showElement", "el", "forceHide", "isVisible", "el", "whichProperty", "props", "arr", "Props", "prefixes", "prefix", "el", "len", "i", "prop", "has3DTransforms", "tf", "doc", "body", "getBody", "docOverflow", "setFakeBody", "el", "has3d", "cssTF", "resetFakeBody", "getEndProperty", "propIn", "propOut", "endProp", "supportsPassive", "opts", "passiveOption", "addEvents", "el", "obj", "preventScrolling", "prop", "option", "passiveOption", "removeEvents", "el", "obj", "prop", "option", "passiveOption", "Events", "eventName", "fn", "i", "data", "jsTransform", "element", "attr", "prefix", "postfix", "to", "duration", "callback", "tick", "unit", "from", "positionTick", "running", "moveElement", "object", "keys", "name", "tns", "options", "extend", "doc", "win", "KEYS", "tnsStorage", "localStorageAccess", "browserInfo", "uid", "item", "CALC", "checkStorageValue", "setLocalStorage", "calc", "PERCENTAGELAYOUT", "percentageLayout", "CSSMQ", "mediaquerySupport", "TRANSFORM", "whichProperty", "HAS3DTRANSFORMS", "has3DTransforms", "TRANSITIONDURATION", "TRANSITIONDELAY", "ANIMATIONDURATION", "ANIMATIONDELAY", "TRANSITIONEND", "getEndProperty", "ANIMATIONEND", "supportConsoleWarn", "tnsList", "optionsElements", "str", "el", "responsive", "nested", "carousel", "responsiveTem", "key", "val", "updateOptions", "obj", "animateIn", "animateOut", "animateDelay", "animateNormal", "horizontal", "outerWrapper", "innerWrapper", "middleWrapper", "container", "containerParent", "containerHTML", "slideItems", "slideCount", "breakpointZone", "windowWidth", "getWindowWidth", "isOn", "setBreakpointZone", "autoWidth", "fixedWidth", "getOption", "edgePadding", "gutter", "viewport", "getViewportWidth", "center", "items", "slideBy", "viewportMax", "arrowKeys", "speed", "rewind", "loop", "autoHeight", "controls", "controlsText", "nav", "touch", "mouseDrag", "autoplay", "autoplayTimeout", "autoplayText", "autoplayHoverPause", "autoplayResetOnVisibility", "sheet", "createStyleSheet", "lazyload", "lazyloadSelector", "slidePositions", "slideItemsOut", "cloneCount", "getCloneCountForLoop", "slideCountNew", "hasRightDeadZone", "rightBoundary", "getRightBoundary", "updateIndexBeforeTransform", "transformAttr", "transformPrefix", "transformPostfix", "getIndexMax", "i", "index", "getStartIndex", "indexCached", "displayIndex", "getCurrentSlide", "indexMin", "indexMax", "resizeTimer", "preventActionWhenRunning", "swipeAngle", "moveDirectionExpected", "running", "onInit", "events", "Events", "newContainerClasses", "slideId", "getSlideId", "disable", "disabled", "freezable", "freeze", "getFreeze", "frozen", "controlsEvents", "onControlsClick", "onControlsKeydown", "navEvents", "onNavClick", "onNavKeydown", "hoverEvents", "mouseoverPause", "mouseoutRestart", "visibilityEvent", "onVisibilityChange", "docmentKeydownEvent", "onDocumentKeydown", "touchEvents", "onPanStart", "onPanMove", "onPanEnd", "dragEvents", "hasControls", "hasOption", "hasNav", "navAsThumbnails", "hasAutoplay", "hasTouch", "hasMouseDrag", "slideActiveClass", "slideClonedClass", "imgCompleteClass", "imgEvents", "onImgLoaded", "onImgFailed", "imgsComplete", "liveregionCurrent", "preventScroll", "controlsContainer", "controlsContainerHTML", "prevButton", "nextButton", "prevButtonHTML", "nextButtonHTML", "prevIsButton", "nextIsButton", "navContainer", "navContainerHTML", "navItems", "pages", "getPages", "pagesCached", "navClicked", "navCurrentIndex", "getCurrentNavIndex", "navCurrentIndexCached", "navActiveClass", "navStr", "navStrCurrent", "autoplayDirection", "autoplayButton", "autoplayButtonHTML", "autoplayHtmlStrings", "autoplayTimer", "animating", "autoplayHoverPaused", "autoplayUserPaused", "autoplayVisibilityPaused", "initPosition", "lastPosition", "translateInit", "disX", "disY", "panStart", "rafIndex", "getDist", "a", "b", "resetVariblesWhenDisable", "initStructure", "initSheet", "initSliderTransform", "condition", "tem", "ind", "getAbsIndex", "absIndex", "result", "getItemsMax", "arr", "bp", "itemsMax", "getInsertPosition", "pos", "getClientWidth", "div", "rect", "width", "gap", "ww", "getSlideMarginLeft", "getInnerWrapperStyles", "edgePaddingTem", "gutterTem", "fixedWidthTem", "speedTem", "autoHeightBP", "gutterTemUnit", "dir", "getTransitionDurationStyle", "getContainerWidth", "itemsTem", "getSlideWidthStyle", "dividend", "getSlideGutterStyle", "prop", "getCSSPrefix", "num", "prefix", "getAnimationDurationStyle", "classOuter", "classInner", "hasGutter", "wp", "forEach", "addClass", "setAttrs", "fragmentBefore", "fragmentAfter", "j", "cloneFirst", "removeAttrs", "cloneLast", "imgs", "img", "src", "addEvents", "imgLoaded", "raf", "imgsLoadedCheck", "arrayFromNodeList", "getImageArray", "initSliderTransformStyleCheck", "doContainerTransformSilent", "initTools", "initEvents", "stylesApplicationCheck", "left", "right", "initSliderTransformCore", "setSlidePositions", "updateContentWrapperHeight", "l", "removeClass", "addCSSRule", "getCssRulesLength", "slide", "update_carousel_transition_duration", "opts", "middleWrapperStr", "innerWrapperStr", "containerStr", "slideStr", "itemsBP", "fixedWidthBP", "speedBP", "edgePaddingBP", "gutterBP", "updateSlideStatus", "getLiveRegionStr", "txt", "toggleAutoplay", "startAutoplay", "initIndex", "navHtml", "hiddenStr", "updateNavVisibility", "isButton", "updateControlsStatus", "disableUI", "eve", "onTransitionEnd", "resizeTasks", "info", "onResize", "doAutoHeight", "doLazyLoad", "disableSlider", "freezeSlider", "additionalUpdates", "destroy", "removeEvents", "htmlList", "prevEl", "parentEl", "e", "getEvent", "bpChanged", "breakpointZoneTem", "needContainerTransform", "indChanged", "itemsChanged", "disableTem", "freezeTem", "arrowKeysTem", "controlsTem", "navTem", "touchTem", "mouseDragTem", "autoplayTem", "autoplayHoverPauseTem", "autoplayResetOnVisibilityTem", "indexTem", "autoHeightTem", "controlsTextTem", "centerTem", "autoplayTextTem", "updateIndex", "enableSlider", "doContainerTransform", "getContainerTransformValue", "unfreezeSlider", "showElement", "hideElement", "stopAutoplay", "html", "len", "updateLiveRegion", "updateGallerySlidePositions", "removeCSSRule", "vp", "leftEdge", "rightEdge", "enableUI", "classN", "getVisibleSlideRange", "start", "end", "rangestart", "rangeend", "point", "cell", "arg", "hasClass", "getAttr", "srcset", "getTarget", "imgFailed", "imgCompleted", "imgSelector", "updateInnerWrapperHeight", "cb", "updateNavStatus", "getMaxSlideHeight", "slideStart", "slideRange", "heights", "maxHeight", "attr", "attr2", "base", "range", "hasAttr", "navPrev", "navCurrent", "getLowerCaseNodeName", "isAriaDisabled", "disEnableElement", "prevDisabled", "nextDisabled", "disablePrev", "disableNext", "resetDuration", "getSliderWidth", "getCenterGap", "denominator", "animateSlide", "number", "classOut", "classIn", "isOut", "transformCore", "isVisible", "jsTransform", "render", "sliderMoved", "strTrans", "event", "goTo", "targetIndex", "indexGap", "factor", "passEventObject", "target", "targetIn", "navIndex", "targetIndexBase", "setAutoplayTimer", "stopAutoplayTimer", "updateAutoplayButton", "action", "play", "pause", "keyIndex", "setFocus", "curElement", "isTouchEvent", "preventDefaultBehavior", "getMoveDirectionExpected", "getTouchDirection", "toDegree", "caf", "$", "panUpdate", "x", "dist", "percentageX", "preventClick", "indexMoved", "moved", "rough", "min", "max", "fn", "import_tailwind", "import_iodine", "flushPending", "flushing", "queue", "lastFlushedIndex", "scheduler", "callback", "queueJob", "job", "queueFlush", "dequeueJob", "index", "flushJobs", "i", "reactive", "effect", "release", "raw", "shouldSchedule", "disableEffectScheduling", "setReactivityEngine", "engine", "task", "overrideEffect", "override", "elementBoundEffect", "el", "cleanup2", "effectReference", "watch", "getter", "firstTime", "oldValue", "value", "dispatch", "name", "detail", "walk", "el2", "skip", "node", "warn", "message", "args", "started", "start", "startObservingMutations", "onElAdded", "initTree", "onElRemoved", "destroyTree", "onAttributesAdded", "attrs", "directives", "handle", "outNestedComponents", "closestRoot", "allSelectors", "rootSelectorCallbacks", "initSelectorCallbacks", "rootSelectors", "fn", "addRootSelector", "selectorCallback", "addInitSelector", "includeInitSelectors", "findClosest", "element", "selector", "isRoot", "initInterceptors", "interceptInit", "walker", "intercept", "deferHandlingDirectives", "root", "cleanupAttributes", "cleanupElement", "onAttributeAddeds", "onElRemoveds", "onElAddeds", "onAttributeRemoved", "names", "observer", "onMutate", "currentlyObserving", "stopObservingMutations", "flushObserver", "queuedMutations", "records", "queueLengthWhenTriggered", "mutateDom", "result", "isCollecting", "deferredMutations", "deferMutations", "flushAndStopDeferringMutations", "mutations", "addedNodes", "removedNodes", "addedAttributes", "removedAttributes", "add2", "remove", "scope", "mergeProxies", "closestDataStack", "addScopeToNode", "data2", "referenceNode", "objects", "mergeProxyTrap", "obj", "thisProxy", "collapseProxies", "target", "descriptor", "acc", "key", "initInterceptors2", "isObject2", "val", "recurse", "basePath", "enumerable", "path", "interceptor", "mutateObj", "get", "set", "initialValue", "initialize", "innerValue", "carry", "segment", "magics", "magic", "injectMagics", "memoizedUtilities", "getUtilities", "utilities", "getElementBoundUtilities", "tryCatch", "expression", "e", "handleError", "error2", "shouldAutoEvaluateFunctions", "dontAutoEvaluateFunctions", "cache", "evaluate", "extras", "evaluateLater", "theEvaluatorFunction", "normalEvaluator", "setEvaluator", "newEvaluator", "overriddenMagics", "dataStack", "evaluator", "generateEvaluatorFromFunction", "generateEvaluatorFromString", "func", "receiver", "scope2", "params", "runIfTypeOfFunction", "evaluatorMemo", "generateFunctionFromString", "AsyncFunction", "rightSideSafeExpression", "func2", "completeScope", "promise", "prefixAsString", "prefix", "subject", "setPrefix", "newPrefix", "directiveHandlers", "directive", "directive2", "pos", "directiveOrder", "attributes", "originalAttributeOverride", "vAttributes", "staticAttributes", "attributesOnly", "attribute", "attr", "transformedAttributeMap", "toTransformedAttributes", "newName", "oldName", "outNonAlpineAttributes", "toParsedDirectives", "byPriority", "getDirectiveHandler", "isDeferringHandlers", "directiveHandlerStacks", "currentHandlerStackKey", "flushHandlers", "stopDeferring", "cleanups", "effect3", "cleanupEffect", "alpine_default", "noop", "handler4", "fullHandler", "startingWith", "replacement", "into", "newValue", "attributeTransformers", "transform", "mapAttributes", "alpineAttributeRegex", "typeMatch", "valueMatch", "modifiers", "original", "DEFAULT", "a", "b", "typeA", "typeB", "tickStack", "isHolding", "nextTick", "releaseNextTicks", "res", "holdNextTicks", "setClasses", "setClassesFromString", "setClassesFromObject", "classString", "split", "classString2", "missingClasses", "addClassesAndReturnUndo", "classes", "classObject", "forAdd", "bool", "forRemove", "added", "removed", "setStyles", "setStylesFromObject", "setStylesFromString", "previousStyles", "value2", "kebabCase", "once", "fallback", "called", "evaluate2", "registerTransitionsFromHelper", "registerTransitionsFromClassString", "stage", "registerTransitionObject", "doesntSpecify", "transitioningIn", "transitioningOut", "wantsAll", "wantsOpacity", "wantsScale", "opacityValue", "scaleValue", "modifierValue", "delay", "origin", "property", "durationIn", "durationOut", "easing", "setFunction", "defaultValue", "before", "after", "transition", "show", "hide", "nextTick2", "clickAwayCompatibleShow", "resolve", "reject", "closest", "closestHide", "hideAfterChildren", "parent", "during", "start2", "end", "undoStart", "undoDuring", "undoEnd", "performTransition", "stages", "interrupted", "reachedBefore", "reachedEnd", "finish", "duration", "rawValue", "match", "isCloning", "skipDuringClone", "onlyDuringClone", "interceptors", "interceptClone", "cloneNode", "from", "to", "dontRegisterReactiveSideEffects", "isCloningLegacy", "clone", "oldEl", "newEl", "cloneTree", "hasRunThroughFirstEl", "el3", "callback2", "storedEffect", "bind", "camelCase", "bindInputValue", "bindStyles", "bindClasses", "bindAttributeAndProperty", "bindAttribute", "safeParseBoolean", "checkedAttrLooseCompare", "updateSelect", "setPropertyIfChanged", "attributeShouldntBePreservedIfFalsy", "isBooleanAttr", "setIfChanged", "attrName", "propName", "arrayWrappedValue", "option", "char", "valueA", "valueB", "getBinding", "getAttributeBinding", "extractProp", "extract", "binding", "debounce", "wait", "timeout", "context", "later", "throttle", "limit", "inThrottle", "entangle", "outerGet", "outerSet", "innerGet", "innerSet", "firstRun", "outerHash", "innerHash", "reference", "outer", "inner", "cloneIfObject", "outerHashLatest", "innerHashLatest", "plugin", "stores", "isReactive", "store", "getStores", "binds", "bind2", "bindings", "getBindings", "applyBindingsObject", "injectBindingProviders", "cleanupRunners", "datas", "data", "injectDataProviders", "Alpine", "makeMap", "str", "expectsLowerCase", "map", "list", "specialBooleanAttrs", "isBooleanAttr2", "EMPTY_OBJ", "EMPTY_ARR", "hasOwnProperty", "hasOwn", "isArray", "isMap", "toTypeString", "isString", "isSymbol", "isObject", "objectToString", "toRawType", "isIntegerKey", "cacheStringFunction", "camelizeRE", "camelize", "_", "c", "hyphenateRE", "hyphenate", "capitalize", "toHandlerKey", "hasChanged", "targetMap", "effectStack", "activeEffect", "ITERATE_KEY", "MAP_KEY_ITERATE_KEY", "isEffect", "effect2", "options", "createReactiveEffect", "stop", "cleanup", "uid", "enableTracking", "resetTracking", "deps", "shouldTrack", "trackStack", "pauseTracking", "last", "track", "type", "depsMap", "dep", "trigger", "oldTarget", "effects", "effectsToAdd", "key2", "run", "isNonTrackableKeys", "builtInSymbols", "get2", "createGetter", "readonlyGet", "arrayInstrumentations", "createArrayInstrumentations", "instrumentations", "arr", "toRaw", "l", "isReadonly", "shallow", "shallowReadonlyMap", "readonlyMap", "shallowReactiveMap", "reactiveMap", "targetIsArray", "isRef", "readonly", "reactive2", "set2", "createSetter", "hadKey", "deleteProperty", "has", "ownKeys", "mutableHandlers", "readonlyHandlers", "toReactive", "toReadonly", "toShallow", "getProto", "v", "get$1", "isShallow", "rawTarget", "rawKey", "has2", "wrap", "has$1", "size", "add", "set$1", "get3", "checkIdentityKeys", "deleteEntry", "clear", "hadItems", "createForEach", "thisArg", "observed", "createIterableMethod", "method", "targetIsMap", "isPair", "isKeyOnly", "innerIterator", "done", "createReadonlyMethod", "createInstrumentations", "mutableInstrumentations2", "shallowInstrumentations2", "readonlyInstrumentations2", "shallowReadonlyInstrumentations2", "mutableInstrumentations", "readonlyInstrumentations", "shallowInstrumentations", "shallowReadonlyInstrumentations", "createInstrumentationGetter", "mutableCollectionHandlers", "readonlyCollectionHandlers", "targetTypeMap", "rawType", "getTargetType", "createReactiveObject", "baseHandlers", "collectionHandlers", "proxyMap", "existingProxy", "targetType", "proxy", "r", "evaluateLater2", "unwatch", "getArrayOfRefObject", "refObjects", "globalIdMemo", "findAndIncrementId", "closestIdRoot", "setIdRoot", "cacheKey", "cacheIdByNameOnElement", "id", "output", "warnMissingPluginMagic", "magicName", "slug", "evaluateInnerSet", "releaseEntanglement", "getTarget", "clone2", "eventName", "placeInDom", "clone3", "target2", "modifiers2", "teleportContainerDuringClone", "handler", "on", "event", "listenerTarget", "wrapHandler", "wrapper", "dotSyntax", "camelCase2", "nextModifier", "isNumeric", "next", "isKeyEvent", "isListeningForASpecificKeyThatHasntBeenPressed", "kebabCase2", "keyModifiers", "debounceIndex", "keyToModifiers", "selectedSystemKeyModifiers", "modifier", "modifierToKeyMap", "scopeTarget", "evaluateGet", "evaluateSet", "getValue", "isGetterSetter", "setValue", "removeListener", "getInputValue", "removeResetListener", "currentValue", "safeParseNumber", "checkedAttrLooseCompare2", "number", "isNumeric2", "handler2", "bindingProviders", "storeKeyForXFor", "shouldSkipRegisteringDataDuringClone", "magicContext", "dataProviderContext", "reactiveData", "undo", "toggle", "iteratorNames", "parseForExpression", "evaluateItems", "evaluateKey", "loop", "templateEl", "items", "isNumeric3", "lookup", "prevKeys", "scopes", "keys", "getIterationScopeVariables", "adds", "moves", "removes", "sames", "lastKey", "prevIndex", "keyInSpot", "keyForSpot", "elInSpot", "elForSpot", "marker", "lastKey2", "lastEl", "reactiveScope", "newScope", "forIteratorRE", "stripParensRE", "forAliasRE", "inMatch", "item", "iteratorMatch", "scopeVariables", "handler3", "warnMissingPluginDirective", "directiveName", "src_default", "module_default", "onCopy", "copy", "target", "Clipboard", "Alpine", "el", "modifiers", "expression", "evaluateLater", "cleanup", "getCopyContent", "c", "clickHandler", "config", "src_default", "module_default", "import_xAsyncForm", "import_favorites", "import_nouislider", "objectFitImages", "objectFitVideos", "tns", "SimpleLightbox", "lightboxes", "lightbox", "screen", "mm", "event", "module_default", "src_default", "noUiSlider"] }