Packages
Phoenix component that utilizes Lea Verou's autocomplete autosuggest accessible (WCAG 2) Awesomplete widget, featuring dynamic data loading
Retired package: Release invalid - package.json missing
Current section
Files
Jump to
Current section
Files
priv/static/awesomplete_bundle.cjs.map
{
"version": 3,
"sources": ["../../assets/vendor/awesomplete.js", "../../assets/vendor/awesomplete-util.js", "../../assets/js/index.js", "../../assets/js/attach-awesomplete.js", "../../assets/js/copy-value-to-id.js"],
"sourcesContent": ["/**\n * Simple, lightweight, usable local autocomplete library for modern browsers\n * Because there weren\u2019t enough autocomplete scripts in the world? Because I\u2019m completely insane and have NIH syndrome? Probably both. :P\n * @author Lea Verou http://leaverou.github.io/awesomplete\n * MIT license\n */\n\n(function () {\n\nvar _ = function (input, o) {\n\tvar me = this;\n\n // Keep track of number of instances for unique IDs\n _.count = (_.count || 0) + 1;\n this.count = _.count;\n\n\t// Setup\n\n\tthis.isOpened = false;\n\n\tthis.input = $(input);\n\tthis.input.setAttribute(\"autocomplete\", \"off\");\n\tthis.input.setAttribute(\"aria-expanded\", \"false\");\n\tthis.input.setAttribute(\"aria-owns\", \"awesomplete_list_\" + this.count);\n\tthis.input.setAttribute(\"role\", \"combobox\");\n\n\t// store constructor options in case we need to distinguish\n\t// between default and customized behavior later on\n\tthis.options = o = o || {};\n\n\tconfigure(this, {\n\t\tminChars: 2,\n\t\tmaxItems: 10,\n\t\tautoFirst: false,\n\t\tdata: _.DATA,\n\t\tfilter: _.FILTER_CONTAINS,\n\t\tsort: o.sort === false ? false : _.SORT_BYLENGTH,\n\t\tcontainer: _.CONTAINER,\n\t\titem: _.ITEM,\n\t\treplace: _.REPLACE,\n\t\ttabSelect: false,\n\t\tlistLabel: \"Results List\"\n\t}, o);\n\n\tthis.index = -1;\n\n\t// Create necessary elements\n\n\tthis.container = this.container(input);\n\n\tthis.ul = $.create(\"ul\", {\n\t\thidden: \"hidden\",\n role: \"listbox\",\n id: \"awesomplete_list_\" + this.count,\n\t\tinside: this.container,\n\t\t\"aria-label\": this.listLabel\n\t});\n\n\tthis.status = $.create(\"span\", {\n\t\tclassName: \"visually-hidden\",\n\t\trole: \"status\",\n\t\t\"aria-live\": \"assertive\",\n \"aria-atomic\": true,\n inside: this.container,\n textContent: this.minChars != 0 ? (\"Type \" + this.minChars + \" or more characters for results.\") : \"Begin typing for results.\"\n\t});\n\n\t// Bind events\n\n\tthis._events = {\n\t\tinput: {\n\t\t\t\"input\": this.evaluate.bind(this),\n\t\t\t\"blur\": this.close.bind(this, { reason: \"blur\" }),\n\t\t\t\"keydown\": function(evt) {\n\t\t\t\tvar c = evt.keyCode;\n\n\t\t\t\t// If the dropdown `ul` is in view, then act on keydown for the following keys:\n\t\t\t\t// Enter / Esc / Up / Down\n\t\t\t\tif(me.opened) {\n\t\t\t\t\tif (c === 13 && me.selected) { // Enter\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select(undefined, undefined, evt);\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 9 && me.selected && me.tabSelect) {\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select(undefined, undefined, evt);\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 27) { // Esc\n\t\t\t\t\t\tme.close({ reason: \"esc\" });\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 38 || c === 40) { // Down/Up arrow\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme[c === 38? \"previous\" : \"next\"]();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tform: {\n\t\t\t\"submit\": this.close.bind(this, { reason: \"submit\" })\n\t\t},\n\t\tul: {\n\t\t\t// Prevent the default mousedowm, which ensures the input is not blurred.\n\t\t\t// The actual selection will happen on click. This also ensures dragging the\n\t\t\t// cursor away from the list item will cancel the selection\n\t\t\t\"mousedown\": function(evt) {\n\t\t\t\tevt.preventDefault();\n\t\t\t},\n\t\t\t// The click event is fired even if the corresponding mousedown event has called preventDefault\n\t\t\t\"click\": function(evt) {\n\t\t\t\tvar li = evt.target;\n\n\t\t\t\tif (li !== this) {\n\n\t\t\t\t\twhile (li && !/li/i.test(li.nodeName)) {\n\t\t\t\t\t\tli = li.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (li && evt.button === 0) { // Only select on left click\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select(li, evt.target, evt);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.bind(this.input, this._events.input);\n\t$.bind(this.input.form, this._events.form);\n\t$.bind(this.ul, this._events.ul);\n\n\tif (this.input.hasAttribute(\"list\")) {\n\t\tthis.list = \"#\" + this.input.getAttribute(\"list\");\n\t\tthis.input.removeAttribute(\"list\");\n\t}\n\telse {\n\t\tthis.list = this.input.getAttribute(\"data-list\") || o.list || [];\n\t}\n\n\t_.all.push(this);\n};\n\n_.prototype = {\n\tset list(list) {\n\t\tif (Array.isArray(list)) {\n\t\t\tthis._list = list;\n\t\t}\n\t\telse if (typeof list === \"string\" && list.indexOf(\",\") > -1) {\n\t\t\t\tthis._list = list.split(/\\s*,\\s*/);\n\t\t}\n\t\telse { // Element or CSS selector\n\t\t\tlist = $(list);\n\n\t\t\tif (list && list.children) {\n\t\t\t\tvar items = [];\n\t\t\t\tslice.apply(list.children).forEach(function (el) {\n\t\t\t\t\tif (!el.disabled) {\n\t\t\t\t\t\tvar text = el.textContent.trim();\n\t\t\t\t\t\tvar value = el.value || text;\n\t\t\t\t\t\tvar label = el.label || text;\n\t\t\t\t\t\tif (value !== \"\") {\n\t\t\t\t\t\t\titems.push({ label: label, value: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._list = items;\n\t\t\t}\n\t\t}\n\n\t\tif (document.activeElement === this.input) {\n\t\t\tthis.evaluate();\n\t\t}\n\t},\n\n\tget selected() {\n\t\treturn this.index > -1;\n\t},\n\n\tget opened() {\n\t\treturn this.isOpened;\n\t},\n\n\tclose: function (o) {\n\t\tif (!this.opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.input.setAttribute(\"aria-expanded\", \"false\");\n\t\tthis.ul.setAttribute(\"hidden\", \"\");\n\t\tthis.isOpened = false;\n\t\tthis.index = -1;\n\n\t\tthis.status.setAttribute(\"hidden\", \"\");\n\n\t\t$.fire(this.input, \"awesomplete-close\", o || {});\n\t},\n\n\topen: function () {\n\t\tthis.input.setAttribute(\"aria-expanded\", \"true\");\n\t\tthis.ul.removeAttribute(\"hidden\");\n\t\tthis.isOpened = true;\n\n\t\tthis.status.removeAttribute(\"hidden\");\n\n\t\tif (this.autoFirst && this.index === -1) {\n\t\t\tthis.goto(0);\n\t\t}\n\n\t\t$.fire(this.input, \"awesomplete-open\");\n\t},\n\n\tdestroy: function() {\n\t\t//remove events from the input and its form\n\t\t$.unbind(this.input, this._events.input);\n\t\t$.unbind(this.input.form, this._events.form);\n\n\t\t// cleanup container if it was created by Awesomplete but leave it alone otherwise\n\t\tif (!this.options.container) {\n\t\t\t//move the input out of the awesomplete container and remove the container and its children\n\t\t\tvar parentNode = this.container.parentNode;\n\n\t\t\tparentNode.insertBefore(this.input, this.container);\n\t\t\tparentNode.removeChild(this.container);\n\t\t}\n\n\t\t//remove autocomplete and aria-autocomplete attributes\n\t\tthis.input.removeAttribute(\"autocomplete\");\n\t\tthis.input.removeAttribute(\"aria-autocomplete\");\n\n\t\t//remove this awesomeplete instance from the global array of instances\n\t\tvar indexOfAwesomplete = _.all.indexOf(this);\n\n\t\tif (indexOfAwesomplete !== -1) {\n\t\t\t_.all.splice(indexOfAwesomplete, 1);\n\t\t}\n\t},\n\n\tnext: function () {\n\t\tvar count = this.ul.children.length;\n\t\tthis.goto(this.index < count - 1 ? this.index + 1 : (count ? 0 : -1) );\n\t},\n\n\tprevious: function () {\n\t\tvar count = this.ul.children.length;\n\t\tvar pos = this.index - 1;\n\n\t\tthis.goto(this.selected && pos !== -1 ? pos : count - 1);\n\t},\n\n\t// Should not be used, highlights specific item without any checks!\n\tgoto: function (i) {\n\t\tvar lis = this.ul.children;\n\n\t\tif (this.selected) {\n\t\t\tlis[this.index].setAttribute(\"aria-selected\", \"false\");\n\t\t}\n\n\t\tthis.index = i;\n\n\t\tif (i > -1 && lis.length > 0) {\n\t\t\tlis[i].setAttribute(\"aria-selected\", \"true\");\n\n\t\t\tthis.status.textContent = lis[i].textContent + \", list item \" + (i + 1) + \" of \" + lis.length;\n\n this.input.setAttribute(\"aria-activedescendant\", this.ul.id + \"_item_\" + this.index);\n\n\t\t\t// scroll to highlighted element in case parent's height is fixed\n\t\t\tthis.ul.scrollTop = lis[i].offsetTop - this.ul.clientHeight + lis[i].clientHeight;\n\n\t\t\t$.fire(this.input, \"awesomplete-highlight\", {\n\t\t\t\ttext: this.suggestions[this.index]\n\t\t\t});\n\t\t}\n\t},\n\n\tselect: function (selected, origin, originalEvent) {\n\t\tif (selected) {\n\t\t\tthis.index = $.siblingIndex(selected);\n\t\t} else {\n\t\t\tselected = this.ul.children[this.index];\n\t\t}\n\n\t\tif (selected) {\n\t\t\tvar suggestion = this.suggestions[this.index];\n\n\t\t\tvar allowed = $.fire(this.input, \"awesomplete-select\", {\n\t\t\t\ttext: suggestion,\n\t\t\t\torigin: origin || selected,\n\t\t\t\toriginalEvent: originalEvent\n\t\t\t});\n\n\t\t\tif (allowed) {\n\t\t\t\tthis.replace(suggestion);\n\t\t\t\tthis.close({ reason: \"select\" });\n\t\t\t\t$.fire(this.input, \"awesomplete-selectcomplete\", {\n\t\t\t\t\ttext: suggestion,\n\t\t\t\t\toriginalEvent: originalEvent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\n\tevaluate: function() {\n\t\tvar me = this;\n\t\tvar value = this.input.value;\n\n\t\tif (value.length >= this.minChars && this._list && this._list.length > 0) {\n\t\t\tthis.index = -1;\n\t\t\t// Populate list with options that match\n\t\t\tthis.ul.innerHTML = \"\";\n\n\t\t\tthis.suggestions = this._list\n\t\t\t\t.map(function(item) {\n\t\t\t\t\treturn new Suggestion(me.data(item, value));\n\t\t\t\t})\n\t\t\t\t.filter(function(item) {\n\t\t\t\t\treturn me.filter(item, value);\n\t\t\t\t});\n\n\t\t\tif (this.sort !== false) {\n\t\t\t\tthis.suggestions = this.suggestions.sort(this.sort);\n\t\t\t}\n\n\t\t\tthis.suggestions = this.suggestions.slice(0, this.maxItems);\n\n\t\t\tthis.suggestions.forEach(function(text, index) {\n\t\t\t\t\tme.ul.appendChild(me.item(text, value, index));\n\t\t\t\t});\n\n\t\t\tif (this.ul.children.length === 0) {\n\n this.status.textContent = \"No results found\";\n\n\t\t\t\tthis.close({ reason: \"nomatches\" });\n\n\t\t\t} else {\n\t\t\t\tthis.open();\n\n this.status.textContent = this.ul.children.length + \" results found\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthis.close({ reason: \"nomatches\" });\n\n this.status.textContent = \"No results found\";\n\t\t}\n\t}\n};\n\n// Static methods/properties\n\n_.all = [];\n\n_.FILTER_CONTAINS = function (text, input) {\n\treturn RegExp($.regExpEscape(input.trim()), \"i\").test(text);\n};\n\n_.FILTER_STARTSWITH = function (text, input) {\n\treturn RegExp(\"^\" + $.regExpEscape(input.trim()), \"i\").test(text);\n};\n\n_.SORT_BYLENGTH = function (a, b) {\n\tif (a.length !== b.length) {\n\t\treturn a.length - b.length;\n\t}\n\n\treturn a < b? -1 : 1;\n};\n\n_.CONTAINER = function (input) {\n\treturn $.create(\"div\", {\n\t\tclassName: \"awesomplete\",\n\t\taround: input\n\t});\n}\n\n_.ITEM = function (text, input, item_id) {\n\tvar html = input.trim() === \"\" ? text : text.replace(RegExp($.regExpEscape(input.trim()), \"gi\"), \"<mark>$&</mark>\");\n\treturn $.create(\"li\", {\n\t\tinnerHTML: html,\n\t\t\"role\": \"option\",\n\t\t\"aria-selected\": \"false\",\n\t\t\"id\": \"awesomplete_list_\" + this.count + \"_item_\" + item_id\n\t});\n};\n\n_.REPLACE = function (text) {\n\tthis.input.value = text.value;\n};\n\n_.DATA = function (item/*, input*/) { return item; };\n\n// Private functions\n\nfunction Suggestion(data) {\n\tvar o = Array.isArray(data)\n\t ? { label: data[0], value: data[1] }\n\t : typeof data === \"object\" && \"label\" in data && \"value\" in data ? data : { label: data, value: data };\n\n\tthis.label = o.label || o.value;\n\tthis.value = o.value;\n}\nObject.defineProperty(Suggestion.prototype = Object.create(String.prototype), \"length\", {\n\tget: function() { return this.label.length; }\n});\nSuggestion.prototype.toString = Suggestion.prototype.valueOf = function () {\n\treturn \"\" + this.label;\n};\n\nfunction configure(instance, properties, o) {\n\tfor (var i in properties) {\n\t\tvar initial = properties[i],\n\t\t attrValue = instance.input.getAttribute(\"data-\" + i.toLowerCase());\n\n\t\tif (typeof initial === \"number\") {\n\t\t\tinstance[i] = parseInt(attrValue);\n\t\t}\n\t\telse if (initial === false) { // Boolean options must be false by default anyway\n\t\t\tinstance[i] = attrValue !== null;\n\t\t}\n\t\telse if (initial instanceof Function) {\n\t\t\tinstance[i] = null;\n\t\t}\n\t\telse {\n\t\t\tinstance[i] = attrValue;\n\t\t}\n\n\t\tif (!instance[i] && instance[i] !== 0) {\n\t\t\tinstance[i] = (i in o)? o[i] : initial;\n\t\t}\n\t}\n}\n\n// Helpers\n\nvar slice = Array.prototype.slice;\n\nfunction $(expr, con) {\n\treturn typeof expr === \"string\"? (con || document).querySelector(expr) : expr || null;\n}\n\nfunction $$(expr, con) {\n\treturn slice.call((con || document).querySelectorAll(expr));\n}\n\n$.create = function(tag, o) {\n\tvar element = document.createElement(tag);\n\n\tfor (var i in o) {\n\t\tvar val = o[i];\n\n\t\tif (i === \"inside\") {\n\t\t\t$(val).appendChild(element);\n\t\t}\n\t\telse if (i === \"around\") {\n\t\t\tvar ref = $(val);\n\t\t\tref.parentNode.insertBefore(element, ref);\n\t\t\telement.appendChild(ref);\n\n\t\t\tif (ref.getAttribute(\"autofocus\") != null) {\n\t\t\t\tref.focus();\n\t\t\t}\n\t\t}\n\t\telse if (i in element) {\n\t\t\telement[i] = val;\n\t\t}\n\t\telse {\n\t\t\telement.setAttribute(i, val);\n\t\t}\n\t}\n\n\treturn element;\n};\n\n$.bind = function(element, o) {\n\tif (element) {\n\t\tfor (var event in o) {\n\t\t\tvar callback = o[event];\n\n\t\t\tevent.split(/\\s+/).forEach(function (event) {\n\t\t\t\telement.addEventListener(event, callback);\n\t\t\t});\n\t\t}\n\t}\n};\n\n$.unbind = function(element, o) {\n\tif (element) {\n\t\tfor (var event in o) {\n\t\t\tvar callback = o[event];\n\n\t\t\tevent.split(/\\s+/).forEach(function(event) {\n\t\t\t\telement.removeEventListener(event, callback);\n\t\t\t});\n\t\t}\n\t}\n};\n\n$.fire = function(target, type, properties) {\n\tvar evt = document.createEvent(\"HTMLEvents\");\n\n\tevt.initEvent(type, true, true );\n\n\tfor (var j in properties) {\n\t\tevt[j] = properties[j];\n\t}\n\n\treturn target.dispatchEvent(evt);\n};\n\n$.regExpEscape = function (s) {\n\treturn s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n};\n\n$.siblingIndex = function (el) {\n\t/* eslint-disable no-cond-assign */\n\tfor (var i = 0; el = el.previousElementSibling; i++);\n\treturn i;\n};\n\n// Initialization\n\nfunction init() {\n\t$$(\"input.awesomplete\").forEach(function (input) {\n\t\tnew _(input);\n\t});\n}\n\n// Make sure to export Awesomplete on self when in a browser\nif (typeof self !== \"undefined\") {\n\tself.Awesomplete = _;\n}\n\n// Are we in a browser? Check for Document constructor\nif (typeof Document !== \"undefined\") {\n\t// DOM already loaded?\n\tif (document.readyState !== \"loading\") {\n\t\tinit();\n\t}\n\telse {\n\t\t// Wait for it\n\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t}\n}\n\n_.$ = $;\n_.$$ = $$;\n\n// Expose Awesomplete as a CJS module\nif (typeof module === \"object\" && module.exports) {\n\tmodule.exports = _;\n}\n\nreturn _;\n\n}());\n", "/*eslint-env browser*/\n/*global Awesomplete*/\n/*exported AwesompleteUtil*/\n\n/*\n * Library endorsing Lea Verou's Awesomplete widget, providing:\n * - dynamic remote data loading\n * - labels with HTML markup\n * - events and styling for exact matches\n * - events and styling for mismatches\n * - select item when TAB key is used\n *\n * (c) Nico Hoogervorst\n * License: MIT\n *\n */\nvar AwesompleteUtil = function() {\n\n //\n // event names and css classes\n //\n var _AWE = 'awesomplete-',\n _AWE_LOAD = _AWE + 'loadcomplete',\n _AWE_CLOSE = _AWE + 'close',\n _AWE_MATCH = _AWE + 'match',\n _AWE_PREPOP = _AWE + 'prepop',\n _AWE_SELECT = _AWE + 'select',\n _CLS_FOUND = 'awe-found',\n _CLS_NOT_FOUND = 'awe-not-found',\n $ = Awesomplete.$; /* shortcut for document.querySelector */\n\n //\n // private functions\n //\n\n // Some parts are shamelessly copied from Awesomplete.js like the logic inside this _suggestion function.\n // Returns an object with label and value properties. Data parameter is plain text or Object/Array with label and value.\n function _suggestion(data) {\n var lv = Array.isArray(data)\n ? { label: data[0], value: data[1] }\n : typeof data === \"object\" && \"label\" in data && \"value\" in data ? data : { label: data, value: data };\n return {label: lv.label || lv.value, value: lv.value};\n }\n\n // Helper to send events with detail property.\n function _fire(target, name, detail) {\n // $.fire uses deprecated methods but other methods don't work in IE11.\n return $.fire(target, name, {detail: detail});\n }\n\n // Look if there is an exact match or a mismatch, set awe-found, awe-not-found css class and send match events.\n function _matchValue(awe, prepop) {\n var input = awe.input, /* the input field */\n classList = input.classList,\n utilprops = awe.utilprops, /* extra properties piggybacked on Awesomplete object */\n selected = utilprops.selected, /* the exact selected Suggestion with label and value */\n val = utilprops.convertInput.call(awe, input.value), /* trimmed lowercased value */\n opened = awe.opened, /* is the suggestion list opened? */\n result = [], /* matches with value */\n list = awe._list, /* current list of suggestions */\n suggestion, fake, rec, j; /* function scoped variables */\n utilprops.prepop = false; /* after the first call it's not a prepopulation phase anymore */\n if (list) { /* if there is a suggestion list */\n for (j = 0; j < list.length; j++) { /* loop all suggestions */\n rec = list[j];\n suggestion = _suggestion(awe.data(rec, val)); /* call data convert function */\n // with maxItems = 0 cannot look if suggestion list is opened to determine if there are still matches,\n // instead call the filter method to see if there are still some options.\n if (awe.maxItems === 0) {\n // Awesomplete.FILTER_CONTAINS and Awesomplete.FILTER_STARTSWITH use the toString method.\n suggestion.toString = function() { return '' + this.label; };\n if (awe.filter(suggestion, val)) {\n // filter returns true, so there is at least one partial match.\n opened = true;\n }\n }\n // Don't want to change the real input field, emulate a fake one.\n fake = {input: {value: ''}};\n // Determine how this suggestion would look like if it is replaced in the input field,\n // it is an exact match if somebody types exactly that.\n // Use the fake input here. fake.input.value will contain the result of the replace function.\n awe.replace.call(fake, suggestion);\n // Trim and lowercase also the fake input and compare that with the currently typed-in value.\n if (utilprops.convertInput.call(awe, fake.input.value) === val) {\n // This is an exact match. However there might more suggestions with the same value.\n // If the user selected a suggestion from the list, check if this one matches, assuming that\n // value + label is unique (if not it will be difficult for the user to make an informed decision).\n if (selected && selected.value === suggestion.value && selected.label === suggestion.label) {\n // this surely is the selected one\n result = [rec];\n break;\n }\n // add the matching record to the result set.\n result.push(rec);\n } // end if\n } // end loop\n\n // if the result differs from the previous result\n if (utilprops.prevSelected !== result) {\n // if there is an exact match\n if (result.length > 0) {\n // if prepopulation phase (initial/autofill value); not triggered by user input\n if (prepop) {\n _fire(input, _AWE_PREPOP, result);\n } else if (utilprops.changed) { /* if input is changed */\n utilprops.prevSelected = result; /* new result */\n classList.remove(_CLS_NOT_FOUND); /* remove class */\n classList.add(_CLS_FOUND); /* add css class */\n _fire(input, _AWE_MATCH, result); /* fire event */\n }\n } else if (prepop) { /* no exact match, if in prepopulation phase */\n _fire(input, _AWE_PREPOP, []);\n } else if (utilprops.changed) { /* no exact match, if input is changed */\n utilprops.prevSelected = [];\n classList.remove(_CLS_FOUND);\n // Mark as not-found if there are no suggestions anymore or if another field is now active\n if (!opened || (input !== document.activeElement)) {\n if (val !== '') {\n classList.add(_CLS_NOT_FOUND);\n _fire(input, _AWE_MATCH, []);\n }\n } else {\n classList.remove(_CLS_NOT_FOUND);\n }\n }\n }\n }\n }\n\n // Listen to certain events of THIS awesomplete object to trigger input validation.\n function _match(ev) {\n var awe = this;\n if ((ev.type === _AWE_CLOSE || ev.type === _AWE_LOAD || ev.type === 'blur') && ev.target === awe.input) {\n _matchValue(awe, awe.utilprops.prepop && ev.type === _AWE_LOAD);\n }\n }\n\n // Select currently selected item if tab or shift-tab key is used.\n function _onKeydown(ev) {\n var awe = this;\n if (ev.target === awe.input && ev.keyCode === 9) { // TAB key\n awe.select(); // take current selected item\n }\n }\n\n // Handle selection event. State changes when an item is selected.\n function _select(ev) {\n var awe = this;\n // cancel previous ajax call if it hasn't started yet.\n clearTimeout(awe.utilprops.timeoutID)\n awe.utilprops.changed = true; // yes, user made a change\n awe.utilprops.selected = ev.text; // Suggestion object\n }\n\n // check if the object is empty {} object\n function _isEmpty(val) {\n return Object.keys(val).length === 0 && val.constructor === Object\n }\n\n // Need an updated suggestion list if:\n // - There is no result yet, or there is a result but not for the characters we entered\n // - or there might be more specific results because the limit was reached.\n function _ifNeedListUpdate(awe, val, queryVal) {\n var utilprops = awe.utilprops;\n return (!utilprops.listQuery\n ||\n (!utilprops.loadall && /* with loadall, if there is a result, there is no need for new lists */\n val.lastIndexOf(queryVal, 0) === 0 &&\n (val.lastIndexOf(utilprops.listQuery, 0) !== 0 ||\n ('number' === typeof utilprops.limit && awe._list.length >= utilprops.limit))));\n }\n\n // Set a new suggestion list. Trigger loadcomplete event.\n function _loadComplete(awe, list, queryVal) {\n awe.list = list;\n awe.utilprops.listQuery = queryVal;\n _fire(awe.input, _AWE_LOAD, queryVal);\n }\n\n // Handle ajax response. Expects HTTP OK (200) response with JSON object with suggestion(s) (array).\n function _onLoad() {\n var t = this,\n awe = t.awe,\n xhr = t.xhr,\n queryVal = t.queryVal,\n val = awe.utilprops.val,\n data,\n prop;\n if (xhr.status === 200) {\n data = JSON.parse(xhr.responseText);\n if (awe.utilprops.convertResponse) data = awe.utilprops.convertResponse(data);\n if (!Array.isArray(data)) {\n if (awe.utilprops.limit === 0 || awe.utilprops.limit === 1) {\n // if there is max 1 result expected, the array is not needed.\n // Fur further processing, take the whole result and put it as one element in an array.\n data = _isEmpty(data) ? [] : [data]\n } else {\n // search for the first property that contains an array\n for (prop in data) {\n if (Array.isArray(data[prop])) {\n data = data[prop];\n break;\n }\n }\n }\n }\n // can only handle arrays\n if (Array.isArray(data)) {\n // are we still interested in this response?\n if (_ifNeedListUpdate(awe, val, queryVal)) {\n // accept the new suggestion list\n _loadComplete(awe, data, queryVal || awe.utilprops.loadall);\n }\n }\n }\n }\n\n function _ajax(awe, val) {\n var xhr = new XMLHttpRequest();\n awe.utilprops.ajax.call(awe,\n awe.utilprops.url,\n awe.utilprops.urlEnd,\n awe.utilprops.loadall ? '' : val,\n _onLoad.bind({awe: awe, xhr: xhr, queryVal: val}),\n xhr\n );\n }\n\n // Perform suggestion list lookup for the current value and validate. Use ajax when there is an url specified.\n // Optional debounce parameter in milliseconds.\n function _lookup(awe, val, debounce) {\n if (awe.utilprops.url) {\n // are we still interested in this response?\n if (_ifNeedListUpdate(awe, val, val)) {\n if ('number' === typeof debounce && debounce > 0) {\n // start ajax call after debounce value in milleseconds\n awe.utilprops.timeoutID = setTimeout(_ajax.bind(null, awe, val), debounce)\n } else {\n // call ajax instantly\n _ajax(awe, val)\n }\n } else {\n _matchValue(awe, awe.utilprops.prepop);\n }\n } else {\n _matchValue(awe, awe.utilprops.prepop);\n }\n }\n\n // Restart autocomplete search: clear css classes and send match-event with empty list.\n function _restart(awe) {\n var elem = awe.input, classList = elem.classList;\n // IE11 only handles the first parameter of the remove method.\n classList.remove(_CLS_NOT_FOUND);\n classList.remove(_CLS_FOUND);\n _fire(elem, _AWE_MATCH, []);\n }\n\n // handle new input value\n function _update(awe, val, prepop) {\n // prepop parameter is optional. Default value is false.\n awe.utilprops.prepop = prepop || false;\n // if value changed\n if (awe.utilprops.val !== val) {\n // cancel previous ajax call if it hasn't started yet.\n clearTimeout(awe.utilprops.timeoutID)\n // new value, clear previous selection\n awe.utilprops.selected = null;\n // yes, user made a change\n awe.utilprops.changed = true;\n awe.utilprops.val = val;\n // value is empty or smaller than minChars\n if (val === '' || val.length < awe.minChars) {\n // restart autocomplete search\n _restart(awe);\n }\n if (val.length >= awe.minChars) {\n // lookup suggestions and validate input\n _lookup(awe, val, awe.utilprops.debounce);\n }\n }\n return awe;\n }\n\n // handle input changed event for THIS awesomplete object\n function _onInput(e) {\n var awe = this,\n val;\n if (e.target === awe.input) {\n // lowercase and trim input value\n val = awe.utilprops.convertInput.call(awe, awe.input.value);\n _update(awe, val);\n }\n }\n\n // item function (as specified in Awesomplete) which just creates the 'li' HTML tag.\n function _item(html /* , input, item_id */) {\n return $.create('li', {\n innerHTML: html,\n 'role': 'option',\n 'aria-selected': 'false'\n });\n }\n\n // Escape HTML characters in text.\n function _htmlEscape(text) {\n return text.replace('&', '&').replace('<', '<').replace('>', '>');\n }\n\n // Function to copy a field from the selected autocomplete item to another DOM element.\n function _copyFun(e) {\n var t = this,\n sourceId = t.sourceId,\n dataField = t.dataField,\n targetId = t.targetId,\n elem,\n val;\n if (e.target === $(sourceId)) {\n if ('function' === typeof targetId) {\n targetId(e, dataField);\n } else {\n // lookup target element if it isn't resolved yet\n elem = $(targetId);\n // don't override target inputs if user is currently editing it.\n if (elem && elem !== document.activeElement) {\n // event must contain 1 item from suggestion list\n val = Array.isArray(e.detail) && e.detail.length === 1 ? e.detail[0] : null;\n // if a datafield is specified, take that value\n val = (dataField && val ? val[dataField] : val) || '';\n // if it is an input control\n if ('undefined' !== typeof elem.value) {\n // set new value\n elem.value = val;\n // not really sure if it is an input control, check if it has a classList\n if (elem.classList && elem.classList.remove) {\n // it might be another awesomplete control, if so the input is not wrong anymore because it's changed now\n elem.classList.remove(_CLS_NOT_FOUND);\n }\n } else if ('undefined' !== typeof elem.src) { /* is it an image tag? */\n elem.src = val;\n } else {\n // use innerHTML to set the new value, because value might intentionally contain HTML markup\n elem.innerHTML = val;\n }\n }\n }\n }\n }\n\n // click function for the combobox button\n function _clickFun(e) {\n var t = this,\n awe,\n minChars;\n if (e.target === $(t.btnId)) {\n e.preventDefault();\n awe = t.awe;\n // toggle open/close\n if (awe.ul.childNodes.length === 0 || awe.ul.hasAttribute('hidden')) {\n minChars = awe.minChars;\n // ignore that the input value is empty\n awe.minChars = 0;\n // show the suggestion list\n awe.evaluate();\n awe.minChars = minChars;\n } else {\n awe.close();\n }\n }\n }\n\n // Return text with mark tags arround matching input. Don't replace inside <HTML> tags.\n // When startsWith is true, mark only the matching begin text.\n function _mark(text, input, startsWith) {\n var searchText = $.regExpEscape(_htmlEscape(input).trim()),\n regExp = searchText === '' ? null : startsWith ? RegExp('^' + searchText, 'i') : RegExp('(?!<[^>]+?>)' + searchText + '(?![^<]*?>)', 'gi');\n return text.replace(regExp, '<mark>$&</mark>');\n }\n\n // Recursive jsonFlatten function\n function _jsonFlatten(result, cur, prop, level, opts) {\n var root = opts.root, /* filter resulting json tree on root property (optional) */\n value = opts.value, /* search for this property and copy it's value to a new 'value' property\n (optional, do not specify it if the json array contains plain strings) */\n label = opts.label || opts.value, /* search this property and copy it's value to a new 'label' property.\n If there is a 'opts.value' field but no 'opts.label', assume label is the same. */\n isEmpty = true, arrayResult = [], j;\n // at top level, look if there is a property which starts with root (if specified)\n if (level === 0 && root && prop && (prop + '.').lastIndexOf(root + '.', 0) !== 0 && (root + '.').lastIndexOf(prop + '.', 0) !== 0) {\n return result;\n }\n // handle current part of the json tree\n if (Object(cur) !== cur) {\n if (prop) {\n result[prop] = cur;\n } else {\n result = cur;\n }\n } else if (Array.isArray(cur)) {\n for (j = 0; j < cur.length; j++) {\n arrayResult.push(_jsonFlatten({}, cur[j], '', level + 1, opts));\n }\n if (prop) {\n result[prop] = arrayResult;\n } else {\n result = arrayResult;\n }\n } else {\n for (j in cur) {\n isEmpty = false;\n _jsonFlatten(result, cur[j], prop ? prop + '.' + j : j, level, opts);\n }\n if (isEmpty && prop) result[prop] = {};\n }\n // for arrays at top and subtop level\n if (level < 2 && prop) {\n // if a 'value' is specified and found a mathing property, create extra 'value' property.\n if (value && (prop + '.').lastIndexOf(value + '.', 0) === 0) { result['value'] = result[prop]; }\n // if a 'label' is specified and found a mathing property, create extra 'label' property.\n if (label && (prop + '.').lastIndexOf(label + '.', 0) === 0) { result['label'] = result[prop]; }\n }\n if (level === 0) {\n // Make sure that both value and label properties exist, even if they are nil.\n // This is handy with limit 0 or 1 when the result doesn't have to contain an array.\n if (value && !('value' in result)) { result['value'] = null; }\n if (label && !('label' in result)) { result['label'] = null; }\n }\n return result;\n }\n\n // Stop AwesompleteUtil; detach event handlers from the Awesomplete object.\n function _detach() {\n var t = this,\n elem = t.awe.input,\n boundMatch = t.boundMatch,\n boundOnInput = t.boundOnInput,\n boundOnKeydown = t.boundOnKeydown,\n boundSelect = t.boundSelect;\n\n elem.removeEventListener(_AWE_SELECT, boundSelect);\n elem.removeEventListener(_AWE_LOAD, boundMatch);\n elem.removeEventListener(_AWE_CLOSE, boundMatch);\n elem.removeEventListener('blur', boundMatch);\n elem.removeEventListener('input', boundOnInput);\n elem.removeEventListener('keydown', boundOnKeydown);\n }\n\n //\n // public methods\n //\n\n return {\n\n // ajax call for url + val + urlEnd. fn is the callback function. xhr parameter is optional.\n ajax: function(url, urlEnd, val, fn, xhr) {\n var encodedVal = encodeURIComponent(val);\n xhr = xhr || new XMLHttpRequest();\n xhr.open('GET', url + ('function' === typeof urlEnd ? urlEnd(encodedVal) : encodedVal + (urlEnd || '')));\n xhr.onload = fn;\n xhr.send();\n return xhr;\n },\n\n // Convert input before comparing it with suggestion. lowercase and trim the text\n convertInput: function(text) {\n return 'string' === typeof text ? text.trim().toLowerCase() : '';\n },\n\n // item function as defined in Awesomplete.\n // item(html, input). input is optional and ignored in this implementation\n item: _item,\n\n // Set a new suggestion list. Trigger loadcomplete event.\n // load(awesomplete, list, queryVal)\n load: _loadComplete,\n\n // Return text with mark tags arround matching input. Don't replace inside <HTML> tags.\n // When startsWith is true, mark only the matching begin text.\n // mark(text, input, startsWith)\n mark: _mark,\n\n // highlight items: Marks input in the first line, not in the optional description\n itemContains: function(text, input, item_id) {\n var arr;\n if (input.trim() !== '') {\n arr = ('' + text).split(/<p>/);\n arr[0] = _mark(arr[0], input);\n text = arr.join('<p>');\n }\n return _item(text, input, item_id);\n },\n\n // highlight items: mark all occurrences of the input text\n itemMarkAll: function(text, input, item_id) {\n return _item(input.trim() === '' ? '' + text : _mark('' + text, input), input, item_id);\n },\n\n // highlight items: mark input in the begin text\n itemStartsWith: function(text, input, item_id) {\n return _item(input.trim() === '' ? '' + text : _mark('' + text, input, true), input, item_id);\n },\n\n // highlight items: highlight matching words\n itemWords: function(text, input, item_id) {\n var arr, words = input.split(/\\s+/), j;\n if (input.trim() !== '') {\n /* Label contains value and optional extra HTML markup.\n Do not mark text after the first < character */\n arr = ('' + text).split('<');\n /* iterate words */\n for (j = 0; j < words.length; j++) {\n /* highlight word with <mark> </mark> tags */\n arr[0] = _mark(arr[0], words[j]);\n }\n text = arr.join('<');\n }\n return _item(text, input, item_id);\n },\n\n // create Awesomplete object for input control elemId. opts are passed unchanged to Awesomplete.\n create: function(elemId, utilOpts, opts) {\n opts.item = opts.item || this.itemContains; /* by default uses itemContains, can be overriden */\n var awe = new Awesomplete(elemId, opts);\n awe.utilprops = utilOpts || {};\n // loadall is true if there is no url (there is a static data-list)\n if (!awe.utilprops.url && 'undefined' === typeof awe.utilprops.loadall) {\n awe.utilprops.loadall = true;\n }\n awe.utilprops.ajax = awe.utilprops.ajax || this.ajax; /* default ajax function can be overriden */\n awe.utilprops.convertInput = awe.utilprops.convertInput || this.convertInput; /* the same applies for convertInput */\n return awe;\n },\n\n // attach Awesomplete object to event listeners\n attach: function(awe) {\n var elem = awe.input,\n boundMatch = _match.bind(awe),\n boundOnKeydown = _onKeydown.bind(awe),\n boundOnInput = _onInput.bind(awe),\n boundSelect = _select.bind(awe),\n boundDetach = _detach.bind({awe: awe,\n boundMatch: boundMatch,\n boundOnInput: boundOnInput,\n boundOnKeydown: boundOnKeydown,\n boundSelect: boundSelect\n }),\n events = {\n 'keydown': boundOnKeydown,\n 'input': boundOnInput\n };\n events['blur'] = events[_AWE_CLOSE] = events[_AWE_LOAD] = boundMatch;\n events[_AWE_SELECT] = boundSelect;\n $.bind(elem, events);\n\n awe.utilprops.detach = boundDetach;\n // Perform ajax call if prepop is true and there is an initial input value, or when all values must be loaded (loadall)\n if (awe.utilprops.prepop && (awe.utilprops.loadall || elem.value !== '')) {\n awe.utilprops.val = awe.utilprops.convertInput.call(awe, elem.value);\n _lookup(awe, awe.utilprops.val);\n }\n return awe;\n },\n\n // update input value via javascript. Use prepop=true when this is an initial/prepopulation value.\n update: function(awe, value, prepop) {\n awe.input.value = value;\n return _update(awe, value, prepop);\n },\n\n // create and attach Awesomplete object for input control elemId. opts are passed unchanged to Awesomplete.\n start: function(elemId, utilOpts, opts) {\n return this.attach(this.create(elemId, utilOpts, opts));\n },\n\n // Stop AwesompleteUtil; detach event handlers from the Awesomplete object.\n detach: function(awe) {\n // cancel ajax call if it hasn't started yet.\n clearTimeout(awe.utilprops.timeoutID)\n if (awe.utilprops.detach) {\n awe.utilprops.detach();\n delete awe.utilprops.detach\n }\n return awe;\n },\n\n // Create function to copy a field from the selected autocomplete item to another DOM element.\n // dataField can be null.\n createCopyFun: function(sourceId, dataField, targetId) {\n return _copyFun.bind({sourceId: sourceId, dataField: dataField, targetId: $(targetId) || targetId});\n },\n\n // attach copy function to event listeners. prepop is optional and by default true.\n // if true the copy function will also listen to awesomplete-prepop events.\n // The optional listenEl is the element that listens, defaults to document.body.\n attachCopyFun: function(fun, prepop, listenEl) {\n // prepop parameter defaults to true\n prepop = 'boolean' === typeof prepop ? prepop : true;\n listenEl = listenEl || document.body;\n listenEl.addEventListener(_AWE_MATCH, fun);\n if (prepop) listenEl.addEventListener(_AWE_PREPOP, fun);\n return fun;\n },\n\n // Create and attach copy function.\n startCopy: function(sourceId, dataField, targetId, prepop) {\n var sourceEl = $(sourceId);\n return this.attachCopyFun(this.createCopyFun(sourceEl || sourceId, dataField, targetId), prepop, sourceEl);\n },\n\n // Stop copy function. Detach it from event listeners.\n // The optional listenEl must be the same element that was used during startCopy/attachCopyFun;\n // in general: Awesomplete.$(sourceId). listenEl defaults to document.body.\n detachCopyFun: function(fun, listenEl) {\n listenEl = listenEl || document.body;\n listenEl.removeEventListener(_AWE_PREPOP, fun);\n listenEl.removeEventListener(_AWE_MATCH, fun);\n return fun;\n },\n\n // Create function for combobox button (btnId) to toggle dropdown list.\n createClickFun: function(btnId, awe) {\n return _clickFun.bind({btnId: btnId, awe : awe});\n },\n\n // Attach click function for combobox to click event.\n // The optional listenEl is the element that listens, defaults to document.body.\n attachClickFun: function(fun, listenEl) {\n listenEl = listenEl || document.body;\n listenEl.addEventListener('click', fun);\n return fun;\n },\n\n // Create and attach click function for combobox button. Toggles open/close of suggestion list.\n startClick: function(btnId, awe) {\n var btnEl = $(btnId);\n return this.attachClickFun(this.createClickFun(btnEl || btnId, awe), btnEl);\n },\n\n // Stop click function. Detach it from event listeners.\n // The optional listenEl must be the same element that was used during startClick/attachClickFun;\n // in general: Awesomplete.$(btnId). listenEl defaults to document.body.\n detachClickFun: function(fun, listenEl) {\n listenEl = listenEl || document.body;\n listenEl.removeEventListener('click', fun);\n return fun;\n },\n\n // filter function as specified in Awesomplete. Filters suggestion list on items containing input value.\n // Awesomplete.FILTER_CONTAINS filters on data.label, however\n // this function filters on value and not on the shown label which may contain markup.\n filterContains: function(data, input) {\n return Awesomplete.FILTER_CONTAINS(data.value, input);\n },\n\n // filter function as specified in Awesomplete. Filters suggestion list on matching begin text.\n // Awesomplete.FILTER_STARTSWITH filters on data.label, however\n // this function filters on value and not on the shown label which may contain markup.\n filterStartsWith: function(data, input) {\n return Awesomplete.FILTER_STARTSWITH(data.value, input);\n },\n\n // Do not filter; rely on server responses to filter the results.\n filterOff: function(data, input) {\n return true;\n },\n\n // filter on words without caring about word order.\n // To return true: all words in the input must be found.\n // A word is also a match when a longer word is found which starts with the input word.\n filterWords: function(data, input) {\n var words = input.split(/\\s+/), result = true, j;\n data = ' ' + data;\n /* iterate words */\n for (j = 0; result && j < words.length; j++) {\n /* all entered words must be found */\n result = Awesomplete.FILTER_CONTAINS(data, ' ' + words[j]);\n }\n return result;\n },\n\n // Flatten JSON.\n // { \"a\":{\"b\":{\"c\":[{\"d\":{\"e\":1}}]}}} becomes {\"a.b.c\":[{\"d.e\":1}]}.\n // This function can be bind to configure it with extra options;\n // bind({root: '<root path>', value: '<value property>', label: '<label property>'})\n jsonFlatten: function(data) {\n // start json tree recursion\n return _jsonFlatten({}, data, '', 0, this);\n }\n };\n}();\n\n// Expose AwesompleteUtil as a CommonJS module\nif (typeof module === \"object\" && module.exports) {\n\tmodule.exports = AwesompleteUtil;\n}\n\n// Make sure to export AwesompleteUtil on self when in a browser\nif (typeof self !== \"undefined\") {\n\tself.AwesompleteUtil = AwesompleteUtil;\n}\n", "\n/*\n * @module AwesompleteBundle\n */\n\nimport Awesomplete from '../vendor/awesomplete.js'\nimport AwesompleteUtil from '../vendor/awesomplete-util.js'\nimport attachAwesomplete from './attach-awesomplete.js'\nimport copyValueToId from './copy-value-to-id.js'\n\nexport {\n Awesomplete\n , AwesompleteUtil\n , attachAwesomplete\n , copyValueToId\n}\n", "const\n UTIL = AwesompleteUtil,\n getCustomFunction = (customCtx, lookupValue, name) => {\n if (lookupValue == null) return null // null or undefined\n if ('function' !== typeof customCtx[lookupValue]) throw new Error('Unknown ' + name + ' function ' + lookupValue)\n return customCtx[lookupValue]\n }, // end getCustomFuncion\n\n makeReplaceFun = (replaceFun, multipleChar, descrSearch) => {\n var re = null, separator\n if (multipleChar) {\n re = new RegExp(\"^.+[\" + multipleChar + \"]\\\\s*|\")\n separator = multipleChar[0]\n if (multipleChar[0] !== ' ') separator += ' '\n }\n return function(data) {\n var selectedValue = descrSearch ? data.value.substring(0, data.value.lastIndexOf('|')) : data.value,\n replaceText = re ? this.input.value.match(re)[0] + selectedValue + separator : selectedValue\n if (replaceFun) {\n (replaceFun).call(this, replaceText)\n } else {\n this.input.value = replaceText\n }\n }\n }, // end makeReplaceFun\n\n // would be a lot easier if custom itemFun is not combined with multiple\n makeItemFun = (itemFun, filterAtStart, re, descrSearch) => {\n if (!itemFun) {\n if (descrSearch) { //\n itemFun = UTIL.itemMarkAll;\n } else if (filterAtStart) {\n itemFun = UTIL.itemStartsWith;\n } else if (re) { // itemContains is the default. No need to specify it when re is null.\n itemFun = UTIL.itemContains;\n }\n }\n if (!re) return itemFun;\n return function(text, inp) {\n return (itemFun).call(this, text, inp.match(re)[0]);\n }\n }, // end makeItemFun\n\n makeFilterFun = (filterFun, filterAtStart, re, labelOrDescrAttr) => {\n // Label/descr without value attr is not allowed.\n // When there is a labelAttr or a descrAttr, a data function\n // which returns value + label will be used. This label might contain HTML, so search in value.\n // Filters are called with a Suggestion, which always has a value and label property,\n // The suggestion toString is used for string conversion. The toString returns: label || value.\n if (!re && !labelOrDescrAttr) return filterFun; // Suggestion label == value\n let applyThisFilter = filterFun;\n const AWE = Awesomplete;\n if (filterAtStart) {\n if (descrSearch) {\n // description search i.c.w. start-with filter needs special threatment\n // to search at the beginning in both value and description.\n return function(dat, inp) {\n var inputPart = re ? inp.match(re)[0] : inp;\n return UTIL.filterStartsWith(dat, inputPart)\n || AWE.FILTER_STARTSWITH(dat.value.substring(dat.value.lastIndexOf('|') + 1), inputPart);\n }\n }\n if (!re) return UTIL.filterStartsWith // do not search in label, search in value\n applyThisFilter = AWE.FILTER_STARTSWITH\n } else if (!filterFun\n || filterFun === UTIL.filterContains\n || filterFun === AWE.FILTER_CONTAINS) {\n if (!re) return UTIL.filterContains // do not search in label, search in value\n applyThisFilter = AWE.FILTER_CONTAINS\n }\n return function(dat, inp) {\n // For simplicity, call enclosed filter with just the text string, not a Suggestion object.\n return (applyThisFilter).call(this, !labelOrDescrAttr ? dat : dat.value, re ? inp.match(re)[0] : inp);\n }\n }, // end makeFilterFun\n\n makeDataFun = (dataFun, valueAttr, labelAttr, descrAttr, descrSearch) => {\n // precondition: makeDataFun is only called when valueAttr or dataFun is not null\n let resultDataFun = null;\n if (labelAttr || descrAttr) {\n resultDataFun =\n function(rec, input) {\n return {\n label: (rec[labelAttr || valueAttr] || '').replace('<p>', '<p >')\n + (descrAttr ? '<p>' + (rec[descrAttr] || '') : ''),\n value: (rec[valueAttr] || '') +\n (descrSearch ? '|' + (rec[descrAttr] || '').replace('|', ' ') : '')\n };\n }\n } else if (valueAttr) {\n resultDataFun = function(rec, input) { return rec[valueAttr] || ''; }\n } else { // dataFun is not null, valueAttr is null\n return dataFun;\n }\n if (!dataFun) return resultDataFun;\n // combine custom function with the above resultDataFun\n return function(rec, input) { return (dataFun).call(this, resultDataFun(rec, input), input); }\n }, // end makeDataFun\n\n makeConvertInputFun = (convertInputFun, multipleChar) => {\n if (!multipleChar) return convertInputFun;\n\n // select the text that will be considered to be the current input.\n const rem = new RegExp(\"[\" + multipleChar + \"]\\\\s*$\"),\n rel = new RegExp(\"[^\" + multipleChar + \"]*$\");\n\n return function(inp) {\n var convInp = inp.replace(rem, '').match(rel)[0].trim().toLowerCase();\n return convertInputFun ? (convertInputFun).call(this, convInp) : convInp;\n }\n }, // end makeConvertInputFun\n\n attachAwesomplete = (node, customCtx, defaultSettings) => {\n defaultSettings = defaultSettings || {}\n customCtx = customCtx || {}\n const b = node.getAttribute.bind(node)\n , a = function(attr) { return b(attr) || defaultSettings[attr] }\n , ajax = a('ajax')\n , assign = a('assign')\n , autoFirst = a('autoFirst')\n , combobox = a('combobox')\n , container = a('container')\n , convertInput = a('convertInput')\n , convertResponse = a('convertResponse')\n , data = a('data')\n , debounce = a('debounce')\n , descr = a('descr')\n , descrSearch = a('descrSearch')\n , item = a('item')\n , filter = a('filter')\n , forField = a('forField')\n , label = a('label')\n , limit = a('limit')\n , list = a('list')\n , loadall = a('loadall')\n , listLabel = a('listLabel')\n , maxItems = a('maxItems')\n , minChars = a('minChars')\n , multiple = a('multiple')\n , prepop = a('prepop')\n , replace = a('replace')\n , sort = a('sort')\n , value = a('value')\n , url = a('url')\n , urlEnd = a('urlEnd')\n\n , convertInputFun = getCustomFunction(customCtx, convertInput, 'convertInput')\n , dataFun = getCustomFunction(customCtx, data, 'data')\n , filterFun = getCustomFunction(customCtx, filter, 'filter')\n , itemFun = getCustomFunction(customCtx, item, 'item')\n , replaceFun = getCustomFunction(customCtx, replace, 'replace')\n , filterAtStart = (filterFun === Awesomplete.FILTER_STARTSWITH || filterFun === UTIL.filterStartsWith)\n , isDescrSearch = (descrSearch === 'true' || descrSearch === true)\n\n if (forField === undefined) throw new Error('Missing forField attribute.')\n\n let opts = {}, awesompleteOpts = {}, multipleChar = null, separator = null, re = null;\n\n if (url) opts['url'] = url\n if (urlEnd) opts['urlEnd'] = 'function' === typeof customCtx[urlEnd] ? customCtx[urlEnd] : urlEnd\n if (loadall) opts['loadall'] = (loadall === 'true' || loadall === true)\n if (prepop) opts['prepop'] = (prepop === 'true' || prepop === true)\n if (debounce) opts['debounce'] = Number(debounce)\n if (limit) opts['limit'] = Number(limit)\n if (!value && descr) throw new Error(\"'descr' without 'value' parameter.\")\n if (!value && label) throw new Error(\"'label' without 'value' parameter.\")\n if (isDescrSearch && !descr) throw new Error('Cannot search description texts without knowing the description field. Please supply descr parameter.')\n if (convertResponse) opts['convertResponse'] = getCustomFunction(customCtx, convertResponse, 'convertResponse')\n if (multiple && multiple !== 'false') {\n multipleChar = (multiple === 'true' || multiple === true ? ' ' : multiple)\n separator = (combobox && combobox !== 'false' ? '' : '([' + multipleChar + ']\\\\s*)?'),\n re = new RegExp('[^' + multipleChar + ']*' + separator + '$')\n }\n\n const madeConvertInputFun = makeConvertInputFun(convertInputFun, multipleChar)\n , madeFilterFun = makeFilterFun(filterFun, filterAtStart, re, label || descr)\n , madeItemFun = makeItemFun(itemFun, filterAtStart, re, isDescrSearch)\n\n if (madeConvertInputFun) opts['convertInput'] = madeConvertInputFun\n if (madeFilterFun) awesompleteOpts['filter'] = madeFilterFun\n if (madeItemFun) awesompleteOpts['item'] = madeItemFun\n\n if (minChars) awesompleteOpts['minChars'] = Number(minChars)\n if (maxItems) awesompleteOpts['maxItems'] = Number(maxItems)\n if (autoFirst) awesompleteOpts['autoFirst'] = (autoFirst === 'true' || autoFirst === true)\n if (ajax) awesompleteOpts['ajax'] = getCustomFunction(customCtx, ajax, 'ajax')\n if (container) awesompleteOpts['container'] = getCustomFunction(customCtx, container, 'container')\n if (replace || multipleChar || isDescrSearch) {\n awesompleteOpts['replace'] = makeReplaceFun(replaceFun, multipleChar, isDescrSearch)\n }\n if (value || data) {\n awesompleteOpts['data'] = makeDataFun(dataFun, value, label, descr, isDescrSearch)\n }\n if (list) {\n // if list is a function, it will be called (when mounted) and the result will be used.\n // but it can also be an object, array or string array in the customCtx\n // or just a string array\n awesompleteOpts['list'] = ('function' === typeof customCtx[list] ? customCtx[list]() : customCtx[list]) || list\n }\n if (listLabel) awesompleteOpts['listLabel'] = listLabel\n if (sort === 'false' || sort === false) {\n awesompleteOpts['sort'] = false // turn off sorting\n } else if (sort) {\n awesompleteOpts['sort'] = customCtx[sort] || sort\n }\n\n const aweInstance = UTIL.start('#' + forField,\n opts,\n awesompleteOpts\n )\n\n if (assign && assign !== 'false') {\n customCtx[assign === 'true' || assign === true ? 'awe_' + forField : assign] = aweInstance\n }\n\n if (combobox && combobox !== 'false') {\n UTIL.startClick(\n '#' + (combobox === 'true' || combobox === true ? 'awe_btn_' + forField : combobox)\n , aweInstance)\n }\n\n return aweInstance\n } // end attachAwesomplete\n\nexport default attachAwesomplete\n", "copyValueToId = (node) => {\n const a = node.getAttribute.bind(node)\n , dataField = a('dataField')\n , field = a('field')\n , targetField = a('targetField')\n , target = a('target')\n if (field == null) throw new Error(\"Missing field attribute.\") // null or undefined\n if (target == null && targetField == null) throw new Error(\"Missing target or targetField attribute.\")\n AwesompleteUtil.startCopy('#' + field, dataField, targetField ? '#' + targetField : target)\n}\n\nexport default copyValueToId"],
"mappings": "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",
"names": ["module", "event", "module", "AwesompleteUtil", "Awesomplete", "AwesompleteUtil", "descrSearch"]
}