{"version":3,"file":"bundle-external.min.js","sources":["bundle-external.js"],"sourcesContent":["\"use strict\";\r\nvar autocomplete;\r\n(function (autocomplete_1) {\r\n    /*\r\n  * https://github.com/kraaden/autocomplete\r\n  * Copyright (c) 2016 Denys Krasnoshchok\r\n  * MIT License\r\n  *\r\n  * this commit is used : https://github.com/kraaden/autocomplete/pull/40\r\n  *\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 = doc.createElement(\"div\");\r\n        var containerStyle = container.style;\r\n        var userAgent = navigator.userAgent;\r\n        var mobileFirefox = userAgent.indexOf(\"Firefox\") !== -1 && userAgent.indexOf(\"Mobile\") !== -1;\r\n        var debounceWaitMs = settings.debounceWaitMs || 0;\r\n        var preventSubmit = settings.preventSubmit || false;\r\n        // 'keyup' event will not be fired on Mobile Firefox, so we have to use 'input' event instead\r\n        var keyUpEventName = mobileFirefox ? \"input\" : \"keyup\";\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        // IOS implementation for fixed positioning has many bugs, so we will use absolute positioning\r\n        containerStyle.position = \"absolute\";\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            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            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            // function for rendering autocomplete suggestions\r\n            var render = function (item, currentValue) {\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, currentValue) {\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) {\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);\r\n                if (div) {\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                    }\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.className = \"empty\";\r\n                    empty.textContent = settings.emptyMsg;\r\n                    container.appendChild(empty);\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 = [38 /* Keys.Up */, 13 /* Keys.Enter */, 27 /* Keys.Esc */, 39 /* Keys.Right */, 37 /* Keys.Left */, 16 /* Keys.Shift */, 17 /* Keys.Ctrl */, 18 /* Keys.Alt */, 20 /* Keys.CapsLock */, 91 /* Keys.WindowsKey */, 9 /* Keys.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 /* Keys.F1 */ && keyCode <= 123 /* Keys.F12 */) {\r\n                return;\r\n            }\r\n            // the down key is used to open autocomplete\r\n            if (keyCode === 40 /* Keys.Down */ && containerDisplayed()) {\r\n                return;\r\n            }\r\n            startFetch(0 /* EventTrigger.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 if (!selected) {\r\n                selected = items[items.length - 1];\r\n            }\r\n            else if (selected === items[0]) {\r\n                selected = settings.disableAutoSelect ? undefined : 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         * 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            else if (!selected) {\r\n                selected = items[0];\r\n            }\r\n            else if (selected === items[items.length - 1]) {\r\n                selected = settings.disableAutoSelect ? undefined : items[0];\r\n            }\r\n            else {\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        }\r\n        function keydownEventHandler(ev) {\r\n            var keyCode = ev.which || ev.keyCode || 0;\r\n            if (keyCode === 38 /* Keys.Up */ || keyCode === 40 /* Keys.Down */ || keyCode === 27 /* Keys.Esc */) {\r\n                var containerIsDisplayed = containerDisplayed();\r\n                if (keyCode === 27 /* Keys.Esc */) {\r\n                    clear();\r\n                }\r\n                else {\r\n                    if (!containerDisplayed || items.length < 1) {\r\n                        return;\r\n                    }\r\n                    keyCode === 38 /* Keys.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 /* Keys.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 /* EventTrigger.Focus */);\r\n            }\r\n        }\r\n        function startFetch(trigger) {\r\n            // if multiple keys were pressed, before we get update from server,\r\n            // this may cause redrawing our autocomplete multiple times after the last key press.\r\n            // to avoid this, the number of times keyboard was pressed will be\r\n            // saved and checked before redraw our autocomplete box.\r\n            var savedKeypressCounter = ++keypressCounter;\r\n            var val = input.value;\r\n            if (val.length >= minLen || trigger === 1 /* EventTrigger.Focus */) {\r\n                clearDebounceTimer();\r\n                debounceTimer = window.setTimeout(function () {\r\n                    settings.fetch(val, function (elements) {\r\n                        if (keypressCounter === savedKeypressCounter && elements) {\r\n                            items = elements;\r\n                            inputValue = val;\r\n                            selected = (items.length < 1 || settings.disableAutoSelect) ? undefined : items[0];\r\n                            update();\r\n                        }\r\n                    }, 0 /* EventTrigger.Keyboard */);\r\n                }, trigger === 0 /* EventTrigger.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(keyUpEventName, keyupEventHandler);\r\n            input.removeEventListener(\"blur\", blurEventHandler);\r\n            window.removeEventListener(\"resize\", resizeEventHandler);\r\n            doc.removeEventListener(\"scroll\", scrollEventHandler, true);\r\n            clearDebounceTimer();\r\n            clear();\r\n        }\r\n        // setup event handlers\r\n        input.addEventListener(\"keydown\", keydownEventHandler);\r\n        input.addEventListener(keyUpEventName, 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    }\r\n    autocomplete_1.autocomplete = autocomplete;\r\n})(autocomplete || (autocomplete = {}));\r\n"],"names":["autocomplete","autocomplete_1","settings","selected","debounceTimer","doc","document","container","createElement","containerStyle","style","userAgent","navigator","mobileFirefox","indexOf","debounceWaitMs","preventSubmit","keyUpEventName","items","inputValue","minLen","showOnFocus","keypressCounter","undefined","minLength","input","Error","clearDebounceTimer","window","clearTimeout","containerDisplayed","parentNode","clear","detach","parent","removeChild","update","firstChild","render","item","currentValue","itemElement","textContent","label","renderGroup","groupName","groupDiv","fragment","createDocumentFragment","prevGroup","forEach","group","className","appendChild","div","addEventListener","ev","onSelect","preventDefault","stopPropagation","length","emptyMsg","empty","attach","body","updatePosition","height","width","offsetWidth","inputRect","maxHeight","calc","customize","docEl","documentElement","clientTop","clientLeft","scrollTop","pageYOffset","scrollLeft","pageXOffset","top","getBoundingClientRect","offsetHeight","left","innerHeight","bottom","updateScroll","elements","getElementsByClassName","element","previous","previousElementSibling","offsetTop","selectBottom","containerBottom","updateIfDisplayed","resizeEventHandler","scrollEventHandler","e","target","keyupEventHandler","keyCode","which","_i","ignore_1","startFetch","keydownEventHandler","containerIsDisplayed","selectPrev","disableAutoSelect","i","selectNext","focusEventHandler","trigger","savedKeypressCounter","val","value","setTimeout","fetch","blurEventHandler","activeElement","position","evt","focus","destroy","removeEventListener"],"mappings":"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"}