{"version":3,"file":"js/680-d5e98227857ed950a34f.js","mappings":"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","sources":["webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/math.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/enums.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/createPopper.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/within.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/popper.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://mein-bge/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://mein-bge/./node_modules/imask/esm/core/utils.js","webpack://mein-bge/./node_modules/imask/esm/core/action-details.js","webpack://mein-bge/./node_modules/imask/esm/core/holder.js","webpack://mein-bge/./node_modules/imask/esm/masked/factory.js","webpack://mein-bge/./node_modules/imask/esm/controls/mask-element.js","webpack://mein-bge/./node_modules/imask/esm/controls/html-mask-element.js","webpack://mein-bge/./node_modules/imask/esm/controls/html-input-mask-element.js","webpack://mein-bge/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://mein-bge/./node_modules/imask/esm/controls/input-history.js","webpack://mein-bge/./node_modules/imask/esm/controls/input.js","webpack://mein-bge/./node_modules/imask/esm/core/change-details.js","webpack://mein-bge/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://mein-bge/./node_modules/imask/esm/masked/base.js","webpack://mein-bge/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://mein-bge/./node_modules/imask/esm/masked/pattern/cursor.js","webpack://mein-bge/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://mein-bge/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://mein-bge/./node_modules/imask/esm/masked/regexp.js","webpack://mein-bge/./node_modules/imask/esm/masked/pattern.js","webpack://mein-bge/./node_modules/imask/esm/masked/range.js","webpack://mein-bge/./node_modules/imask/esm/masked/date.js","webpack://mein-bge/./node_modules/imask/esm/masked/dynamic.js","webpack://mein-bge/./node_modules/imask/esm/masked/enum.js","webpack://mein-bge/./node_modules/imask/esm/masked/number.js","webpack://mein-bge/./node_modules/imask/esm/masked/function.js","webpack://mein-bge/./node_modules/imask/esm/masked/pipe.js","webpack://mein-bge/./node_modules/imask/esm/masked/repeat.js","webpack://mein-bge/./node_modules/imask/esm/index.js","webpack://mein-bge/./node_modules/bootstrap.native/dist/bootstrap-native.js"],"sourcesContent":["export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import 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 getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask, ReturnMasked extends Masked=InstanceType> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDate=MaskedDate> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedNumber=MaskedNumber> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedEnum=MaskedEnum> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRange=MaskedRange> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedPattern=MaskedPattern> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDynamic=MaskedDynamic> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask, ReturnMasked=Opts extends MaskedOptions ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(\"Masked class is not found for provided mask \" + nOpts.mask + \", appropriate module needs to be imported manually before creating mask.\");\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n","import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n /** Can skip chars */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n get consumed() {\n return Boolean(this.rawInserted) || this.skip;\n }\n equals(details) {\n return this.inserted === details.inserted && this.tailShift === details.tailShift && this.rawInserted === details.rawInserted && this.skip === details.skip;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, objectIncludes, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!this.optionsIsChanged(opts)) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i = 0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n this.doCommit();\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (inserted === void 0) {\n inserted = '';\n }\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n optionsIsChanged(opts) {\n return !objectIncludes(this, opts);\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char : ''\n });\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n pad(flags) {\n return this._appendPlaceholder();\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n this.isFilled = true;\n return new ChangeDetails({\n inserted: this.placeholderChar\n });\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n pad(flags) {\n return new ChangeDetails();\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n repeat,\n ...bOpts\n } = normalizeOpts(this.blocks[bName]); // TODO type Opts\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts /* TODO */) : createMask(blockOpts);\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n if (!state) {\n this.reset();\n return;\n }\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index, block; block = this._blocks[bi]; ++bi) {\n var _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n details.aggregate(b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length));\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n pad(flags) {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)));\n return details;\n }\n}\nMaskedPattern.DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!ch) details.skip = !this.isComplete;\n return [ch, details];\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.autofix || this.value.length + 1 > this.maxLength) return super._appendCharRaw(ch, flags);\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const [minstr, maxstr] = this.boundaries(this.value + ch);\n if (Number(maxstr) < this.from) return super._appendCharRaw(fromStr[this.value.length], flags);\n if (Number(minstr) > this.to) {\n if (!flags.tail && this.autofix === 'pad' && this.value.length + 1 < this.maxLength) {\n return super._appendCharRaw(fromStr[this.value.length], flags).aggregate(this._appendCharRaw(ch, flags));\n }\n return super._appendCharRaw(toStr[this.value.length], flags);\n }\n return super._appendCharRaw(ch, flags);\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n pad(flags) {\n const details = new ChangeDetails();\n if (this.value.length === this.maxLength) return details;\n const value = this.value;\n const padLength = this.maxLength - this.value.length;\n if (padLength) {\n this.reset();\n for (let i = 0; i < padLength; ++i) {\n details.aggregate(super._appendCharRaw('0', flags));\n }\n\n // append tail\n value.split('').forEach(ch => this._appendCharRaw(ch));\n }\n return details;\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\nconst DefaultPattern = 'd{.}`m{.}`Y';\n\n// Make format and parse required when pattern is provided\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n static extractPatternOptions(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = opts;\n return {\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n };\n }\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super(MaskedDate.extractPatternOptions({\n ...MaskedDate.DEFAULTS,\n ...opts\n }));\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n optionsIsChanged(opts) {\n return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n mask: Date,\n pattern: DefaultPattern,\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = this.currentMask.value.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null || _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n get autofix() {\n return this.currentMask ? this.currentMask.autofix : this._autofix;\n }\n set autofix(autofix) {\n this._autofix = autofix;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\n/** Currently chosen mask */\n/** Currently chosen mask */\n/** Compliled {@link Masked} options */\n/** Chooses {@link Masked} depending on input value */\nMaskedDynamic.DEFAULTS = {\n ...Masked.DEFAULTS,\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport ChangeDetails from '../core/change-details.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport './base.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super({\n ...MaskedEnum.DEFAULTS,\n ...opts\n }); // mask will be created in _update\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: enum_,\n ...eopts\n } = opts;\n if (enum_) {\n const lengths = enum_.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = enum_;\n }\n super._update(eopts);\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const matchFrom = Math.min(this.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n const matches = this.enum.filter(e => this.matchValue(e, this.unmaskedValue + ch, matchFrom));\n if (matches.length) {\n if (matches.length === 1) {\n this._forEachBlocksInRange(0, this.value.length, (b, bi) => {\n const mch = matches[0][bi];\n if (bi >= this.value.length || mch === b.value) return;\n b.reset();\n b._appendChar(mch, flags);\n });\n }\n const d = super._appendCharRaw(matches[0][this.value.length], flags);\n if (matches.length === 1) {\n matches[0].slice(this.unmaskedValue.length).split('').forEach(mch => d.aggregate(super._appendCharRaw(mch)));\n }\n return d;\n }\n return new ChangeDetails({\n skip: !this.isComplete\n });\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n // just drop tail\n return new ContinuousTailDetails('', fromPos);\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (fromPos === toPos) return new ChangeDetails();\n const matchFrom = Math.min(super.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n let pos;\n for (pos = fromPos; pos >= 0; --pos) {\n const matches = this.enum.filter(e => this.matchValue(e, this.value.slice(matchFrom, pos), matchFrom));\n if (matches.length > 1) break;\n }\n const details = super.remove(pos, toPos);\n details.tailShift += pos - fromPos;\n return details;\n }\n get isComplete() {\n return this.enum.indexOf(this.value) >= 0;\n }\n}\n/** Match enum value */\nMaskedEnum.DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n matchValue: (estr, istr, matchFrom) => estr.indexOf(istr, matchFrom) === matchFrom\n};\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nvar _MaskedNumber;\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const oldValue = this._value;\n this._value += ch;\n const num = this.number;\n let accepted = !isNaN(num);\n let skip = false;\n if (accepted) {\n let fixedNum;\n if (this.min != null && this.min < 0 && this.number < this.min) fixedNum = this.min;\n if (this.max != null && this.max > 0 && this.number > this.max) fixedNum = this.max;\n if (fixedNum != null) {\n if (this.autofix) {\n this._value = this.format(fixedNum, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n skip || (skip = oldValue === this._value && !flags.tail); // if not changed on tail it's still ok to proceed\n } else {\n accepted = false;\n }\n }\n accepted && (accepted = Boolean(this._value.match(this._numberRegExp)));\n }\n let appendDetails;\n if (!accepted) {\n this._value = oldValue;\n appendDetails = new ChangeDetails();\n } else {\n appendDetails = new ChangeDetails({\n inserted: this._value.slice(oldValue.length),\n rawInserted: skip ? '' : ch,\n skip\n });\n }\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\n_MaskedNumber = MaskedNumber;\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n ...Masked.DEFAULTS,\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [_MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern mask */\nclass RepeatBlock extends MaskedPattern {\n get repeatFrom() {\n var _ref;\n return (_ref = Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === Infinity ? 0 : this.repeat) != null ? _ref : 0;\n }\n get repeatTo() {\n var _ref2;\n return (_ref2 = Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) != null ? _ref2 : Infinity;\n }\n constructor(opts) {\n super(opts);\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n var _ref3, _ref4, _this$_blocks;\n const {\n repeat,\n ...blockOpts\n } = normalizeOpts(opts); // TODO type\n this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);\n const block = createMask(this._blockOpts);\n this.repeat = (_ref3 = (_ref4 = repeat != null ? repeat : block.repeat) != null ? _ref4 : this.repeat) != null ? _ref3 : Infinity; // TODO type\n\n super._update({\n mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && ((_this$_blocks = this._blocks) == null ? void 0 : _this$_blocks.length) || 0, this.repeatFrom)),\n blocks: {\n m: block\n },\n eager: block.eager,\n overwrite: block.overwrite,\n skipInvalid: block.skipInvalid,\n lazy: block.lazy,\n placeholderChar: block.placeholderChar,\n displayChar: block.displayChar\n });\n }\n _allocateBlock(bi) {\n if (bi < this._blocks.length) return this._blocks[bi];\n if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {\n this._blocks.push(createMask(this._blockOpts));\n this.mask += 'm';\n return this._blocks[this._blocks.length - 1];\n }\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n for (let bi = (_this$_mapPosToBlock$ = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index) != null ? _this$_mapPosToBlock$ : Math.max(this._blocks.length - 1, 0), block, allocated;\n // try to get a block or\n // try to allocate a new block if not allocated already\n block = (_this$_blocks$bi = this._blocks[bi]) != null ? _this$_blocks$bi : allocated = !allocated && this._allocateBlock(bi); ++bi) {\n var _this$_mapPosToBlock$, _this$_mapPosToBlock, _this$_blocks$bi, _flags$_beforeTailSta;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n if (blockDetails.skip && allocated) {\n // remove the last allocated block and break\n this._blocks.pop();\n this.mask = this.mask.slice(1);\n break;\n }\n details.aggregate(blockDetails);\n if (blockDetails.consumed) break; // go next char\n }\n return details;\n }\n _trimEmptyTail(fromPos, toPos) {\n var _this$_mapPosToBlock2, _this$_mapPosToBlock3;\n if (fromPos === void 0) {\n fromPos = 0;\n }\n const firstBlockIndex = Math.max(((_this$_mapPosToBlock2 = this._mapPosToBlock(fromPos)) == null ? void 0 : _this$_mapPosToBlock2.index) || 0, this.repeatFrom, 0);\n let lastBlockIndex;\n if (toPos != null) lastBlockIndex = (_this$_mapPosToBlock3 = this._mapPosToBlock(toPos)) == null ? void 0 : _this$_mapPosToBlock3.index;\n if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;\n let removeCount = 0;\n for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {\n if (this._blocks[blockIndex].unmaskedValue) break;\n }\n if (removeCount) {\n this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);\n this.mask = this.mask.slice(removeCount);\n }\n }\n reset() {\n super.reset();\n this._trimEmptyTail();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._trimEmptyTail(fromPos, toPos);\n return removeDetails;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos == null && this.repeatTo === Infinity) return Infinity;\n return super.totalInputPositions(fromPos, toPos);\n }\n get state() {\n return super.state;\n }\n set state(state) {\n this._blocks.length = state._blocks.length;\n this.mask = this.mask.slice(0, this._blocks.length);\n super.state = state;\n }\n}\nIMask.RepeatBlock = RepeatBlock;\n\nexport { RepeatBlock as default };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as RepeatBlock } from './masked/repeat.js';\nimport './core/action-details.js';\nimport './controls/input-history.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","// Native Javascript for Bootstrap 3 v2.0.27 | © dnp_theme | MIT-License\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD support:\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like:\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n var bsn = factory();\n root.Affix = bsn.Affix;\n root.Alert = bsn.Alert;\n root.Button = bsn.Button;\n root.Carousel = bsn.Carousel;\n root.Collapse = bsn.Collapse;\n root.Dropdown = bsn.Dropdown;\n root.Modal = bsn.Modal;\n root.Popover = bsn.Popover;\n root.ScrollSpy = bsn.ScrollSpy;\n root.Tab = bsn.Tab;\n root.Tooltip = bsn.Tooltip;\n }\n}(this, function () {\n \n /* Native Javascript for Bootstrap 3 | Internal Utility Functions\n ----------------------------------------------------------------*/\n \"use strict\";\n \n // globals\n var globalObject = typeof global !== 'undefined' ? global : this||window,\n DOC = document, HTML = DOC.documentElement, body = 'body', // allow the library to be used in \n \n // Native Javascript for Bootstrap Global Object\n BSN = globalObject.BSN = {},\n supports = BSN.supports = [],\n \n // function toggle attributes\n dataToggle = 'data-toggle',\n dataDismiss = 'data-dismiss',\n dataSpy = 'data-spy',\n dataRide = 'data-ride',\n \n // components\n stringAffix = 'Affix',\n stringAlert = 'Alert',\n stringButton = 'Button',\n stringCarousel = 'Carousel',\n stringCollapse = 'Collapse',\n stringDropdown = 'Dropdown',\n stringModal = 'Modal',\n stringPopover = 'Popover',\n stringScrollSpy = 'ScrollSpy',\n stringTab = 'Tab',\n stringTooltip = 'Tooltip',\n \n // options DATA API\n databackdrop = 'data-backdrop',\n dataKeyboard = 'data-keyboard',\n dataTarget = 'data-target',\n dataInterval = 'data-interval',\n dataHeight = 'data-height',\n dataPause = 'data-pause',\n dataTitle = 'data-title', \n dataOriginalTitle = 'data-original-title',\n dataOriginalText = 'data-original-text',\n dataDismissible = 'data-dismissible',\n dataTrigger = 'data-trigger',\n dataAnimation = 'data-animation',\n dataContainer = 'data-container',\n dataPlacement = 'data-placement',\n dataDelay = 'data-delay',\n dataOffsetTop = 'data-offset-top',\n dataOffsetBottom = 'data-offset-bottom',\n \n // option keys\n backdrop = 'backdrop', keyboard = 'keyboard', delay = 'delay',\n content = 'content', target = 'target', currentTarget = 'currentTarget',\n interval = 'interval', pause = 'pause', animation = 'animation',\n placement = 'placement', container = 'container', \n \n // box model\n offsetTop = 'offsetTop', offsetBottom = 'offsetBottom',\n offsetLeft = 'offsetLeft',\n scrollTop = 'scrollTop', scrollLeft = 'scrollLeft',\n clientWidth = 'clientWidth', clientHeight = 'clientHeight',\n offsetWidth = 'offsetWidth', offsetHeight = 'offsetHeight',\n innerWidth = 'innerWidth', innerHeight = 'innerHeight',\n scrollHeight = 'scrollHeight', height = 'height',\n \n // aria\n ariaExpanded = 'aria-expanded',\n ariaHidden = 'aria-hidden',\n \n // event names\n clickEvent = 'click',\n focusEvent = 'focus',\n hoverEvent = 'hover',\n keydownEvent = 'keydown',\n keyupEvent = 'keyup', \n resizeEvent = 'resize', // passive\n scrollEvent = 'scroll', // passive\n mouseHover = ('onmouseleave' in DOC) ? [ 'mouseenter', 'mouseleave'] : [ 'mouseover', 'mouseout' ],\n // touch since 2.0.26\n touchEvents = { start: 'touchstart', end: 'touchend', move:'touchmove' }, // passive\n // originalEvents\n showEvent = 'show',\n shownEvent = 'shown',\n hideEvent = 'hide',\n hiddenEvent = 'hidden',\n closeEvent = 'close',\n closedEvent = 'closed',\n slidEvent = 'slid',\n slideEvent = 'slide',\n changeEvent = 'change',\n \n // other\n getAttribute = 'getAttribute',\n setAttribute = 'setAttribute',\n hasAttribute = 'hasAttribute',\n createElement = 'createElement',\n appendChild = 'appendChild',\n innerHTML = 'innerHTML',\n getElementsByTagName = 'getElementsByTagName',\n preventDefault = 'preventDefault',\n getBoundingClientRect = 'getBoundingClientRect',\n querySelectorAll = 'querySelectorAll',\n getElementsByCLASSNAME = 'getElementsByClassName',\n getComputedStyle = 'getComputedStyle', \n \n indexOf = 'indexOf',\n parentNode = 'parentNode',\n length = 'length',\n toLowerCase = 'toLowerCase',\n Transition = 'Transition',\n Duration = 'Duration', \n Webkit = 'Webkit',\n style = 'style',\n push = 'push',\n tabindex = 'tabindex',\n contains = 'contains', \n \n active = 'active',\n inClass = 'in',\n collapsing = 'collapsing',\n disabled = 'disabled',\n loading = 'loading',\n left = 'left',\n right = 'right',\n top = 'top',\n bottom = 'bottom',\n \n // IE8 browser detect\n isIE8 = !('opacity' in HTML[style]),\n \n // tooltip / popover\n tipPositions = /\\b(top|bottom|left|right)+/,\n \n // modal\n modalOverlay = 0,\n fixedTop = 'navbar-fixed-top',\n fixedBottom = 'navbar-fixed-bottom', \n \n // transitionEnd since 2.0.4\n supportTransitions = Webkit+Transition in HTML[style] || Transition[toLowerCase]() in HTML[style],\n transitionEndEvent = Webkit+Transition in HTML[style] ? Webkit[toLowerCase]()+Transition+'End' : Transition[toLowerCase]()+'end',\n transitionDuration = Webkit+Duration in HTML[style] ? Webkit[toLowerCase]()+Transition+Duration : Transition[toLowerCase]()+Duration,\n \n // set new focus element since 2.0.3\n setFocus = function(element){\n element.focus ? element.focus() : element.setActive();\n },\n \n // class manipulation, since 2.0.0 requires polyfill.js\n addClass = function(element,classNAME) {\n element.classList.add(classNAME);\n },\n removeClass = function(element,classNAME) {\n element.classList.remove(classNAME);\n },\n hasClass = function(element,classNAME){ // since 2.0.0\n return element.classList[contains](classNAME);\n },\n \n // selection methods\n nodeListToArray = function(nodeList){\n var childItems = []; for (var i = 0, nll = nodeList[length]; i= windowWidth,\n halfBottomExceed = rect[top] + elementDimensions.h/2 + linkDimensions.h/2 >= windowHeight,\n topExceed = rect[top] - elementDimensions.h < 0,\n leftExceed = rect[left] - elementDimensions.w < 0,\n bottomExceed = rect[top] + elementDimensions.h + linkDimensions.h >= windowHeight,\n rightExceed = rect[left] + elementDimensions.w + linkDimensions.w >= windowWidth;\n \n // recompute position\n position = (position === left || position === right) && leftExceed && rightExceed ? top : position; // first, when both left and right limits are exceeded, we fall back to top|bottom\n position = position === top && topExceed ? bottom : position;\n position = position === bottom && bottomExceed ? top : position;\n position = position === left && leftExceed ? right : position;\n position = position === right && rightExceed ? left : position;\n \n // apply styling to tooltip or popover\n if ( position === left || position === right ) { // secondary|side positions\n if ( position === left ) { // LEFT\n leftPosition = rect[left] + scroll.x - elementDimensions.w;\n } else { // RIGHT\n leftPosition = rect[left] + scroll.x + linkDimensions.w;\n }\n \n // adjust top and arrow\n if (halfTopExceed) {\n topPosition = rect[top] + scroll.y;\n arrowTop = linkDimensions.h/2;\n } else if (halfBottomExceed) {\n topPosition = rect[top] + scroll.y - elementDimensions.h + linkDimensions.h;\n arrowTop = elementDimensions.h - linkDimensions.h/2;\n } else {\n topPosition = rect[top] + scroll.y - elementDimensions.h/2 + linkDimensions.h/2;\n }\n } else if ( position === top || position === bottom ) { // primary|vertical positions\n if ( position === top) { // TOP\n topPosition = rect[top] + scroll.y - elementDimensions.h;\n } else { // BOTTOM\n topPosition = rect[top] + scroll.y + linkDimensions.h;\n }\n // adjust left | right and also the arrow\n if (halfLeftExceed) {\n leftPosition = 0;\n arrowLeft = rect[left] + linkDimensions.w/2;\n } else if (halfRightExceed) {\n leftPosition = windowWidth - elementDimensions.w*1.01;\n arrowLeft = elementDimensions.w - ( windowWidth - rect[left] ) + linkDimensions.w/2;\n } else {\n leftPosition = rect[left] + scroll.x - elementDimensions.w/2 + linkDimensions.w/2;\n }\n }\n \n // apply style to tooltip/popover and it's arrow\n element[style][top] = topPosition + 'px';\n element[style][left] = leftPosition + 'px';\n \n arrowTop && (arrow[style][top] = arrowTop + 'px');\n arrowLeft && (arrow[style][left] = arrowLeft + 'px');\n \n element.className[indexOf](position) === -1 && (element.className = element.className.replace(tipPositions,position));\n };\n \n BSN.version = '2.0.27';\n \n /* Native Javascript for Bootstrap 3 | Affix\n -------------------------------------------*/\n \n // AFFIX DEFINITION\n var Affix = function(element, options) {\n \n // initialization element\n element = queryElement(element);\n \n // set options\n options = options || {};\n \n // read DATA API\n var targetData = element[getAttribute](dataTarget),\n offsetTopData = element[getAttribute](dataOffsetTop),\n offsetBottomData = element[getAttribute](dataOffsetBottom),\n \n // component specific strings\n affix = 'affix', affixed = 'affixed', fn = 'function', update = 'update',\n affixTop = 'affix-top', affixedTop = 'affixed-top',\n affixBottom = 'affix-bottom', affixedBottom = 'affixed-bottom';\n \n this[target] = options[target] ? queryElement(options[target]) : queryElement(targetData) || null; // target is an object\n this[offsetTop] = options[offsetTop] ? options[offsetTop] : parseInt(offsetTopData) || 0; // offset option is an integer number or function to determine that number\n this[offsetBottom] = options[offsetBottom] ? options[offsetBottom]: parseInt(offsetBottomData) || 0;\n \n if ( !this[target] && !( this[offsetTop] || this[offsetBottom] ) ) { return; } // invalidate\n \n // internal bind\n var self = this,\n \n // constants\n pinOffsetTop, pinOffsetBottom, maxScroll, scrollY, pinnedTop, pinnedBottom,\n affixedToTop = false, affixedToBottom = false,\n \n // private methods \n getMaxScroll = function(){\n return Math.max( DOC[body][scrollHeight], DOC[body][offsetHeight], HTML[clientHeight], HTML[scrollHeight], HTML[offsetHeight] );\n },\n getOffsetTop = function () {\n if ( self[target] !== null ) {\n return self[target][getBoundingClientRect]()[top] + scrollY;\n } else if ( self[offsetTop] ) {\n return parseInt(typeof self[offsetTop] === fn ? self[offsetTop]() : self[offsetTop] || 0);\n }\n },\n getOffsetBottom = function () {\n if ( self[offsetBottom] ) {\n return maxScroll - element[offsetHeight] - parseInt( typeof self[offsetBottom] === fn ? self[offsetBottom]() : self[offsetBottom] || 0 );\n }\n },\n checkPosition = function () {\n maxScroll = getMaxScroll();\n scrollY = parseInt(getScroll().y,0);\n pinOffsetTop = getOffsetTop();\n pinOffsetBottom = getOffsetBottom(); \n pinnedTop = ( parseInt(pinOffsetTop) - scrollY < 0) && (scrollY > parseInt(pinOffsetTop) );\n pinnedBottom = ( parseInt(pinOffsetBottom) - scrollY < 0) && (scrollY > parseInt(pinOffsetBottom) );\n },\n pinTop = function () {\n if ( !affixedToTop && !hasClass(element,affix) ) { // on loading a page halfway scrolled these events don't trigger in Chrome\n bootstrapCustomEvent.call(element, affix, affix);\n bootstrapCustomEvent.call(element, affixTop, affix);\n addClass(element,affix);\n affixedToTop = true;\n bootstrapCustomEvent.call(element, affixed, affix);\n bootstrapCustomEvent.call(element, affixedTop, affix);\n }\n },\n unPinTop = function () {\n if ( affixedToTop && hasClass(element,affix) ) {\n removeClass(element,affix);\n affixedToTop = false;\n }\n },\n pinBottom = function () {\n if ( !affixedToBottom && !hasClass(element, affixBottom) ) {\n bootstrapCustomEvent.call(element, affix, affix);\n bootstrapCustomEvent.call(element, affixBottom, affix);\n addClass(element,affixBottom);\n affixedToBottom = true;\n bootstrapCustomEvent.call(element, affixed, affix);\n bootstrapCustomEvent.call(element, affixedBottom, affix);\n }\n },\n unPinBottom = function () {\n if ( affixedToBottom && hasClass(element,affixBottom) ) {\n removeClass(element,affixBottom);\n affixedToBottom = false;\n }\n },\n updatePin = function () {\n if ( pinnedBottom ) {\n if ( pinnedTop ) { unPinTop(); }\n pinBottom(); \n } else {\n unPinBottom();\n if ( pinnedTop ) { pinTop(); } \n else { unPinTop(); }\n }\n };\n \n // public method\n this[update] = function () {\n checkPosition();\n updatePin(); \n };\n \n // init\n if ( !(stringAffix in element ) ) { // prevent adding event handlers twice\n on( globalObject, scrollEvent, self[update], passiveHandler );\n !isIE8 && on( globalObject, resizeEvent, self[update], passiveHandler );\n }\n element[stringAffix] = self;\n \n self[update]();\n };\n \n // AFFIX DATA API\n // =================\n supports[push]([stringAffix, Affix, '['+dataSpy+'=\"affix\"]']);\n \n \n \n /* Native Javascript for Bootstrap 3 | Alert\n -------------------------------------------*/\n \n // ALERT DEFINITION\n // ================\n var Alert = function( element ) {\n \n // initialization element\n element = queryElement(element);\n \n // bind, target alert, duration and stuff\n var self = this, component = 'alert',\n alert = getClosest(element,'.'+component),\n triggerHandler = function(){ hasClass(alert,'fade') ? emulateTransitionEnd(alert,transitionEndHandler) : transitionEndHandler(); },\n // handlers\n clickHandler = function(e){\n alert = getClosest(e[target],'.'+component);\n element = queryElement('['+dataDismiss+'=\"'+component+'\"]',alert);\n element && alert && (element === e[target] || element[contains](e[target])) && self.close();\n },\n transitionEndHandler = function(){\n bootstrapCustomEvent.call(alert, closedEvent, component);\n off(element, clickEvent, clickHandler); // detach it's listener\n alert[parentNode].removeChild(alert);\n };\n \n // public method\n this.close = function() {\n if ( alert && element && hasClass(alert,inClass) ) {\n bootstrapCustomEvent.call(alert, closeEvent, component);\n removeClass(alert,inClass);\n alert && triggerHandler();\n }\n };\n \n // init\n if ( !(stringAlert in element ) ) { // prevent adding event handlers twice\n on(element, clickEvent, clickHandler);\n }\n element[stringAlert] = self;\n };\n \n // ALERT DATA API\n // ==============\n supports[push]([stringAlert, Alert, '['+dataDismiss+'=\"alert\"]']);\n \n \n \n /* Native Javascript for Bootstrap 3 | Button\n ---------------------------------------------*/\n \n // BUTTON DEFINITION\n // ===================\n var Button = function( element, option ) {\n \n // initialization element\n element = queryElement(element);\n \n // set option\n option = option || null;\n \n // constant\n var toggled = false, // toggled makes sure to prevent triggering twice the change.bs.button events\n \n // strings\n component = 'button',\n checked = 'checked',\n reset = 'reset',\n LABEL = 'LABEL',\n INPUT = 'INPUT',\n \n // private methods\n setState = function() {\n if ( !! option && option !== reset ) {\n if ( option === loading ) {\n addClass(element,disabled);\n element[setAttribute](disabled,disabled);\n element[setAttribute](dataOriginalText, element[innerHTML].trim()); // trim the text\n }\n element[innerHTML] = element[getAttribute]('data-'+option+'-text');\n }\n },\n resetState = function() {\n if (element[getAttribute](dataOriginalText)) {\n if ( hasClass(element,disabled) || element[getAttribute](disabled) === disabled ) {\n removeClass(element,disabled);\n element.removeAttribute(disabled);\n }\n element[innerHTML] = element[getAttribute](dataOriginalText);\n }\n },\n keyHandler = function(e){ \n var key = e.which || e.keyCode;\n key === 32 && e[target] === DOC.activeElement && toggle(e);\n },\n preventScroll = function(e){ \n var key = e.which || e.keyCode;\n key === 32 && e[preventDefault]();\n }, \n toggle = function(e) {\n var label = e[target].tagName === LABEL ? e[target] : e[target][parentNode].tagName === LABEL ? e[target][parentNode] : null; // the .btn label\n \n if ( !label ) return; //react if a label or its immediate child is clicked\n \n var labels = getElementsByClassName(label[parentNode],'btn'), // all the button group buttons\n input = label[getElementsByTagName](INPUT)[0];\n \n if ( !input ) return; // return if no input found\n \n // manage the dom manipulation\n if ( input.type === 'checkbox' ) { //checkboxes\n if ( !input[checked] ) {\n addClass(label,active);\n input[getAttribute](checked);\n input[setAttribute](checked,checked);\n input[checked] = true;\n } else {\n removeClass(label,active);\n input[getAttribute](checked);\n input.removeAttribute(checked);\n input[checked] = false;\n }\n \n if (!toggled) { // prevent triggering the event twice\n toggled = true;\n bootstrapCustomEvent.call(input, changeEvent, component); //trigger the change for the input\n bootstrapCustomEvent.call(element, changeEvent, component); //trigger the change for the btn-group\n }\n }\n \n if ( input.type === 'radio' && !toggled ) { // radio buttons\n // don't trigger if already active (the OR condition is a hack to check if the buttons were selected with key press and NOT mouse click)\n if ( !input[checked] || (e.screenX === 0 && e.screenY == 0) ) {\n addClass(label,active);\n input[setAttribute](checked,checked);\n input[checked] = true;\n bootstrapCustomEvent.call(input, changeEvent, component); //trigger the change for the input\n bootstrapCustomEvent.call(element, changeEvent, component); //trigger the change for the btn-group\n \n toggled = true;\n for (var i = 0, ll = labels[length]; i 1 ) {\n e.preventDefault();\n return false;\n }\n },\n touchEndHandler = function(e) {\n if ( !isTouch || isSliding ) { return }\n \n endXPosition = currentXPosition || parseInt( e.touches[0].pageX );\n \n if ( isTouch ) {\n if ( (!element.contains(e[target]) || !element.contains(e.relatedTarget) ) && Math.abs(startXPosition - endXPosition) < 75 ) {\n return false;\n } else {\n if ( currentXPosition < startXPosition ) {\n index++;\n } else if ( currentXPosition > startXPosition ) {\n index--; \n }\n isTouch = false;\n self.slideTo(index);\n }\n toggleTouchEvents(off); \n }\n },\n \n // private methods\n isElementInScrollRange = function () {\n var rect = element[getBoundingClientRect](),\n viewportHeight = globalObject[innerHeight] || HTML[clientHeight]\n return rect[top] <= viewportHeight && rect[bottom] >= 0; // bottom && top\n }, \n setActivePage = function( pageIndex ) { //indicators\n for ( var i = 0, icl = indicators[length]; i < icl; i++ ) {\n removeClass(indicators[i],active);\n }\n if (indicators[pageIndex]) addClass(indicators[pageIndex], active);\n };\n \n \n // public methods\n this.cycle = function() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n \n timer = setInterval(function() {\n isElementInScrollRange() && (index++, self.slideTo( index ) );\n }, this[interval]);\n };\n this.slideTo = function( next ) {\n if (isSliding) return; // when controled via methods, make sure to check again\n \n var activeItem = this.getActiveIndex(), // the current active\n orientation;\n \n // first return if we're on the same item #227\n if ( activeItem === next ) {\n return;\n // or determine slideDirection\n } else if ( (activeItem < next ) || (activeItem === 0 && next === total -1 ) ) {\n slideDirection = self[direction] = left; // next\n } else if ( (activeItem > next) || (activeItem === total - 1 && next === 0 ) ) {\n slideDirection = self[direction] = right; // prev\n }\n \n // find the right next index \n if ( next < 0 ) { next = total - 1; } \n else if ( next >= total ){ next = 0; }\n \n // update index\n index = next;\n \n orientation = slideDirection === left ? 'next' : 'prev'; //determine type\n bootstrapCustomEvent.call(element, slideEvent, component, slides[next]); // here we go with the slide\n \n isSliding = true;\n clearInterval(timer);\n timer = null;\n setActivePage( next );\n \n if ( supportTransitions && hasClass(element,'slide') ) {\n \n addClass(slides[next],orientation);\n slides[next][offsetWidth];\n addClass(slides[next],slideDirection);\n addClass(slides[activeItem],slideDirection);\n \n emulateTransitionEnd(slides[next], function(e) {\n var timeout = e && e[target] !== slides[next] ? e.elapsedTime*1000+100 : 20;\n isSliding && setTimeout(function(){\n isSliding = false;\n \n addClass(slides[next],active);\n removeClass(slides[activeItem],active);\n \n removeClass(slides[next],orientation);\n removeClass(slides[next],slideDirection);\n removeClass(slides[activeItem],slideDirection);\n \n bootstrapCustomEvent.call(element, slidEvent, component, slides[next]);\n \n if ( self[interval] && !hasClass(element,paused) ) {\n self.cycle();\n }\n }, timeout);\n });\n \n } else {\n addClass(slides[next],active);\n slides[next][offsetWidth];\n removeClass(slides[activeItem],active);\n setTimeout(function() {\n isSliding = false;\n if ( self[interval] && !hasClass(element,paused) ) {\n self.cycle();\n }\n bootstrapCustomEvent.call(element, slidEvent, component, slides[next]);\n }, 100 );\n }\n };\n this.getActiveIndex = function () {\n return slides[indexOf](getElementsByClassName(element,'item active')[0]) || 0;\n };\n \n // init\n if ( !(stringCarousel in element ) ) { // prevent adding event handlers twice\n \n if ( self[pause] && self[interval] ) {\n on( element, mouseHover[0], pauseHandler );\n on( element, mouseHover[1], resumeHandler );\n on( element, touchEvents.start, pauseHandler, passiveHandler );\n on( element, touchEvents.end, resumeHandler, passiveHandler );\n }\n \n slides[length] > 1 && on( element, touchEvents.start, touchDownHandler, passiveHandler );\n \n rightArrow && on( rightArrow, clickEvent, controlsHandler );\n leftArrow && on( leftArrow, clickEvent, controlsHandler );\n \n indicator && on( indicator, clickEvent, indicatorHandler );\n self[keyboard] && on( globalObject, keydownEvent, keyHandler );\n \n }\n if (self.getActiveIndex()<0) {\n slides[length] && addClass(slides[0],active);\n indicators[length] && setActivePage(0);\n }\n \n if ( self[interval] ){ self.cycle(); }\n element[stringCarousel] = self;\n };\n \n // CAROUSEL DATA API\n // =================\n supports[push]( [ stringCarousel, Carousel, '['+dataRide+'=\"carousel\"]' ] );\n \n \n /* Native Javascript for Bootstrap 3 | Collapse\n -----------------------------------------------*/\n \n // COLLAPSE DEFINITION\n // ===================\n var Collapse = function( element, options ) {\n \n // initialization element\n element = queryElement(element);\n \n // set options\n options = options || {};\n \n // event targets and constants\n var accordion = null, collapse = null, self = this,\n accordionData = element[getAttribute]('data-parent'),\n activeCollapse, activeElement,\n \n // component strings\n component = 'collapse',\n collapsed = 'collapsed',\n isAnimating = 'isAnimating',\n \n // private methods\n openAction = function(collapseElement,toggle) {\n bootstrapCustomEvent.call(collapseElement, showEvent, component);\n collapseElement[isAnimating] = true;\n addClass(collapseElement,collapsing);\n removeClass(collapseElement,component);\n collapseElement[style][height] = collapseElement[scrollHeight] + 'px';\n \n emulateTransitionEnd(collapseElement, function() {\n collapseElement[isAnimating] = false;\n collapseElement[setAttribute](ariaExpanded,'true');\n toggle[setAttribute](ariaExpanded,'true'); \n removeClass(collapseElement,collapsing);\n addClass(collapseElement, component);\n addClass(collapseElement, inClass);\n collapseElement[style][height] = '';\n bootstrapCustomEvent.call(collapseElement, shownEvent, component);\n });\n },\n closeAction = function(collapseElement,toggle) {\n bootstrapCustomEvent.call(collapseElement, hideEvent, component);\n collapseElement[isAnimating] = true;\n collapseElement[style][height] = collapseElement[scrollHeight] + 'px'; // set height first\n removeClass(collapseElement,component);\n removeClass(collapseElement, inClass);\n addClass(collapseElement, collapsing);\n collapseElement[offsetWidth]; // force reflow to enable transition\n collapseElement[style][height] = '0px';\n \n emulateTransitionEnd(collapseElement, function() {\n collapseElement[isAnimating] = false;\n collapseElement[setAttribute](ariaExpanded,'false');\n toggle[setAttribute](ariaExpanded,'false');\n removeClass(collapseElement,collapsing);\n addClass(collapseElement,component);\n collapseElement[style][height] = '';\n bootstrapCustomEvent.call(collapseElement, hiddenEvent, component);\n });\n },\n getTarget = function() {\n var href = element.href && element[getAttribute]('href'),\n parent = element[getAttribute](dataTarget),\n id = href || ( parent && parent.charAt(0) === '#' ) && parent;\n return id && queryElement(id);\n };\n \n // public methods\n this.toggle = function(e) {\n e[preventDefault]();\n if (!hasClass(collapse,inClass)) { self.show(); } \n else { self.hide(); }\n };\n this.hide = function() {\n if ( collapse[isAnimating] ) return;\n closeAction(collapse,element);\n addClass(element,collapsed);\n };\n this.show = function() {\n if ( accordion ) {\n activeCollapse = queryElement('.'+component+'.'+inClass,accordion);\n activeElement = activeCollapse && (queryElement('['+dataTarget+'=\"#'+activeCollapse.id+'\"]', accordion)\n || queryElement('[href=\"#'+activeCollapse.id+'\"]',accordion) );\n }\n \n if ( !collapse[isAnimating] || activeCollapse && !activeCollapse[isAnimating] ) {\n if ( activeElement && activeCollapse !== collapse ) {\n closeAction(activeCollapse,activeElement);\n addClass(activeElement,collapsed); \n }\n openAction(collapse,element);\n removeClass(element,collapsed);\n }\n };\n \n // init\n if ( !(stringCollapse in element ) ) { // prevent adding event handlers twice\n on(element, clickEvent, self.toggle);\n }\n collapse = getTarget();\n collapse[isAnimating] = false; // when true it will prevent click handlers \n accordion = queryElement(options.parent) || accordionData && getClosest(element, accordionData);\n element[stringCollapse] = self;\n };\n \n // COLLAPSE DATA API\n // =================\n supports[push]( [ stringCollapse, Collapse, '['+dataToggle+'=\"collapse\"]' ] );\n \n \n /* Native Javascript for Bootstrap 3 | Dropdown\n ----------------------------------------------*/\n \n // DROPDOWN DEFINITION\n // ===================\n var Dropdown = function( element, option ) {\n \n // initialization element\n element = queryElement(element);\n \n // set option\n this.persist = option === true || element[getAttribute]('data-persist') === 'true' || false;\n \n // constants, event targets, strings\n var self = this, children = 'children',\n parent = element[parentNode],\n component = 'dropdown', open = 'open',\n relatedTarget = null,\n menu = queryElement('.dropdown-menu', parent),\n menuItems = (function(){\n var set = menu[children], newSet = [];\n for ( var i=0; i1?idx-1:0) \n : key === 40 ? (idx= topEdge && bottomEdge > scrollOffset;\n \n if ( !isActive && inside ) {\n if ( parent.tagName === 'LI' && !hasClass(parent,active) ) {\n addClass(parent,active);\n if (dropdown && !hasClass(dropdown,active) ) {\n addClass(dropdown,active);\n }\n bootstrapCustomEvent.call(element, 'activate', 'scrollspy', items[index]);\n }\n } else if ( !inside ) {\n if ( parent.tagName === 'LI' && hasClass(parent,active) ) {\n removeClass(parent,active);\n if (dropdown && hasClass(dropdown,active) && !getElementsByClassName(parent[parentNode],active).length ) {\n removeClass(dropdown,active);\n }\n }\n } else if ( !inside && !isActive || isActive && inside ) {\n return;\n }\n },\n updateItems = function(){\n scrollOffset = isWindow ? getScroll().y : element[scrollTop];\n for (var index=0, itl=items[length]; index 1 ) {\n activeTab = activeTabs[activeTabs[length]-1];\n }\n return activeTab[getElementsByTagName]('A')[0];\n },\n getActiveContent = function() {\n return queryElement(getActiveTab()[getAttribute]('href'));\n },\n // handler\n clickHandler = function(e) {\n e[preventDefault]();\n next = e[currentTarget] || this; // IE8 needs to know who really currentTarget is\n !tabs[isAnimating] && !hasClass(next[parentNode],active) && self.show();\n };\n \n // public method\n this.show = function() { // the tab we clicked is now the next tab\n next = next || element;\n nextContent = queryElement(next[getAttribute]('href')); //this is the actual object, the next tab content to activate\n activeTab = getActiveTab(); \n activeContent = getActiveContent();\n \n tabs[isAnimating] = true;\n removeClass(activeTab[parentNode],active);\n activeTab[setAttribute](ariaExpanded,'false');\n addClass(next[parentNode],active);\n next[setAttribute](ariaExpanded,'true');\n \n if ( dropdown ) {\n if ( !hasClass(element[parentNode][parentNode],'dropdown-menu') ) {\n if (hasClass(dropdown,active)) removeClass(dropdown,active);\n } else {\n if (!hasClass(dropdown,active)) addClass(dropdown,active);\n }\n }\n \n bootstrapCustomEvent.call(activeTab, hideEvent, component, next);\n \n if (hasClass(activeContent, 'fade')) {\n removeClass(activeContent,inClass);\n emulateTransitionEnd(activeContent, triggerHide);\n } else { triggerHide(); }\n };\n \n // init\n if ( !(stringTab in element) ) { // prevent adding event handlers twice\n on(element, clickEvent, clickHandler);\n }\n if (self[height]) { tabsContentContainer = getActiveContent()[parentNode]; }\n element[stringTab] = self;\n };\n \n // TAB DATA API\n // ============\n supports[push]( [ stringTab, Tab, '['+dataToggle+'=\"tab\"]' ] );\n \n \n /* Native Javascript for Bootstrap 3 | Tooltip\n ---------------------------------------------*/\n \n // TOOLTIP DEFINITION\n // ==================\n var Tooltip = function( element,options ) {\n \n // initialization element\n element = queryElement(element);\n \n // set options\n options = options || {};\n \n // DATA API\n var animationData = element[getAttribute](dataAnimation),\n placementData = element[getAttribute](dataPlacement),\n delayData = element[getAttribute](dataDelay),\n containerData = element[getAttribute](dataContainer),\n \n // strings\n component = 'tooltip',\n classString = 'class',\n title = 'title',\n fade = 'fade',\n div = 'div',\n \n // check container\n containerElement = queryElement(options[container]),\n containerDataElement = queryElement(containerData), \n \n // maybe the element is inside a modal\n modal = getClosest(element,'.modal'),\n \n // maybe the element is inside a fixed navbar\n navbarFixedTop = getClosest(element,'.'+fixedTop),\n navbarFixedBottom = getClosest(element,'.'+fixedBottom);\n \n // set instance options\n this[animation] = options[animation] && options[animation] !== fade ? options[animation] : animationData || fade;\n this[placement] = options[placement] ? options[placement] : placementData || top;\n this[delay] = parseInt(options[delay] || delayData) || 200;\n this[container] = containerElement ? containerElement \n : containerDataElement ? containerDataElement \n : navbarFixedTop ? navbarFixedTop\n : navbarFixedBottom ? navbarFixedBottom\n : modal ? modal : DOC[body];\n \n // bind, event targets, title and constants\n var self = this, timer = 0, placementSetting = this[placement], tooltip = null,\n titleString = element[getAttribute](title) || element[getAttribute](dataTitle) || element[getAttribute](dataOriginalTitle);\n \n if ( !titleString || titleString == \"\" ) return; // invalidate\n \n // private methods\n var removeToolTip = function() {\n self[container].removeChild(tooltip);\n tooltip = null; timer = null;\n },\n createToolTip = function() {\n titleString = element[getAttribute](title) || element[getAttribute](dataTitle) || element[getAttribute](dataOriginalTitle); // read the title again\n if ( !titleString || titleString == \"\" ) return false; // invalidate\n \n tooltip = DOC[createElement](div);\n tooltip[setAttribute]('role',component);\n \n var tooltipArrow = DOC[createElement](div), tooltipInner = DOC[createElement](div);\n tooltipArrow[setAttribute](classString, component+'-arrow'); tooltipInner[setAttribute](classString,component+'-inner');\n \n tooltip[appendChild](tooltipArrow); tooltip[appendChild](tooltipInner);\n \n tooltipInner[innerHTML] = titleString;\n \n self[container][appendChild](tooltip);\n tooltip[setAttribute](classString, component + ' ' + placementSetting + ' ' + self[animation]);\n },\n updateTooltip = function () {\n styleTip(element,tooltip,placementSetting,self[container]);\n },\n showTooltip = function () {\n !hasClass(tooltip,inClass) && ( addClass(tooltip,inClass) );\n },\n // triggers\n showTrigger = function() {\n bootstrapCustomEvent.call(element, shownEvent, component);\n !isIE8 && on( globalObject, resizeEvent, self.hide, passiveHandler ); \n },\n hideTrigger = function() {\n !isIE8 && off( globalObject, resizeEvent, self.hide, passiveHandler ); \n removeToolTip();\n bootstrapCustomEvent.call(element, hiddenEvent, component);\n };\n \n // public methods\n this.show = function() {\n clearTimeout(timer);\n timer = setTimeout( function() {\n if (tooltip === null) {\n placementSetting = self[placement]; // we reset placement in all cases\n if(createToolTip() == false) return;\n updateTooltip();\n showTooltip();\n bootstrapCustomEvent.call(element, showEvent, component);\n !!self[animation] ? emulateTransitionEnd(tooltip, showTrigger) : showTrigger();\n }\n }, 20 );\n };\n this.hide = function() {\n clearTimeout(timer);\n timer = setTimeout( function() {\n if (tooltip && hasClass(tooltip,inClass)) {\n bootstrapCustomEvent.call(element, hideEvent, component);\n removeClass(tooltip,inClass);\n !!self[animation] ? emulateTransitionEnd(tooltip, hideTrigger) : hideTrigger();\n }\n }, self[delay]);\n };\n this.toggle = function() {\n if (!tooltip) { self.show(); } \n else { self.hide(); }\n };\n \n // init\n if ( !(stringTooltip in element) ) { // prevent adding event handlers twice\n element[setAttribute](dataOriginalTitle,titleString);\n element.removeAttribute(title);\n on(element, mouseHover[0], self.show);\n on(element, mouseHover[1], self.hide);\n }\n element[stringTooltip] = self;\n };\n \n // TOOLTIP DATA API\n // =================\n supports[push]( [ stringTooltip, Tooltip, '['+dataToggle+'=\"tooltip\"]' ] );\n \n \n \r\n /* Native Javascript for Bootstrap | Initialize Data API\r\n --------------------------------------------------------*/\r\n var initializeDataAPI = function( constructor, collection ){\r\n for (var i=0, l=collection[length]; i