{"version":3,"sources":["https:\/\/dpielts.lk\/lib\/amd\/src\/form-autocomplete.js"],"names":["define","$","log","str","templates","notification","LoadingIcon","Aria","KEYS","DOWN","ENTER","SPACE","ESCAPE","COMMA","UP","LEFT","RIGHT","uniqueId","Date","now","activateSelection","index","state","selectionElement","document","getElementById","selectionId","length","children","element","get","itemId","attr","Deferred","resolve","getActiveElementFromState","selectionRegion","activeId","activeElement","activeValue","replace","find","updateActiveSelectionFromState","activeIndex","updateSelectionList","options","originalSelect","pendingKey","inputId","M","util","js_pending","items","newSelection","each","ele","prop","label","data","html","push","value","hasItemListChanged","js_complete","Promise","context","extend","render","then","js","replaceNodeContents","catch","exception","filter","item","indexOf","notifyChange","core_formchangechecker","set_form_changed","dispatchEvent","Event","deselectItem","selectedItemValue","remove","activateItem","inputElement","suggestionsElement","suggestionsId","globalIndex","scrollPos","offset","top","scrollTop","height","animate","promise","activateNextItem","current","activatePreviousSelection","selectionsElement","activateNextSelection","activatePreviousItem","closeSuggestions","hide","updateSuggestions","query","matchingElements","suggestions","option","innerHTML","searchquery","caseSensitive","toLocaleLowerCase","returnVal","replaceNode","unhide","show","node","text","tags","get_string","done","nosuggestionsstr","createItem","val","split","found","tagindex","tag","trim","multiple","append","createTextNode","selectCurrentItem","closeSuggestionsOnSelect","focus","updateAjax","e","ajaxHandler","pendingPromise","addPendingJSPromise","parentElement","selectId","parent","addIconToContainerRemoveOnCompletion","currentTarget","transport","selector","results","processedResults","processResults","existingValues","optionIndex","isArray","resultIndex","result","error","reject","addNavigation","on","pendingJsPromise","keyCode","showSuggestions","ajax","require","preventDefault","closest","window","setTimeout","focusElement","timeoutPromise","is","arrowElement","downArrowId","off","selectedItem","throttleTimeout","inProgress","handler","arguments","throttledHandler","clearTimeout","bind","last","key","enhance","placeholder","noSelectionString","templateOverrides","input","layout","selection","fail","debug","css","prepend","originalLabel","collectedjs","renderLayout","renderInput","renderDatalist","renderSelection","when","container","replaceWith","runTemplateJS"],"mappings":"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\/U6D,CAyV1D+E,CAAoB,CAAG,SAAS\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\/B6D,CAk\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","sourcesContent":["\/\/ This file is part of Moodle - http:\/\/moodle.org\/\n\/\/\n\/\/ Moodle is free software: you can redistribute it and\/or modify\n\/\/ it under the terms of the GNU General Public License as published by\n\/\/ the Free Software Foundation, either version 3 of the License, or\n\/\/ (at your option) any later version.\n\/\/\n\/\/ Moodle is distributed in the hope that it will be useful,\n\/\/ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\/\/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\/\/ GNU General Public License for more details.\n\/\/\n\/\/ You should have received a copy of the GNU General Public License\n\/\/ along with Moodle. If not, see .\n\n\/**\n * Autocomplete wrapper for select2 library.\n *\n * @module core\/form-autocomplete\n * @copyright 2015 Damyon Wiese \n * @license http:\/\/www.gnu.org\/copyleft\/gpl.html GNU GPL v3 or later\n * @since 3.0\n *\/\ndefine(\n ['jquery', 'core\/log', 'core\/str', 'core\/templates', 'core\/notification', 'core\/loadingicon', 'core\/aria'],\nfunction($, log, str, templates, notification, LoadingIcon, Aria) {\n\n \/\/ Private functions and variables.\n \/** @var {Object} KEYS - List of keycode constants. *\/\n var KEYS = {\n DOWN: 40,\n ENTER: 13,\n SPACE: 32,\n ESCAPE: 27,\n COMMA: 44,\n UP: 38,\n LEFT: 37,\n RIGHT: 39\n };\n\n var uniqueId = Date.now();\n\n \/**\n * Make an item in the selection list \"active\".\n *\n * @method activateSelection\n * @private\n * @param {Number} index The index in the current (visible) list of selection.\n * @param {Object} state State variables for this autocomplete element.\n * @return {Promise}\n *\/\n var activateSelection = function(index, state) {\n \/\/ Find the elements in the DOM.\n var selectionElement = $(document.getElementById(state.selectionId));\n\n \/\/ Count the visible items.\n var length = selectionElement.children('[aria-selected=true]').length;\n \/\/ Limit the index to the upper\/lower bounds of the list (wrap in both directions).\n index = index % length;\n while (index < 0) {\n index += length;\n }\n \/\/ Find the specified element.\n var element = $(selectionElement.children('[aria-selected=true]').get(index));\n \/\/ Create an id we can assign to this element.\n var itemId = state.selectionId + '-' + index;\n\n \/\/ Deselect all the selections.\n selectionElement.children().attr('data-active-selection', null).attr('id', '');\n\n \/\/ Select only this suggestion and assign it the id.\n element.attr('data-active-selection', true).attr('id', itemId);\n\n \/\/ Tell the input field it has a new active descendant so the item is announced.\n selectionElement.attr('aria-activedescendant', itemId);\n selectionElement.attr('data-active-value', element.attr('data-value'));\n\n return $.Deferred().resolve();\n };\n\n \/**\n * Get the actively selected element from the state object.\n *\n * @param {Object} state\n * @returns {jQuery}\n *\/\n var getActiveElementFromState = function(state) {\n var selectionRegion = $(document.getElementById(state.selectionId));\n var activeId = selectionRegion.attr('aria-activedescendant');\n\n if (activeId) {\n var activeElement = $(document.getElementById(activeId));\n if (activeElement.length) {\n \/\/ The active descendent still exists.\n return activeElement;\n }\n }\n\n \/\/ Ensure we are creating a properly formed selector based on the active value.\n var activeValue = selectionRegion.attr('data-active-value')?.replace(\/\"\/g, '\\\\\"');\n return selectionRegion.find('[data-value=\"' + activeValue + '\"]');\n };\n\n \/**\n * Update the active selection from the given state object.\n *\n * @param {Object} state\n *\/\n var updateActiveSelectionFromState = function(state) {\n var activeElement = getActiveElementFromState(state);\n var activeValue = activeElement.attr('data-value');\n\n var selectionRegion = $(document.getElementById(state.selectionId));\n if (activeValue) {\n \/\/ Find the index of the currently selected index.\n var activeIndex = selectionRegion.find('[aria-selected=true]').index(activeElement);\n\n if (activeIndex !== -1) {\n activateSelection(activeIndex, state);\n return;\n }\n }\n\n \/\/ Either the active index was not set, or it could not be found.\n \/\/ Select the first value instead.\n activateSelection(0, state);\n };\n\n \/**\n * Update the element that shows the currently selected items.\n *\n * @method updateSelectionList\n * @private\n * @param {Object} options Original options for this autocomplete element.\n * @param {Object} state State variables for this autocomplete element.\n * @param {JQuery} originalSelect The JQuery object matching the hidden select list.\n * @return {Promise}\n *\/\n var updateSelectionList = function(options, state, originalSelect) {\n var pendingKey = 'form-autocomplete-updateSelectionList-' + state.inputId;\n M.util.js_pending(pendingKey);\n\n \/\/ Build up a valid context to re-render the template.\n var items = [];\n var newSelection = $(document.getElementById(state.selectionId));\n originalSelect.children('option').each(function(index, ele) {\n if ($(ele).prop('selected')) {\n var label;\n if ($(ele).data('html')) {\n label = $(ele).data('html');\n } else {\n label = $(ele).html();\n }\n if (label !== '') {\n items.push({label: label, value: $(ele).attr('value')});\n }\n }\n });\n\n if (!hasItemListChanged(state, items)) {\n M.util.js_complete(pendingKey);\n return Promise.resolve();\n }\n\n state.items = items;\n\n var context = $.extend(options, state);\n \/\/ Render the template.\n return templates.render(options.templates.items, context)\n .then(function(html, js) {\n \/\/ Add it to the page.\n templates.replaceNodeContents(newSelection, html, js);\n\n updateActiveSelectionFromState(state);\n\n return;\n })\n .then(function() {\n return M.util.js_complete(pendingKey);\n })\n .catch(notification.exception);\n };\n\n \/**\n * Check whether the list of items stored in the state has changed.\n *\n * @param {Object} state\n * @param {Array} items\n * @returns {Boolean}\n *\/\n var hasItemListChanged = function(state, items) {\n if (state.items.length !== items.length) {\n return true;\n }\n\n \/\/ Check for any items in the state items which are not present in the new items list.\n return state.items.filter(item => items.indexOf(item) === -1).length > 0;\n };\n\n \/**\n * Notify of a change in the selection.\n *\n * @param {jQuery} originalSelect The jQuery object matching the hidden select list.\n *\/\n var notifyChange = function(originalSelect) {\n if (typeof M.core_formchangechecker !== 'undefined') {\n M.core_formchangechecker.set_form_changed();\n }\n\n \/\/ Note, jQuery .change() was not working here. Better to\n \/\/ use plain JavaScript anyway.\n originalSelect[0].dispatchEvent(new Event('change'));\n };\n\n \/**\n * Remove the given item from the list of selected things.\n *\n * @method deselectItem\n * @private\n * @param {Object} options Original options for this autocomplete element.\n * @param {Object} state State variables for this autocomplete element.\n * @param {Element} item The item to be deselected.\n * @param {Element} originalSelect The original select list.\n * @return {Promise}\n *\/\n var deselectItem = function(options, state, item, originalSelect) {\n var selectedItemValue = $(item).attr('data-value');\n\n \/\/ Look for a match, and toggle the selected property if there is a match.\n originalSelect.children('option').each(function(index, ele) {\n if ($(ele).attr('value') == selectedItemValue) {\n $(ele).prop('selected', false);\n \/\/ We remove newly created custom tags from the suggestions list when they are deselected.\n if ($(ele).attr('data-iscustom')) {\n $(ele).remove();\n }\n }\n });\n \/\/ Rerender the selection list.\n return updateSelectionList(options, state, originalSelect)\n .then(function() {\n \/\/ Notify that the selection changed.\n notifyChange(originalSelect);\n\n return;\n });\n };\n\n \/**\n * Make an item in the suggestions \"active\" (about to be selected).\n *\n * @method activateItem\n * @private\n * @param {Number} index The index in the current (visible) list of suggestions.\n * @param {Object} state State variables for this instance of autocomplete.\n * @return {Promise}\n *\/\n var activateItem = function(index, state) {\n \/\/ Find the elements in the DOM.\n var inputElement = $(document.getElementById(state.inputId));\n var suggestionsElement = $(document.getElementById(state.suggestionsId));\n\n \/\/ Count the visible items.\n var length = suggestionsElement.children(':not([aria-hidden])').length;\n \/\/ Limit the index to the upper\/lower bounds of the list (wrap in both directions).\n index = index % length;\n while (index < 0) {\n index += length;\n }\n \/\/ Find the specified element.\n var element = $(suggestionsElement.children(':not([aria-hidden])').get(index));\n \/\/ Find the index of this item in the full list of suggestions (including hidden).\n var globalIndex = $(suggestionsElement.children('[role=option]')).index(element);\n \/\/ Create an id we can assign to this element.\n var itemId = state.suggestionsId + '-' + globalIndex;\n\n \/\/ Deselect all the suggestions.\n suggestionsElement.children().attr('aria-selected', false).attr('id', '');\n \/\/ Select only this suggestion and assign it the id.\n element.attr('aria-selected', true).attr('id', itemId);\n \/\/ Tell the input field it has a new active descendant so the item is announced.\n inputElement.attr('aria-activedescendant', itemId);\n\n \/\/ Scroll it into view.\n var scrollPos = element.offset().top\n - suggestionsElement.offset().top\n + suggestionsElement.scrollTop()\n - (suggestionsElement.height() \/ 2);\n return suggestionsElement.animate({\n scrollTop: scrollPos\n }, 100).promise();\n };\n\n \/**\n * Find the index of the current active suggestion, and activate the next one.\n *\n * @method activateNextItem\n * @private\n * @param {Object} state State variable for this auto complete element.\n * @return {Promise}\n *\/\n var activateNextItem = function(state) {\n \/\/ Find the list of suggestions.\n var suggestionsElement = $(document.getElementById(state.suggestionsId));\n \/\/ Find the active one.\n var element = suggestionsElement.children('[aria-selected=true]');\n \/\/ Find it's index.\n var current = suggestionsElement.children(':not([aria-hidden])').index(element);\n \/\/ Activate the next one.\n return activateItem(current + 1, state);\n };\n\n \/**\n * Find the index of the current active selection, and activate the previous one.\n *\n * @method activatePreviousSelection\n * @private\n * @param {Object} state State variables for this instance of autocomplete.\n * @return {Promise}\n *\/\n var activatePreviousSelection = function(state) {\n \/\/ Find the list of selections.\n var selectionsElement = $(document.getElementById(state.selectionId));\n \/\/ Find the active one.\n var element = selectionsElement.children('[data-active-selection]');\n if (!element) {\n return activateSelection(0, state);\n }\n \/\/ Find it's index.\n var current = selectionsElement.children('[aria-selected=true]').index(element);\n \/\/ Activate the next one.\n return activateSelection(current - 1, state);\n };\n\n \/**\n * Find the index of the current active selection, and activate the next one.\n *\n * @method activateNextSelection\n * @private\n * @param {Object} state State variables for this instance of autocomplete.\n * @return {Promise}\n *\/\n var activateNextSelection = function(state) {\n \/\/ Find the list of selections.\n var selectionsElement = $(document.getElementById(state.selectionId));\n\n \/\/ Find the active one.\n var element = selectionsElement.children('[data-active-selection]');\n var current = 0;\n\n if (element) {\n \/\/ The element was found. Determine the index and move to the next one.\n current = selectionsElement.children('[aria-selected=true]').index(element);\n current = current + 1;\n } else {\n \/\/ No selected item found. Move to the first.\n current = 0;\n }\n\n return activateSelection(current, state);\n };\n\n \/**\n * Find the index of the current active suggestion, and activate the previous one.\n *\n * @method activatePreviousItem\n * @private\n * @param {Object} state State variables for this autocomplete element.\n * @return {Promise}\n *\/\n var activatePreviousItem = function(state) {\n \/\/ Find the list of suggestions.\n var suggestionsElement = $(document.getElementById(state.suggestionsId));\n\n \/\/ Find the active one.\n var element = suggestionsElement.children('[aria-selected=true]');\n\n \/\/ Find it's index.\n var current = suggestionsElement.children(':not([aria-hidden])').index(element);\n\n \/\/ Activate the previous one.\n return activateItem(current - 1, state);\n };\n\n \/**\n * Close the list of suggestions.\n *\n * @method closeSuggestions\n * @private\n * @param {Object} state State variables for this autocomplete element.\n * @return {Promise}\n *\/\n var closeSuggestions = function(state) {\n \/\/ Find the elements in the DOM.\n var inputElement = $(document.getElementById(state.inputId));\n var suggestionsElement = $(document.getElementById(state.suggestionsId));\n\n if (inputElement.attr('aria-expanded') === \"true\") {\n \/\/ Announce the list of suggestions was closed.\n inputElement.attr('aria-expanded', false);\n }\n \/\/ Read the current list of selections.\n inputElement.attr('aria-activedescendant', state.selectionId);\n\n \/\/ Hide the suggestions list (from screen readers too).\n Aria.hide(suggestionsElement.get());\n suggestionsElement.hide();\n\n return $.Deferred().resolve();\n };\n\n \/**\n * Rebuild the list of suggestions based on the current values in the select list, and the query.\n *\n * @method updateSuggestions\n * @private\n * @param {Object} options The original options for this autocomplete.\n * @param {Object} state The state variables for this autocomplete.\n * @param {String} query The current text for the search string.\n * @param {JQuery} originalSelect The JQuery object matching the hidden select list.\n * @return {Promise}\n *\/\n var updateSuggestions = function(options, state, query, originalSelect) {\n var pendingKey = 'form-autocomplete-updateSuggestions-' + state.inputId;\n M.util.js_pending(pendingKey);\n\n \/\/ Find the elements in the DOM.\n var inputElement = $(document.getElementById(state.inputId));\n var suggestionsElement = $(document.getElementById(state.suggestionsId));\n\n \/\/ Used to track if we found any visible suggestions.\n var matchingElements = false;\n \/\/ Options is used by the context when rendering the suggestions from a template.\n var suggestions = [];\n originalSelect.children('option').each(function(index, option) {\n if ($(option).prop('selected') !== true) {\n suggestions[suggestions.length] = {label: option.innerHTML, value: $(option).attr('value')};\n }\n });\n\n \/\/ Re-render the list of suggestions.\n var searchquery = state.caseSensitive ? query : query.toLocaleLowerCase();\n var context = $.extend({options: suggestions}, options, state);\n var returnVal = templates.render(\n 'core\/form_autocomplete_suggestions',\n context\n )\n .then(function(html, js) {\n \/\/ We have the new template, insert it in the page.\n templates.replaceNode(suggestionsElement, html, js);\n\n \/\/ Get the element again.\n suggestionsElement = $(document.getElementById(state.suggestionsId));\n\n \/\/ Show it if it is hidden.\n Aria.unhide(suggestionsElement.get());\n suggestionsElement.show();\n\n \/\/ For each option in the list, hide it if it doesn't match the query.\n suggestionsElement.children().each(function(index, node) {\n node = $(node);\n if ((options.caseSensitive && node.text().indexOf(searchquery) > -1) ||\n (!options.caseSensitive && node.text().toLocaleLowerCase().indexOf(searchquery) > -1)) {\n Aria.unhide(node.get());\n node.show();\n matchingElements = true;\n } else {\n node.hide();\n Aria.hide(node.get());\n }\n });\n \/\/ If we found any matches, show the list.\n inputElement.attr('aria-expanded', true);\n if (originalSelect.attr('data-notice')) {\n \/\/ Display a notice rather than actual suggestions.\n suggestionsElement.html(originalSelect.attr('data-notice'));\n } else if (matchingElements) {\n \/\/ We only activate the first item in the list if tags is false,\n \/\/ because otherwise \"Enter\" would select the first item, instead of\n \/\/ creating a new tag.\n if (!options.tags) {\n activateItem(0, state);\n }\n } else {\n \/\/ Nothing matches. Tell them that.\n str.get_string('nosuggestions', 'form').done(function(nosuggestionsstr) {\n suggestionsElement.html(nosuggestionsstr);\n });\n }\n\n return suggestionsElement;\n })\n .then(function() {\n return M.util.js_complete(pendingKey);\n })\n .catch(notification.exception);\n\n return returnVal;\n };\n\n \/**\n * Create a new item for the list (a tag).\n *\n * @method createItem\n * @private\n * @param {Object} options The original options for the autocomplete.\n * @param {Object} state State variables for the autocomplete.\n * @param {JQuery} originalSelect The JQuery object matching the hidden select list.\n * @return {Promise}\n *\/\n var createItem = function(options, state, originalSelect) {\n \/\/ Find the element in the DOM.\n var inputElement = $(document.getElementById(state.inputId));\n \/\/ Get the current text in the input field.\n var query = inputElement.val();\n var tags = query.split(',');\n var found = false;\n\n $.each(tags, function(tagindex, tag) {\n \/\/ If we can only select one at a time, deselect any current value.\n tag = tag.trim();\n if (tag !== '') {\n if (!options.multiple) {\n originalSelect.children('option').prop('selected', false);\n }\n \/\/ Look for an existing option in the select list that matches this new tag.\n originalSelect.children('option').each(function(index, ele) {\n if ($(ele).attr('value') == tag) {\n found = true;\n $(ele).prop('selected', true);\n }\n });\n \/\/ Only create the item if it's new.\n if (!found) {\n var option = $('