{"mappings":"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","sources":["node_modules/typeit/dist/index.es.js","src/main.js"],"sourcesContent":["// TypeIt by Alex MacArthur - https://typeitjs.com\nvar isArray = (thing) => Array.isArray(thing);\nvar asArray = (value) => {\n return isArray(value) ? value : [value];\n};\nconst Queue = function(initialItems) {\n const add = function(steps) {\n _queue = _queue.concat(asArray(steps));\n return this;\n };\n const set = function(index, item) {\n _queue[index] = item;\n };\n const reset = function() {\n _queue = _queue.map((item) => {\n delete item.done;\n return item;\n });\n };\n const getItems = () => _queue.filter((i) => !i.done);\n const markDone = (index) => {\n _queue[index].done = true;\n };\n let _queue = [];\n add(initialItems);\n return {\n add,\n set,\n reset,\n getItems,\n markDone\n };\n};\nvar toArray = (val) => {\n return Array.from(val);\n};\nvar createTextNode = (content) => {\n return document.createTextNode(content);\n};\nconst expandTextNodes = (element) => {\n [...element.childNodes].forEach((child) => {\n if (child.nodeValue) {\n [...child.nodeValue].forEach((c) => {\n child.parentNode.insertBefore(createTextNode(c), child);\n });\n child.remove();\n return;\n }\n expandTextNodes(child);\n });\n return element;\n};\nvar getParsedBody = (content) => {\n let doc = document.implementation.createHTMLDocument();\n doc.body.innerHTML = content;\n return expandTextNodes(doc.body);\n};\nconst DATA_ATTRIBUTE = \"data-typeit-id\";\nconst CURSOR_CLASS = \"ti-cursor\";\nconst START = \"START\";\nconst END = \"END\";\nconst DEFAULT_STATUSES = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false\n};\nconst DEFAULT_OPTIONS = {\n breakLines: true,\n cursor: true,\n cursorChar: \"|\",\n cursorSpeed: 1e3,\n deleteSpeed: null,\n html: true,\n lifeLike: true,\n loop: false,\n loopDelay: 750,\n nextStringDelay: 750,\n speed: 100,\n startDelay: 250,\n startDelete: false,\n strings: [],\n waitUntilVisible: false,\n beforeString: () => {\n },\n afterString: () => {\n },\n beforeStep: () => {\n },\n afterStep: () => {\n },\n afterComplete: () => {\n }\n};\nfunction walkElementNodes(element, shouldReverse = false) {\n const walker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, {\n acceptNode: (node) => {\n var _a;\n return ((_a = node == null ? void 0 : node.classList) == null ? void 0 : _a.contains(CURSOR_CLASS)) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n });\n let nextNode;\n let nodes = [];\n while (nextNode = walker.nextNode()) {\n nextNode.originalParent = nextNode.parentNode;\n nodes.push(nextNode);\n }\n return shouldReverse ? nodes.reverse() : nodes;\n}\nfunction chunkStringAsHtml(string) {\n return walkElementNodes(getParsedBody(string));\n}\nfunction maybeChunkStringAsHtml(str, asHtml = true) {\n return asHtml ? chunkStringAsHtml(str) : toArray(str).map(createTextNode);\n}\nvar createElement = (el) => {\n return document.createElement(el);\n};\nvar appendStyleBlock = (styles, id = \"\") => {\n let styleBlock = createElement(\"style\");\n styleBlock.id = id;\n styleBlock.appendChild(createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\nconst isNumber = (value) => {\n return Number.isInteger(value);\n};\nconst select = (selector, element = document, all = false) => {\n return element[`querySelector${all ? \"All\" : \"\"}`](selector);\n};\nvar isInput = (el) => {\n return \"value\" in el;\n};\nconst getAllChars = (element) => {\n if (isInput(element)) {\n return toArray(element.value);\n }\n return walkElementNodes(element, true).filter((c) => !(c.childNodes.length > 0));\n};\nconst calculateStepsToSelector = (selector, element, to = START) => {\n let isMovingToLast = new RegExp(END, \"i\").test(to);\n let selectedElement = selector ? select(selector, element) : element;\n let selectedElementNodes = walkElementNodes(selectedElement, true);\n let selectedElementFirstChild = selectedElementNodes[0];\n let selectedElementLastChild = selectedElementNodes[selectedElementNodes.length - 1];\n let isMovingToEndOfRootElement = isMovingToLast && !selector;\n let childIndex = isMovingToEndOfRootElement ? 0 : getAllChars(element).findIndex((character) => {\n return character.isSameNode(isMovingToLast ? selectedElementFirstChild : selectedElementLastChild);\n });\n if (isMovingToLast)\n childIndex--;\n return childIndex + 1;\n};\nvar calculateCursorSteps = ({\n el,\n move,\n cursorPos,\n to\n}) => {\n if (isNumber(move)) {\n return move * -1;\n }\n let childIndex = calculateStepsToSelector(move, el, to);\n return childIndex - cursorPos;\n};\nvar calculateDelay = (delayArg) => {\n if (!isArray(delayArg)) {\n delayArg = [delayArg / 2, delayArg / 2];\n }\n return delayArg;\n};\nvar randomInRange = (value, range2) => {\n return Math.abs(Math.random() * (value + range2 - (value - range2)) + (value - range2));\n};\nlet range = (val) => val / 2;\nfunction calculatePace(options) {\n let { speed, deleteSpeed, lifeLike } = options;\n deleteSpeed = deleteSpeed !== null ? deleteSpeed : speed / 3;\n return lifeLike ? [\n randomInRange(speed, range(speed)),\n randomInRange(deleteSpeed, range(deleteSpeed))\n ] : [speed, deleteSpeed];\n}\nvar destroyTimeouts = (timeouts) => {\n timeouts.forEach((timeout) => clearTimeout(timeout));\n return [];\n};\nvar generateHash = () => {\n return Math.random().toString().substring(2, 9);\n};\nvar fireWhenVisible = (element, func) => {\n let observer = new IntersectionObserver((entries, observer2) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n func();\n observer2.unobserve(element);\n }\n });\n }, { threshold: 1 });\n observer.observe(element);\n};\nconst handleFunctionalArg = (arg) => {\n return typeof arg === \"function\" ? arg() : arg;\n};\nconst isBodyElement = (node) => (node == null ? void 0 : node.tagName) === \"BODY\";\nconst insertIntoElement = (originalTarget, character) => {\n if (isInput(originalTarget)) {\n originalTarget.value = `${originalTarget.value}${character.textContent}`;\n return;\n }\n character.innerHTML = \"\";\n let target = isBodyElement(character.originalParent) ? originalTarget : character.originalParent || originalTarget;\n target.insertBefore(character, select(\".\" + CURSOR_CLASS, target) || null);\n};\nconst updateCursorPosition = (steps, cursorPosition, printedCharacters) => {\n return Math.min(Math.max(cursorPosition + steps, 0), printedCharacters.length);\n};\nvar merge = (originalObj, newObj) => {\n return Object.assign({}, originalObj, newObj);\n};\nvar removeNode = (node) => {\n if (!node)\n return;\n const nodeParent = node.parentNode;\n const nodeToRemove = nodeParent.childNodes.length > 1 ? node : nodeParent;\n nodeToRemove.remove();\n};\nvar repositionCursor = (element, allChars, newCursorPosition) => {\n let nodeToInsertBefore = allChars[newCursorPosition - 1];\n let cursor = select(`.${CURSOR_CLASS}`, element);\n element = (nodeToInsertBefore == null ? void 0 : nodeToInsertBefore.parentNode) || element;\n element.insertBefore(cursor, nodeToInsertBefore || null);\n};\nfunction selectorToElement(thing) {\n return typeof thing === \"string\" ? select(thing) : thing;\n}\nconst isNonVoidElement = (el) => /<(.+)>(.*?)<\\/(.+)>/.test(el.outerHTML);\nconst wait = async (callback, delay, timeouts) => {\n return new Promise((resolve) => {\n const cb = async () => {\n await callback();\n resolve();\n };\n timeouts.push(setTimeout(cb, delay));\n });\n};\nconst cursorFontStyles = {\n \"font-family\": \"\",\n \"font-weight\": \"\",\n \"font-size\": \"\",\n \"font-style\": \"\",\n \"line-height\": \"\",\n color: \"\",\n \"margin-left\": \"-.125em\",\n \"margin-right\": \".125em\"\n};\nconst setCursorStyles = (id, options, element) => {\n let rootSelector = `[${DATA_ATTRIBUTE}='${id}']`;\n let cursorSelector = `${rootSelector} .${CURSOR_CLASS}`;\n let computedStyles = getComputedStyle(element);\n let customProperties = Object.entries(cursorFontStyles).reduce((accumulator, [item, value]) => {\n return `${accumulator} ${item}: var(--ti-cursor-${item}, ${value || computedStyles[item]});`;\n }, \"\");\n appendStyleBlock(`@keyframes blink-${id} { 0% {opacity: 0} 49% {opacity: 0} 50% {opacity: 1} } ${cursorSelector} { display: inline; letter-spacing: -1em; ${customProperties} animation: blink-${id} ${options.cursorSpeed / 1e3}s infinite; } ${cursorSelector}.with-delay { animation-delay: 500ms; } ${cursorSelector}.disabled { animation: none; }`, id);\n};\nfunction TypeIt(element, options = {}) {\n const _wait = async (callback, delay, silent = false) => {\n if (_statuses.frozen) {\n await new Promise((resolve) => {\n this.unfreeze = () => {\n _statuses.frozen = false;\n resolve();\n };\n });\n }\n silent || await _opts.beforeStep(this);\n await wait(callback, delay, _timeouts);\n silent || await _opts.afterStep(this);\n };\n const _elementIsInput = () => isInput(_element);\n const _getPace = (index) => calculatePace(_opts)[index];\n const _getAllChars = () => getAllChars(_element);\n const _getActionPace = (instant, paceIndex = 0) => {\n return instant ? _getPace(paceIndex) : 0;\n };\n const _maybeAppendPause = (opts = {}) => {\n let delay = opts[\"delay\"];\n delay && _queue.add(() => _pause(delay));\n };\n const _queueAndReturn = (steps, opts) => {\n _queue.add(steps);\n _maybeAppendPause(opts);\n return this;\n };\n const _generateTemporaryOptionQueueItems = (newOptions = {}) => {\n return [\n () => _options(newOptions),\n () => _options(_opts)\n ];\n };\n const _addSplitPause = (items) => {\n let delay = _opts.nextStringDelay;\n _queue.add([\n () => _pause(delay[0]),\n ...items,\n () => _pause(delay[1])\n ]);\n };\n const _setUpCursor = () => {\n if (_elementIsInput()) {\n return;\n }\n let cursor = createElement(\"span\");\n cursor.className = CURSOR_CLASS;\n if (!_shouldRenderCursor) {\n cursor.style.visibility = \"hidden\";\n return cursor;\n }\n cursor.innerHTML = getParsedBody(_opts.cursorChar).innerHTML;\n return cursor;\n };\n const _attachCursor = async () => {\n !_elementIsInput() && _element.appendChild(_cursor);\n _shouldRenderCursor && setCursorStyles(_id, _opts, _element);\n };\n const _disableCursorBlink = (shouldDisable) => {\n if (_shouldRenderCursor) {\n _cursor.classList.toggle(\"disabled\", shouldDisable);\n _cursor.classList.toggle(\"with-delay\", !shouldDisable);\n }\n };\n const _generateQueue = () => {\n let strings = _opts.strings.filter((string) => !!string);\n strings.forEach((string, index) => {\n let chars = maybeChunkStringAsHtml(string, _opts.html);\n _queue.add(() => _type({ chars }));\n if (index + 1 === strings.length) {\n return;\n }\n const splitPauseArgs = [\n _opts.breakLines ? () => _type({\n chars: [createElement(\"BR\")],\n silent: true\n }) : () => _delete({ num: chars.length })\n ];\n _addSplitPause(splitPauseArgs);\n });\n };\n const _prepLoop = async (delay) => {\n _cursorPosition && await _move({ value: _cursorPosition });\n _queue.reset();\n _queue.set(0, () => _pause(delay));\n await _delete({ num: null });\n };\n const _maybePrependHardcodedStrings = (strings) => {\n let existingMarkup = _element.innerHTML;\n if (!existingMarkup) {\n return strings;\n }\n _element.innerHTML = \"\";\n if (_opts.startDelete) {\n _element.innerHTML = existingMarkup;\n expandTextNodes(_element);\n _addSplitPause([\n () => _delete({ num: null })\n ]);\n return strings;\n }\n let hardCodedStrings = existingMarkup.trim().split(/<br(?:\\s*?)(?:\\/)?>/);\n return hardCodedStrings.concat(strings);\n };\n const _fire = async () => {\n _statuses.started = true;\n let queueItems = _queue.getItems();\n try {\n for (let i = 0; i < queueItems.length; i++) {\n await queueItems[i]();\n _queue.markDone(i);\n _disableCursorBlink(false);\n }\n _statuses.completed = true;\n await _opts.afterComplete(this);\n if (!_opts.loop) {\n throw \"\";\n }\n let delay = _opts.loopDelay;\n _wait(async () => {\n await _prepLoop(delay[0]);\n _fire();\n }, delay[1]);\n } catch (e) {\n }\n return this;\n };\n const _pause = (time = 0) => {\n return _wait(() => {\n }, time);\n };\n const _move = async ({\n value,\n to = START,\n instant = false\n }) => {\n _disableCursorBlink(true);\n let numberOfSteps = calculateCursorSteps({\n el: _element,\n move: value,\n cursorPos: _cursorPosition,\n to\n });\n let moveCursor = () => {\n _cursorPosition = updateCursorPosition(numberOfSteps < 0 ? -1 : 1, _cursorPosition, _getAllChars());\n repositionCursor(_element, _getAllChars(), _cursorPosition);\n };\n await _wait(async () => {\n for (let i = 0; i < Math.abs(numberOfSteps); i++) {\n instant ? moveCursor() : await _wait(moveCursor, _getPace(0));\n }\n }, _getActionPace(instant));\n };\n const _type = ({\n chars,\n silent = false,\n instant = false\n }) => {\n _disableCursorBlink(true);\n return _wait(async () => {\n const insert = (character) => insertIntoElement(_element, character);\n silent || await _opts.beforeString(chars, this);\n for (let char of chars) {\n instant || isNonVoidElement(char) ? insert(char) : await _wait(() => insert(char), _getPace(0));\n }\n silent || await _opts.afterString(chars, this);\n }, _getActionPace(instant), true);\n };\n const _options = async (opts) => {\n _opts = merge(_opts, opts);\n return;\n };\n const _empty = async () => {\n if (_elementIsInput()) {\n _element.value = \"\";\n return;\n }\n _getAllChars().forEach((n) => {\n removeNode(n);\n });\n return;\n };\n const _delete = async ({\n num = null,\n instant = false,\n to = START\n }) => {\n _disableCursorBlink(true);\n await _wait(async () => {\n let rounds = isNumber(num) || _elementIsInput() ? num : calculateCursorSteps({\n el: _element,\n move: num,\n cursorPos: _cursorPosition,\n to\n });\n const deleteIt = () => {\n let allChars = _getAllChars();\n if (!allChars.length)\n return;\n if (_elementIsInput()) {\n _element.value = _element.value.slice(0, -1);\n } else {\n removeNode(allChars[_cursorPosition]);\n }\n };\n for (let i = 0; i < rounds; i++) {\n instant ? deleteIt() : await _wait(deleteIt, _getPace(1));\n }\n }, _getActionPace(instant, 1));\n if (num === null && _getAllChars().length - 1 > 0) {\n await _delete({ num: null });\n }\n };\n this.break = function(actionOpts) {\n return _queueAndReturn(() => _type({ chars: [createElement(\"BR\")], silent: true }), actionOpts);\n };\n this.delete = function(numCharacters = null, actionOpts = {}) {\n numCharacters = handleFunctionalArg(numCharacters);\n let bookEndQueueItems = _generateTemporaryOptionQueueItems(actionOpts);\n let num = numCharacters;\n let { instant, to } = actionOpts;\n return _queueAndReturn([\n bookEndQueueItems[0],\n () => _delete({ num, instant, to }),\n bookEndQueueItems[1]\n ], actionOpts);\n };\n this.empty = function(actionOpts = {}) {\n return _queueAndReturn(_empty, actionOpts);\n };\n this.exec = function(func, actionOpts) {\n let bookEndQueueItems = _generateTemporaryOptionQueueItems(actionOpts);\n return _queueAndReturn([bookEndQueueItems[0], func, bookEndQueueItems[1]], actionOpts);\n };\n this.move = function(movementArg, actionOpts = {}) {\n movementArg = handleFunctionalArg(movementArg);\n let bookEndQueueItems = _generateTemporaryOptionQueueItems(actionOpts);\n let { instant, to } = actionOpts;\n let moveArgs = {\n value: movementArg === null ? \"\" : movementArg,\n to,\n instant\n };\n return _queueAndReturn([\n bookEndQueueItems[0],\n () => _move(moveArgs),\n bookEndQueueItems[1]\n ], actionOpts);\n };\n this.options = function(opts) {\n opts = handleFunctionalArg(opts);\n return _queueAndReturn(() => _options(opts), opts);\n };\n this.pause = function(milliseconds, actionOpts = {}) {\n return _queueAndReturn(() => _pause(handleFunctionalArg(milliseconds)), actionOpts);\n };\n this.type = function(string, actionOpts = {}) {\n string = handleFunctionalArg(string);\n let bookEndQueueItems = _generateTemporaryOptionQueueItems(actionOpts);\n let chars = maybeChunkStringAsHtml(string, _opts.html);\n let { instant } = actionOpts;\n let itemsToQueue = [\n bookEndQueueItems[0],\n () => _type({ chars, instant }),\n bookEndQueueItems[1]\n ];\n return _queueAndReturn(itemsToQueue, actionOpts);\n };\n this.is = function(key) {\n return _statuses[key];\n };\n this.destroy = function(shouldRemoveCursor = true) {\n _timeouts = destroyTimeouts(_timeouts);\n handleFunctionalArg(shouldRemoveCursor) && removeNode(_cursor);\n _statuses.destroyed = true;\n };\n this.freeze = function() {\n _statuses.frozen = true;\n };\n this.unfreeze = function() {\n };\n this.reset = function() {\n !this.is(\"destroyed\") && this.destroy();\n _queue.reset();\n _cursorPosition = 0;\n for (let property in _statuses) {\n _statuses[property] = false;\n }\n _element[_elementIsInput() ? \"value\" : \"innerHTML\"] = \"\";\n return this;\n };\n this.go = function() {\n if (_statuses.started) {\n return this;\n }\n _attachCursor();\n if (!_opts.waitUntilVisible) {\n _fire();\n return this;\n }\n fireWhenVisible(_element, _fire.bind(this));\n return this;\n };\n this.getQueue = () => _queue;\n this.getOptions = () => _opts;\n this.updateOptions = (options2) => _options(options2);\n this.getElement = () => _element;\n let _element = selectorToElement(element);\n let _timeouts = [];\n let _cursorPosition = 0;\n let _statuses = merge({}, DEFAULT_STATUSES);\n let _opts = merge(DEFAULT_OPTIONS, options);\n _opts = merge(_opts, {\n html: !_elementIsInput() && _opts.html,\n nextStringDelay: calculateDelay(_opts.nextStringDelay),\n loopDelay: calculateDelay(_opts.loopDelay)\n });\n let _id = generateHash();\n let _queue = Queue([() => _pause(_opts.startDelay)]);\n _element.dataset.typeitId = _id;\n appendStyleBlock(`[${DATA_ATTRIBUTE}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`);\n let _shouldRenderCursor = _opts.cursor && !_elementIsInput();\n let _cursor = _setUpCursor();\n _opts.strings = _maybePrependHardcodedStrings(asArray(_opts.strings));\n if (_opts.strings.length) {\n _generateQueue();\n }\n}\nexport { TypeIt as default };\n","import TypeIt from \"typeit\";\n\nnew TypeIt(\"#element\", {\n speed: 400,\n lifeLike: true,\n waitUntilVisible: true,\n cursor: false,\n})\n .exec(\n () => (document.getElementById(\"elementFallback\").style.display = \"none\")\n )\n .type(\"1₿ = ? $\", { delay: 300 })\n .delete(3, { delay: 300 })\n .type(\" 1₿\", { delay: 300 })\n .go();\n"],"names":["$a7f15fa234654287$var$isArray","thing","Array","isArray","$a7f15fa234654287$var$asArray","value","$a7f15fa234654287$var$toArray","val","from","$a7f15fa234654287$var$createTextNode","content","document","createTextNode","$a7f15fa234654287$var$expandTextNodes","element","childNodes","forEach","child","nodeValue","c","parentNode","insertBefore","remove","$a7f15fa234654287$var$getParsedBody","doc","implementation","createHTMLDocument","body","innerHTML","$a7f15fa234654287$var$DEFAULT_STATUSES","started","completed","frozen","destroyed","$a7f15fa234654287$var$DEFAULT_OPTIONS","breakLines","cursor","cursorChar","cursorSpeed","deleteSpeed","html","lifeLike","loop","loopDelay","nextStringDelay","speed","startDelay","startDelete","strings","waitUntilVisible","beforeString","afterString","beforeStep","afterStep","afterComplete","$a7f15fa234654287$var$walkElementNodes","shouldReverse","walker","createTreeWalker","NodeFilter","SHOW_ALL","acceptNode","node","_a","classList","contains","FILTER_REJECT","FILTER_ACCEPT","nextNode","nodes","originalParent","push","reverse","$a7f15fa234654287$var$maybeChunkStringAsHtml","str","asHtml","map","$a7f15fa234654287$var$createElement","el","createElement","$a7f15fa234654287$var$appendStyleBlock","styles","id","styleBlock","appendChild","head","$a7f15fa234654287$var$isNumber","Number","isInteger","$a7f15fa234654287$var$select","selector","all","$a7f15fa234654287$var$isInput","$a7f15fa234654287$var$getAllChars","filter","length","$a7f15fa234654287$var$calculateCursorSteps","move","cursorPos","to","childIndex","isMovingToLast","RegExp","test","selectedElementNodes","selectedElementFirstChild","selectedElementLastChild","findIndex","character","isSameNode","$a7f15fa234654287$var$calculateStepsToSelector","$a7f15fa234654287$var$calculateDelay","delayArg","$a7f15fa234654287$var$randomInRange","range2","Math","abs","random","$a7f15fa234654287$var$range","$a7f15fa234654287$var$handleFunctionalArg","arg","$a7f15fa234654287$var$merge","originalObj","newObj","Object","assign","$a7f15fa234654287$var$removeNode","nodeParent","$a7f15fa234654287$var$cursorFontStyles","color","options","_wait","async","callback","delay","silent","_statuses","Promise","resolve","this","unfreeze","_opts","timeouts","setTimeout","$a7f15fa234654287$var$wait","_timeouts","_elementIsInput","_element","_getPace","index","$a7f15fa234654287$var$calculatePace","_getAllChars","_getActionPace","instant","paceIndex","_queueAndReturn","steps","opts","_queue","add","_pause","_maybeAppendPause","_generateTemporaryOptionQueueItems","newOptions","_options","_addSplitPause","items","_attachCursor","_cursor","_shouldRenderCursor","cursorSelector","computedStyles","getComputedStyle","customProperties","entries","reduce","accumulator","item","$a7f15fa234654287$var$setCursorStyles","_id","_disableCursorBlink","shouldDisable","toggle","_fire","queueItems","getItems","i","markDone","_cursorPosition","_move","reset","set","_delete","num","_prepLoop","e","time","numberOfSteps","moveCursor","cursorPosition","printedCharacters","min","max","allChars","newCursorPosition","nodeToInsertBefore","$a7f15fa234654287$var$repositionCursor","_type","chars","insert","originalTarget","textContent","target","tagName","$a7f15fa234654287$var$insertIntoElement","char","outerHTML","_empty","n","rounds","deleteIt","slice","break","actionOpts","delete","numCharacters","bookEndQueueItems","empty","exec","func","movementArg","moveArgs","pause","milliseconds","type","string","itemsToQueue","is","key","destroy","shouldRemoveCursor","timeout","clearTimeout","freeze","property","go","IntersectionObserver","observer2","entry","isIntersecting","unobserve","threshold","observe","$a7f15fa234654287$var$fireWhenVisible","bind","getQueue","getOptions","updateOptions","options2","getElement","toString","substring","initialItems","concat","done","$a7f15fa234654287$var$Queue","dataset","typeitId","className","style","visibility","_setUpCursor","existingMarkup","trim","split","_maybePrependHardcodedStrings","splitPauseArgs","_generateQueue","getElementById","display"],"version":3,"file":"index.af5f82c7.js.map"}