{"version":3,"file":"ui/thirdparty/npm.autocompleter.fdaf246767f84953e8f3.js","mappings":"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","sources":["webpack://apps/./node_modules/autocompleter/autocomplete.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.autocomplete = factory());\n}(this, (function () { 'use strict';\n\n /*\r\n * https://github.com/kraaden/autocomplete\r\n * Copyright (c) 2016 Denys Krasnoshchok\r\n * MIT License\r\n */\r\n function autocomplete(settings) {\r\n // just an alias to minimize JS file size\r\n var doc = document;\r\n var container = settings.container || doc.createElement(\"div\");\r\n container.id = container.id || \"autocomplete-\" + uid();\r\n var containerStyle = container.style;\r\n var debounceWaitMs = settings.debounceWaitMs || 0;\r\n var preventSubmit = settings.preventSubmit || false;\r\n var disableAutoSelect = settings.disableAutoSelect || false;\r\n var items = [];\r\n var inputValue = \"\";\r\n var minLen = 2;\r\n var showOnFocus = settings.showOnFocus;\r\n var selected;\r\n var keypressCounter = 0;\r\n var debounceTimer;\r\n if (settings.minLength !== undefined) {\r\n minLen = settings.minLength;\r\n }\r\n if (!settings.input) {\r\n throw new Error(\"input undefined\");\r\n }\r\n var input = settings.input;\r\n container.className = \"autocomplete \" + (settings.className || \"\");\r\n container.setAttribute(\"role\", \"listbox\");\r\n input.setAttribute(\"role\", \"combobox\");\r\n input.setAttribute(\"aria-expanded\", \"false\");\r\n input.setAttribute(\"aria-autocomplete\", \"list\");\r\n input.setAttribute(\"aria-controls\", container.id);\r\n input.setAttribute(\"aria-owns\", container.id);\r\n input.setAttribute(\"aria-activedescendant\", \"\");\r\n input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n // IOS implementation for fixed positioning has many bugs, so we will use absolute positioning\r\n containerStyle.position = \"absolute\";\r\n /**\r\n * Generate a unique ID\r\n */\r\n function uid() {\r\n return Date.now().toString(36) + Math.random().toString(36).substring(2);\r\n }\r\n /**\r\n * Detach the container from DOM\r\n */\r\n function detach() {\r\n var parent = container.parentNode;\r\n if (parent) {\r\n parent.removeChild(container);\r\n }\r\n }\r\n /**\r\n * Clear debouncing timer if assigned\r\n */\r\n function clearDebounceTimer() {\r\n if (debounceTimer) {\r\n window.clearTimeout(debounceTimer);\r\n }\r\n }\r\n /**\r\n * Attach the container to DOM\r\n */\r\n function attach() {\r\n if (!container.parentNode) {\r\n doc.body.appendChild(container);\r\n }\r\n }\r\n /**\r\n * Check if container for autocomplete is displayed\r\n */\r\n function containerDisplayed() {\r\n return !!container.parentNode;\r\n }\r\n /**\r\n * Clear autocomplete state and hide container\r\n */\r\n function clear() {\r\n // prevent the update call if there are pending AJAX requests\r\n keypressCounter++;\r\n items = [];\r\n inputValue = \"\";\r\n selected = undefined;\r\n input.setAttribute(\"aria-activedescendant\", \"\");\r\n input.setAttribute(\"aria-expanded\", \"false\");\r\n detach();\r\n }\r\n /**\r\n * Update autocomplete position\r\n */\r\n function updatePosition() {\r\n if (!containerDisplayed()) {\r\n return;\r\n }\r\n input.setAttribute(\"aria-expanded\", \"true\");\r\n containerStyle.height = \"auto\";\r\n containerStyle.width = input.offsetWidth + \"px\";\r\n var maxHeight = 0;\r\n var inputRect;\r\n function calc() {\r\n var docEl = doc.documentElement;\r\n var clientTop = docEl.clientTop || doc.body.clientTop || 0;\r\n var clientLeft = docEl.clientLeft || doc.body.clientLeft || 0;\r\n var scrollTop = window.pageYOffset || docEl.scrollTop;\r\n var scrollLeft = window.pageXOffset || docEl.scrollLeft;\r\n inputRect = input.getBoundingClientRect();\r\n var top = inputRect.top + input.offsetHeight + scrollTop - clientTop;\r\n var left = inputRect.left + scrollLeft - clientLeft;\r\n containerStyle.top = top + \"px\";\r\n containerStyle.left = left + \"px\";\r\n maxHeight = window.innerHeight - (inputRect.top + input.offsetHeight);\r\n if (maxHeight < 0) {\r\n maxHeight = 0;\r\n }\r\n containerStyle.top = top + \"px\";\r\n containerStyle.bottom = \"\";\r\n containerStyle.left = left + \"px\";\r\n containerStyle.maxHeight = maxHeight + \"px\";\r\n }\r\n // the calc method must be called twice, otherwise the calculation may be wrong on resize event (chrome browser)\r\n calc();\r\n calc();\r\n if (settings.customize && inputRect) {\r\n settings.customize(input, inputRect, container, maxHeight);\r\n }\r\n }\r\n /**\r\n * Redraw the autocomplete div element with suggestions\r\n */\r\n function update() {\r\n // delete all children from autocomplete DOM container\r\n while (container.firstChild) {\r\n container.removeChild(container.firstChild);\r\n }\r\n input.setAttribute(\"aria-activedescendant\", \"\");\r\n // function for rendering autocomplete suggestions\r\n var render = function (item, _, __) {\r\n var itemElement = doc.createElement(\"div\");\r\n itemElement.textContent = item.label || \"\";\r\n return itemElement;\r\n };\r\n if (settings.render) {\r\n render = settings.render;\r\n }\r\n // function to render autocomplete groups\r\n var renderGroup = function (groupName, _) {\r\n var groupDiv = doc.createElement(\"div\");\r\n groupDiv.textContent = groupName;\r\n return groupDiv;\r\n };\r\n if (settings.renderGroup) {\r\n renderGroup = settings.renderGroup;\r\n }\r\n var fragment = doc.createDocumentFragment();\r\n var prevGroup = \"#9?$\";\r\n items.forEach(function (item, index) {\r\n if (item.group && item.group !== prevGroup) {\r\n prevGroup = item.group;\r\n var groupDiv = renderGroup(item.group, inputValue);\r\n if (groupDiv) {\r\n groupDiv.className += \" group\";\r\n fragment.appendChild(groupDiv);\r\n }\r\n }\r\n var div = render(item, inputValue, index);\r\n if (div) {\r\n div.id = container.id + \"_\" + index;\r\n div.setAttribute(\"role\", \"option\");\r\n div.addEventListener(\"click\", function (ev) {\r\n settings.onSelect(item, input);\r\n clear();\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n });\r\n if (item === selected) {\r\n div.className += \" selected\";\r\n div.setAttribute(\"aria-selected\", \"true\");\r\n input.setAttribute(\"aria-activedescendant\", div.id);\r\n }\r\n fragment.appendChild(div);\r\n }\r\n });\r\n container.appendChild(fragment);\r\n if (items.length < 1) {\r\n if (settings.emptyMsg) {\r\n var empty = doc.createElement(\"div\");\r\n empty.id = container.id + \"_\" + uid();\r\n empty.className = \"empty\";\r\n empty.textContent = settings.emptyMsg;\r\n container.appendChild(empty);\r\n input.setAttribute(\"aria-activedescendant\", empty.id);\r\n }\r\n else {\r\n clear();\r\n return;\r\n }\r\n }\r\n attach();\r\n updatePosition();\r\n updateScroll();\r\n }\r\n function updateIfDisplayed() {\r\n if (containerDisplayed()) {\r\n update();\r\n }\r\n }\r\n function resizeEventHandler() {\r\n updateIfDisplayed();\r\n }\r\n function scrollEventHandler(e) {\r\n if (e.target !== container) {\r\n updateIfDisplayed();\r\n }\r\n else {\r\n e.preventDefault();\r\n }\r\n }\r\n function keyupEventHandler(ev) {\r\n var keyCode = ev.which || ev.keyCode || 0;\r\n var ignore = settings.keysToIgnore || [38 /* Up */, 13 /* Enter */, 27 /* Esc */, 39 /* Right */, 37 /* Left */, 16 /* Shift */, 17 /* Ctrl */, 18 /* Alt */, 20 /* CapsLock */, 91 /* WindowsKey */, 9 /* Tab */];\r\n for (var _i = 0, ignore_1 = ignore; _i < ignore_1.length; _i++) {\r\n var key = ignore_1[_i];\r\n if (keyCode === key) {\r\n return;\r\n }\r\n }\r\n if (keyCode >= 112 /* F1 */ && keyCode <= 123 /* F12 */ && !settings.keysToIgnore) {\r\n return;\r\n }\r\n // the down key is used to open autocomplete\r\n if (keyCode === 40 /* Down */ && containerDisplayed()) {\r\n return;\r\n }\r\n startFetch(0 /* Keyboard */);\r\n }\r\n /**\r\n * Automatically move scroll bar if selected item is not visible\r\n */\r\n function updateScroll() {\r\n var elements = container.getElementsByClassName(\"selected\");\r\n if (elements.length > 0) {\r\n var element = elements[0];\r\n // make group visible\r\n var previous = element.previousElementSibling;\r\n if (previous && previous.className.indexOf(\"group\") !== -1 && !previous.previousElementSibling) {\r\n element = previous;\r\n }\r\n if (element.offsetTop < container.scrollTop) {\r\n container.scrollTop = element.offsetTop;\r\n }\r\n else {\r\n var selectBottom = element.offsetTop + element.offsetHeight;\r\n var containerBottom = container.scrollTop + container.offsetHeight;\r\n if (selectBottom > containerBottom) {\r\n container.scrollTop += selectBottom - containerBottom;\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Select the previous item in suggestions\r\n */\r\n function selectPrev() {\r\n if (items.length < 1) {\r\n selected = undefined;\r\n }\r\n else {\r\n if (selected === items[0]) {\r\n selected = items[items.length - 1];\r\n }\r\n else {\r\n for (var i = items.length - 1; i > 0; i--) {\r\n if (selected === items[i] || i === 1) {\r\n selected = items[i - 1];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Select the next item in suggestions\r\n */\r\n function selectNext() {\r\n if (items.length < 1) {\r\n selected = undefined;\r\n }\r\n if (!selected || selected === items[items.length - 1]) {\r\n selected = items[0];\r\n return;\r\n }\r\n for (var i = 0; i < (items.length - 1); i++) {\r\n if (selected === items[i]) {\r\n selected = items[i + 1];\r\n break;\r\n }\r\n }\r\n }\r\n function keydownEventHandler(ev) {\r\n var keyCode = ev.which || ev.keyCode || 0;\r\n if (keyCode === 38 /* Up */ || keyCode === 40 /* Down */ || keyCode === 27 /* Esc */) {\r\n var containerIsDisplayed = containerDisplayed();\r\n if (keyCode === 27 /* Esc */) {\r\n clear();\r\n }\r\n else {\r\n if (!containerIsDisplayed || items.length < 1) {\r\n return;\r\n }\r\n keyCode === 38 /* Up */\r\n ? selectPrev()\r\n : selectNext();\r\n update();\r\n }\r\n ev.preventDefault();\r\n if (containerIsDisplayed) {\r\n ev.stopPropagation();\r\n }\r\n return;\r\n }\r\n if (keyCode === 13 /* Enter */) {\r\n if (selected) {\r\n settings.onSelect(selected, input);\r\n clear();\r\n }\r\n if (preventSubmit) {\r\n ev.preventDefault();\r\n }\r\n }\r\n }\r\n function focusEventHandler() {\r\n if (showOnFocus) {\r\n startFetch(1 /* Focus */);\r\n }\r\n }\r\n function startFetch(trigger) {\r\n // If multiple keys were pressed, before we get an update from server,\r\n // this may cause redrawing autocomplete multiple times after the last key was pressed.\r\n // To avoid this, the number of times keyboard was pressed will be saved and checked before redraw.\r\n var savedKeypressCounter = ++keypressCounter;\r\n var inputText = input.value;\r\n var cursorPos = input.selectionStart || 0;\r\n if (inputText.length >= minLen || trigger === 1 /* Focus */) {\r\n clearDebounceTimer();\r\n debounceTimer = window.setTimeout(function () {\r\n settings.fetch(inputText, function (elements) {\r\n if (keypressCounter === savedKeypressCounter && elements) {\r\n items = elements;\r\n inputValue = inputText;\r\n selected = (items.length < 1 || disableAutoSelect) ? undefined : items[0];\r\n update();\r\n }\r\n }, trigger, cursorPos);\r\n }, trigger === 0 /* Keyboard */ ? debounceWaitMs : 0);\r\n }\r\n else {\r\n clear();\r\n }\r\n }\r\n function blurEventHandler() {\r\n // we need to delay clear, because when we click on an item, blur will be called before click and remove items from DOM\r\n setTimeout(function () {\r\n if (doc.activeElement !== input) {\r\n clear();\r\n }\r\n }, 200);\r\n }\r\n /**\r\n * Fixes #26: on long clicks focus will be lost and onSelect method will not be called\r\n */\r\n container.addEventListener(\"mousedown\", function (evt) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n });\r\n /**\r\n * Fixes #30: autocomplete closes when scrollbar is clicked in IE\r\n * See: https://stackoverflow.com/a/9210267/13172349\r\n */\r\n container.addEventListener(\"focus\", function () { return input.focus(); });\r\n /**\r\n * This function will remove DOM elements and clear event handlers\r\n */\r\n function destroy() {\r\n input.removeEventListener(\"focus\", focusEventHandler);\r\n input.removeEventListener(\"keydown\", keydownEventHandler);\r\n input.removeEventListener(\"keyup\", keyupEventHandler);\r\n input.removeEventListener(\"blur\", blurEventHandler);\r\n window.removeEventListener(\"resize\", resizeEventHandler);\r\n doc.removeEventListener(\"scroll\", scrollEventHandler, true);\r\n input.removeAttribute(\"role\");\r\n input.removeAttribute(\"aria-expanded\");\r\n input.removeAttribute(\"aria-autocomplete\");\r\n input.removeAttribute(\"aria-controls\");\r\n input.removeAttribute(\"aria-activedescendant\");\r\n input.removeAttribute(\"aria-owns\");\r\n input.removeAttribute(\"aria-haspopup\");\r\n clearDebounceTimer();\r\n clear();\r\n }\r\n // setup event handlers\r\n input.addEventListener(\"keydown\", keydownEventHandler);\r\n input.addEventListener(\"keyup\", keyupEventHandler);\r\n input.addEventListener(\"blur\", blurEventHandler);\r\n input.addEventListener(\"focus\", focusEventHandler);\r\n window.addEventListener(\"resize\", resizeEventHandler);\r\n doc.addEventListener(\"scroll\", scrollEventHandler, true);\r\n return {\r\n destroy: destroy\r\n };\r\n }\n\n return autocomplete;\n\n})));\n//# sourceMappingURL=autocomplete.js.map\n"],"names":["module","exports","autocomplete","settings","doc","document","container","createElement","id","uid","selected","debounceTimer","containerStyle","style","debounceWaitMs","preventSubmit","disableAutoSelect","items","inputValue","minLen","showOnFocus","keypressCounter","undefined","minLength","input","Error","Date","now","toString","Math","random","substring","detach","parent","parentNode","removeChild","clearDebounceTimer","window","clearTimeout","attach","body","appendChild","containerDisplayed","clear","setAttribute","updatePosition","height","width","offsetWidth","inputRect","maxHeight","calc","customize","docEl","documentElement","clientTop","clientLeft","scrollTop","pageYOffset","scrollLeft","pageXOffset","top","getBoundingClientRect","offsetHeight","left","innerHeight","bottom","update","firstChild","render","item","_","__","itemElement","textContent","label","renderGroup","groupName","groupDiv","fragment","createDocumentFragment","prevGroup","forEach","index","group","className","div","addEventListener","ev","onSelect","preventDefault","stopPropagation","length","emptyMsg","empty","updateScroll","updateIfDisplayed","resizeEventHandler","scrollEventHandler","e","target","keyupEventHandler","keyCode","which","_i","ignore_1","keysToIgnore","startFetch","elements","getElementsByClassName","element","previous","previousElementSibling","indexOf","offsetTop","selectBottom","containerBottom","selectPrev","i","selectNext","keydownEventHandler","containerIsDisplayed","focusEventHandler","trigger","savedKeypressCounter","inputText","value","cursorPos","selectionStart","setTimeout","fetch","blurEventHandler","activeElement","destroy","removeEventListener","removeAttribute","position","evt","focus","factory"],"sourceRoot":""}