{"version":3,"file":"js/app.js","mappings":"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","sources":["webpack://telge-pwa/./node_modules/@popperjs/core/lib/enums.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/math.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/within.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/createPopper.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/popper.js","webpack://telge-pwa/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/base-component.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/carousel.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/collapse.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/dom/data.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/dom/event-handler.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/dom/manipulator.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/dom/selector-engine.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/dropdown.js","webpack://telge-pwa/./node_modules/bootstrap/js/dist/modal.js","webpack://telge-pwa/./node_modules/lazysizes/lazysizes.js","webpack://telge-pwa/./node_modules/nouislider/dist/nouislider.js","webpack://telge-pwa/webpack/bootstrap","webpack://telge-pwa/webpack/runtime/define property getters","webpack://telge-pwa/webpack/runtime/hasOwnProperty shorthand","webpack://telge-pwa/webpack/runtime/make namespace object","webpack://telge-pwa/./Scripts/expandableList.js","webpack://telge-pwa/./Scripts/slider.js","webpack://telge-pwa/./Scripts/utils.js","webpack://telge-pwa/./Scripts/maps.js","webpack://telge-pwa/./Scripts/metermap.js","webpack://telge-pwa/./Scripts/matomo.js","webpack://telge-pwa/./Scripts/elementscroll.js","webpack://telge-pwa/./Scripts/stickymenu.js","webpack://telge-pwa/./Scripts/validForm.js","webpack://telge-pwa/./Scripts/form-validation.js","webpack://telge-pwa/./Scripts/iframe.js","webpack://telge-pwa/./node_modules/@panzoom/panzoom/dist/panzoom.es.js","webpack://telge-pwa/./Scripts/recycleareamap.js","webpack://telge-pwa/./Scripts/fullheight.js","webpack://telge-pwa/./Scripts/chart.js","webpack://telge-pwa/./Scripts/cookies.js","webpack://telge-pwa/./Scripts/kundo.js","webpack://telge-pwa/./Scripts/app.js"],"sourcesContent":["export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n * Bootstrap base-component.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/selector-engine.js'), require('./dom/event-handler.js')) :\n typeof define === 'function' && define.amd ? define(['./dom/data', './dom/selector-engine', './dom/event-handler'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.SelectorEngine, global.EventHandler));\n}(this, (function (Data, SelectorEngine, EventHandler) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);\n var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);\n var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);\n\n const MILLISECONDS_MULTIPLIER = 1000;\n const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n const getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n };\n\n const triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n };\n\n const isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0];\n }\n\n return typeof obj.nodeType !== 'undefined';\n };\n\n const getElement = obj => {\n if (isElement(obj)) {\n // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj;\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine__default['default'].findOne(obj);\n }\n\n return null;\n };\n\n const emulateTransitionEnd = (element, duration) => {\n let called = false;\n const durationPadding = 5;\n const emulatedDuration = duration + durationPadding;\n\n function listener() {\n called = true;\n element.removeEventListener(TRANSITION_END, listener);\n }\n\n element.addEventListener(TRANSITION_END, listener);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element);\n }\n }, emulatedDuration);\n };\n\n const execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const VERSION = '5.0.1';\n\n class BaseComponent {\n constructor(element) {\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n Data__default['default'].set(this._element, this.constructor.DATA_KEY, this);\n }\n\n dispose() {\n Data__default['default'].remove(this._element, this.constructor.DATA_KEY);\n EventHandler__default['default'].off(this._element, this.constructor.EVENT_KEY);\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null;\n });\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n if (!isAnimated) {\n execute(callback);\n return;\n }\n\n const transitionDuration = getTransitionDurationFromElement(element);\n EventHandler__default['default'].one(element, 'transitionend', () => execute(callback));\n emulateTransitionEnd(element, transitionDuration);\n }\n /** Static */\n\n\n static getInstance(element) {\n return Data__default['default'].get(element, this.DATA_KEY);\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n }\n\n return BaseComponent;\n\n})));\n//# sourceMappingURL=base-component.js.map\n","/*!\n * Bootstrap carousel.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :\n typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base));\n}(this, (function (SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);\n var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);\n var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);\n var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);\n var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);\n\n const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n const toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n };\n\n const getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`;\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n }\n\n return selector;\n };\n\n const getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n const triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n };\n\n const isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0];\n }\n\n return typeof obj.nodeType !== 'undefined';\n };\n\n const typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = value && isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n });\n };\n\n const isVisible = element => {\n if (!element) {\n return false;\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element);\n const parentNodeStyle = getComputedStyle(element.parentNode);\n return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';\n }\n\n return false;\n };\n\n const reflow = element => element.offsetHeight;\n\n const getjQuery = () => {\n const {\n jQuery\n } = window;\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery;\n }\n\n return null;\n };\n\n const onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback);\n } else {\n callback();\n }\n };\n\n const isRTL = () => document.documentElement.dir === 'rtl';\n\n const defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel';\n const DATA_KEY = 'bs.carousel';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const ARROW_LEFT_KEY = 'ArrowLeft';\n const ARROW_RIGHT_KEY = 'ArrowRight';\n const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n const SWIPE_THRESHOLD = 40;\n const Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n const DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n const ORDER_NEXT = 'next';\n const ORDER_PREV = 'prev';\n const DIRECTION_LEFT = 'left';\n const DIRECTION_RIGHT = 'right';\n const EVENT_SLIDE = `slide${EVENT_KEY}`;\n const EVENT_SLID = `slid${EVENT_KEY}`;\n const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;\n const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;\n const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;\n const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;\n const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;\n const EVENT_TOUCHEND = `touchend${EVENT_KEY}`;\n const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;\n const EVENT_POINTERUP = `pointerup${EVENT_KEY}`;\n const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;\n const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_CAROUSEL = 'carousel';\n const CLASS_NAME_ACTIVE = 'active';\n const CLASS_NAME_SLIDE = 'slide';\n const CLASS_NAME_END = 'carousel-item-end';\n const CLASS_NAME_START = 'carousel-item-start';\n const CLASS_NAME_NEXT = 'carousel-item-next';\n const CLASS_NAME_PREV = 'carousel-item-prev';\n const CLASS_NAME_POINTER_EVENT = 'pointer-event';\n const SELECTOR_ACTIVE = '.active';\n const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n const SELECTOR_ITEM = '.carousel-item';\n const SELECTOR_ITEM_IMG = '.carousel-item img';\n const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n const SELECTOR_INDICATORS = '.carousel-indicators';\n const SELECTOR_INDICATOR = '[data-bs-target]';\n const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\n const SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\n const POINTER_TYPE_TOUCH = 'touch';\n const POINTER_TYPE_PEN = 'pen';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel extends BaseComponent__default['default'] {\n constructor(element, config) {\n super(element);\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._indicatorsElement = SelectorEngine__default['default'].findOne(SELECTOR_INDICATORS, this._element);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n next() {\n if (!this._isSliding) {\n this._slide(ORDER_NEXT);\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(ORDER_PREV);\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (SelectorEngine__default['default'].findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n const activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler__default['default'].one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, this._items[index]);\n } // Private\n\n\n _getConfig(config) {\n config = { ...Default,\n ...config\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0;\n\n if (!direction) {\n return;\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler__default['default'].on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler__default['default'].on(this._element, EVENT_MOUSEENTER, event => this.pause(event));\n EventHandler__default['default'].on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX;\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX;\n }\n };\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;\n };\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX;\n }\n\n this._handleSwipe();\n\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n this.pause();\n\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n }\n };\n\n SelectorEngine__default['default'].find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler__default['default'].on(itemImg, EVENT_DRAG_START, e => e.preventDefault());\n });\n\n if (this._pointerEvent) {\n EventHandler__default['default'].on(this._element, EVENT_POINTERDOWN, event => start(event));\n EventHandler__default['default'].on(this._element, EVENT_POINTERUP, event => end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler__default['default'].on(this._element, EVENT_TOUCHSTART, event => start(event));\n EventHandler__default['default'].on(this._element, EVENT_TOUCHMOVE, event => move(event));\n EventHandler__default['default'].on(this._element, EVENT_TOUCHEND, event => end(event));\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n if (event.key === ARROW_LEFT_KEY) {\n event.preventDefault();\n\n this._slide(DIRECTION_RIGHT);\n } else if (event.key === ARROW_RIGHT_KEY) {\n event.preventDefault();\n\n this._slide(DIRECTION_LEFT);\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ? SelectorEngine__default['default'].find(SELECTOR_ITEM, element.parentNode) : [];\n return this._items.indexOf(element);\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT;\n const isPrev = order === ORDER_PREV;\n\n const activeIndex = this._getItemIndex(activeElement);\n\n const lastItemIndex = this._items.length - 1;\n const isGoingToWrap = isPrev && activeIndex === 0 || isNext && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n const delta = isPrev ? -1 : 1;\n const itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget);\n\n const fromIndex = this._getItemIndex(SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element));\n\n return EventHandler__default['default'].trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE);\n activeIndicator.removeAttribute('aria-current');\n const indicators = SelectorEngine__default['default'].find(SELECTOR_INDICATOR, this._indicatorsElement);\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE);\n indicators[i].setAttribute('aria-current', 'true');\n break;\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder);\n\n const activeElement = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n const activeElementIndex = this._getItemIndex(activeElement);\n\n const nextElement = element || this._getItemByOrder(order, activeElement);\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const isCycling = Boolean(this._interval);\n const isNext = order === ORDER_NEXT;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n\n const eventDirectionName = this._orderToDirection(order);\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false;\n return;\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n\n const triggerSlidEvent = () => {\n EventHandler__default['default'].trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n };\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE);\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);\n this._isSliding = false;\n setTimeout(triggerSlidEvent, 0);\n };\n\n this._queueCallback(completeCallBack, activeElement, true);\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE);\n nextElement.classList.add(CLASS_NAME_ACTIVE);\n this._isSliding = false;\n triggerSlidEvent();\n }\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction;\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order;\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n\n\n static carouselInterface(element, config) {\n let data = Data__default['default'].get(element, DATA_KEY);\n let _config = { ...Default,\n ...Manipulator__default['default'].getDataAttributes(element)\n };\n\n if (typeof config === 'object') {\n _config = { ..._config,\n ...config\n };\n }\n\n const action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(element, _config);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`);\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config);\n });\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n const config = { ...Manipulator__default['default'].getDataAttributes(target),\n ...Manipulator__default['default'].getDataAttributes(this)\n };\n const slideIndex = this.getAttribute('data-bs-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel.carouselInterface(target, config);\n\n if (slideIndex) {\n Data__default['default'].get(target, DATA_KEY).to(slideIndex);\n }\n\n event.preventDefault();\n }\n\n }\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);\n EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine__default['default'].find(SELECTOR_DATA_RIDE);\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data__default['default'].get(carousels[i], DATA_KEY));\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\n defineJQueryPlugin(Carousel);\n\n return Carousel;\n\n})));\n//# sourceMappingURL=carousel.js.map\n","/*!\n * Bootstrap collapse.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :\n typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base));\n}(this, (function (SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);\n var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);\n var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);\n var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);\n var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);\n\n const toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n };\n\n const getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`;\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n }\n\n return selector;\n };\n\n const getSelectorFromElement = element => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n };\n\n const getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n const isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0];\n }\n\n return typeof obj.nodeType !== 'undefined';\n };\n\n const getElement = obj => {\n if (isElement(obj)) {\n // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj;\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine__default['default'].findOne(obj);\n }\n\n return null;\n };\n\n const typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = value && isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n });\n };\n\n const reflow = element => element.offsetHeight;\n\n const getjQuery = () => {\n const {\n jQuery\n } = window;\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery;\n }\n\n return null;\n };\n\n const onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback);\n } else {\n callback();\n }\n };\n\n const defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse';\n const DATA_KEY = 'bs.collapse';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const Default = {\n toggle: true,\n parent: ''\n };\n const DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n const EVENT_SHOW = `show${EVENT_KEY}`;\n const EVENT_SHOWN = `shown${EVENT_KEY}`;\n const EVENT_HIDE = `hide${EVENT_KEY}`;\n const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_SHOW = 'show';\n const CLASS_NAME_COLLAPSE = 'collapse';\n const CLASS_NAME_COLLAPSING = 'collapsing';\n const CLASS_NAME_COLLAPSED = 'collapsed';\n const WIDTH = 'width';\n const HEIGHT = 'height';\n const SELECTOR_ACTIVES = '.show, .collapsing';\n const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse extends BaseComponent__default['default'] {\n constructor(element, config) {\n super(element);\n this._isTransitioning = false;\n this._config = this._getConfig(config);\n this._triggerArray = SelectorEngine__default['default'].find(`${SELECTOR_DATA_TOGGLE}[href=\"#${this._element.id}\"],` + `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${this._element.id}\"]`);\n const toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i];\n const selector = getSelectorFromElement(elem);\n const filterElement = SelectorEngine__default['default'].find(selector).filter(foundElem => foundElem === this._element);\n\n if (selector !== null && filterElement.length) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n static get Default() {\n return Default;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n\n let actives;\n let activesData;\n\n if (this._parent) {\n actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n const container = SelectorEngine__default['default'].findOne(this._selector);\n\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem);\n activesData = tempActiveData ? Data__default['default'].get(tempActiveData, DATA_KEY) : null;\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n const startEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide');\n }\n\n if (!activesData) {\n Data__default['default'].set(elemActive, DATA_KEY, null);\n }\n });\n }\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED);\n element.setAttribute('aria-expanded', true);\n });\n }\n\n this.setTransitioning(true);\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n this._element.style[dimension] = '';\n this.setTransitioning(false);\n EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n\n const startEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n\n const triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i];\n const elem = getElementFromSelector(trigger);\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED);\n trigger.setAttribute('aria-expanded', false);\n }\n }\n }\n\n this.setTransitioning(true);\n\n const complete = () => {\n this.setTransitioning(false);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n } // Private\n\n\n _getConfig(config) {\n config = { ...Default,\n ...config\n };\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;\n }\n\n _getParent() {\n let {\n parent\n } = this._config;\n parent = getElement(parent);\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`;\n SelectorEngine__default['default'].find(selector, parent).forEach(element => {\n const selected = getElementFromSelector(element);\n\n this._addAriaAndCollapsedClass(selected, [element]);\n });\n return parent;\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return;\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW);\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED);\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED);\n }\n\n elem.setAttribute('aria-expanded', isOpen);\n });\n } // Static\n\n\n static collapseInterface(element, config) {\n let data = Data__default['default'].get(element, DATA_KEY);\n const _config = { ...Default,\n ...Manipulator__default['default'].getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n };\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(element, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config);\n });\n }\n\n }\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n const triggerData = Manipulator__default['default'].getDataAttributes(this);\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine__default['default'].find(selector);\n selectorElements.forEach(element => {\n const data = Data__default['default'].get(element, DATA_KEY);\n let config;\n\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent;\n data._parent = data._getParent();\n }\n\n config = 'toggle';\n } else {\n config = triggerData;\n }\n\n Collapse.collapseInterface(element, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\n defineJQueryPlugin(Collapse);\n\n return Collapse;\n\n})));\n//# sourceMappingURL=collapse.js.map\n","/*!\n * Bootstrap data.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());\n}(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n const elementMap = new Map();\n var data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n\n };\n\n return data;\n\n})));\n//# sourceMappingURL=data.js.map\n","/*!\n * Bootstrap event-handler.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory());\n}(this, (function () { 'use strict';\n\n const getjQuery = () => {\n const {\n jQuery\n } = window;\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery;\n }\n\n return null;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n const stripNameRegex = /\\..*/;\n const stripUidRegex = /::\\d+$/;\n const eventRegistry = {}; // Events storage\n\n let uidEvent = 1;\n const customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n };\n const customEventsRegex = /^(mouseenter|mouseleave)/i;\n const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n /**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\n function getUidEvent(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n }\n\n function getEvent(element) {\n const uid = getUidEvent(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n }\n\n function bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element;\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n }\n\n function bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target;\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n } // To please ESLint\n\n\n return null;\n };\n }\n\n function findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events);\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]];\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event;\n }\n }\n\n return null;\n }\n\n function normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string';\n const originalHandler = delegation ? delegationFn : handler;\n let typeEvent = getTypeEvent(originalTypeEvent);\n const isNative = nativeEvents.has(typeEvent);\n\n if (!isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [delegation, originalHandler, typeEvent];\n }\n\n function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n if (!handler) {\n handler = delegationFn;\n delegationFn = null;\n } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn);\n } else {\n handler = wrapFn(handler);\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n const events = getEvent(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff;\n return;\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);\n fn.delegationSelector = delegation ? handler : null;\n fn.originalHandler = originalHandler;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, delegation);\n }\n\n function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n }\n\n function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n }\n });\n }\n\n function getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n }\n\n const EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false);\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getEvent(element);\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return;\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);\n return;\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n });\n }\n\n const storeElementEvent = events[typeEvent] || {};\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n }\n });\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n const isNative = nativeEvents.has(typeEvent);\n let jQueryEvent;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n let evt = null;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents');\n evt.initEvent(typeEvent, bubbles, true);\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n });\n } // merge custom information in our event\n\n\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key];\n }\n\n });\n });\n }\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n }\n\n };\n\n return EventHandler;\n\n})));\n//# sourceMappingURL=event-handler.js.map\n","/*!\n * Bootstrap manipulator.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Manipulator = factory());\n}(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n function normalizeData(val) {\n if (val === 'true') {\n return true;\n }\n\n if (val === 'false') {\n return false;\n }\n\n if (val === Number(val).toString()) {\n return Number(val);\n }\n\n if (val === '' || val === 'null') {\n return null;\n }\n\n return val;\n }\n\n function normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n }\n\n const Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n });\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect();\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n };\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n };\n }\n\n };\n\n return Manipulator;\n\n})));\n//# sourceMappingURL=manipulator.js.map\n","/*!\n * Bootstrap selector-engine.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory());\n}(this, (function () { 'use strict';\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n const NODE_TEXT = 3;\n const SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode;\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor);\n }\n\n ancestor = ancestor.parentNode;\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n }\n\n };\n\n return SelectorEngine;\n\n})));\n//# sourceMappingURL=selector-engine.js.map\n","/*!\n * Bootstrap dropdown.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :\n typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.Popper, global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base));\n}(this, (function (Popper, SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n function _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () {\n return e[k];\n }\n });\n }\n });\n }\n n['default'] = e;\n return Object.freeze(n);\n }\n\n var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);\n var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);\n var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);\n var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);\n var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);\n var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);\n\n const toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n };\n\n const getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`;\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n }\n\n return selector;\n };\n\n const getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n const isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0];\n }\n\n return typeof obj.nodeType !== 'undefined';\n };\n\n const getElement = obj => {\n if (isElement(obj)) {\n // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj;\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return SelectorEngine__default['default'].findOne(obj);\n }\n\n return null;\n };\n\n const typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = value && isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n });\n };\n\n const isVisible = element => {\n if (!element) {\n return false;\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element);\n const parentNodeStyle = getComputedStyle(element.parentNode);\n return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';\n }\n\n return false;\n };\n\n const isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n };\n\n const noop = () => {};\n\n const getjQuery = () => {\n const {\n jQuery\n } = window;\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery;\n }\n\n return null;\n };\n\n const onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback);\n } else {\n callback();\n }\n };\n\n const isRTL = () => document.documentElement.dir === 'rtl';\n\n const defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown';\n const DATA_KEY = 'bs.dropdown';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const ESCAPE_KEY = 'Escape';\n const SPACE_KEY = 'Space';\n const TAB_KEY = 'Tab';\n const ARROW_UP_KEY = 'ArrowUp';\n const ARROW_DOWN_KEY = 'ArrowDown';\n const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`);\n const EVENT_HIDE = `hide${EVENT_KEY}`;\n const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n const EVENT_SHOW = `show${EVENT_KEY}`;\n const EVENT_SHOWN = `shown${EVENT_KEY}`;\n const EVENT_CLICK = `click${EVENT_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;\n const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_SHOW = 'show';\n const CLASS_NAME_DROPUP = 'dropup';\n const CLASS_NAME_DROPEND = 'dropend';\n const CLASS_NAME_DROPSTART = 'dropstart';\n const CLASS_NAME_NAVBAR = 'navbar';\n const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]';\n const SELECTOR_MENU = '.dropdown-menu';\n const SELECTOR_NAVBAR_NAV = '.navbar-nav';\n const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\n const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\n const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\n const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\n const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\n const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\n const Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n };\n const DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Dropdown extends BaseComponent__default['default'] {\n constructor(element, config) {\n super(element);\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n toggle() {\n if (isDisabled(this._element)) {\n return;\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW);\n\n if (isActive) {\n this.hide();\n return;\n }\n\n this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n\n const parent = Dropdown.getParentFromElement(this._element);\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (this._inNavbar) {\n Manipulator__default['default'].setDataAttribute(this._menu, 'popper', 'none');\n } else {\n if (typeof Popper__namespace === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);\n this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);\n\n if (isDisplayStatic) {\n Manipulator__default['default'].setDataAttribute(this._menu, 'popper', 'static');\n }\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children).forEach(elem => EventHandler__default['default'].on(elem, 'mouseover', noop));\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.toggle(CLASS_NAME_SHOW);\n\n this._element.classList.toggle(CLASS_NAME_SHOW);\n\n EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n\n\n _addEventListeners() {\n EventHandler__default['default'].on(this._element, EVENT_CLICK, event => {\n event.preventDefault();\n this.toggle();\n });\n }\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE, relatedTarget);\n\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(elem => EventHandler__default['default'].off(elem, 'mouseover', noop));\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW);\n\n this._element.classList.remove(CLASS_NAME_SHOW);\n\n this._element.setAttribute('aria-expanded', 'false');\n\n Manipulator__default['default'].removeDataAttribute(this._menu, 'popper');\n EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN, relatedTarget);\n }\n\n _getConfig(config) {\n config = { ...this.constructor.Default,\n ...Manipulator__default['default'].getDataAttributes(this._element),\n ...config\n };\n typeCheckConfig(NAME, config, this.constructor.DefaultType);\n\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n\n return config;\n }\n\n _getMenuElement() {\n return SelectorEngine__default['default'].next(this._element, SELECTOR_MENU)[0];\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n } // We need to trim the value because custom properties can also include spaces\n\n\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _selectMenuItem(event) {\n const items = SelectorEngine__default['default'].find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);\n\n if (!items.length) {\n return;\n }\n\n let index = items.indexOf(event.target); // Up\n\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--;\n } // Down\n\n\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++;\n } // index is -1 if the first keydown is an ArrowUp\n\n\n index = index === -1 ? 0 : index;\n items[index].focus();\n } // Static\n\n\n static dropdownInterface(element, config) {\n let data = Data__default['default'].get(element, DATA_KEY);\n\n const _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(element, _config);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config);\n });\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {\n return;\n }\n\n const toggles = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Data__default['default'].get(toggles[i], DATA_KEY);\n\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n if (!context._element.classList.contains(CLASS_NAME_SHOW)) {\n continue;\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n };\n\n if (event) {\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode;\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {\n return;\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW);\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (isDisabled(this)) {\n return;\n }\n\n const getToggleButton = () => this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine__default['default'].prev(this, SELECTOR_DATA_TOGGLE)[0];\n\n if (event.key === ESCAPE_KEY) {\n getToggleButton().focus();\n Dropdown.clearMenus();\n return;\n }\n\n if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {\n getToggleButton().click();\n return;\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus();\n return;\n }\n\n Dropdown.getInstance(getToggleButton())._selectMenuItem(event);\n }\n\n }\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n EventHandler__default['default'].on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler);\n EventHandler__default['default'].on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\n EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);\n EventHandler__default['default'].on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\n EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n Dropdown.dropdownInterface(this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\n defineJQueryPlugin(Dropdown);\n\n return Dropdown;\n\n})));\n//# sourceMappingURL=dropdown.js.map\n","/*!\n * Bootstrap modal.js v5.0.1 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :\n typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base));\n}(this, (function (SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);\n var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);\n var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);\n var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);\n\n const MILLISECONDS_MULTIPLIER = 1000;\n const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n const toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n };\n\n const getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`;\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n }\n\n return selector;\n };\n\n const getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n const getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n };\n\n const triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n };\n\n const isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0];\n }\n\n return typeof obj.nodeType !== 'undefined';\n };\n\n const emulateTransitionEnd = (element, duration) => {\n let called = false;\n const durationPadding = 5;\n const emulatedDuration = duration + durationPadding;\n\n function listener() {\n called = true;\n element.removeEventListener(TRANSITION_END, listener);\n }\n\n element.addEventListener(TRANSITION_END, listener);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element);\n }\n }, emulatedDuration);\n };\n\n const typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = value && isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n });\n };\n\n const isVisible = element => {\n if (!element) {\n return false;\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element);\n const parentNodeStyle = getComputedStyle(element.parentNode);\n return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';\n }\n\n return false;\n };\n\n const reflow = element => element.offsetHeight;\n\n const getjQuery = () => {\n const {\n jQuery\n } = window;\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery;\n }\n\n return null;\n };\n\n const onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback);\n } else {\n callback();\n }\n };\n\n const isRTL = () => document.documentElement.dir === 'rtl';\n\n const defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n };\n\n const execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n const SELECTOR_STICKY_CONTENT = '.sticky-top';\n\n const getWidth = () => {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n };\n\n const hide = (width = getWidth()) => {\n _disableOverFlow(); // give padding to element to balances the hidden scrollbar width\n\n\n _setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth\n\n\n _setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);\n\n _setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);\n };\n\n const _disableOverFlow = () => {\n const actualValue = document.body.style.overflow;\n\n if (actualValue) {\n Manipulator__default['default'].setDataAttribute(document.body, 'overflow', actualValue);\n }\n\n document.body.style.overflow = 'hidden';\n };\n\n const _setElementAttributes = (selector, styleProp, callback) => {\n const scrollbarWidth = getWidth();\n SelectorEngine__default['default'].find(selector).forEach(element => {\n if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n const actualValue = element.style[styleProp];\n const calculatedValue = window.getComputedStyle(element)[styleProp];\n Manipulator__default['default'].setDataAttribute(element, styleProp, actualValue);\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;\n });\n };\n\n const reset = () => {\n _resetElementAttributes('body', 'overflow');\n\n _resetElementAttributes('body', 'paddingRight');\n\n _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');\n\n _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');\n };\n\n const _resetElementAttributes = (selector, styleProp) => {\n SelectorEngine__default['default'].find(selector).forEach(element => {\n const value = Manipulator__default['default'].getDataAttribute(element, styleProp);\n\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp);\n } else {\n Manipulator__default['default'].removeDataAttribute(element, styleProp);\n element.style[styleProp] = value;\n }\n });\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n const Default$1 = {\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: document.body,\n // give the choice to place backdrop under different elements\n clickCallback: null\n };\n const DefaultType$1 = {\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: 'element',\n clickCallback: '(function|null)'\n };\n const NAME$1 = 'backdrop';\n const CLASS_NAME_BACKDROP = 'modal-backdrop';\n const CLASS_NAME_FADE$1 = 'fade';\n const CLASS_NAME_SHOW$1 = 'show';\n const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$1}`;\n\n class Backdrop {\n constructor(config) {\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n if (this._config.isAnimated) {\n reflow(this._getElement());\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW$1);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW$1);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n } // Private\n\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = CLASS_NAME_BACKDROP;\n\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$1);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _getConfig(config) {\n config = { ...Default$1,\n ...(typeof config === 'object' ? config : {})\n };\n config.rootElement = config.rootElement || document.body;\n typeCheckConfig(NAME$1, config, DefaultType$1);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n this._config.rootElement.appendChild(this._getElement());\n\n EventHandler__default['default'].on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler__default['default'].off(this._element, EVENT_MOUSEDOWN);\n\n this._getElement().parentNode.removeChild(this._element);\n\n this._isAppended = false;\n }\n\n _emulateAnimation(callback) {\n if (!this._config.isAnimated) {\n execute(callback);\n return;\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement());\n EventHandler__default['default'].one(this._getElement(), 'transitionend', () => execute(callback));\n emulateTransitionEnd(this._getElement(), backdropTransitionDuration);\n }\n\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal';\n const DATA_KEY = 'bs.modal';\n const EVENT_KEY = `.${DATA_KEY}`;\n const DATA_API_KEY = '.data-api';\n const ESCAPE_KEY = 'Escape';\n const Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n };\n const DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n };\n const EVENT_HIDE = `hide${EVENT_KEY}`;\n const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;\n const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n const EVENT_SHOW = `show${EVENT_KEY}`;\n const EVENT_SHOWN = `shown${EVENT_KEY}`;\n const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\n const EVENT_RESIZE = `resize${EVENT_KEY}`;\n const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;\n const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;\n const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`;\n const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;\n const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n const CLASS_NAME_OPEN = 'modal-open';\n const CLASS_NAME_FADE = 'fade';\n const CLASS_NAME_SHOW = 'show';\n const CLASS_NAME_STATIC = 'modal-static';\n const SELECTOR_DIALOG = '.modal-dialog';\n const SELECTOR_MODAL_BODY = '.modal-body';\n const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]';\n const SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal extends BaseComponent__default['default'] {\n constructor(element, config) {\n super(element);\n this._config = this._getConfig(config);\n this._dialog = SelectorEngine__default['default'].findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._isShown = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n } // Getters\n\n\n static get Default() {\n return Default;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if (this._isAnimated()) {\n this._isTransitioning = true;\n }\n\n const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, {\n relatedTarget\n });\n\n if (this._isShown || showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event));\n EventHandler__default['default'].on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler__default['default'].one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(() => this._showElement(relatedTarget));\n }\n\n hide(event) {\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n\n const isAnimated = this._isAnimated();\n\n if (isAnimated) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n EventHandler__default['default'].off(document, EVENT_FOCUSIN);\n\n this._element.classList.remove(CLASS_NAME_SHOW);\n\n EventHandler__default['default'].off(this._element, EVENT_CLICK_DISMISS);\n EventHandler__default['default'].off(this._dialog, EVENT_MOUSEDOWN_DISMISS);\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated);\n }\n\n dispose() {\n [window, this._dialog].forEach(htmlElement => EventHandler__default['default'].off(htmlElement, EVENT_KEY));\n\n this._backdrop.dispose();\n\n super.dispose();\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n EventHandler__default['default'].off(document, EVENT_FOCUSIN);\n }\n\n handleUpdate() {\n this._adjustDialog();\n } // Private\n\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n });\n }\n\n _getConfig(config) {\n config = { ...Default,\n ...Manipulator__default['default'].getDataAttributes(this._element),\n ...config\n };\n typeCheckConfig(NAME, config, DefaultType);\n return config;\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated();\n\n const modalBody = SelectorEngine__default['default'].findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.scrollTop = 0;\n\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n if (isAnimated) {\n reflow(this._element);\n }\n\n this._element.classList.add(CLASS_NAME_SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus();\n }\n\n this._isTransitioning = false;\n EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated);\n }\n\n _enforceFocus() {\n EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop\n\n EventHandler__default['default'].on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target && this._element !== event.target && !this._element.contains(event.target)) {\n this._element.focus();\n }\n });\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault();\n this.hide();\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition();\n }\n });\n } else {\n EventHandler__default['default'].off(this._element, EVENT_KEYDOWN_DISMISS);\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler__default['default'].on(window, EVENT_RESIZE, () => this._adjustDialog());\n } else {\n EventHandler__default['default'].off(window, EVENT_RESIZE);\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n\n this._resetAdjustments();\n\n reset();\n EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);\n });\n }\n\n _showBackdrop(callback) {\n EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (this._config.backdrop === true) {\n this.hide();\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n }\n });\n\n this._backdrop.show(callback);\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE_PREVENTED);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog);\n EventHandler__default['default'].off(this._element, 'transitionend');\n EventHandler__default['default'].one(this._element, 'transitionend', () => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n EventHandler__default['default'].one(this._element, 'transitionend', () => {\n this._element.style.overflowY = '';\n });\n emulateTransitionEnd(this._element, modalTransitionDuration);\n }\n });\n emulateTransitionEnd(this._element, modalTransitionDuration);\n\n this._element.focus();\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`;\n }\n\n if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {\n this._element.style.paddingRight = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getInstance(this) || new Modal(this, typeof config === 'object' ? config : {});\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n\n }\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler__default['default'].one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler__default['default'].one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n const data = Modal.getInstance(target) || new Modal(target);\n data.toggle(this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\n defineJQueryPlugin(Modal);\n\n return Modal;\n\n})));\n//# sourceMappingURL=modal.js.map\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","(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 distances = [];\n for (var index = 0; index < this.xNumSteps.length - 1; index++) {\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 = 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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import * as Collapse from 'bootstrap/js/dist/collapse';\n\nlet expandableList = {};\n\nexpandableList = {\n expandByDefaultInDesktop: function (elementId) {\n if (window.innerWidth > 990) {\n const myCollapse = document.getElementById(elementId);\n if (myCollapse !== null && !myCollapse.classList.contains(\"show\")) {\n const bsCollapse = new Collapse(myCollapse, {\n close: true\n });\n }\n }\n },\n listenToEvents: function () {\n var mobileNav = document.getElementById('mobile-nav')\n \n mobileNav.addEventListener('show.bs.collapse', function (e) {\n if (e.target == mobileNav) {\n document.body.classList.add('mobilemenuopen');\n }\n });\n mobileNav.addEventListener('shown.bs.collapse', function () {\n var mobileNav = document.getElementById('mobile-nav');\n var siteHeader = document.getElementById('siteheader');\n var calculatedHeight = siteHeader.getBoundingClientRect().top + window.scrollY + 70; //70 = height of header nav bar\n\n if (siteHeader.getBoundingClientRect().top == 0) {\n calculatedHeight = 70;\n }\n var height = `calc(100vh - ${calculatedHeight}px)`;\n mobileNav.style.height = height;\n\n });\n mobileNav.addEventListener('hide.bs.collapse', function (e) {\n if (e.target == mobileNav) {\n document.body.classList.remove('mobilemenuopen');\n }\n\n });\n\n },\n hideMenu: function () {\n const mobileMenu = document.getElementById(\"mobile-nav\");\n if (mobileMenu !== null && mobileMenu.classList.contains(\"show\")) {\n const bsCollapse = new Collapse(mobileMenu, {\n close: true\n });\n }\n }\n};\n\nexport { expandableList };","import * as noUiSlider from 'nouislider';\n\nlet slider = {\n sliderEl: null,\n noUiSliderInstance: null,\n initSlider: function (elementId) {\n this.sliderEl = document.getElementById(elementId);\n if (this.noUiSliderInstance !== null) {\n this.noUiSliderInstance.destroy();\n }\n\n if (this.sliderEl) {\n this.noUiSliderInstance = noUiSlider.create(this.sliderEl, {\n start: [this.sliderEl.dataset.min, this.sliderEl.dataset.max],\n connect: true,\n step: 100, \n range: {\n 'min': parseInt(this.sliderEl.dataset.min),\n 'max': parseInt(this.sliderEl.dataset.max)\n }\n });\n this.registerUpdateEvent();\n this.registerChangeEvent(); \n this.registerInputChangeEvent(); \n this.preventNonNumericInput();\n }\n },\n registerUpdateEvent: function () {\n const marginMaxInput = document.getElementById('rent-max-input');\n this.sliderEl.noUiSlider.on('update', function (values, handle) {\n var value = parseInt(values[handle]).toLocaleString('sv-SE', { maximumFractionDigits: 0 });\n if (handle) {\n\n marginMaxInput.value = value;\n }\n });\n },\n registerChangeEvent: function () {\n const marginMaxInput = document.getElementById('rent-max-input');\n var event = new Event('change');\n this.sliderEl.noUiSlider.on('change', function (values, handle) {\n var value = parseInt(values[handle]).toFixed(0);\n\n if (handle) {\n marginMaxInput.value = parseInt(value).toLocaleString('sv-SE');\n marginMaxInput.dispatchEvent(event);\n }\n });\n },\n registerInputChangeEvent: function () {\n const marginMaxInput = document.getElementById('rent-max-input');\n const sliderInstance = this.sliderEl.noUiSlider;\n\n marginMaxInput.addEventListener('change', function () {\n let newValue = parseInt(marginMaxInput.value.replace(/\\s/g, '')); \n const sliderMin = parseInt(sliderInstance.options.range.min);\n const sliderMax = parseInt(sliderInstance.options.range.max);\n\n if (isNaN(newValue) || newValue < sliderMin) {\n newValue = sliderMin;\n }\n if (newValue > sliderMax) {\n newValue = sliderMax;\n }\n\n newValue = Math.ceil(newValue / 100) * 100;\n\n let currentMin = sliderInstance.get()[0];\n sliderInstance.set([currentMin, newValue]);\n slider.sliderEl.setAttribute('title', `Värdet är ${newValue.toLocaleString('sv-SE')} kr`);\n });\n },\n preventNonNumericInput: function () {\n const marginMaxInput = document.getElementById('rent-max-input');\n marginMaxInput.addEventListener('input', function () {\n let value = marginMaxInput.value.replace(/\\s/g, ''); \n value = value.replace(/\\D/g, '');\n marginMaxInput.value = value ? parseInt(value).toLocaleString('sv-SE') : ''; \n });\n },\n resetSlider: function () {\n this.sliderEl.noUiSlider.set([this.sliderEl.dataset.min, this.sliderEl.dataset.max], true);\n }\n};\n\nexport { slider };","export function clone(obj) {\n const copy = {}\n for (var attr in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, attr)) copy[attr] = obj[attr]\n }\n return copy\n}\n\nexport function defaults(obj, defaultObject) {\n obj = clone(obj || {})\n for (const k in defaultObject) {\n if (obj[k] === undefined) obj[k] = defaultObject[k]\n }\n return obj\n}\n\nexport function insertAfter(refNode, nodeToInsert) {\n const parent = refNode.parentNode\n\n parent.appendChild(nodeToInsert)\n\n}\n\nexport function insertBefore(refNode, nodeToInsert) {\n const parent = refNode.parentNode\n parent.insertBefore(nodeToInsert, refNode)\n}\n\nexport function forEach(items, fn) {\n if (!items) return\n if (items.forEach) {\n items.forEach(fn)\n } else {\n for (let i = 0; i < items.length; i++) {\n fn(items[i], i, items)\n }\n }\n}\n\nexport function debounce(ms, fn) {\n let timeout\n const debouncedFn = function () {\n clearTimeout(timeout)\n timeout = setTimeout(fn, ms)\n }\n return debouncedFn\n}\n\nexport function loadJs(sourceUrl) {\n if (sourceUrl != null) {\n var tag = document.createElement('script');\n tag.src = sourceUrl;\n tag.type = \"text/javascript\";\n document.body.appendChild(tag);\n }\n}\n\nexport function isDevice() {\n return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i.test(navigator.userAgent);\n}\n\nexport function scrollParentToElement(parent) {\n if (parent == null) {\n return;\n }\n const element = document.querySelector('.' + parent.className + ' ul li.active');\n\n if (element != null) {\n parent.scrollTo({\n top: element.offsetTop,\n behavior: \"smooth\"\n });\n }\n\n\n}\nexport function loadInlineScript(inlinescript) {\n // create JS library script element\n var script = document.createElement(\"script\");\n script.innerText = inlinescript;\n document[\"body\"].appendChild(script);\n}\nexport async function loadScript(scriptPath) {\n // check list - if already loaded we can ignore\n if (loadedScripts[scriptPath] === false) {\n return new Promise(function (resolve, reject) {\n // wait a bit?\n setTimeout(function () {\n resolve();\n }, 1500);\n\n });\n }\n\n if (loadedScripts[scriptPath]) {\n // return 'empty' promise\n return new Promise(function (resolve, reject) {\n resolve();\n });\n }\n\n return new Promise(function (resolve, reject) {\n // create JS library script element\n var script = document.createElement(\"script\");\n script.src = scriptPath;\n script.type = \"text/javascript\";\n\n\n // flag as loading/loaded\n loadedScripts[scriptPath] = false;\n\n // if the script returns okay, return resolve\n script.onload = function () {\n loadedScripts[scriptPath] = true;\n resolve(scriptPath);\n };\n\n // if it fails, return reject\n script.onerror = function () {\n reject(scriptPath);\n }\n // scripts will load at end of body\n document[\"body\"].appendChild(script);\n });\n}\n// store list of what scripts we've loaded\nconst loadedScripts = [];\n","import { loadScript, scrollToElement } from \"./utils\";\n\nlet maps = {\n loadScript: async function () {\n return await loadScript('https://maps.googleapis.com/maps/api/js?key=AIzaSyDMNt8ykDMbtqdOarTG6wDjmAwgDeyUmzw&callback=console.debug&libraries=marker');\n },\n\n \n activeMarker: -1,\n activeType: null,\n isClicked: false,\n instanceLookup: new Map(),\n currentMap: null,\n config: {\n streetViewControl: false,\n mapTypeControl: false,\n mapId: \"30cea62ee751eb35\", \n },\n\n hoverCallback: \"\",\n selectMarker: function (marker, selected) {\n maps.toggleActiveMarker(marker.id, true);\n },\n selectMarkerById: function (markerId, selected, shouldMarkAsCurrent) {\n maps.toggleActiveMarker(markerId, true);\n },\n \n //återvinningsplats\n zoomToMarker: function (markerId, lat, lng, level = 12) {\n if (lat && lng) {\n let position = new google.maps.LatLng(lat, lng);\n maps.currentMap.panTo(position);\n google.maps.event.addListenerOnce(maps.currentMap, \"idle\", function () {\n maps.currentMap.setZoom(level);\n });\n } \n if (markerId) {\n setTimeout(() => {\n maps.toggleActiveMarker(markerId, true);\n }, 500);\n\n }\n },\n\n //avbrottskartan\n setKmlLayers: function (element, layers) {\n var map = maps.instanceLookup.get(element);\n\n if (!map) {\n return;\n }\n\n var attributes = { preserveViewport: true };\n if (element && layers) {\n var arr = [];\n\n var timestamp = new Date();\n\n layers.forEach(e => {\n var kmlUrl = e + '&' + timestamp.getTime();\n var kmlLayer = new google.maps.KmlLayer(kmlUrl, attributes);\n kmlLayer.setMap(map);\n arr.push(kmlLayer);\n }\n );\n\n maps.instanceLookup.set(element + '-kml', arr);\n\n }\n },\n //avbrottskartan\n clearKmlLayers: function (element) {\n\n var layers = maps.instanceLookup.get(element + '-kml');\n\n if (layers) {\n layers.forEach(e => e.setMap(null))\n }\n },\n\n //avbrottskartan\n initStaticMap: async function (elementId, mapConfig) {\n var element = document.getElementById(elementId);\n\n if (!element) {\n return;\n }\n\n var config = {\n ...maps.config,\n center: { lat: mapConfig.lat, lng: mapConfig.lng },\n zoom: mapConfig.zoom \n };\n\n const { Map } = await google.maps.importLibrary(\"maps\");\n\n var map = new google.maps.Map(element, config);\n maps.instanceLookup.set(elementId, map)\n \n },\n \n\n //Återvinningsplatser\n resetActiveIcons: function () {\n maps.activeMarker = -1;\n document.querySelectorAll('.custom-marker.active').forEach(marker => {\n marker.classList.remove(\"active\");\n });\n document.querySelectorAll('.area__link a').forEach(link => {\n link.classList.remove('active');\n });\n },\n\n hoverType: function (typeName) {\n if (maps.isClicked) return;\n document.querySelectorAll('.custom-marker').forEach(marker => {\n if (!typeName || marker.classList.contains(typeName)) {\n marker.classList.remove(\"hided\");\n } else {\n marker.classList.add(\"hided\");\n }\n });\n },\n \n setActiveType: function (typeName) {\n if (maps.activeType === typeName) {\n maps.activeType = null;\n maps.isClicked = false;\n\n document.querySelectorAll('.custom-marker').forEach(marker => {\n marker.classList.remove(\"clicked\");\n marker.classList.remove(\"hided\"); \n });\n }\n else {\n maps.activeType = typeName;\n maps.isClicked = true;\n\n document.querySelectorAll('.custom-marker').forEach(marker => {\n if (marker.classList.contains(typeName)) {\n marker.classList.remove(\"hided\");\n marker.classList.add(\"clicked\");\n } else {\n marker.classList.add(\"hided\");\n marker.classList.remove(\"clicked\");\n }\n });\n }\n },\n\n activeItem: function (currentMarker) {\n maps.resetActiveIcons();\n maps.activeMarker = currentMarker;\n\n maps.toggleActiveMarker(currentMarker, true);\n\n\n if (this.dotNetInstance && this.clickCallback) {\n this.dotNetInstance.invokeMethodAsync(this.clickCallback, currentMarker);\n }\n },\n\n initDotNetInstance: function (instance, clickCallback, hoverCallback) {\n this.dotNetInstance = instance;\n this.clickCallback = clickCallback;\n this.hoverCallback = hoverCallback;\n },\n\n //Lediga lägenheter\n //Lediga lokaler\n initMapAppartments: async function (dotNetInstance, places, elementId, clickCallback, hoverCallback, clickToNav = false) {\n document.getElementsByTagName(\"body\")[0].classList.remove('fullscreen');\n\n if (!places) {\n return;\n }\n\n var element = document.getElementById(elementId);\n if (!element) {\n console.log('[MAP] ' + elementId + ': element is null!');\n return;\n }\n maps.initDotNetInstance(dotNetInstance, clickCallback, hoverCallback);\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n\n maps.currentMap = new google.maps.Map(element, maps.config);\n var bounds = new google.maps.LatLngBounds();\n\n var infoWindow = new google.maps.InfoWindow();\n var infoWindowBottomLeft = document.getElementById(\"info-window-bottom-left\");\n var activeMarker = null;\n places.forEach(function (item, index) {\n if (item.latitude && item.longitude) {\n\n const latlng = new google.maps.LatLng(item.latitude, item.longitude);\n const customContent = document.createElement(\"div\");\n customContent.classList.add(\"custom-marker\");\n customContent.classList.add(\"housing\");\n customContent.setAttribute(\"data-id\", String(item.objectId));\n\n const marker = new AdvancedMarkerElement({\n map: maps.currentMap,\n position: latlng,\n content: customContent,\n title: item.address\n });\n marker.addListener('click', function () {\n var apartmentElement = document.getElementById(`apartment-${item.objectId}`);\n\n if (apartmentElement) {\n // Om användaren klickar på samma aktiva element -> avaktivera det\n if (maps.activeMarker === item.objectId) {\n maps.toggleActiveMarker(item.objectId, false);\n maps.activeMarker = null; // Nollställ aktiv markör\n apartmentElement.classList.remove('active');\n return;\n }\n\n // Inaktivera alla tidigare aktiva markörer\n document.querySelectorAll('.apartment-item').forEach(el => el.classList.remove('active'));\n maps.resetActiveIcons();\n\n // Aktivera den nya markören\n apartmentElement.classList.add('active');\n maps.activeItem(item.objectId); \n var closeButton = apartmentElement.querySelector('.icon-close');\n if (closeButton) {\n closeButton.addEventListener('click', function () {\n apartmentElement.classList.remove('active');\n maps.toggleActiveMarker(item.objectId, false);\n maps.activeMarker = null; \n if (dotNetInstance && clickCallback) {\n dotNetInstance.invokeMethodAsync(clickCallback, null);\n }\n }, { once: true }); \n }\n }\n\n if (dotNetInstance && clickCallback) {\n dotNetInstance.invokeMethodAsync(clickCallback, item.objectId);\n }\n });\n customContent.addEventListener('mouseover', function () {\n customContent.classList.add(\"hover\");\n if (dotNetInstance && hoverCallback) {\n dotNetInstance.invokeMethodAsync(hoverCallback, item.objectId, true);\n }\n });\n\n customContent.addEventListener('mouseout', function () {\n customContent.classList.remove(\"hover\"); \n if (dotNetInstance && hoverCallback) {\n dotNetInstance.invokeMethodAsync(hoverCallback, item.objectId, false);\n }\n });\n bounds.extend(latlng);\n }\n });\n\n maps.currentMap.fitBounds(bounds);\n },\n \n\n //Används vid hover listan bostadsområden\n //Lediga lokaler\n //Används för listan vid kartan på lediga lägenheter\n toggleHoverMarker: function(id, activate) {\n var marker = document.querySelector(`.custom-marker[data-id='${id}']`);\n\n if (marker) {\n if (activate) {\n marker.classList.add(\"hover\");\n } else {\n marker.classList.remove(\"hover\");\n }\n }\n },\n toggleActiveMarker: function (id, activate) {\n var marker = document.querySelector(`.custom-marker[data-id='${id}']`);\n if (marker) {\n if (activate) {\n marker.classList.add(\"active\");\n } else {\n marker.classList.remove(\"active\");\n }\n }\n },\n //Används för att märka ut bostadsområden på kartan\n initMapMultiple: async function (dotNetInstance, places, hoverCallback) {\n \n if (!places) {\n return;\n }\n\n if (places.length > 0 && typeof places === \"string\") {\n places = JSON.parse(places);\n }\n\n maps.initDotNetInstance(dotNetInstance, \"\", hoverCallback);\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n\n const bounds = new google.maps.LatLngBounds();\n\n maps.currentMap = new google.maps.Map(document.getElementById(\"neighborhoodMap\"), maps.config);\n places.forEach(function (item) {\n if (item.latitud && item.longitud) {\n const latlng = new google.maps.LatLng(item.latitud, item.longitud);\n const customContent = document.createElement(\"div\");\n customContent.classList.add(\"custom-marker\");\n customContent.classList.add(\"housing\");\n customContent.setAttribute(\"data-id\", item.id);\n\n const marker = new AdvancedMarkerElement({\n map: maps.currentMap,\n position: latlng,\n content: customContent,\n title: item.title\n });\n \n marker.addListener(\"click\", () => {\n if (item.url) {\n window.location.href = item.url;\n }\n });\n customContent.addEventListener('mouseover', function () {\n customContent.classList.add(\"hover\");\n if (dotNetInstance && hoverCallback) {\n dotNetInstance.invokeMethodAsync(hoverCallback, item.id, true);\n }\n });\n\n customContent.addEventListener('mouseout', function () {\n customContent.classList.remove(\"hover\");\n if (dotNetInstance && hoverCallback) {\n dotNetInstance.invokeMethodAsync(hoverCallback, item.id, false);\n }\n });\n bounds.extend(latlng); \n }\n });\n maps.currentMap.fitBounds(bounds, { padding: 50 });\n },\n\n //återvinningsplatser\n initMapRecycle: async function (dotNetInstance, places, elementId, clickCallback, hoverCallback, clickToNav = false) {\n document.getElementsByTagName(\"body\")[0].classList.remove('fullscreen');\n maps.markers = [];\n maps.initDotNetInstance(dotNetInstance, clickCallback, hoverCallback);\n\n if (!places) {\n return;\n }\n if (places.length > 0 && typeof (places) === \"string\") {\n places = JSON.parse(places);\n }\n\n var element = document.getElementById(elementId);\n\n if (!element) {\n console.log('[MAP] recycle map: element is null!');\n return;\n }\n\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n\n maps.currentMap = new google.maps.Map(element, maps.config);\n\n var bounds = new google.maps.LatLngBounds();\n\n places.forEach(function (item) {\n if (item.latitud && item.longitud) {\n const latlng = new google.maps.LatLng(item.latitud, item.longitud);\n const customContent = document.createElement(\"div\");\n customContent.classList.add(\"custom-marker\");\n customContent.classList.add(item.recyclePlaceType);\n customContent.setAttribute(\"data-id\", item.id);\n var zindex = item.recyclePlaceType == \"station\" ? 10 : 1;\n const marker = new AdvancedMarkerElement({\n map: maps.currentMap,\n position: latlng,\n content: customContent,\n title: item.name,\n zIndex: zindex\n });\n\n //återvinningsplatser-alla\n const placeList = document.querySelector('.place-list');\n\n if (placeList) {\n placeList.addEventListener(\"mouseleave\", function () {\n maps.isClicked = false;\n });\n }\n marker.addListener('click', function () { \n var currentMarker = item.id; \n //återvinningsplatser\n maps.activeItem(currentMarker);\n elementscroll.overIdScroll(\"RecyclingGuideMap\", 150, true);\n });\n\n\n customContent.addEventListener('mouseover', function () {\n customContent.classList.add(\"hover\"); \n if (hoverCallback) {\n dotNetInstance.invokeMethodAsync(hoverCallback, item.id, true);\n }\n });\n\n customContent.addEventListener('mouseout', function () {\n customContent.classList.remove(\"hover\");\n if (hoverCallback) {\n dotNetInstance.invokeMethodAsync(hoverCallback, item.id, false);\n }\n });\n\n bounds.extend(latlng);\n }\n });\n \n maps.currentMap.fitBounds(bounds);\n }\n};\n\nexport { maps };\n","let metermaps = {\n\n map: null,\n markers: [],\n instanceLookup: new Map(),\n markersLookup: new Map(),\n SelectedItem: \"\",\n constants: { fillOpacity: 0.3, activeFillOpacity: 0.1, strokeWidth: 1, activeStrokeWidth: 1, hoverStrokeWidth: 2 },\n colorsLookup: {\n 0: \"#8ec9e2\",\n 1: \"#ffc960\",\n 2: \"#bbd197\",\n },\n getIcon: function (name, active) {\n\n var size = active ? 20 : 10;\n\n return {\n url: '/images/maps/map-pins/'.concat(name).concat('.svg'),\n size: new google.maps.Size(size, size),\n scaledSize: new google.maps.Size(size, size),\n anchor: new google.maps.Point(size / 2, size / 2),\n labelOrigin: new google.maps.Point(size / 2, size / 2)\n };\n },\n currentDotNetInstance: {},\n clickCallback: \"\",\n hoverCallback: \"\",\n searchCallback: \"SearchCallback\",\n selectFeature: function (feature) {\n\n //console.log('Select feature: ', feature, status);\n metermaps.SelectedItem = \"\";\n if (feature) {\n metermaps.SelectedItem = feature.getProperty('name');\n\n metermaps.map.data.forEach(function (ft) {\n var status = 0;\n if (ft) {\n status = ft.getProperty('status');\n }\n //console.log(feature.getProperty('status'));\n metermaps.map.data.overrideStyle(ft, { strokeColor: metermaps.colorsLookup[status], strokeWidth: metermaps.constants.strokeWidth, fillOpacity: metermaps.constants.fillOpacity, zIndex: 1 })\n });\n\n\n var element = document.getElementById('ea-123456');\n\n if (element) {\n element.classList.remove(\"show\");\n element.classList.add(\"hide\");\n }\n\n var test = new Map();\n feature.forEachProperty(function (value, property) {\n //console.log(property, ':', value);\n test.set(property, value);\n });\n\n const obj2 = Object.fromEntries(test);\n metermaps.map.data.overrideStyle(feature, { visible: true, strokeColor: \"#000000\", fillOpacity: metermaps.constants.activeFillOpacity, zIndex: 2 });\n metermaps.currentDotNetInstance.invokeMethodAsync(metermaps.clickCallback, obj2);\n }\n else {\n metermaps.currentDotNetInstance.invokeMethodAsync(metermaps.clickCallback, null);\n }\n\n },\n filterGeoMap: function (elementId, selected) {\n\n // console.log('[MAP] filterGeoMap ', selected);\n var map = metermaps.instanceLookup.get(elementId);\n\n //map.data.revertStyle();\n //map.data.overrideStyle(event.feature, { strokeWeight: 8 });\n\n\n map.data.forEach(feature => {\n\n\n var status = feature.getProperty('status');\n\n console.log('[MAP] filterGeoMap ', status);\n\n if (selected.includes(status)) {\n map.data.overrideStyle(feature, { visible: true })\n }\n else {\n map.data.overrideStyle(feature, { visible: false })\n }\n\n });\n },\n selectGeoMapFeature: function (elementId) {\n // console.log('[MAP] selectGeoMapFeature ', elementId);\n var map = metermaps.instanceLookup.get(elementId);\n\n map.data.forEach(feature => {\n\n\n var status = feature.getProperty('name');\n\n // console.log('[MAP] select ', status);\n\n var geometry = feature.getGeometry();\n\n geometry.forEachLatLng(function (la, lo) {\n //console.log('lalo', la.toJSON(), la);\n });\n\n var currPosition = new google.maps.LatLng(59.146, 17.50);\n\n if (geometry instanceof google.maps.LatLng) {\n //console.log('[MAP] geocheck ll ', geometry);\n } else if (geometry instanceof google.maps.Data.Point) {\n //callback.call(thisArg, geometry.get());\n //console.log('[MAP] geocheck p', geometry.get());\n }\n else {\n geometry.getArray().forEach(function (g) {\n //processPoints(g, callback, thisArg);\n var coords = g.getArray();\n //console.log('[MAP] geometry getarray', g, coords, coords.length);\n //console.log('coords:', coords);\n var myarr = [];\n coords.forEach(function (cc) {\n //var t1 = Array.from(cc);\n //console.log('cc:', cc.lat())\n myarr.push({ lat: cc.lat(), lng: cc.lng() });\n });\n\n // console.log('myarr:', myarr);\n\n const coordPolygon = new google.maps.Polygon({\n paths: myarr\n });\n\n const inside = google.maps.geometry.poly.containsLocation(\n currPosition,\n coordPolygon\n );\n\n // console.log('is within', inside, currPosition);\n\n if (inside) {\n map.data.overrideStyle(feature, { visible: true, strokeWeight: 4 });\n }\n else {\n map.data.overrideStyle(feature, { visible: true, strokeWeight: 2 });\n }\n\n });\n }\n });\n\n },\n selectGeoMapFeatureByCoords: function (elementId, place) {\n\n // console.log('[MAP] selectGeoMapFeature ', elementId, place);\n\n if (!place.geometry || !place.geometry.location) {\n // User entered the name of a Place that was not suggested and\n // pressed the Enter key, or the Place Details request failed.\n // window.alert(\"No details available for input: '\" + place.name + \"'\");\n var result = { PlaceName: place.name, Unknown: true };\n console.log('no place found2: ', result);\n metermaps.currentDotNetInstance.invokeMethodAsync(metermaps.searchCallback, { PlaceName: place.name, Unknown: true });\n return;\n }\n\n\n var lat = place.geometry.location.lat();\n var lng = place.geometry.location.lng();\n\n var map = metermaps.instanceLookup.get(elementId);\n\n // add marker\n var latlng = new google.maps.LatLng(lat, lng);\n\n var marker = metermaps.markersLookup.get(elementId);\n\n if (marker) {\n // console.log('[MAP] marker found', marker);\n marker.setMap(null);\n }\n\n\n var newMarker = new google.maps.Marker({\n position: latlng,\n map: map,\n icon: maps.getIcon(maps.icons.default, false),\n\n });\n\n newMarker.addListener('mouseover', function (e) {\n newMarker.setOpacity(0.8);\n newMarker.setIcon(maps.getIcon(maps.icons.default, true));\n });\n\n newMarker.addListener('mouseout', function () {\n newMarker.setOpacity(1.0);\n newMarker.setIcon(maps.getIcon(maps.icons.default, false));\n });\n\n // console.log('[MAP] setting marker', newMarker);\n newMarker.setMap(map);\n\n //maps.markers.push(newMarker);\n metermaps.markersLookup.set(elementId, newMarker);\n map.setCenter(latlng);\n\n var anyselected = false;\n\n map.data.forEach(feature => {\n\n\n var status = feature.getProperty('name');\n\n // console.log('[MAP] select ', status);\n\n var geometry = feature.getGeometry();\n\n var currPosition = new google.maps.LatLng(lat, lng);\n\n\n geometry.getArray().forEach(function (g) {\n var coords = g.getArray();\n\n var myarr = [];\n coords.forEach(function (cc) {\n myarr.push({ lat: cc.lat(), lng: cc.lng() });\n });\n\n\n //console.log('paths:', paths1);\n //console.log('myarr:', myarr);\n\n const coordPolygon = new google.maps.Polygon({\n paths: myarr\n });\n\n const inside = google.maps.geometry.poly.containsLocation(\n currPosition,\n coordPolygon\n );\n\n //console.log('yo is within', inside, currPosition);\n\n if (inside) {\n //map.data.overrideStyle(feature, { visible: true, strokeWeight: 4 });\n // console.log('select', feature);\n metermaps.selectFeature(feature);\n anyselected = true;\n }\n else {\n //map.data.overrideStyle(feature, { visible: true, strokeWeight: 1 });\n }\n });\n });\n\n if (!anyselected) {\n // none selected\n metermaps.selectFeature(null);\n metermaps.currentDotNetInstance.invokeMethodAsync(metermaps.searchCallback, { placeName: place.name, unknown: false });\n }\n else {\n metermaps.currentDotNetInstance.invokeMethodAsync(metermaps.searchCallback, { clear: true });\n }\n\n },\n initGeoMap: function (dotNetInstance, elementId, mapConfig, clickCallback) {\n\n const host = window.location.protocol.concat('//', window.location.host);\n // console.log('[MAP] initGeoMap', mapConfig, host);\n metermaps.currentDotNetInstance = dotNetInstance;\n metermaps.clickCallback = clickCallback;\n //maps.initDotNetInstance(dotNetInstance, clickCallback, clickCallback);\n\n var searchField = document.getElementById('pac-input');\n if (searchField) {\n searchField.value = '';\n }\n\n var element = document.getElementById(elementId);\n\n if (!element) {\n return;\n }\n\n\n var config = {\n center: { lat: mapConfig.lat, lng: mapConfig.lng },\n zoom: 11,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapTypeControl: false,\n scaleControl: false,\n overviewMapControl: false,\n streetViewControl: false,\n panControl: false,\n fullscreenControl: false,\n zoomControl: true,\n zoomControlOptions: {\n position: google.maps.ControlPosition.RIGHT_BOTTOM,\n },\n overviewMapControlOptions: { opened: true },\n styles: maps.config.styles\n }\n\n\n var map = new google.maps.Map(element, config);\n metermaps.map = map;\n map.data.loadGeoJson(\n host.concat(mapConfig.geoJson)\n );\n\n const iconsLookup = {\n 0: maps.icons.planned,\n 1: maps.icons.ongoing,\n 2: maps.icons.completed\n };\n\n map.data.setStyle(function (feature) {\n var status = feature.getProperty('status');\n return {\n fillColor: metermaps.colorsLookup[status],\n strokeWeight: metermaps.constants.strokeWidth,\n strokeColor: metermaps.colorsLookup[status],\n fillOpacity: metermaps.constants.fillOpacity,\n zIndex: 1\n };\n });\n\n map.data.addListener('addfeature', function (e) {\n var status = e.feature.getProperty('status');\n var phase = e.feature.getProperty('phase');\n var displayName = e.feature.getProperty('displayName');\n var bounds = new google.maps.LatLngBounds();\n e.feature.getGeometry().getArray().forEach(function (path) {\n path.getArray().forEach(function (latLng) {\n bounds.extend(latLng);\n })\n });\n\n var polypoint = bounds.getCenter();\n //console.log(polypoint);\n\n var marker = new google.maps.Marker({\n map: map,\n position: { lat: polypoint.lat(), lng: polypoint.lng() },\n icon: metermaps.getIcon(iconsLookup[status], false),\n label: { text: displayName, className: 'marker-label-' + status },\n\n });\n\n marker.addListener('click', function (ev) {\n //console.log('Map marker clicked: ', e.feature);\n metermaps.selectFeature(e.feature);\n });\n\n new google.maps.Marker(marker);\n\n });\n\n map.data.addListener('mouseover', function (event) {\n map.addListener('click', function (event) {\n //console.log('Map clicked: ', event);\n metermaps.selectFeature(null);\n });\n\n map.data.addListener('click', function (event) {\n //console.log('Map data clicked: ', event.feature);\n metermaps.selectFeature(event.feature);\n });\n\n if (!metermaps.SelectedItem.startsWith(event.feature.getProperty('name'))) {\n metermaps.map.data.overrideStyle(event.feature, { strokeOpacity: 0.7, fillOpacity: metermaps.constants.activeFillOpacity, strokeWeight: metermaps.constants.strokeWidth });\n\n map.data.addListener('mouseout', function (event) {\n if (!metermaps.SelectedItem.startsWith(event.feature.getProperty('name'))) {\n\n metermaps.map.data.overrideStyle(event.feature, { strokeOpacity: 1.0, fillOpacity: metermaps.constants.fillOpacity, strokeWeight: metermaps.constants.strokeWidth });\n }\n });\n }\n });\n\n metermaps.instanceLookup.set(elementId, map);\n\n let center = { lat: 59.12, lng: 17.54 };\n // Create a bounding box with sides ~10km away from the center point\n const defaultBounds = {\n north: center.lat + 0.3,\n south: center.lat - 0.3,\n east: center.lng + 0.3,\n west: center.lng - 0.3,\n };\n\n\n const input = document.getElementById(\"pac-input\");\n const options = {\n bounds: defaultBounds,\n componentRestrictions: { country: \"se\" },\n fields: [\"address_components\", \"geometry\", \"icon\", \"name\"],\n strictBounds: true,\n types: [],\n };\n\n map.setZoom(10.5);\n\n if (window.innerWidth < 1200) {\n center = { lat: 59.09, lng: 17.54 };\n\n }\n if (window.innerWidth < 740) {\n map.setZoom(9.5);\n\n }\n map.setCenter(center);\n\n var paccontainer = document.querySelector(\".pac-container\");\n if (paccontainer) {\n paccontainer.remove();\n }\n const autocomplete = new google.maps.places.Autocomplete(input, options);\n var geocoder = new google.maps.Geocoder();\n\n document.addEventListener('DOMNodeInserted', function (event) {\n var target = event.target;\n if (target.classList && target.classList.contains('pac-item')) {\n\n var last = target.lastChild;\n last.innerText = last.innerText.replace(', Sverige', '');\n }\n\n }, false);\n autocomplete.addListener(\"place_changed\", () => {\n //console.log('place changed');\n var place = autocomplete.getPlace();\n\n input.value = input.value.replace(', Sverige', '');\n\n if (!place.geometry || !place.geometry.location) {\n\n var item = document.querySelector(\".pac-item\");\n if (item) {\n var adress = item.innerText;\n\n if (adress) {\n try {\n geocoder.geocode({ 'address': adress },\n function (results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n var s = results;\n\n var newplace = results[0];\n metermaps.selectGeoMapFeatureByCoords(elementId, newplace);\n }\n else {\n metermaps.selectGeoMapFeatureByCoords(elementId, place)\n }\n });\n\n }\n catch {\n metermaps.selectGeoMapFeatureByCoords(elementId, place)\n }\n }\n }\n else {\n metermaps.selectGeoMapFeatureByCoords(elementId, place)\n }\n }\n else {\n metermaps.selectGeoMapFeatureByCoords(elementId, place)\n }\n\n });\n\n console.log('geomap init complete');\n }\n};\n\nexport { metermaps };\n","\nlet matomo = {\n \n _paq: window._paq = window._paq || [],\n initMatomo: function (consentGiven, siteId) {\n if (!consentGiven) {\n _paq.push(['requireCookieConsent']);\n }\n _paq.push(['trackPageView']);\n _paq.push(['enableLinkTracking']);\n var u = \"https://telge.matomo.cloud/\";\n _paq.push(['setTrackerUrl', u + 'matomo.php']);\n _paq.push(['setSiteId', siteId]);\n var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];\n g.type = 'text/javascript'; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s);\n matomo.initTagManager();\n },\n triggerEvent: function (url, pageTitle, consentGiven) {\n if (consentGiven === true) {\n _paq.push(['setCookieConsentGiven']);\n }\n _paq.push(['setCustomUrl', url]);\n _paq.push(['setDocumentTitle', pageTitle]);\n _paq.push(['trackPageView']);\n },\n\n disableRecording: function () {\n _paq.push(['HeatmapSessionRecording::disable']);\n },\n\n enableRecording: function () {\n _paq.push(['HeatmapSessionRecording::enable']);\n },\n\n initTagManager: function () {\n var _mtm = window._mtm = window._mtm || [];\n _mtm.push({ 'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start' });\n var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];\n g.async = true; g.src = 'https://cdn.matomo.cloud/telge.matomo.cloud/container_6KekjbR3.js'; s.parentNode.insertBefore(g, s);\n }\n};\n\nexport { matomo };","let elementscroll = {\n scrollHorizontally: (id, right, size) => {\n var element = document.getElementById(id);\n if (element) {\n var container = element.parentNode;\n if (right) {\n element.scrollLeft += size;\n } else {\n element.scrollLeft -= size;\n }\n if (element.scrollLeft > 0) {\n container.classList.remove(\"hide-left-nav\");\n } else if (element.scrollLeft == 0) {\n container.classList.add(\"hide-left-nav\");\n }\n if (element.scrollLeft == (element.scrollWidth - element.clientWidth)) {\n container.classList.add(\"hide-right-nav\");\n } else if (element.scrollLeft < (element.scrollWidth - element.clientWidth)) {\n container.classList.remove(\"hide-right-nav\");\n }\n element.addEventListener('scroll', function (e) {\n if (element.scrollLeft > 0) {\n container.classList.remove(\"hide-left-nav\");\n } else if (element.scrollLeft == 0) {\n container.classList.add(\"hide-left-nav\");\n }\n if (element.scrollLeft == (element.scrollWidth - element.clientWidth)) {\n container.classList.add(\"hide-right-nav\");\n } else if (element.scrollLeft < (element.scrollWidth - element.clientWidth)) {\n container.classList.remove(\"hide-right-nav\");\n }\n });\n }\n },\n scrollingEvent: (elementId, containerId) => {\n var element = document.getElementById(elementId);\n var container = document.getElementById(containerId);\n\n element.addEventListener('scroll', function (e) {\n if (!stickymenu.ticking) {\n window.requestAnimationFrame(function () {\n if (element.scrollLeft > 0) {\n container.classList.remove(\"hide-left-nav\");\n } else if (element.scrollLeft == 0) {\n container.classList.add(\"hide-left-nav\");\n }\n if (element.scrollLeft == (element.scrollWidth - element.clientWidth)) {\n container.classList.add(\"hide-right-nav\");\n } else if (element.scrollLeft < (element.scrollWidth - element.clientWidth)) {\n container.classList.remove(\"hide-right-nav\");\n }\n stickymenu.ticking = false;\n });\n stickymenu.ticking = true;\n }\n\n });\n },\n scrollToElement: (parentId, element, horizontal) => {\n const parentElement = document.getElementById(parentId);\n if (parentElement) {\n var el = parentElement.getElementsByClassName(element)[0];\n if (el) {\n if (horizontal) {\n parentElement.scrollLeft = el.offsetLeft - (window.innerWidth / 2);\n }\n else {\n parentElement.scrollTop = el.offsetTop;\n }\n }\n }\n },\n scrollHorizontalToElement: (parentId, element) => {\n const parentElement = document.getElementById(parentId);\n if (parentElement) {\n var el = parentElement.getElementsByClassName(element)[0];\n var left = parentElement.scrollLeft;\n\n parentElement.scrollLeft = el.offsetLeft - 100;\n elementscroll.setNavArrows(parentElement);\n }\n },\n setNavArrows: (element) => {\n var container = element.parentNode;\n if (container) {\n\n if (element.scrollLeft > 0) {\n container.classList.remove(\"hide-left-nav\");\n } else if (element.scrollLeft == 0) {\n container.classList.add(\"hide-left-nav\");\n }\n if (element.scrollLeft == (element.scrollWidth - element.clientWidth)) {\n container.classList.add(\"hide-right-nav\");\n } else if (element.scrollLeft < (element.scrollWidth - element.clientWidth)) {\n container.classList.remove(\"hide-right-nav\");\n }\n }\n },\n\n windowScroll: (parentId) => {\n\n setTimeout(() => {\n const parentElement = document.getElementById(parentId);\n\n if (parentElement) {\n\n var top = parentElement.offsetTop;\n\n var headerHeight = 120;\n if (window.innerWidth < 1199) {\n headerHeight = 73;\n parentElement.classList.add(\"extrapadding\");\n }\n\n var importantNotice = document.querySelector('.important-notice__visible');\n if (importantNotice !== null) {\n headerHeight += importantNotice.offsetHeight;\n }\n\n window.scroll({\n top: top - headerHeight,\n left: 0,\n behavior: 'smooth'\n });\n }\n }, 500)\n\n\n },\n scrollToTop: () => {\n setTimeout(() => {\n window.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n }, 100);\n },\n overIdScroll: (parentId, top, checkScroll = false) => {\n const parentElement = document.getElementById(parentId);\n if (!parentElement) return;\n const rect = parentElement.getBoundingClientRect();\n \n if (checkScroll) {\n\n const windowHeight = window.innerHeight;\n if (rect.bottom < windowHeight - top) return;\n }\n\n window.scroll({\n top: rect.top + window.scrollY - top,\n left: 0,\n behavior: 'smooth'\n });\n\n },\n focusElement: function (elementId) {\n const element = document.getElementById(elementId);\n if (element) {\n setTimeout(() => {\n element.focus();\n }, 200);\n }\n }\n};\n\nexport { elementscroll };","import { forEach } from \"./utils\";\n\nlet stickymenu = {\n\n siteHeader: null,\n tabNav: null,\n chapterHeader: null,\n siteHeaderPosTop: 0,\n tabNavPosTop: 0,\n chapterHeaderPosTop: 0,\n lastKnownScrollPosition: 0,\n ticking: false,\n isMobile: true,\n timeout: false, // holder for timeout id\n delay: 250, // delay after event is \"complete\" to run callback\n initTabNav: function () {\n this.tabNav = document.getElementById('tabnav');\n if (this.tabNav !== null) {\n this.tabNavPosTop = this.tabNav.offsetTop;\n }\n },\n\n initChapterHeader: function () {\n this.chapterHeader = document.getElementById('ChapterPage');\n if (this.chapterHeader !== null) {\n this.chapterHeaderPosTop = this.chapterHeader.offsetTop;\n }\n },\n init: function () { \n this.siteHeader = document.getElementById(\"siteheader\");\n\n this.siteHeaderPosTop = this.siteHeader.offsetTop;\n this.isMobile = window.innerWidth < 990;\n\n window.addEventListener('resize', function () {\n // clear the timeout\n clearTimeout(stickymenu.timeout);\n // start timing for event \"completion\"\n stickymenu.timeout = setTimeout(stickymenu.checkIfMobile, stickymenu.delay);\n });\n\n document.addEventListener('scroll', function (e) { \n stickymenu.lastKnownScrollPosition = window.scrollY;\n if (!stickymenu.ticking) {\n window.requestAnimationFrame(function () { \n stickymenu.scrollTracking(stickymenu.lastKnownScrollPosition);\n stickymenu.ticking = false;\n });\n\n stickymenu.ticking = true;\n }\n });\n },\n checkIfMobile: function () {\n stickymenu.isMobile = window.innerWidth < 990;\n\n },\n scrollTracking: function (position) {\n \n if (this.siteHeader !== null) {\n const fixedLimit = this.isMobile ? this.siteHeaderPosTop : this.siteHeaderPosTop + 54;\n if (position > fixedLimit) {\n this.siteHeader.classList.add(\"site-header--sticky\");\n if (document.getElementById('Importantotice') !== null) {\n document.getElementById('Importantotice').classList.add(\"important-notice--sticky\");\n }\n if (this.tabNav !== null) {\n this.tabNav.classList.add(\"tab-nav--sticky\");\n }\n if (this.chapterHeader !== null) {\n this.chapterHeader.classList.add(\"chapterheader--sticky\");\n }\n } else {\n this.siteHeader.classList.remove(\"site-header--sticky\");\n if (this.tabNav !== null) {\n this.tabNav.classList.remove(\"tab-nav--sticky\");\n }\n if (document.getElementById('Importantotice') !== null) {\n document.getElementById('Importantotice').classList.remove(\"important-notice--sticky\");\n }\n if (this.chapterHeader !== null) {\n this.chapterHeader.classList.remove(\"chapterheader--sticky\");\n }\n else {\n\n Array.from(document.getElementsByClassName(\"row--overflow\")).forEach(\n function (element, index, array) {\n element.scrollLeft = 0;\n }\n );\n }\n }\n }\n }\n};\n\n\nexport { stickymenu };","import { defaults, forEach, debounce, insertAfter, insertBefore } from './utils'\n\n// toggleInvalidClass\n\nexport function toggleInvalidClass(input, invalidClass) {\n input.addEventListener('invalid', function () {\n input.classList.add(invalidClass)\n })\n\n input.addEventListener('input', function () {\n if (input.validity.valid) {\n input.classList.remove(invalidClass)\n }\n })\n}\n\n// handleCustomMessages\n\nconst errorProps = [\n 'badInput',\n 'patternMismatch',\n 'rangeOverflow',\n 'rangeUnderflow',\n 'stepMismatch',\n 'tooLong',\n 'tooShort',\n 'typeMismatch',\n 'valueMissing',\n 'customError'\n]\n\nfunction getCustomMessage(input, customMessages) {\n customMessages = customMessages || {}\n const localErrorProps = [`${input.type}Mismatch`].concat(errorProps)\n const validity = input.validity\n\n for (let i = 0; i < localErrorProps.length; i++) {\n const prop = localErrorProps[i]\n if (validity[prop]) {\n return input.getAttribute(`data-${prop}`) || customMessages[prop]\n }\n }\n}\n\nexport function handleCustomMessages(input, customMessages) {\n function checkValidity() {\n const message = input.validity.valid\n ? null\n : getCustomMessage(input, customMessages)\n input.setCustomValidity(message || '')\n }\n input.addEventListener('input', checkValidity)\n input.addEventListener('invalid', checkValidity)\n}\n\n// handleCustomMessageDisplay\n\nexport function handleCustomMessageDisplay(input, options) {\n const {\n validationErrorClass,\n validationErrorParentClass,\n errorPlacement\n } = options\n\n function checkValidity(options) {\n const { insertError } = options\n const parentNode = input.parentNode\n const errorNode = parentNode.querySelector(`.${validationErrorClass}`) || document.createElement('div')\n\n if (!input.validity.valid && input.validationMessage) {\n errorNode.className = validationErrorClass\n errorNode.textContent = input.validationMessage\n\n if (insertError) {\n errorPlacement === 'before'\n ? insertBefore(input, errorNode)\n : insertAfter(input, errorNode)\n parentNode.classList.add(validationErrorParentClass)\n }\n } else {\n parentNode.classList.remove(validationErrorParentClass)\n errorNode.remove()\n }\n }\n input.addEventListener('input', function () {\n // We can only update the error or hide it on input.\n // Otherwise it will show when typing.\n checkValidity({ insertError: false })\n })\n input.addEventListener('invalid', function (e) {\n e.preventDefault()\n // We can also create the error in invalid.\n checkValidity({ insertError: true })\n })\n}\n\nconst defaultOptions = {\n invalidClass: 'invalid',\n validationErrorClass: 'validation-error',\n validationErrorParentClass: 'has-validation-error',\n customMessages: {},\n errorPlacement: 'before'\n}\n\n// validForm\n\nexport default function validForm(element, options) {\n if (!element || !element.nodeName) {\n throw new Error('First arg to validForm must be a form, input, select, or textarea')\n }\n\n let inputs\n const type = element.nodeName.toLowerCase()\n\n options = defaults(options, defaultOptions)\n if (type === 'form') {\n inputs = element.querySelectorAll('input, select, textarea')\n focusInvalidInput(element, inputs)\n } else if (type === 'input' || type === 'select' || type === 'textarea') {\n inputs = [element]\n } else {\n throw new Error('Only form, input, select, or textarea elements are supported')\n }\n\n validFormInputs(inputs, options)\n}\n\nfunction focusInvalidInput(form, inputs) {\n const focusFirst = debounce(100, () => {\n const invalidNode = form.querySelector(':invalid')\n if (invalidNode) invalidNode.focus()\n })\n forEach(inputs, (input) => input.addEventListener('invalid', focusFirst))\n}\n\nfunction validFormInputs(inputs, options) {\n const { invalidClass, customMessages } = options\n forEach(inputs, function (input) {\n toggleInvalidClass(input, invalidClass)\n handleCustomMessages(input, customMessages)\n handleCustomMessageDisplay(input, options)\n })\n}","import ValidForm from './validForm';\nimport isDevice from './utils';\n\nlet formValidation = {\n startBankIDApp: function (token) {\n \n const iOS = navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n\n if (iOS) {\n let url = encodeURIComponent(window.location.href);\n if (navigator.userAgent.match('CriOS')) { url = 'googlechrome://' + url; }\n else if (navigator.userAgent.match('FxiOS')) { url = 'firefox://open-url?url=' + url; }\n else if (navigator.userAgent.match('GSA')) { url = 'googleapp://open-url?url=' + url; }\n\n //return this.URLS.BANK_ID_URLS.ios(this.autoStartToken, url);\n window.location.href = 'https://app.bankid.com/?autostarttoken='.concat(token).concat('&redirect=').concat(url);\n }\n\n window.location.href = 'bankid:///?autostarttoken='.concat(token).concat('&redirect=null');\n },\n isDevice: function () {\n //console.log('[form-validation] isDevice');\n\n var mobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i.test(navigator.userAgent);\n\n return mobile;\n //return isDevice();\n },\n initValidForm: function () {\n const formEl = document.querySelector('.dynamic-form');\n\n if (formEl) {\n ValidForm(formEl, {\n invalidClass: 'is-invalid',\n validationErrorClass: 'invalid-feedback',\n errorPlacement: 'after'\n });\n }\n\n\n\n },\n clearInput: function (inputId) {\n setTimeout(function () {\n var input = document.getElementById(inputId);\n if (input) {\n input.value = \"\";\n }\n }, 30);\n }\n}\nexport { formValidation };\n","let iframe = {\n resizeIframe: function (formblock) {\n var iframe = document.getElementById(formblock);\n if (iframe) {\n window.addEventListener(\"message\", function (e) {\n var this_frame = document.getElementById(formblock);\n if (this_frame && this_frame.contentWindow === e.source) {\n var height = e.data.height + 50;\n var scrollUp = e.data.scrollUp;\n var previousHeight = this_frame.height || 0;\n this_frame.height = height;\n this_frame.style.maxHeight = height + \"px\";\n if (scrollUp) {\n var toDialog = e.data.toDialog;\n var top = -100;\n if (toDialog > 0 && window.innerWidth < 600) {\n top = height / 2 - toDialog - 100;\n }\n if (iframe) {\n setTimeout(() => {\n\n window.scroll({\n top: iframe.offsetTop + top,\n left: 0,\n behavior: 'smooth'\n });\n\n }, 100);\n }\n }\n }\n });\n }\n }\n}\nexport { iframe };\n","/**\n* Panzoom for panning and zooming elements using CSS transforms\n* Copyright Timmy Willison and other contributors\n* https://github.com/timmywil/panzoom/blob/main/MIT-License.txt\n*/\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\n/* eslint-disable no-var */\nif (typeof window !== 'undefined') {\n // Support: IE11 only\n if (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n // Support: IE11 only\n // CustomEvent is an object instead of a constructor\n if (typeof window.CustomEvent !== 'function') {\n window.CustomEvent = function CustomEvent(event, params) {\n params = params || { bubbles: false, cancelable: false, detail: null };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n };\n }\n}\n\n/**\r\n * Utilites for working with multiple pointer events\r\n */\r\nfunction findEventIndex(pointers, event) {\r\n var i = pointers.length;\r\n while (i--) {\r\n if (pointers[i].pointerId === event.pointerId) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nfunction addPointer(pointers, event) {\r\n var i;\r\n // Add touches if applicable\r\n if (event.touches) {\r\n i = 0;\r\n for (var _i = 0, _a = event.touches; _i < _a.length; _i++) {\r\n var touch = _a[_i];\r\n touch.pointerId = i++;\r\n addPointer(pointers, touch);\r\n }\r\n return;\r\n }\r\n i = findEventIndex(pointers, event);\r\n // Update if already present\r\n if (i > -1) {\r\n pointers.splice(i, 1);\r\n }\r\n pointers.push(event);\r\n}\r\nfunction removePointer(pointers, event) {\r\n // Add touches if applicable\r\n if (event.touches) {\r\n // Remove all touches\r\n while (pointers.length) {\r\n pointers.pop();\r\n }\r\n return;\r\n }\r\n var i = findEventIndex(pointers, event);\r\n if (i > -1) {\r\n pointers.splice(i, 1);\r\n }\r\n}\r\n/**\r\n * Calculates a center point between\r\n * the given pointer events, for panning\r\n * with multiple pointers.\r\n */\r\nfunction getMiddle(pointers) {\r\n // Copy to avoid changing by reference\r\n pointers = pointers.slice(0);\r\n var event1 = pointers.pop();\r\n var event2;\r\n while ((event2 = pointers.pop())) {\r\n event1 = {\r\n clientX: (event2.clientX - event1.clientX) / 2 + event1.clientX,\r\n clientY: (event2.clientY - event1.clientY) / 2 + event1.clientY\r\n };\r\n }\r\n return event1;\r\n}\r\n/**\r\n * Calculates the distance between two points\r\n * for pinch zooming.\r\n * Limits to the first 2\r\n */\r\nfunction getDistance(pointers) {\r\n if (pointers.length < 2) {\r\n return 0;\r\n }\r\n var event1 = pointers[0];\r\n var event2 = pointers[1];\r\n return Math.sqrt(Math.pow(Math.abs(event2.clientX - event1.clientX), 2) +\r\n Math.pow(Math.abs(event2.clientY - event1.clientY), 2));\r\n}\n\nvar events = {\r\n down: 'mousedown',\r\n move: 'mousemove',\r\n up: 'mouseup mouseleave'\r\n};\r\nif (typeof window !== 'undefined') {\r\n if (typeof window.PointerEvent === 'function') {\r\n events = {\r\n down: 'pointerdown',\r\n move: 'pointermove',\r\n up: 'pointerup pointerleave pointercancel'\r\n };\r\n }\r\n else if (typeof window.TouchEvent === 'function') {\r\n events = {\r\n down: 'touchstart',\r\n move: 'touchmove',\r\n up: 'touchend touchcancel'\r\n };\r\n }\r\n}\r\nfunction onPointer(event, elem, handler, eventOpts) {\r\n events[event].split(' ').forEach(function (name) {\r\n elem.addEventListener(name, handler, eventOpts);\r\n });\r\n}\r\nfunction destroyPointer(event, elem, handler) {\r\n events[event].split(' ').forEach(function (name) {\r\n elem.removeEventListener(name, handler);\r\n });\r\n}\n\nvar isIE = typeof document !== 'undefined' && !!document.documentMode;\r\n/**\r\n * Lazy creation of a CSS style declaration\r\n */\r\nvar divStyle;\r\nfunction createStyle() {\r\n if (divStyle) {\r\n return divStyle;\r\n }\r\n return (divStyle = document.createElement('div').style);\r\n}\r\n/**\r\n * Proper prefixing for cross-browser compatibility\r\n */\r\nvar prefixes = ['webkit', 'moz', 'ms'];\r\nvar prefixCache = {};\r\nfunction getPrefixedName(name) {\r\n if (prefixCache[name]) {\r\n return prefixCache[name];\r\n }\r\n var divStyle = createStyle();\r\n if (name in divStyle) {\r\n return (prefixCache[name] = name);\r\n }\r\n var capName = name[0].toUpperCase() + name.slice(1);\r\n var i = prefixes.length;\r\n while (i--) {\r\n var prefixedName = \"\".concat(prefixes[i]).concat(capName);\r\n if (prefixedName in divStyle) {\r\n return (prefixCache[name] = prefixedName);\r\n }\r\n }\r\n}\r\n/**\r\n * Gets a style value expected to be a number\r\n */\r\nfunction getCSSNum(name, style) {\r\n return parseFloat(style[getPrefixedName(name)]) || 0;\r\n}\r\nfunction getBoxStyle(elem, name, style) {\r\n if (style === void 0) { style = window.getComputedStyle(elem); }\r\n // Support: FF 68+\r\n // Firefox requires specificity for border\r\n var suffix = name === 'border' ? 'Width' : '';\r\n return {\r\n left: getCSSNum(\"\".concat(name, \"Left\").concat(suffix), style),\r\n right: getCSSNum(\"\".concat(name, \"Right\").concat(suffix), style),\r\n top: getCSSNum(\"\".concat(name, \"Top\").concat(suffix), style),\r\n bottom: getCSSNum(\"\".concat(name, \"Bottom\").concat(suffix), style)\r\n };\r\n}\r\n/**\r\n * Set a style using the properly prefixed name\r\n */\r\nfunction setStyle(elem, name, value) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n elem.style[getPrefixedName(name)] = value;\r\n}\r\n/**\r\n * Constructs the transition from panzoom options\r\n * and takes care of prefixing the transition and transform\r\n */\r\nfunction setTransition(elem, options) {\r\n var transform = getPrefixedName('transform');\r\n setStyle(elem, 'transition', \"\".concat(transform, \" \").concat(options.duration, \"ms \").concat(options.easing));\r\n}\r\n/**\r\n * Set the transform using the proper prefix\r\n *\r\n * Override the transform setter.\r\n * This is exposed mostly so the user could\r\n * set other parts of a transform\r\n * aside from scale and translate.\r\n * Default is defined in src/css.ts.\r\n *\r\n * ```js\r\n * // This example always sets a rotation\r\n * // when setting the scale and translation\r\n * const panzoom = Panzoom(elem, {\r\n * setTransform: (elem, { scale, x, y }) => {\r\n * panzoom.setStyle('transform', `rotate(0.5turn) scale(${scale}) translate(${x}px, ${y}px)`)\r\n * }\r\n * })\r\n * ```\r\n */\r\nfunction setTransform(elem, _a, _options) {\r\n var x = _a.x, y = _a.y, scale = _a.scale, isSVG = _a.isSVG;\r\n setStyle(elem, 'transform', \"scale(\".concat(scale, \") translate(\").concat(x, \"px, \").concat(y, \"px)\"));\r\n if (isSVG && isIE) {\r\n var matrixValue = window.getComputedStyle(elem).getPropertyValue('transform');\r\n elem.setAttribute('transform', matrixValue);\r\n }\r\n}\r\n/**\r\n * Dimensions used in containment and focal point zooming\r\n */\r\nfunction getDimensions(elem) {\r\n var parent = elem.parentNode;\r\n var style = window.getComputedStyle(elem);\r\n var parentStyle = window.getComputedStyle(parent);\r\n var rectElem = elem.getBoundingClientRect();\r\n var rectParent = parent.getBoundingClientRect();\r\n return {\r\n elem: {\r\n style: style,\r\n width: rectElem.width,\r\n height: rectElem.height,\r\n top: rectElem.top,\r\n bottom: rectElem.bottom,\r\n left: rectElem.left,\r\n right: rectElem.right,\r\n margin: getBoxStyle(elem, 'margin', style),\r\n border: getBoxStyle(elem, 'border', style)\r\n },\r\n parent: {\r\n style: parentStyle,\r\n width: rectParent.width,\r\n height: rectParent.height,\r\n top: rectParent.top,\r\n bottom: rectParent.bottom,\r\n left: rectParent.left,\r\n right: rectParent.right,\r\n padding: getBoxStyle(parent, 'padding', parentStyle),\r\n border: getBoxStyle(parent, 'border', parentStyle)\r\n }\r\n };\r\n}\n\n/**\r\n * Determine if an element is attached to the DOM\r\n * Panzoom requires this so events work properly\r\n */\r\nfunction isAttached(elem) {\r\n var doc = elem.ownerDocument;\r\n var parent = elem.parentNode;\r\n return (doc &&\r\n parent &&\r\n doc.nodeType === 9 &&\r\n parent.nodeType === 1 &&\r\n doc.documentElement.contains(parent));\r\n}\n\nfunction getClass(elem) {\r\n return (elem.getAttribute('class') || '').trim();\r\n}\r\nfunction hasClass(elem, className) {\r\n return elem.nodeType === 1 && \" \".concat(getClass(elem), \" \").indexOf(\" \".concat(className, \" \")) > -1;\r\n}\r\nfunction isExcluded(elem, options) {\r\n for (var cur = elem; cur != null; cur = cur.parentNode) {\r\n if (hasClass(cur, options.excludeClass) || options.exclude.indexOf(cur) > -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\n\n/**\r\n * Determine if an element is SVG by checking the namespace\r\n * Exception: the element itself should be treated like HTML\r\n */\r\nvar rsvg = /^http:[\\w\\.\\/]+svg$/;\r\nfunction isSVGElement(elem) {\r\n return rsvg.test(elem.namespaceURI) && elem.nodeName.toLowerCase() !== 'svg';\r\n}\n\nfunction shallowClone(obj) {\r\n var clone = {};\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n clone[key] = obj[key];\r\n }\r\n }\r\n return clone;\r\n}\n\nvar defaultOptions = {\r\n animate: false,\r\n canvas: false,\r\n cursor: 'move',\r\n disablePan: false,\r\n disableZoom: false,\r\n disableXAxis: false,\r\n disableYAxis: false,\r\n duration: 200,\r\n easing: 'ease-in-out',\r\n exclude: [],\r\n excludeClass: 'panzoom-exclude',\r\n handleStartEvent: function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n },\r\n maxScale: 4,\r\n minScale: 0.125,\r\n overflow: 'hidden',\r\n panOnlyWhenZoomed: false,\r\n pinchAndPan: false,\r\n relative: false,\r\n setTransform: setTransform,\r\n startX: 0,\r\n startY: 0,\r\n startScale: 1,\r\n step: 0.3,\r\n touchAction: 'none'\r\n};\r\nfunction Panzoom(elem, options) {\r\n if (!elem) {\r\n throw new Error('Panzoom requires an element as an argument');\r\n }\r\n if (elem.nodeType !== 1) {\r\n throw new Error('Panzoom requires an element with a nodeType of 1');\r\n }\r\n if (!isAttached(elem)) {\r\n throw new Error('Panzoom should be called on elements that have been attached to the DOM');\r\n }\r\n options = __assign(__assign({}, defaultOptions), options);\r\n var isSVG = isSVGElement(elem);\r\n var parent = elem.parentNode;\r\n // Set parent styles\r\n parent.style.overflow = options.overflow;\r\n parent.style.userSelect = 'none';\r\n // This is important for mobile to\r\n // prevent scrolling while panning\r\n parent.style.touchAction = options.touchAction;\r\n (options.canvas ? parent : elem).style.cursor = options.cursor;\r\n // Set element styles\r\n elem.style.userSelect = 'none';\r\n elem.style.touchAction = options.touchAction;\r\n // The default for HTML is '50% 50%'\r\n // The default for SVG is '0 0'\r\n // SVG can't be changed in IE\r\n setStyle(elem, 'transformOrigin', typeof options.origin === 'string' ? options.origin : isSVG ? '0 0' : '50% 50%');\r\n function resetStyle() {\r\n parent.style.overflow = '';\r\n parent.style.userSelect = '';\r\n parent.style.touchAction = '';\r\n parent.style.cursor = '';\r\n elem.style.cursor = '';\r\n elem.style.userSelect = '';\r\n elem.style.touchAction = '';\r\n setStyle(elem, 'transformOrigin', '');\r\n }\r\n function setOptions(opts) {\r\n if (opts === void 0) { opts = {}; }\r\n for (var key in opts) {\r\n if (opts.hasOwnProperty(key)) {\r\n options[key] = opts[key];\r\n }\r\n }\r\n // Handle option side-effects\r\n if (opts.hasOwnProperty('cursor') || opts.hasOwnProperty('canvas')) {\r\n parent.style.cursor = elem.style.cursor = '';\r\n (options.canvas ? parent : elem).style.cursor = options.cursor;\r\n }\r\n if (opts.hasOwnProperty('overflow')) {\r\n parent.style.overflow = opts.overflow;\r\n }\r\n if (opts.hasOwnProperty('touchAction')) {\r\n parent.style.touchAction = opts.touchAction;\r\n elem.style.touchAction = opts.touchAction;\r\n }\r\n }\r\n var x = 0;\r\n var y = 0;\r\n var scale = 1;\r\n var isPanning = false;\r\n zoom(options.startScale, { animate: false, force: true });\r\n // Wait for scale to update\r\n // for accurate dimensions\r\n // to constrain initial values\r\n setTimeout(function () {\r\n pan(options.startX, options.startY, { animate: false, force: true });\r\n });\r\n function trigger(eventName, detail, opts) {\r\n if (opts.silent) {\r\n return;\r\n }\r\n var event = new CustomEvent(eventName, { detail: detail });\r\n elem.dispatchEvent(event);\r\n }\r\n function setTransformWithEvent(eventName, opts, originalEvent) {\r\n var value = { x: x, y: y, scale: scale, isSVG: isSVG, originalEvent: originalEvent };\r\n requestAnimationFrame(function () {\r\n if (typeof opts.animate === 'boolean') {\r\n if (opts.animate) {\r\n setTransition(elem, opts);\r\n }\r\n else {\r\n setStyle(elem, 'transition', 'none');\r\n }\r\n }\r\n opts.setTransform(elem, value, opts);\r\n trigger(eventName, value, opts);\r\n trigger('panzoomchange', value, opts);\r\n });\r\n return value;\r\n }\r\n function constrainXY(toX, toY, toScale, panOptions) {\r\n var opts = __assign(__assign({}, options), panOptions);\r\n var result = { x: x, y: y, opts: opts };\r\n if (!opts.force && (opts.disablePan || (opts.panOnlyWhenZoomed && scale === opts.startScale))) {\r\n return result;\r\n }\r\n toX = parseFloat(toX);\r\n toY = parseFloat(toY);\r\n if (!opts.disableXAxis) {\r\n result.x = (opts.relative ? x : 0) + toX;\r\n }\r\n if (!opts.disableYAxis) {\r\n result.y = (opts.relative ? y : 0) + toY;\r\n }\r\n if (opts.contain) {\r\n var dims = getDimensions(elem);\r\n var realWidth = dims.elem.width / scale;\r\n var realHeight = dims.elem.height / scale;\r\n var scaledWidth = realWidth * toScale;\r\n var scaledHeight = realHeight * toScale;\r\n var diffHorizontal = (scaledWidth - realWidth) / 2;\r\n var diffVertical = (scaledHeight - realHeight) / 2;\r\n if (opts.contain === 'inside') {\r\n var minX = (-dims.elem.margin.left - dims.parent.padding.left + diffHorizontal) / toScale;\r\n var maxX = (dims.parent.width -\r\n scaledWidth -\r\n dims.parent.padding.left -\r\n dims.elem.margin.left -\r\n dims.parent.border.left -\r\n dims.parent.border.right +\r\n diffHorizontal) /\r\n toScale;\r\n result.x = Math.max(Math.min(result.x, maxX), minX);\r\n var minY = (-dims.elem.margin.top - dims.parent.padding.top + diffVertical) / toScale;\r\n var maxY = (dims.parent.height -\r\n scaledHeight -\r\n dims.parent.padding.top -\r\n dims.elem.margin.top -\r\n dims.parent.border.top -\r\n dims.parent.border.bottom +\r\n diffVertical) /\r\n toScale;\r\n result.y = Math.max(Math.min(result.y, maxY), minY);\r\n }\r\n else if (opts.contain === 'outside') {\r\n var minX = (-(scaledWidth - dims.parent.width) -\r\n dims.parent.padding.left -\r\n dims.parent.border.left -\r\n dims.parent.border.right +\r\n diffHorizontal) /\r\n toScale;\r\n var maxX = (diffHorizontal - dims.parent.padding.left) / toScale;\r\n result.x = Math.max(Math.min(result.x, maxX), minX);\r\n var minY = (-(scaledHeight - dims.parent.height) -\r\n dims.parent.padding.top -\r\n dims.parent.border.top -\r\n dims.parent.border.bottom +\r\n diffVertical) /\r\n toScale;\r\n var maxY = (diffVertical - dims.parent.padding.top) / toScale;\r\n result.y = Math.max(Math.min(result.y, maxY), minY);\r\n }\r\n }\r\n if (opts.roundPixels) {\r\n result.x = Math.round(result.x);\r\n result.y = Math.round(result.y);\r\n }\r\n return result;\r\n }\r\n function constrainScale(toScale, zoomOptions) {\r\n var opts = __assign(__assign({}, options), zoomOptions);\r\n var result = { scale: scale, opts: opts };\r\n if (!opts.force && opts.disableZoom) {\r\n return result;\r\n }\r\n var minScale = options.minScale;\r\n var maxScale = options.maxScale;\r\n if (opts.contain) {\r\n var dims = getDimensions(elem);\r\n var elemWidth = dims.elem.width / scale;\r\n var elemHeight = dims.elem.height / scale;\r\n if (elemWidth > 1 && elemHeight > 1) {\r\n var parentWidth = dims.parent.width - dims.parent.border.left - dims.parent.border.right;\r\n var parentHeight = dims.parent.height - dims.parent.border.top - dims.parent.border.bottom;\r\n var elemScaledWidth = parentWidth / elemWidth;\r\n var elemScaledHeight = parentHeight / elemHeight;\r\n if (options.contain === 'inside') {\r\n maxScale = Math.min(maxScale, elemScaledWidth, elemScaledHeight);\r\n }\r\n else if (options.contain === 'outside') {\r\n minScale = Math.max(minScale, elemScaledWidth, elemScaledHeight);\r\n }\r\n }\r\n }\r\n result.scale = Math.min(Math.max(toScale, minScale), maxScale);\r\n return result;\r\n }\r\n function pan(toX, toY, panOptions, originalEvent) {\r\n var result = constrainXY(toX, toY, scale, panOptions);\r\n // Only try to set if the result is somehow different\r\n if (x !== result.x || y !== result.y) {\r\n x = result.x;\r\n y = result.y;\r\n return setTransformWithEvent('panzoompan', result.opts, originalEvent);\r\n }\r\n return { x: x, y: y, scale: scale, isSVG: isSVG, originalEvent: originalEvent };\r\n }\r\n function zoom(toScale, zoomOptions, originalEvent) {\r\n var result = constrainScale(toScale, zoomOptions);\r\n var opts = result.opts;\r\n if (!opts.force && opts.disableZoom) {\r\n return;\r\n }\r\n toScale = result.scale;\r\n var toX = x;\r\n var toY = y;\r\n if (opts.focal) {\r\n // The difference between the point after the scale and the point before the scale\r\n // plus the current translation after the scale\r\n // neutralized to no scale (as the transform scale will apply to the translation)\r\n var focal = opts.focal;\r\n toX = (focal.x / toScale - focal.x / scale + x * toScale) / toScale;\r\n toY = (focal.y / toScale - focal.y / scale + y * toScale) / toScale;\r\n }\r\n var panResult = constrainXY(toX, toY, toScale, { relative: false, force: true });\r\n x = panResult.x;\r\n y = panResult.y;\r\n scale = toScale;\r\n return setTransformWithEvent('panzoomzoom', opts, originalEvent);\r\n }\r\n function zoomInOut(isIn, zoomOptions) {\r\n var opts = __assign(__assign(__assign({}, options), { animate: true }), zoomOptions);\r\n return zoom(scale * Math.exp((isIn ? 1 : -1) * opts.step), opts);\r\n }\r\n function zoomIn(zoomOptions) {\r\n return zoomInOut(true, zoomOptions);\r\n }\r\n function zoomOut(zoomOptions) {\r\n return zoomInOut(false, zoomOptions);\r\n }\r\n function zoomToPoint(toScale, point, zoomOptions, originalEvent) {\r\n var dims = getDimensions(elem);\r\n // Instead of thinking of operating on the panzoom element,\r\n // think of operating on the area inside the panzoom\r\n // element's parent\r\n // Subtract padding and border\r\n var effectiveArea = {\r\n width: dims.parent.width -\r\n dims.parent.padding.left -\r\n dims.parent.padding.right -\r\n dims.parent.border.left -\r\n dims.parent.border.right,\r\n height: dims.parent.height -\r\n dims.parent.padding.top -\r\n dims.parent.padding.bottom -\r\n dims.parent.border.top -\r\n dims.parent.border.bottom\r\n };\r\n // Adjust the clientX/clientY to ignore the area\r\n // outside the effective area\r\n var clientX = point.clientX -\r\n dims.parent.left -\r\n dims.parent.padding.left -\r\n dims.parent.border.left -\r\n dims.elem.margin.left;\r\n var clientY = point.clientY -\r\n dims.parent.top -\r\n dims.parent.padding.top -\r\n dims.parent.border.top -\r\n dims.elem.margin.top;\r\n // Adjust the clientX/clientY for HTML elements,\r\n // because they have a transform-origin of 50% 50%\r\n if (!isSVG) {\r\n clientX -= dims.elem.width / scale / 2;\r\n clientY -= dims.elem.height / scale / 2;\r\n }\r\n // Convert the mouse point from it's position over the\r\n // effective area before the scale to the position\r\n // over the effective area after the scale.\r\n var focal = {\r\n x: (clientX / effectiveArea.width) * (effectiveArea.width * toScale),\r\n y: (clientY / effectiveArea.height) * (effectiveArea.height * toScale)\r\n };\r\n return zoom(toScale, __assign(__assign({}, zoomOptions), { animate: false, focal: focal }), originalEvent);\r\n }\r\n function zoomWithWheel(event, zoomOptions) {\r\n // Need to prevent the default here\r\n // or it conflicts with regular page scroll\r\n event.preventDefault();\r\n var opts = __assign(__assign(__assign({}, options), zoomOptions), { animate: false });\r\n // Normalize to deltaX in case shift modifier is used on Mac\r\n var delta = event.deltaY === 0 && event.deltaX ? event.deltaX : event.deltaY;\r\n var wheel = delta < 0 ? 1 : -1;\r\n var toScale = constrainScale(scale * Math.exp((wheel * opts.step) / 3), opts).scale;\r\n return zoomToPoint(toScale, event, opts, event);\r\n }\r\n function reset(resetOptions) {\r\n var opts = __assign(__assign(__assign({}, options), { animate: true, force: true }), resetOptions);\r\n scale = constrainScale(opts.startScale, opts).scale;\r\n var panResult = constrainXY(opts.startX, opts.startY, scale, opts);\r\n x = panResult.x;\r\n y = panResult.y;\r\n return setTransformWithEvent('panzoomreset', opts);\r\n }\r\n var origX;\r\n var origY;\r\n var startClientX;\r\n var startClientY;\r\n var startScale;\r\n var startDistance;\r\n var pointers = [];\r\n function handleDown(event) {\r\n // Don't handle this event if the target is excluded\r\n if (isExcluded(event.target, options)) {\r\n return;\r\n }\r\n addPointer(pointers, event);\r\n isPanning = true;\r\n options.handleStartEvent(event);\r\n origX = x;\r\n origY = y;\r\n trigger('panzoomstart', { x: x, y: y, scale: scale, isSVG: isSVG, originalEvent: event }, options);\r\n // This works whether there are multiple\r\n // pointers or not\r\n var point = getMiddle(pointers);\r\n startClientX = point.clientX;\r\n startClientY = point.clientY;\r\n startScale = scale;\r\n startDistance = getDistance(pointers);\r\n }\r\n function handleMove(event) {\r\n if (!isPanning ||\r\n origX === undefined ||\r\n origY === undefined ||\r\n startClientX === undefined ||\r\n startClientY === undefined) {\r\n return;\r\n }\r\n addPointer(pointers, event);\r\n var current = getMiddle(pointers);\r\n var hasMultiple = pointers.length > 1;\r\n var toScale = scale;\r\n if (hasMultiple) {\r\n // A startDistance of 0 means\r\n // that there weren't 2 pointers\r\n // handled on start\r\n if (startDistance === 0) {\r\n startDistance = getDistance(pointers);\r\n }\r\n // Use the distance between the first 2 pointers\r\n // to determine the current scale\r\n var diff = getDistance(pointers) - startDistance;\r\n toScale = constrainScale((diff * options.step) / 80 + startScale).scale;\r\n zoomToPoint(toScale, current, { animate: false }, event);\r\n }\r\n // Pan during pinch if pinchAndPan is true.\r\n // Note: some calculations may be off because the zoom\r\n // above has not yet rendered. However, the behavior\r\n // was removed before the new scale was used in the following\r\n // pan calculation.\r\n // See https://github.com/timmywil/panzoom/issues/512\r\n // and https://github.com/timmywil/panzoom/issues/606\r\n if (!hasMultiple || options.pinchAndPan) {\r\n pan(origX + (current.clientX - startClientX) / toScale, origY + (current.clientY - startClientY) / toScale, {\r\n animate: false\r\n }, event);\r\n }\r\n }\r\n function handleUp(event) {\r\n // Don't call panzoomend when panning with 2 touches\r\n // until both touches end\r\n if (pointers.length === 1) {\r\n trigger('panzoomend', { x: x, y: y, scale: scale, isSVG: isSVG, originalEvent: event }, options);\r\n }\r\n // Note: don't remove all pointers\r\n // Can restart without having to reinitiate all of them\r\n // Remove the pointer regardless of the isPanning state\r\n removePointer(pointers, event);\r\n if (!isPanning) {\r\n return;\r\n }\r\n isPanning = false;\r\n origX = origY = startClientX = startClientY = undefined;\r\n }\r\n var bound = false;\r\n function bind() {\r\n if (bound) {\r\n return;\r\n }\r\n bound = true;\r\n onPointer('down', options.canvas ? parent : elem, handleDown);\r\n onPointer('move', document, handleMove, { passive: true });\r\n onPointer('up', document, handleUp, { passive: true });\r\n }\r\n function destroy() {\r\n bound = false;\r\n destroyPointer('down', options.canvas ? parent : elem, handleDown);\r\n destroyPointer('move', document, handleMove);\r\n destroyPointer('up', document, handleUp);\r\n }\r\n if (!options.noBind) {\r\n bind();\r\n }\r\n return {\r\n bind: bind,\r\n destroy: destroy,\r\n eventNames: events,\r\n getPan: function () { return ({ x: x, y: y }); },\r\n getScale: function () { return scale; },\r\n getOptions: function () { return shallowClone(options); },\r\n handleDown: handleDown,\r\n handleMove: handleMove,\r\n handleUp: handleUp,\r\n pan: pan,\r\n reset: reset,\r\n resetStyle: resetStyle,\r\n setOptions: setOptions,\r\n setStyle: function (name, value) { return setStyle(elem, name, value); },\r\n zoom: zoom,\r\n zoomIn: zoomIn,\r\n zoomOut: zoomOut,\r\n zoomToPoint: zoomToPoint,\r\n zoomWithWheel: zoomWithWheel\r\n };\r\n}\r\nPanzoom.defaultOptions = defaultOptions;\n\nexport { Panzoom as default };\n","import Panzoom from '@panzoom/panzoom'\n\nlet recycleareamap = {\n initContainers: function (places) {\n if (!places) {\n return;\n }\n if (places.length > 0 && typeof (places) === \"string\") {\n places = JSON.parse(places);\n }\n\n var svgcontainers = document.getElementById(\"Containers\"); \n if (svgcontainers != null && !svgcontainers.classList.contains('rendered')) {\n svgcontainers.classList.add('rendered');\n var areamapsblock = document.getElementById(\"RecycleCentralAreamapsBlock\");\n recycleareamap.initButtons(svgcontainers, areamapsblock);\n if (areamapsblock != null) {\n document.getElementById('ContainerListsToggle').onclick = function () {\n document.getElementById('ContainerLists').classList.toggle('containerlistsactive');\n\n var containerlistsactive = document.querySelector('.containerlistsactive') !== null;\n if (window.innerWidth < 992) {\n\n var activesymbols = document.querySelector('.activesymbols') !== null;\n if (activesymbols || containerlistsactive) {\n document.querySelectorAll(\".tab-container\").forEach(e => e.classList.add('hide-tab'));\n } else {\n document.querySelectorAll(\".tab-container\").forEach(e => e.classList.remove('hide-tab'));\n }\n }\n else {\n if (containerlistsactive) {\n document.querySelectorAll(\".svg-holder\").forEach(e => e.classList.add('listvisible'));\n } else {\n document.querySelectorAll(\".svg-holder\").forEach(e => e.classList.remove('listvisible'));\n }\n }\n\n }\n }\n\n places.forEach(function (container) {\n\n const value = container.containerValue;\n const currentContainer = document.getElementById(value);\n\n if (currentContainer != null) {\n currentContainer.classList.replace(\"hiddencontainer\", \"visiblecontainer\");\n currentContainer.onclick = function () {\n recycleareamap.showDescription(this.classList, value, svgcontainers);\n }\n document.getElementById(\"close-\" + value).onclick = function () {\n svgcontainers.querySelectorAll(\".activecontainer\").forEach(e => e.classList.remove('activecontainer'));\n document.querySelectorAll(\".activesymbols\").forEach(e => e.classList.remove('activesymbols'));\n document.querySelectorAll(\".tab-container\").forEach(e => e.classList.remove('hide-tab'));\n }\n\n var skylt = currentContainer.querySelector(\"#Skylt\");\n var skyltaktiv = currentContainer.querySelector(\"#SkyltAktiv\");\n var skyltdubbel = currentContainer.querySelector(\"#SkyltDubbel\");\n var skyltdubbelaktiv = currentContainer.querySelector(\"#SkyltDubbelAktiv\");\n const sortTypes = container.sortTypes;\n var dubbel = sortTypes.length > 1;\n if (dubbel) {\n if (skyltdubbelaktiv != null) {\n var rects = skyltdubbelaktiv.getElementsByTagName(\"rect\");\n recycleareamap.addSymbol(container, currentContainer, rects, dubbel);\n }\n if (skylt != null && skylt.parentElement === currentContainer) {\n currentContainer.removeChild(skylt);\n }\n if (skyltaktiv != null && skyltaktiv.parentElement === currentContainer) {\n currentContainer.removeChild(skyltaktiv);\n }\n }\n else if (skyltaktiv != null) {\n var rect = skyltaktiv.getElementsByTagName(\"rect\");\n\n recycleareamap.addSymbol(container, currentContainer, rect, dubbel);\n\n if (skyltdubbel != null && skyltdubbel.parentElement === currentContainer) {\n currentContainer.removeChild(skyltdubbel);\n } if (skyltdubbelaktiv != null && skyltdubbelaktiv.parentElement === currentContainer) {\n currentContainer.removeChild(skyltdubbelaktiv);\n }\n }\n if (skylt != null && skylt.parentElement === currentContainer) {\n currentContainer.removeChild(skylt);\n }\n if (skyltaktiv != null && skyltaktiv.parentElement === currentContainer) {\n currentContainer.removeChild(skyltaktiv);\n }\n if (skyltdubbel != null && skyltdubbel.parentElement === currentContainer) {\n currentContainer.removeChild(skyltdubbel);\n } if (skyltdubbelaktiv != null && skyltdubbelaktiv.parentElement === currentContainer) {\n currentContainer.removeChild(skyltdubbelaktiv);\n }\n }\n });\n }\n },\n showDescription: function (classList, currentContainer, svgcontainers) {\n\n const currentSymbols = document.getElementById(\"val-\" + currentContainer);\n if (classList.contains('activecontainer')) {\n classList.remove('activecontainer');\n if (currentSymbols != null) {\n currentSymbols.classList.remove('activesymbols');\n }\n document.querySelectorAll(\".tab-container\").forEach(e => e.classList.remove('hide-tab'));\n }\n else {\n svgcontainers.querySelectorAll(\".activecontainer\").forEach(e => e.classList.remove('activecontainer'));\n document.querySelectorAll(\".activesymbols\").forEach(e => e.classList.remove('activesymbols'));\n currentSymbols.classList.add('activesymbols');\n classList.add('activecontainer');\n document.querySelectorAll(\".tab-container\").forEach(e => e.classList.add('hide-tab'));\n }\n\n },\n addSymbol: function (container, currentContainer, rect, dubble) {\n\n var svgskylt = \"\";\n var icon = \"\";\n var typeClass = \"singel\";\n\n var x = rect[0].getAttribute(\"x\");\n var y = rect[0].getAttribute(\"y\");\n var height = 56;\n var width = 56;\n if (dubble) {\n var vertical = rect[0].getAttribute(\"y\") != rect[1].getAttribute(\"y\");\n typeClass = vertical ? \"vertical\" : \"horizontal\";\n if (vertical) {\n svgskylt = '';\n y = rect[1].getAttribute(\"y\");\n height = 113;\n }\n\n else {\n width = 113;\n svgskylt = '';\n }\n\n icon = recycleareamap.addIcon(currentContainer, container.sortTypes[0].sortTypeValue, typeClass + \" first\") +\n recycleareamap.addIcon(currentContainer, container.sortTypes[1].sortTypeValue, typeClass + \" last\");\n }\n else {\n svgskylt = '';\n var iconClass = container.sortTypes[0].sortTypeValue;\n icon = recycleareamap.addIcon(currentContainer, iconClass, typeClass);\n\n }\n container.sortTypes.forEach(\n function (item, index) {\n currentContainer.classList.add(item.sortTypeValue.toLowerCase())\n }\n );\n\n var foreignObject = document.createElementNS('http://www.w3.org/2000/svg', \"foreignObject\");\n foreignObject.innerHTML = '
' + icon + svgskylt + '
';\n foreignObject.classList.add(typeClass);\n foreignObject.setAttribute(\"x\", x);\n foreignObject.setAttribute(\"y\", y);\n foreignObject.setAttribute(\"height\", height);\n foreignObject.setAttribute(\"width\", width);\n\n const polygon = currentContainer.getElementsByTagName(\"polygon\")[0];\n\n if (polygon && polygon.parentElement === currentContainer) {\n currentContainer.insertBefore(foreignObject, polygon.nextSibling);\n }\n else {\n const rect = currentContainer.getElementsByTagName(\"rect\")[0];\n\n if (rect && rect.parentElement === currentContainer) {\n currentContainer.insertBefore(foreignObject, rect.nextSibling);\n }\n\n }\n\n },\n addIcon: function (currentContainer, iconClass, typeClass) {\n return '
';\n\n },\n fullscreen: function (panzoom, areamapsblock) {\n\n var body = document.getElementsByTagName(\"body\")[0];\n\n if (window.innerWidth < 990) {\n if (body.classList.contains('fullscreen')) {\n panzoom.reset();\n }\n else {\n panzoom.zoom(2, { animate: true });\n }\n }\n body.classList.toggle('fullscreen');\n var header = document.getElementsByTagName(\"header\")[0];\n if (areamapsblock == null && window.innerWidth > 1199) {\n header.classList.toggle('site-header--sticky');\n }\n },\n\n initButtons: function (svgcontainers, areamapsblock) {\n\n document.querySelectorAll('.fraktionssymbol').forEach(e => e.onclick = function () {\n svgcontainers.querySelectorAll(\".activecontainer\").forEach(e => e.classList.remove('activecontainer'));\n\n const value = e.dataset.symbol;\n svgcontainers.querySelectorAll(\".\" + value).forEach(function (e) {\n const currentContainer = e.id;\n\n var classList = e.classList;\n recycleareamap.showDescription(classList, currentContainer, svgcontainers);\n\n if (areamapsblock != null) {\n if (window.innerWidth < 992) {\n document.getElementById('ContainerLists').classList.remove('containerlistsactive');\n //document.querySelectorAll(\".tab-container\").forEach(e => e.classList.remove('hide-tab'));\n }\n\n }\n\n });\n });\n\n const elem = document.getElementById('SvgMap')\n var maxscale = 3;\n if (window.innerWidth < 990) {\n maxscale = 5;\n }\n const panzoom = Panzoom(elem, {\n maxScale: maxscale,\n minScale: 1\n })\n panzoom.pan(10, 10)\n panzoom.zoom(1, { animate: true })\n\n\n const zoominbutton = document.getElementById('zoominbutton');\n const zoomoutbutton = document.getElementById('zoomoutbutton');\n\n elem.parentElement.addEventListener('touchmove', function (ev) {\n recycleareamap.checkZoom(panzoom, maxscale);\n\n });\n\n document.querySelectorAll('.fullscreenbutton').forEach(e => e.onclick = function () {\n recycleareamap.fullscreen(panzoom, areamapsblock);\n });\n\n\n zoominbutton.addEventListener('click', function () {\n panzoom.zoomIn();\n recycleareamap.checkZoom(panzoom, maxscale);\n });\n zoomoutbutton.addEventListener('click', function () {\n panzoom.zoomOut();\n recycleareamap.checkZoom(panzoom, maxscale);\n });\n },\n checkZoom: function (panzoom, maxscale) {\n var zoomlevel = panzoom.getScale();\n if (zoomlevel <= 1) {\n zoomoutbutton.classList.add('zoomactive');\n }\n else { zoomoutbutton.classList.remove('zoomactive'); }\n if (zoomlevel >= maxscale) {\n zoominbutton.classList.add('zoomactive');\n }\n else { zoominbutton.classList.remove('zoomactive'); }\n }\n};\n\nexport { recycleareamap };\n","let fullheight = {\n initHeight: function () {\n setTimeout(function () {\n var importantNotice = document.querySelector('.important-notice__visible');\n var fullheightpage = document.querySelectorAll('.count-fullheight');\n const header = document.querySelector('.site-header');\n const tabContent = document.querySelector('.tab-content');\n if (importantNotice !== null && importantNotice.offsetHeight > 0 && fullheightpage !== null) {\n var headerHeight = header.offsetHeight;\n const calculateHeight = () => {\n const fullheightElements = tabContent ? tabContent.querySelectorAll('.content-fullheight') : null;\n\n const noticeHeight = importantNotice.offsetHeight || 0;\n const headerHeight = header.offsetHeight || 0;\n const windowHeight = window.innerHeight;\n const newHeight = windowHeight - noticeHeight - headerHeight;\n if (fullheightpage !== null) {\n fullheightpage.forEach(el => {\n el.style.height = `${newHeight}px`;\n el.classList.add('heightcounted');\n });\n } if (fullheightElements !== null) {\n fullheightElements.forEach(el => {\n\n el.style.height = `${newHeight}px`;\n el.classList.add('heightcounted');\n });\n }\n };\n setTimeout(() => {\n var maplink = document.querySelector('.maplink');\n if (maplink !== null) {\n maplink.addEventListener('click', function () {\n if (importantNotice !== null) {\n importantNotice.classList.add('viewmap');\n }\n });\n } else {\n calculateHeight();\n if (tabContent) {\n const tabs = document.querySelectorAll('.tab');\n tabs.forEach(tab => {\n tab.addEventListener('click', function () {\n setTimeout(() => {\n calculateHeight();\n }, 100);\n });\n });\n }\n }\n }, 500);\n\n\n importantNotice.querySelector('.icon-close').onclick = function () {\n var heightcounted = document.querySelectorAll('.heightcounted');\n heightcounted.forEach(el => {\n el.style.removeProperty(\"height\");\n el.classList.remove('heightcounted');\n });\n }\n }\n }, 100);\n },\n removeViewmap: function () {\n setTimeout(() => {\n var importantNotice = document.querySelector('.important-notice__visible.viewmap');\n if (importantNotice !== null) {\n importantNotice.classList.remove('viewmap');\n }\n }, 100);\n }\n};\n\nexport { fullheight };\n","import { loadScript } from \"./utils\";\n\nlet chart = {\n loadScript: async function (dataLabels) {\n //console.log('[Chart] loadScript', dataLabels);\n\n if (dataLabels) {\n await loadScript('https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js');\n return await loadScript('https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.0.0');\n\n }\n else {\n return await loadScript('https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js');\n }\n\n },\n current: {},\n currentMap: new Map(),\n setup: function (id, config) {\n var ctx = document.getElementById(id).getContext('2d');\n //console.log(\"chart:\", config);\n\n var legendElementId = 'chart-legend' + config.chartId;\n\n var hoverFn = function (e, legendItem, legend) {\n var list = document.getElementById(legendElementId);\n\n var listItems = Array.from(list.children);\n \n if (legendItem.length === 1) {\n\n list.classList.add(\"active\");\n listItems.forEach((li, i) => {\n if (legendItem[0].index === i) {\n li.classList.add(\"legend-active\");\n }\n else {\n li.classList.remove(\"legend-active\");\n }\n });\n }\n else {\n //console.log(\"[chart] hover no item \");\n list.classList.remove(\"active\");\n listItems.forEach((li, i) => {\n\n li.classList.remove(\"legend-active\");\n\n });\n }\n };\n\n if (config.type === 'line' || config.type === 'bar') { \n hoverFn = function (e, data, legend) {\n //console.log(\"linechart interact @ \", e, data, legend, legendElementId); \n var list = document.getElementById(legendElementId);\n var listItems = Array.from(list.children);\n if (data.length > 0) {\n //console.log(\"ok\", data.length);\n var selectedDs = data[0].datasetIndex;\n //console.log(\"chart click le\", selectedItem);\n \n list.classList.add(\"active\");\n\n listItems.forEach((li, i) => {\n if (selectedDs === i) {\n li.classList.add(\"legend-active\");\n }\n else {\n li.classList.remove(\"legend-active\");\n }\n }); \n }\n else {\n //console.log(\"[chart] hover no item \");\n list.classList.remove(\"active\");\n listItems.forEach((li, i) => {\n\n li.classList.remove(\"legend-active\");\n\n });\n }\n };\n }\n\n var plugins = [];\n\n if (config.datalabels) {\n plugins = [ChartDataLabels];\n }\n\n var hitliteFn = function (value, ctx) {\n //console.log('Qhilite2', ctx);\n return config.data.hiliteText;\n }\n\n var hitliteDisplayFn = function (ctx) {\n //console.log('Qhilite display', ctx, config.data);\n if (config.data.hiliteIndex < 0) { return false; }\n else {\n return ctx.datasetIndex == config.data.hiliteSeriesIndex && ctx.dataIndex == config.data.hiliteIndex;\n }\n }\n\n var defaultDisplayFn = function (ctx) {\n //console.log('default display', ctx, config.defaultDatalabels);\n if (config.defaultDatalabels) { return 'auto'; }\n else {\n return false;\n }\n\n }\n\n var options = {\n type: config.type,\n data: config.data,\n plugins: plugins,\n options: {\n locale: 'sv-SE',\n elements: {\n arc: {\n borderWidth: 0\n }\n },\n interaction: config.interaction,\n scales: config.scales,\n responsive: true,\n layout: config.layout,\n\n onClick: function (e, legendItem, legend) {\n },\n onHover: hoverFn,\n \n plugins: {\n datalabels: {\n display: function (ctx) {\n //console.log('display ctx', ctx, ctx.dataset.data[ctx.dataIndex]);\n return false;\n },\n formatter: function (value, ctx) {\n return value.toLocaleString('sv-SE');\n }\n }, \n tooltip: {\n enabled: (config.type === 'line' || config.type === 'bar') ? true : false,\n intersect: config.type === 'line' ? false : true,\n mode: 'nearest',\n yAlign: 'center',\n padding: 13,\n backgroundColor: '#ffffff',\n borderColor: '#cccccc',\n bodyColor: '#000000',\n shadow: true,\n shadowcolor: '#000000',\n boxShadow: '0px 1px 8px #22222229',\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n shadowBlur: 8,\n shadowColor: '#22222229',\n borderWidth: 1,\n titleColor: '#222222',\n cornerRadius: 0,\n pointerStyle: 'circular',\n usePointStyle: true, \n titleFont: {\n family : \"Telge Sans\"\n },\n bodyFont: {\n family : \"Telge Sans\"\n }\n },\n legend: { display: false },\n title: config.title\n },\n legend: {\n display: false,\n position: 'top',\n onClick: function (e) {\n //console.log(\"legend click @ x: \" + e);\n }\n }\n }\n }\n\n if (options.data.datasets) {\n \n options.data.datasets.forEach((dx, i) => {\n //console.log('adding formatter:', dx);\n if (dx.datalabels?.labels?.hilite) {\n\n dx.datalabels.labels.hilite.formatter = hitliteFn;\n dx.datalabels.labels.hilite.display = hitliteDisplayFn;\n }\n if (dx.datalabels?.labels?.default) {\n dx.datalabels.labels.default.display = defaultDisplayFn;\n }\n });\n }\n\n var myChart = new Chart(ctx, options);\n\n chart.currentMap.set(config.chartId, myChart)\n },\n onClick: (evt, item) => {\n //console.log('[CHART] clicked')\n current.update()\n item[0]._model.outerRadius += 10\n },\n clearLegendClasses: (legendElementId) => {\n\n //console.log(\"[Chart] Clear legend classes\");\n var list = document.getElementById(legendElementId);\n\n var listItems = Array.from(list.children);\n list.classList.remove(\"active\");\n listItems.forEach((li, i) => {\n\n li.classList.remove(\"legend-active\");\n\n });\n },\n highlightItem: (evt, index, chartId) => {\n\n //console.log(\"highlightItem\", index, chartId);\n\n var currentChart = chart.currentMap.get(chartId);\n\n //console.log(\"highlightItem\", currentChart);\n\n if (index < 0) {\n currentChart.setActiveElements([]);\n }\n else {\n currentChart.setActiveElements([\n { datasetIndex: 0, index: index },\n ]);\n }\n\n currentChart.render();\n },\n highlightLine: (evt, ds, count, chartId) => {\n //console.log(\"highlightLine\", ds, count);\n var currentChart = chart.currentMap.get(chartId);\n if (ds < 0) {\n currentChart.setActiveElements([]);\n }\n else {\n currentChart.setActiveElements([\n { datasetIndex: ds, index: 0 }\n ]);\n }\n\n\n\n currentChart.render();\n },\n highlightBar: (evt, ds, count, chartId) => {\n //console.log(\"highlightBar\", ds, count);\n\n var activeElements = [];\n for (var i = 0; i < count; i++) {\n activeElements.push({ datasetIndex: ds, index: i })\n }\n var currentChart = chart.currentMap.get(chartId);\n if (ds < 0) {\n currentChart.setActiveElements([]);\n }\n else {\n currentChart.setActiveElements(activeElements);\n }\n\n\n\n currentChart.render();\n }\n};\n\nexport { chart };","let cookies = {\n\n add: function (name, value, days) {\n var expires;\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toGMTString();\n }\n else {\n expires = \"\";\n }\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\n }\n};\n\nexport { cookies };","import { loadScript, loadInlineScript } from \"./utils\";\n\nconst kundo = {\n loadKundoScript: async function () {\n return await loadScript('https://static-chat.kundo.se/chat-js/org/705/widget.js');\n\n },\n loadInlineKundoScript: function () {\n return loadInlineScript(\"(function (w) {w.$kundo_chat = w.$kundo_chat || {}; w.$kundo_chat.custom_texts = {START_TEXT: 'Chatta med oss',};}(this))\");\n\n },\n\n show: function () {\n window.setTimeout(() => {\n if (window.$kundo_chat) {\n window.$kundo_chat.show_widget();\n }\n }, 500)\n\n },\n hide: function () {\n window.setTimeout(() => {\n if (window.$kundo_chat) {\n window.$kundo_chat.hide_widget();\n\n }\n }, 500)\n },\n\n loadChatScript: function (scriptContent) {\n try {\n let tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = scriptContent.trim();\n\n let scriptElement = tempDiv.querySelector(\"script\");\n if (!scriptElement) {\n console.warn(\"No script tag found in the script content.\");\n return;\n }\n\n if (scriptElement.id && document.getElementById(scriptElement.id)) {\n console.log(\"Script with ID\", scriptElement.id, \"is already loaded.\");\n return;\n }\n\n let newScript = document.createElement(\"script\");\n Array.from(scriptElement.attributes).forEach(attr => {\n newScript.setAttribute(attr.name, attr.value);\n });\n\n if (scriptElement.innerHTML) {\n newScript.innerHTML = scriptElement.innerHTML;\n }\n\n document.body.appendChild(newScript);\n\n } catch (error) {\n console.warn(\"Failed to execute the chat script:\", error);\n }\n }\n};\n\nexport { kundo };","import '../Styles/styles.scss'\nimport 'bootstrap/js/dist/dropdown';\nimport 'bootstrap/js/dist/carousel';\nimport 'bootstrap/js/dist/modal';\nimport 'lazysizes';\n\nimport { expandableList } from './expandableList';\nimport { slider } from './slider';\nimport { maps } from './maps';\nimport { metermaps } from './metermap';\nimport { matomo } from './matomo';\nimport { elementscroll } from './elementscroll';\nimport { stickymenu } from './stickymenu';\nimport { formValidation } from './form-validation';\nimport { iframe } from './iframe';\nimport { recycleareamap } from './recycleareamap';\nimport { fullheight } from './fullheight';\nimport { chart } from './chart';\nimport { cookies } from './cookies';\nimport { kundo } from './kundo';\nimport { scrollParentToElement } from './utils';\n\nwindow.expandableList = expandableList;\nwindow.slider = slider;\nwindow.maps = maps;\nwindow.scrollParentToElement = scrollParentToElement;\nwindow.metermaps = metermaps;\nwindow.fullheight = fullheight;\nwindow.recycleareamap = recycleareamap;\nwindow.matomo = matomo;\nwindow.elementscroll = elementscroll;\nwindow.stickymenu = stickymenu;\nwindow.formValidation = formValidation;\nwindow.iframe = iframe;\nwindow.chart = chart;\nwindow.cookies = cookies;\nwindow.kundo = kundo;\n\n"],"names":["bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","concat","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","nodeName","toLowerCase","getWindow","node","window","toString","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","name","enabled","phase","fn","_ref","state","Object","keys","elements","forEach","style","styles","attributes","assign","value","removeAttribute","setAttribute","effect","_ref2","initialStyles","position","options","strategy","top","margin","arrow","hasOwnProperty","property","attribute","requires","getBasePlacement","split","getBoundingClientRect","rect","width","height","x","y","getLayoutRect","clientRect","offsetWidth","offsetHeight","Math","abs","offsetLeft","offsetTop","contains","parent","child","rootNode","getRootNode","next","isSameNode","parentNode","host","getComputedStyle","isTableElement","indexOf","getDocumentElement","document","documentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","navigator","userAgent","currentNode","css","transform","perspective","contain","willChange","filter","getContainingBlock","getMainAxisFromPlacement","max","min","round","within","mergePaddingObject","paddingObject","expandToHashMap","hashMap","key","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","roundOffsets","_ref3","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","addEventListener","update","removeEventListener","hash","getOppositePlacement","replace","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","test","getScrollParent","body","listScrollParents","list","_element$ownerDocumen","isBody","target","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","referenceElement","clippingClientRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","length","overflows","sort","a","b","computeAutoPlacement","referenceRect","checksMap","Map","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","push","every","check","set","_loop","_i","fittingPlacement","find","get","slice","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","order","modifiers","map","visited","Set","result","modifier","add","dep","has","depModifier","DEFAULT_OPTIONS","areValidElements","_len","arguments","args","Array","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref3$options","cleanupFn","forceUpdate","_state$elements","index","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","undefined","destroy","onFirstUpdate","createPopper","eventListeners","module","exports","Data","SelectorEngine","EventHandler","_interopDefaultLegacy","e","Data__default","SelectorEngine__default","EventHandler__default","TRANSITION_END","emulateTransitionEnd","duration","called","emulatedDuration","listener","setTimeout","dispatchEvent","Event","triggerTransitionEnd","execute","callback","constructor","obj","jquery","nodeType","findOne","this","_element","DATA_KEY","dispose","remove","off","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","one","getInstance","VERSION","NAME","Error","factory","Manipulator","BaseComponent","Manipulator__default","BaseComponent__default","isRTL","dir","DATA_API_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE_ITEM","POINTER_TYPE_TOUCH","Carousel","config","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","Boolean","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","elementStyle","parentNodeStyle","display","visibility","isVisible","prev","event","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","componentName","configTypes","expectedTypes","valueType","call","match","toType","RegExp","TypeError","toUpperCase","typeCheckConfig","_handleSwipe","absDeltax","on","_keydown","_addTouchEventListeners","pointerType","touches","clientX","move","clearTimeout","itemImg","preventDefault","classList","tagName","_getItemByOrder","activeElement","isNext","isPrev","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","trigger","from","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","getAttribute","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","defaultPrevented","triggerSlidEvent","reflow","completeCallBack","includes","carouselInterface","getDataAttributes","action","ride","jQueryInterface","each","dataApiClickHandler","selector","hrefAttr","startsWith","trim","getSelector","getElementFromSelector","slideIndex","carousels","plugin","$","jQuery","hasAttribute","getjQuery","JQUERY_NO_CONFLICT","Constructor","noConflict","readyState","getSelectorFromElement","toggle","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","SELECTOR_DATA_TOGGLE","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","selected","triggerArray","isOpen","delegateTarget","triggerData","elementMap","instanceMap","size","console","error","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","addHandler","oneOff","wrapFn","handlers","previousFn","domElements","querySelectorAll","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","keyHandlers","isNative","jQueryEvent","bubbles","nativeDispatch","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","normalizeData","val","normalizeDataKey","chr","setDataAttribute","removeDataAttribute","dataset","pureKey","charAt","getDataAttribute","prototype","children","matches","parents","ancestor","Node","ELEMENT_NODE","previous","previousElementSibling","nextElementSibling","Popper","_interopNamespace","__esModule","n","create","k","d","getOwnPropertyDescriptor","enumerable","freeze","Popper__namespace","isDisabled","disabled","noop","ESCAPE_KEY","SPACE_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","REGEXP_KEYDOWN","EVENT_CLICK","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_getPopperConfig","isDisplayStatic","closest","focus","_completeHide","_getPlacement","parentDropdown","isEnd","getPropertyValue","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","items","dropdownInterface","clearMenus","button","toggles","context","composedPath","isMenuTarget","clickEvent","dataApiKeydownHandler","isActive","stopPropagation","getToggleButton","click","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","getWidth","documentWidth","innerWidth","_disableOverFlow","actualValue","_setElementAttributes","styleProp","scrollbarWidth","calculatedValue","_resetElementAttributes","removeProperty","Default$1","rootElement","clickCallback","DefaultType$1","NAME$1","CLASS_NAME_SHOW$1","EVENT_MOUSEDOWN","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","className","appendChild","removeChild","backdropTransitionDuration","EVENT_HIDE_PREVENTED","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_isShown","_ignoreBackdropClick","_isAnimated","showEvent","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_enforceFocus","_triggerBackdropTransition","_resetAdjustments","currentTarget","isModalOverflowing","modalTransitionDuration","isBodyOverflowing","paddingLeft","paddingRight","lazySizes","Date","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","init","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","autosizesElems","sizeElement","getSizeElement","debouncedUpdateElementsSizes","preloadElems","isCompleted","resetPreloadingTimer","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","currentExpand","isLoading","lowRuns","resetPreloading","isNestedVisible","checkElements","throttledCheckElements","switchLoadingClass","rafedSwitchLoadingClass","rafSwitchLoadingClass","changeIframeSrc","handleSources","lazyUnveil","unveilElement","afterScroll","altLoadmodeScrollListner","onload","running","waiting","firstFns","secondFns","fns","run","rafBatch","docElem","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","hasClass","ele","cls","addClass","removeClass","reg","addRemoveLoadEvents","dom","triggerEvent","detail","noBubbles","noCancelable","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","getCSS","_lazysizesWidth","rAF","queue","_lsFlush","runFns","shift","rAFIt","simple","that","debounce","func","timeout","timestamp","later","last","now","loader","elemExpand","outerRect","visible","lastTime","gDelay","rICTimeout","idleCallback","isPriority","delay","throttle","eLlen","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","expand","_defEx","innerHeight","preloadAfterLoad","_lazyCache","contentWindow","location","source","sourceSrcset","isAuto","sizes","isImg","srcset","isPicture","firesLoad","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","_","persisted","loadingElements","img","MutationObserver","observe","childList","subtree","checkElems","unveil","_aLSL","sources","dataAttr","uP","aC","rC","hC","fire","gW","isValidPartialFormatter","entry","removeElement","parentElement","isSet","isNumeric","isNaN","isFinite","addClassFor","limit","asArray","isArray","countDecimals","numStr","pieces","String","join","getPageOffset","doc","supportPageOffset","isCSS1Compat","compatMode","subRangeRatio","pa","pb","fromPercentage","range","startRange","getJ","arr","j","toStepping","xVal","xPct","va","vb","toPercentage","getStep","xSteps","snap","PipsType","PipsMode","Spectrum","singleStep","xNumSteps","xHighestCompleteStep","ordered","handleEntryPoint","handleStepPoint","getDistance","distances","getAbsoluteDistance","start_factor","xPct_index","rest_factor","rest_rel_distance","range_pct","rel_range_distance","abs_distance_counter","range_counter","fromStepping","isPercentage","getDefaultStep","isDown","getNearbySteps","stepBefore","startValue","step","highestStep","thisStep","stepAfter","countStepDecimals","stepDecimals","hasNoSize","convert","percentage","value1","totalSteps","ceil","toFixed","defaultFormatter","cssClasses","base","origin","handle","handleLower","handleUpper","touchArea","horizontal","vertical","background","connect","connects","ltr","rtl","textDirectionLtr","textDirectionRtl","draggable","drag","tap","active","tooltip","pips","pipsHorizontal","pipsVertical","marker","markerHorizontal","markerVertical","markerNormal","markerLarge","markerSub","valueHorizontal","valueVertical","valueNormal","valueLarge","valueSub","INTERNAL_EVENT_NS","tooltips","aria","testStep","parsed","testKeyboardPageMultiplier","keyboardPageMultiplier","testKeyboardMultiplier","keyboardMultiplier","testKeyboardDefaultStep","keyboardDefaultStep","testRange","spectrum","testStart","handles","testSnap","testAnimate","animate","testAnimationDuration","animationDuration","testConnect","testOrientation","ort","testMargin","testLimit","testPadding","totalPadding","firstValue","testDirection","testBehaviour","fixed","hover","unconstrained","dragAll","testTooltips","formatter","testHandleAttributes","handleAttributes","testAriaFormat","ariaFormat","testFormat","isValidFormatter","format","testKeyboardSupport","keyboardSupport","testDocumentElement","testCssPrefix","cssPrefix","testCssClasses","testOptions","tests","r","t","orientation","behaviour","defaults","msPrefix","msTransform","noPrefix","transformRule","scope","originalOptions","scope_Base","scope_Handles","scope_Connects","scope_Pips","scope_Tooltips","addTarget","actions","pointerEnabled","msPointerEnabled","supportsPassive","CSS","supports","opts","getSupportsPassive","scope_Target","scope_Spectrum","scope_Values","scope_Locations","scope_HandleNumbers","scope_ActiveHandlesCount","scope_Events","scope_Document","scope_DocumentElement","scope_Body","scope_DirOffset","addNodeTo","div","addOrigin","handleNumber","isSliderDisabled","isHandleDisabled","horizontalKeys","verticalKeys","largeStepKeys","edgeKeys","reverse","isLargeDown","isLargeUp","isUp","isMin","isMax","getNextStepsForHandle","setHandle","fireEvent","eventKeydown","attributes_1","addConnect","addTooltip","firstChild","removeTooltips","removeEvent","bindEvent","values","unencoded","formattedValue","innerHTML","mapToRange","stepped","generateSpread","array","group","mode","Range","Steps","Count","spread","Positions","Values","getGroup","indexes","firstInRange","lastInRange","ignoreFirst","ignoreLast","prevPct","unshift","q","newPct","pctDifference","pctPos","steps","realSteps","stepSize","low","high","isSteps","density","LargeValue","SmallValue","NoValue","addMarking","filterFunc","_a","_b","valueSizeClasses","None","markerSizeClasses","valueOrientationClasses","markerOrientationClasses","getClasses","sizeClasses","addSpread","removePips","baseSize","alt","attachEvent","method","pageOffset","eventTarget","mouse","pointer","buttons","isTouchOnTarget","checkTouch","composed","targetTouches","pageX","pageY","targetTouch","changedTouches","clientY","points","cursor","fixEvent","doNotReject","calcPoint","methods","eventName","calcPointToPercentage","proposal","documentLeave","eventEnd","eventMove","appVersion","buttonsProperty","movement","startCalcPoint","moveHandles","locations","handleNumbers","listeners","c","setZindex","eventStart","moveEvent","endEvent","outEvent","eventTap","clickedPosition","smallestDifference","handlePosition","differenceWithThisHandle","getClosestHandle","eventHover","targetEvent","scope_Self","namespacedEvent","substring","tEvent","tNamespace","isInternalNamespace","eventType","checkHandlePosition","lookBackward","lookForward","getValue","inRuleOrder","v","o","upward","proposals","firstHandle","f","transformDirection","zIndex","exactInput","translateRule","updateConnect","updateHandlePosition","l","h","connectWidth","scaleRule","resolveToValue","valueSet","input","fireSetEvent","isInit","space_1","valueGet","nearbySteps","increment","decrement","connectOptions","connectBase","addElements","handleBefore","handleAfter","eventHolders","handlesToDrag","handleNumbersToDrag","eventHolder","positions","text","noUiSlider","__moveHandles","updateOptions","optionsToUpdate","updateAble","newOptions","getPositions","getTooltips","getOrigins","initialize","api","nouislider","__spectrum","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","Symbol","toStringTag","expandableList","expandByDefaultInDesktop","elementId","myCollapse","getElementById","close","listenToEvents","mobileNav","siteHeader","calculatedHeight","scrollY","hideMenu","mobileMenu","slider","sliderEl","noUiSliderInstance","initSlider","registerUpdateEvent","registerChangeEvent","registerInputChangeEvent","preventNonNumericInput","marginMaxInput","toLocaleString","maximumFractionDigits","sliderInstance","newValue","sliderMin","sliderMax","currentMin","resetSlider","async","loadScript","scriptPath","loadedScripts","reject","script","onerror","maps","activeMarker","activeType","isClicked","instanceLookup","currentMap","streetViewControl","mapTypeControl","mapId","hoverCallback","selectMarker","toggleActiveMarker","selectMarkerById","markerId","shouldMarkAsCurrent","zoomToMarker","lat","lng","level","google","LatLng","panTo","addListenerOnce","setZoom","setKmlLayers","layers","preserveViewport","kmlUrl","getTime","kmlLayer","KmlLayer","setMap","clearKmlLayers","initStaticMap","mapConfig","zoom","importLibrary","resetActiveIcons","link","hoverType","typeName","setActiveType","activeItem","currentMarker","dotNetInstance","invokeMethodAsync","initDotNetInstance","initMapAppartments","places","clickToNav","log","AdvancedMarkerElement","bounds","LatLngBounds","InfoWindow","item","latitude","longitude","latlng","customContent","objectId","content","title","address","addListener","apartmentElement","closeButton","once","extend","fitBounds","toggleHoverMarker","activate","initMapMultiple","JSON","parse","latitud","longitud","url","href","initMapRecycle","markers","recyclePlaceType","zindex","placeList","elementscroll","overIdScroll","metermaps","markersLookup","SelectedItem","constants","fillOpacity","activeFillOpacity","strokeWidth","activeStrokeWidth","hoverStrokeWidth","colorsLookup","getIcon","Size","scaledSize","anchor","Point","labelOrigin","currentDotNetInstance","searchCallback","selectFeature","feature","getProperty","ft","status","overrideStyle","strokeColor","forEachProperty","obj2","fromEntries","filterGeoMap","selectGeoMapFeature","geometry","getGeometry","forEachLatLng","la","lo","currPosition","getArray","g","coords","myarr","cc","coordPolygon","Polygon","paths","poly","containsLocation","strokeWeight","selectGeoMapFeatureByCoords","place","PlaceName","Unknown","newMarker","Marker","icon","icons","default","setOpacity","setIcon","setCenter","anyselected","clear","placeName","unknown","initGeoMap","protocol","searchField","mapTypeId","MapTypeId","ROADMAP","scaleControl","overviewMapControl","panControl","fullscreenControl","zoomControl","zoomControlOptions","ControlPosition","RIGHT_BOTTOM","overviewMapControlOptions","opened","loadGeoJson","geoJson","iconsLookup","planned","ongoing","completed","setStyle","fillColor","displayName","path","latLng","polypoint","getCenter","label","ev","strokeOpacity","defaultBounds","north","south","east","west","componentRestrictions","country","fields","strictBounds","types","paccontainer","autocomplete","Autocomplete","geocoder","Geocoder","lastChild","innerText","getPlace","adress","geocode","results","GeocoderStatus","OK","newplace","matomo","_paq","initMatomo","consentGiven","siteId","u","s","insertBefore","initTagManager","pageTitle","disableRecording","enableRecording","_mtm","scrollHorizontally","scrollingEvent","containerId","stickymenu","ticking","scrollToElement","parentId","scrollHorizontalToElement","setNavArrows","windowScroll","headerHeight","importantNotice","behavior","scrollToTop","scrollTo","checkScroll","windowHeight","focusElement","tabNav","chapterHeader","siteHeaderPosTop","tabNavPosTop","chapterHeaderPosTop","lastKnownScrollPosition","isMobile","initTabNav","initChapterHeader","checkIfMobile","scrollTracking","errorProps","invalidClass","validationErrorClass","validationErrorParentClass","customMessages","errorPlacement","validForm","inputs","defaultObject","copy","attr","clone","form","focusFirst","ms","invalidNode","focusInvalidInput","validity","valid","toggleInvalidClass","checkValidity","message","localErrorProps","getCustomMessage","setCustomValidity","handleCustomMessages","insertError","errorNode","refNode","nodeToInsert","validationMessage","textContent","insertAfter","handleCustomMessageDisplay","validFormInputs","formValidation","startBankIDApp","token","platform","encodeURIComponent","isDevice","initValidForm","formEl","ValidForm","clearInput","inputId","iframe","resizeIframe","formblock","this_frame","scrollUp","maxHeight","toDialog","__assign","p","findEventIndex","pointers","pointerId","addPointer","splice","getMiddle","event2","event1","pop","sqrt","pow","NodeList","params","initCustomEvent","down","up","onPointer","eventOpts","destroyPointer","TouchEvent","divStyle","isIE","documentMode","createStyle","prefixes","prefixCache","getPrefixedName","capName","prefixedName","getCSSNum","getBoxStyle","suffix","getDimensions","parentStyle","rectElem","rectParent","border","getClass","rsvg","canvas","disablePan","disableZoom","disableXAxis","disableYAxis","easing","exclude","excludeClass","handleStartEvent","maxScale","minScale","panOnlyWhenZoomed","pinchAndPan","relative","setTransform","scale","isSVG","matrixValue","startX","startY","startScale","touchAction","Panzoom","isAttached","namespaceURI","isSVGElement","userSelect","origX","origY","startClientX","startClientY","startDistance","isPanning","silent","setTransformWithEvent","originalEvent","setTransition","constrainXY","toX","toY","toScale","panOptions","force","dims","realWidth","realHeight","scaledWidth","scaledHeight","diffHorizontal","diffVertical","minX","maxX","minY","maxY","roundPixels","constrainScale","zoomOptions","elemWidth","elemHeight","elemScaledWidth","elemScaledHeight","pan","focal","panResult","zoomInOut","isIn","exp","zoomToPoint","point","effectiveArea","handleDown","cur","isExcluded","handleMove","hasMultiple","handleUp","removePointer","bound","noBind","eventNames","getPan","getScale","getOptions","shallowClone","resetOptions","resetStyle","zoomIn","zoomOut","zoomWithWheel","wheel","deltaY","deltaX","recycleareamap","initContainers","svgcontainers","areamapsblock","initButtons","onclick","containerlistsactive","containerValue","currentContainer","showDescription","skylt","skyltaktiv","skyltdubbel","skyltdubbelaktiv","dubbel","sortTypes","addSymbol","currentSymbols","dubble","svgskylt","typeClass","addIcon","sortTypeValue","iconClass","foreignObject","createElementNS","polygon","nextSibling","fullscreen","panzoom","header","symbol","maxscale","zoominbutton","zoomoutbutton","checkZoom","zoomlevel","fullheight","initHeight","fullheightpage","tabContent","calculateHeight","fullheightElements","noticeHeight","newHeight","maplink","tab","removeViewmap","chart","dataLabels","setup","ctx","getContext","legendElementId","chartId","hoverFn","legendItem","legend","listItems","li","selectedDs","datasetIndex","plugins","datalabels","ChartDataLabels","hitliteFn","hiliteText","hitliteDisplayFn","hiliteIndex","hiliteSeriesIndex","dataIndex","defaultDisplayFn","defaultDatalabels","locale","arc","borderWidth","interaction","scales","responsive","layout","onClick","onHover","intersect","yAlign","backgroundColor","borderColor","bodyColor","shadow","shadowcolor","boxShadow","shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor","titleColor","cornerRadius","pointerStyle","usePointStyle","titleFont","family","bodyFont","datasets","dx","_dx$datalabels","_dx$datalabels$labels","_dx$datalabels2","_dx$datalabels2$label","labels","hilite","myChart","Chart","_model","outerRadius","clearLegendClasses","highlightItem","currentChart","setActiveElements","render","highlightLine","ds","count","highlightBar","activeElements","cookies","days","expires","date","setTime","toGMTString","cookie","kundo","loadKundoScript","loadInlineKundoScript","$kundo_chat","show_widget","hide_widget","loadChatScript","scriptContent","tempDiv","scriptElement","warn","newScript","scrollParentToElement"],"sourceRoot":""}