{"version":3,"file":"../MultiSelect.js","names":["MultiSelect","constructor","element","options","this","Object","assign","placeholder","max","search","selectAll","listAll","name","width","height","dropdownWidth","dropdownHeight","data","onChange","onSelect","onUnselect","selectElement","document","querySelector","prop","dataset","undefined","getAttribute","Math","floor","random","length","querySelectorAll","i","push","value","text","innerHTML","selected","html","_template","replaceWith","_updateSelected","_eventHandlers","optionsHTML","selectedValues","includes","selectAllHTML","template","id","map","join","createElement","headerElement","pickedSelection","forEach","option","onclick","classList","contains","remove","headerOption","filter","add","insertAdjacentHTML","style","display","toggle","oninput","toLowerCase","indexOf","selectAllButton","allSelected","dataItem","find","click","addEventListener","event","target","closest","so","selectedItems","select"],"sources":["MultiSelect.js"],"sourcesContent":["/*\r\n * Created by David Adams\r\n * https://codeshack.io/multi-select-dropdown-html-javascript/\r\n * \r\n * Released under the MIT license\r\n */\r\nclass MultiSelect {\r\n\r\n constructor(element, options = {}) {\r\n let defaults = {\r\n placeholder: 'Select item(s)',\r\n max: null,\r\n search: false,\r\n selectAll: false,\r\n listAll: true,\r\n name: '',\r\n width: '',\r\n height: '',\r\n dropdownWidth: '',\r\n dropdownHeight: '',\r\n data: [],\r\n onChange: function () { },\r\n onSelect: function () { },\r\n onUnselect: function () { }\r\n };\r\n this.options = Object.assign(defaults, options);\r\n this.selectElement = typeof element === 'string' ? document.querySelector(element) : element;\r\n for (const prop in this.selectElement.dataset) {\r\n if (this.options[prop] !== undefined) {\r\n this.options[prop] = this.selectElement.dataset[prop];\r\n }\r\n }\r\n this.name = this.selectElement.getAttribute('name') ? this.selectElement.getAttribute('name') : 'multi-select-' + Math.floor(Math.random() * 1000000);\r\n if (!this.options.data.length) {\r\n let options = this.selectElement.querySelectorAll('option');\r\n for (let i = 0; i < options.length; i++) {\r\n this.options.data.push({\r\n value: options[i].value,\r\n text: options[i].innerHTML,\r\n selected: options[i].selected,\r\n html: options[i].getAttribute('data-html')\r\n });\r\n }\r\n }\r\n this.element = this._template();\r\n this.selectElement.replaceWith(this.element);\r\n this._updateSelected();\r\n this._eventHandlers();\r\n }\r\n\r\n _template() {\r\n let optionsHTML = '';\r\n for (let i = 0; i < this.data.length; i++) {\r\n optionsHTML += `\r\n