{"version":3,"sources":["node_modules/@crasman/multiselect/node_modules/@babel/runtime/helpers/classCallCheck.js","node_modules/@crasman/multiselect/node_modules/@babel/runtime/helpers/defineProperty.js","node_modules/@crasman/multiselect/dist/index.js","node_modules/@crasman/multiselect/node_modules/@babel/runtime/regenerator/index.js","node_modules/@crasman/multiselect/index.js","node_modules/@crasman/multiselect/node_modules/@babel/runtime/helpers/createClass.js","node_modules/mustache/mustache.js","node_modules/@crasman/multiselect/node_modules/@babel/runtime/helpers/interopRequireDefault.js","node_modules/@crasman/multiselect/node_modules/@babel/runtime/helpers/asyncToGenerator.js","node_modules/@babel/runtime/helpers/esm/createClass.js","node_modules/@crasman/multiselect/node_modules/regenerator-runtime/runtime.js"],"names":["module","exports","instance","Constructor","TypeError","__esModule","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_interopRequireDefault","require","_regenerator","_asyncToGenerator2","_defineProperty2","_classCallCheck2","_createClass2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","_default","Multiselect","selectElement","_selectElement$option","_selectElement$option2","settings","undefined","this","containerElement","className","buttonElement","idPrefix","placeholderClassName","textContent","options","showPlaceholder","preventScrollOnFocus","innerContainerElement","labelElement","disabledClassName","listElement","multipleClassName","size","listItemElement","focusClassName","selectedClassName","listGroupElement","listGroupListElement","state","isOptionsListOpen","focusedOptionsListItem","isItemHeightCSSVariableSet","initCustomSelectUI","_this","hasAttribute","removeAttribute","toggleVisibility","tabIndex","getAssociatedLabel","createContainerElement","setupLabelElement","appendChild","createButtonElement","htmlFor","id","optionsListElement","createOptionsListElement","optionsListItemElements","optionsListGroupElements","createOptionsListItemElements","setItemHeightCSSVariable","addEventListener","_ref","_ref$detail","detail","dispatcher","onSelectElementChange","form","setTimeout","observeSelectElementMutations","document","_ref2","onDocumentClick","_this2","createElement","classList","add","event","onContainerElementKeydown","referenceNode","parentNode","insertBefore","nextSibling","getUniqueElementId","concat","name","disabled","_this3","type","buttonElementId","setAttribute","spanElement","textNode","createTextNode","onButtonElementClick","_this4","multiple","style","setProperty","_ref3","onOptionsListElementClick","_ref4","relatedTarget","onOptionsListElementBlur","onOptionsListElementMouseover","optgroup","label","hidden","title","option","parentElement","tagName","toLowerCase","_this5","listItemElements","Array","from","map","createOptionsListItemElement","index","optionIndex","getOptgroup","createOptionsListGroupElement","dataset","group","splice","optionElement","optionsListItemElement","createOptionsListItemElementId","selected","toggleMultipleSelectOption","toggleSingleSelectOption","_this6","MutationObserver","mutations","onSelectElementMutation","observe","attributes","attributeFilter","subtree","childList","closeOptionsList","openOptionsList","getAttribute","focusOptionsListItem","preventDefault","shouldFocusOnOption","getClosestFocusableOptionListItem","_onOptionsListElementBlur","mark","_callee","elementReceivingFocus","wrap","_context","prev","next","t0","Promise","resolve","activeElement","sent","contains","stop","_x","_ref5","clientX","clientY","prevMouseEventClientX","prevMouseEventClientY","_this7","selectedOptionsArray","selectedOptions","listItem","isCustomOptionSelected","isNativeOptionSelected","some","_ref6","getFirstFocusableOptionsListItem","_this8","mutation","attributeName","onSelectElementChildListMutation","targetTagName","onSelectElementDisabledMutation","onOptionElementDisabledMutation","onOptgroupElementDisabledMutation","onSelectElementHiddenMutation","onOptionElementHiddenMutation","onOptgroupElementHiddenMutation","_ref7","_this9","addedNodes","removedNodes","addedOptions","filterNodeListByConstructor","HTMLOptionElement","removedOptions","removedOption","correspondingListItemIndex","findIndex","_ref8","correspondingListItem","removeChild","remove","optionsListItem","findMatchingOptionsListItem","_ref9","_this10","listGroup","children","_ref10","focus","preventScroll","_this11","isPreSelect","dispatchEvent","CustomEvent","bubbles","firstElementChild","targetNativeOption","findMatchingNativeOption","_spanElement","find","_ref11","labelFor","isTriggeredByKey","scrollToOptionListItemElement","scrollHeight","clientHeight","listItemBottom","offsetTop","offsetHeight","scrollTop","offset","getFocusedOptionIndex","targetIndex","getLastFocusableOptionsListItem","targetOptionsListItem","Math","sign","indexOf","replace","firstListItemWithHeight","height","border","overflowY","listItemGroup","isListItemGroupHidden","listItemHeight","removeProperty","_ref12","labels","querySelector","element","shouldHide","_this12","checkHidden","checkDisabled","lastFocusableListItem","optionListItem","_ref13","_ref14","nodeList","constructor","node","idToTest","getElementById","_defineProperties","props","descriptor","protoProps","staticProps","prototype","factory","mustache","objectToString","toString","isArray","call","isFunction","escapeRegExp","string","hasProperty","propName","regExpTest","RegExp","test","nonSpaceRe","isWhitespace","re","testRegExp","entityMap","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","Scanner","tail","pos","Context","view","parentContext","cache","parent","Writer","eos","scan","match","substring","scanUntil","search","lookup","hasOwnProperty","names","context","lookupHit","split","clearCache","parse","template","tags","tokens","openingTagRe","closingTagRe","closingCurlyRe","sections","spaces","hasTag","nonSpace","stripSpace","pop","compileTags","tagsToCompile","Error","start","chr","token","openSection","scanner","valueLength","charAt","nestedTokens","collector","numTokens","nestTokens","lastToken","squashedTokens","squashTokens","parseTemplate","render","partials","renderTokens","originalTemplate","symbol","buffer","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","self","j","slice","escape","version","defaultWriter","to_html","send","result","String","s","nodeName","define","asyncGeneratorStep","gen","reject","_next","_throw","arg","info","error","done","then","fn","args","err","_createClass","runtime","Op","hasOwn","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","_invoke","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","__proto__","awrap","async","iter","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function"],"mappings":"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","file":"hashed/vendors~common.f1a71f1f.chunk.js","sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\r\n * Custom select UI.\r\n *\r\n * @class Multiselect\r\n */\nvar Multiselect = /*#__PURE__*/function () {\n /**\r\n * Create an instance of Multiselect.\r\n * @example\r\n * const settings = { listElement : { size : 12 } };\r\n * document.querySelector('select').forEach(select => {\r\n * new Multiselect(select, settings);\r\n * });\r\n * @param {HTMLSelectElement} selectElement - Select element to replace visually.\r\n * @param {Object} [settings={}] - Settings object to override defaults.\r\n * @memberof Multiselect\r\n */\n function Multiselect(selectElement) {\n var _selectElement$option, _selectElement$option2;\n\n var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _classCallCheck2[\"default\"])(this, Multiselect);\n this.selectElement = selectElement;\n this.settings = {\n containerElement: _objectSpread({\n className: 'multiselect-container'\n }, settings.containerElement || {}),\n buttonElement: _objectSpread({\n idPrefix: 'multiselect',\n className: 'multiselect-button',\n // Used for styling\n placeholderClassName: 'placeholder',\n textContent: !((_selectElement$option = selectElement.options[0]) !== null && _selectElement$option !== void 0 && _selectElement$option.value) && ((_selectElement$option2 = selectElement.options[0]) === null || _selectElement$option2 === void 0 ? void 0 : _selectElement$option2.textContent) || '',\n showPlaceholder: true,\n preventScrollOnFocus: false\n }, settings.buttonElement || {}),\n innerContainerElement: _objectSpread({\n className: 'multiselect-inner-container'\n }, settings.innerContainerElement || {}),\n labelElement: _objectSpread({\n idPrefix: 'multiselect-label',\n // Used to generate ID, if label doesn't have one\n className: 'multiselect-label',\n disabledClassName: 'disabled'\n }, settings.labelElement || {}),\n listElement: _objectSpread({\n className: 'multiselect-list',\n multipleClassName: 'multiple',\n size: selectElement.size || 8,\n // Number of options to show at once\n preventScrollOnFocus: true\n }, settings.listElement || {}),\n listItemElement: _objectSpread({\n idPrefix: 'multiselect-option',\n className: 'multiselect-option',\n focusClassName: 'focus',\n selectedClassName: 'selected',\n disabledClassName: 'disabled'\n }, settings.listItemElement || {}),\n listGroupElement: _objectSpread({\n className: 'multiselect-group'\n }, settings.listGroupElement || {}),\n listGroupListElement: _objectSpread({\n className: 'multiselect-group-list',\n disabledClassName: 'disabled'\n }, settings.listGroupListElement || {})\n };\n this.state = {\n isOptionsListOpen: false,\n focusedOptionsListItem: undefined,\n isItemHeightCSSVariableSet: false\n };\n this.initCustomSelectUI();\n }\n /**\r\n * Create a custom select to replace the native select, and mirror events and mutations between them.\r\n *\r\n * @memberof Multiselect\r\n */\n\n\n (0, _createClass2[\"default\"])(Multiselect, [{\n key: \"initCustomSelectUI\",\n value: function initCustomSelectUI() {\n var _this = this;\n\n // Hidden form controls cannot be required\n if (this.selectElement.hasAttribute('required')) {\n this.selectElement.removeAttribute('required');\n } // Hide native select\n\n\n this.toggleVisibility(this.selectElement, true);\n this.selectElement.tabIndex = -1; // Get label associated with the select element\n\n this.labelElement = this.getAssociatedLabel(this.selectElement); // Create a container for the custom select\n\n this.containerElement = this.createContainerElement(); // Setup label element, if one was found\n\n if (this.labelElement) {\n this.setupLabelElement();\n } // Move select element into the container\n\n\n this.containerElement.appendChild(this.selectElement); // Create custom select, and point label for-attribute to the button\n\n this.buttonElement = this.createButtonElement();\n\n if (this.labelElement) {\n this.labelElement.htmlFor = this.buttonElement.id;\n }\n\n this.optionsListElement = this.createOptionsListElement();\n this.optionsListItemElements = [];\n this.optionsListGroupElements = {};\n this.createOptionsListItemElements(); // Get option list item height, and set it as a CSS variable to option list\n // Then multiply with option list size to get option list max height\n\n this.setItemHeightCSSVariable(); // Listen to native select changes, and update custom select, if event not dispatched by the multiselect itself\n\n this.selectElement.addEventListener('change', function (_ref) {\n var _ref$detail = _ref.detail;\n _ref$detail = _ref$detail === void 0 ? {} : _ref$detail;\n var dispatcher = _ref$detail.dispatcher;\n\n if (dispatcher !== 'multiselect') {\n _this.onSelectElementChange();\n }\n }); // Update custom select after(!) form reset, if native select belongs to one\n\n if (this.selectElement.form) {\n this.selectElement.form.addEventListener('reset', function () {\n setTimeout(function () {\n _this.onSelectElementChange();\n });\n });\n } // Listen to native select attribute and child list mutations\n\n\n this.observeSelectElementMutations(); // Add document click event listener, to close options list, if open and clicked outside of it\n\n document.addEventListener('click', function (_ref2) {\n var target = _ref2.target;\n return _this.onDocumentClick(target);\n });\n }\n /**\r\n * Create a container element, to later wrap the native and custom select elements in.\r\n *\r\n * @return {HTMLDivElement} - Container element.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"createContainerElement\",\n value: function createContainerElement() {\n var _this2 = this;\n\n var containerElement = document.createElement('div');\n containerElement.classList.add(this.settings.containerElement.className); // Listen to keydown event for keyboard navigation\n\n containerElement.addEventListener('keydown', function (event) {\n return _this2.onContainerElementKeydown(event);\n }); // Use label element as reference node, if available, in case label wraps the select element\n\n var referenceNode = this.labelElement || this.selectElement;\n referenceNode.parentNode.insertBefore(containerElement, referenceNode.nextSibling);\n return containerElement;\n }\n /**\r\n * Setup label element for the custom select.\r\n *\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"setupLabelElement\",\n value: function setupLabelElement() {\n if (!this.labelElement.id) {\n this.labelElement.id = this.getUniqueElementId(\"\".concat(this.settings.labelElement.idPrefix, \"-\").concat(this.selectElement.id || this.selectElement.name));\n }\n\n if (this.settings.labelElement.className) {\n this.labelElement.classList.add(this.settings.labelElement.className);\n }\n\n if (this.selectElement.disabled) {\n this.labelElement.classList.add(this.settings.labelElement.disabledClassName);\n } // Move label inside the container\n\n\n this.containerElement.appendChild(this.labelElement);\n }\n /**\r\n * Create a button element to essentially replace the UI of the native select element.\r\n *\r\n * @return {HTMLButtonElement} \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"createButtonElement\",\n value: function createButtonElement() {\n var _this3 = this;\n\n var buttonElement = document.createElement('button'),\n innerContainerElement = document.createElement('div'); // Set type to \"button\", to not submit form if contained by one\n\n buttonElement.type = 'button'; // Create and set an ID for the button\n\n var buttonElementId = this.getUniqueElementId(\"\".concat(this.settings.buttonElement.idPrefix, \"-\").concat(this.selectElement.id || this.selectElement.name));\n buttonElement.id = buttonElementId;\n buttonElement.classList.add(this.settings.buttonElement.className);\n innerContainerElement.classList.add(this.settings.innerContainerElement.className);\n buttonElement.setAttribute('aria-haspopup', 'listbox'); // If an label exists, indicate that it labels the button too\n\n if (this.labelElement) {\n buttonElement.setAttribute('aria-labelledby', \"\".concat(this.labelElement.id, \" \").concat(buttonElementId));\n } // Match disabled attribute of native select\n\n\n buttonElement.disabled = this.selectElement.disabled; // Set button text content from the settings\n\n var spanElement = document.createElement('span');\n var textNode = document.createTextNode(this.settings.buttonElement.showPlaceholder ? this.settings.buttonElement.textContent : '');\n spanElement.appendChild(textNode);\n buttonElement.appendChild(spanElement);\n buttonElement.setAttribute('data-placeholder', this.settings.buttonElement.textContent);\n buttonElement.addEventListener('click', function () {\n return _this3.onButtonElementClick();\n }); // Insert inner container just after the select, and insert button in it\n\n this.containerElement.insertBefore(innerContainerElement, this.selectElement.nextSibling);\n innerContainerElement.appendChild(buttonElement);\n return buttonElement;\n }\n /**\r\n * Create an unordered list element for the options of the custom select.\r\n *\r\n * @return {HTMLUListElement} \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"createOptionsListElement\",\n value: function createOptionsListElement() {\n var _this4 = this;\n\n var optionsListElement = document.createElement('ul');\n optionsListElement.classList.add(this.settings.listElement.className);\n\n if (this.selectElement.multiple) {\n optionsListElement.classList.add(this.settings.listElement.multipleClassName);\n } // Set option list hidden at first\n\n\n this.toggleVisibility(optionsListElement, true); // Enable programmatical focusability\n\n optionsListElement.tabIndex = -1;\n optionsListElement.setAttribute('role', 'listbox'); // Set option list labelled by the label element, if one exists\n\n if (this.labelElement) {\n optionsListElement.setAttribute('aria-labelledby', this.labelElement.id);\n } // Set size as a CSS variable, to later calculate option list max height\n\n\n optionsListElement.style.setProperty('--list-size', this.settings.listElement.size); // Add event listeners\n\n optionsListElement.addEventListener('click', function (_ref3) {\n var target = _ref3.target;\n return _this4.onOptionsListElementClick(target);\n });\n optionsListElement.addEventListener('blur', function (_ref4) {\n var relatedTarget = _ref4.relatedTarget;\n return _this4.onOptionsListElementBlur(relatedTarget);\n });\n optionsListElement.addEventListener('mouseover', function (event) {\n return _this4.onOptionsListElementMouseover(event);\n }); // Insert option list just after the button\n\n this.buttonElement.parentNode.insertBefore(optionsListElement, this.buttonElement.nextSibling);\n return optionsListElement;\n }\n /**\r\n * Create a custom option group list, to mimic an optgroup.\r\n *\r\n * @param {HTMLOptGroupElement} optgroup - Optgroup element from native select.\r\n * @param {referenceNode} [referenceNode=null] - Node to use as reference on insertBefore call.\r\n * @return {HTMLUListElement} - Option group list element.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"createOptionsListGroupElement\",\n value: function createOptionsListGroupElement(optgroup) {\n var referenceNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n // Create a LI element to contain the group\n var listGroupElement = document.createElement('li');\n listGroupElement.setAttribute('data-group', optgroup.label);\n listGroupElement.classList.add(this.settings.listGroupElement.className); // If optgroup is hidden, set the custom group hidden too\n\n if (optgroup.hidden) {\n listGroupElement.hidden = true;\n } // Create an UL element to contain the group options\n\n\n var listGroupListElement = document.createElement('ul');\n listGroupListElement.classList.add(this.settings.listGroupListElement.className); // Add disabled class to the group list, if original optgroup is disabled\n\n if (optgroup.disabled) {\n listGroupListElement.classList.add(this.settings.listGroupListElement.disabledClassName);\n } // Copy optgroup label to title the group list element\n\n\n listGroupListElement.title = optgroup.label; // Insert option group to the dropdown\n\n listGroupElement.appendChild(listGroupListElement);\n this.optionsListElement.insertBefore(listGroupElement, referenceNode); // Save option group to class variable\n\n this.optionsListGroupElements[optgroup.label] = listGroupListElement;\n return listGroupListElement;\n }\n /**\r\n * Get optgroup by option.\r\n *\r\n * @param {HTMLOptionElement} option - Option of which optgroup to get.\r\n * @return {HTMLOptGroupElement|undefined} Optgroup element, or undefined if option has no optgroup.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"getOptgroup\",\n value: function getOptgroup(option) {\n return option.parentElement.tagName.toLowerCase() === 'optgroup' ? option.parentElement : undefined;\n }\n /**\r\n * Create an option list item for each option of the native select.\r\n *\r\n * @param {HTMLOptionsCollection} [options=this.selectElement.options] - Options of the native select.\r\n * @return {HTMLLIElement[]} - Array of LI elements to represent the options. \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"createOptionsListItemElements\",\n value: function createOptionsListItemElements() {\n var _this5 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.selectElement.options;\n var listItemElements = Array.from(options).map(function (option) {\n return _this5.createOptionsListItemElement(option);\n });\n listItemElements.forEach(function (listItemElement, index) {\n // Get option index and reference node to insert list item at correct position\n var optionIndex = options[index].index,\n referenceNode = _this5.optionsListItemElements[optionIndex] || null,\n optgroup = _this5.getOptgroup(options[index]);\n\n if (optgroup) {\n // Get or create custom option group element\n var listGroupElement = _this5.optionsListGroupElements[optgroup.label] || _this5.createOptionsListGroupElement(optgroup, referenceNode); // Insert option list item in the correct position in the option group\n\n\n listGroupElement.insertBefore(listItemElement, referenceNode && referenceNode.parentElement.parentElement.dataset.group === optgroup.label ? referenceNode : null);\n } else {\n // Insert option list item in the correct position in the option list\n _this5.optionsListElement.insertBefore(listItemElement, referenceNode);\n } // Also insert in a specific index of the array\n\n\n _this5.optionsListItemElements.splice(optionIndex, 0, listItemElement);\n });\n }\n /**\r\n * Create an option list item for an option of the native select.\r\n *\r\n * @param {HTMLOptionElement} optionElement - Option of the native select.\r\n * @return {HTMLLIElement} - LI element to represent the option.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"createOptionsListItemElement\",\n value: function createOptionsListItemElement(optionElement) {\n var optionsListItemElement = document.createElement('li');\n optionsListItemElement.id = this.createOptionsListItemElementId(optionElement.value);\n optionsListItemElement.classList.add(this.settings.listItemElement.className); // Save value of the option in a data attribute\n\n optionsListItemElement.setAttribute('data-value', optionElement.value); // Get optgroup, if option belongs to one\n\n var optgroup = this.getOptgroup(optionElement); // Hide option list item, if the original option or its optgroup is hidden too\n\n if (optionElement.hidden || optgroup !== null && optgroup !== void 0 && optgroup.hidden) {\n this.toggleVisibility(optionsListItemElement, true);\n } // Add disabled class to list item, if necessary\n\n\n if (optionElement.disabled || optgroup !== null && optgroup !== void 0 && optgroup.disabled) {\n optionsListItemElement.classList.add(this.settings.listItemElement.disabledClassName);\n }\n\n optionsListItemElement.setAttribute('role', 'option'); // Copy text content from the original option to the option list item\n\n var textNode = document.createTextNode(optionElement.textContent);\n optionsListItemElement.appendChild(textNode); // Pre-select option, if selected attribute is present\n\n if (optionElement.selected) {\n if (this.selectElement.multiple) {\n this.toggleMultipleSelectOption(optionsListItemElement, true, optionElement);\n } else {\n this.state.focusedOptionsListItem = optionsListItemElement;\n this.toggleSingleSelectOption(optionsListItemElement, true);\n }\n }\n\n return optionsListItemElement;\n }\n /**\r\n * Observe attribute and child list mutations on the native select.\r\n *\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"observeSelectElementMutations\",\n value: function observeSelectElementMutations() {\n var _this6 = this;\n\n var observer = new MutationObserver(function (mutations) {\n return _this6.onSelectElementMutation(mutations);\n });\n observer.observe(this.selectElement, {\n attributes: true,\n attributeFilter: ['disabled', 'hidden'],\n subtree: true,\n childList: true\n });\n }\n /**\r\n * Toggle custom select options list open and closed.\r\n *\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onButtonElementClick\",\n value: function onButtonElementClick() {\n !this.state.isOptionsListOpen ? this.openOptionsList() : this.closeOptionsList();\n }\n /**\r\n * Visually focus and toggle selections of option list items on click.\r\n *\r\n * @param {Object} target - Click event target.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onOptionsListElementClick\",\n value: function onOptionsListElementClick(target) {\n if (target.getAttribute('role') === 'option') {\n this.focusOptionsListItem(target);\n\n if (this.selectElement.multiple) {\n this.toggleMultipleSelectOption(target);\n } else {\n this.toggleSingleSelectOption(target);\n this.closeOptionsList();\n }\n }\n }\n /**\r\n * Respond to keyboard navigation on the custom select container element.\r\n *\r\n * @param {Event} event - Keydown event.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onContainerElementKeydown\",\n value: function onContainerElementKeydown(event) {\n switch (event.key) {\n case 'PageUp':\n event.preventDefault();\n this.shouldFocusOnOption() ? this.focusOptionsListItem(this.getClosestFocusableOptionListItem(-this.settings.listElement.size + 1), true) : this.openOptionsList();\n break;\n\n case 'PageDown':\n event.preventDefault();\n this.shouldFocusOnOption() ? this.focusOptionsListItem(this.getClosestFocusableOptionListItem(this.settings.listElement.size - 1), true) : this.openOptionsList();\n break;\n\n case 'Up':\n case 'ArrowUp':\n event.preventDefault();\n this.shouldFocusOnOption() ? this.focusOptionsListItem(this.getClosestFocusableOptionListItem(-1), true) : this.openOptionsList();\n break;\n\n case 'Down':\n case 'ArrowDown':\n event.preventDefault();\n this.shouldFocusOnOption() ? this.focusOptionsListItem(this.getClosestFocusableOptionListItem(1), true) : this.openOptionsList();\n break;\n\n case 'Home':\n event.preventDefault();\n this.shouldFocusOnOption() ? this.focusOptionsListItem(this.getClosestFocusableOptionListItem(0, 0), true) : this.openOptionsList();\n break;\n\n case 'End':\n event.preventDefault();\n this.shouldFocusOnOption() ? this.focusOptionsListItem(this.getClosestFocusableOptionListItem(0, this.optionsListItemElements.length - 1), true) : this.openOptionsList();\n break;\n\n case ' ':\n case 'Spacebar':\n if (this.state.isOptionsListOpen) {\n event.preventDefault();\n\n if (this.selectElement.multiple && this.state.focusedOptionsListItem) {\n this.toggleMultipleSelectOption(this.state.focusedOptionsListItem);\n }\n }\n\n break;\n\n case 'Enter':\n case 'Esc':\n case 'Escape':\n if (this.state.isOptionsListOpen) {\n event.preventDefault();\n this.closeOptionsList();\n }\n\n break;\n\n default:\n // TODO: Search for item to focus by input\n break;\n }\n }\n /**\r\n * Close options list on blur.\r\n *\r\n * @param {EventTarget} relatedTarget\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onOptionsListElementBlur\",\n value: function () {\n var _onOptionsListElementBlur = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(relatedTarget) {\n var elementReceivingFocus;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.t0 = relatedTarget;\n\n if (_context.t0) {\n _context.next = 5;\n break;\n }\n\n _context.next = 4;\n return new Promise(function (resolve) {\n setTimeout(function () {\n return resolve(document.activeElement);\n });\n });\n\n case 4:\n _context.t0 = _context.sent;\n\n case 5:\n elementReceivingFocus = _context.t0;\n\n // Close options list only if the element receiving focus is not inside the custom select container\n if (!elementReceivingFocus || !this.containerElement.contains(elementReceivingFocus)) {\n this.closeOptionsList();\n }\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onOptionsListElementBlur(_x) {\n return _onOptionsListElementBlur.apply(this, arguments);\n }\n\n return onOptionsListElementBlur;\n }()\n /**\r\n * Focus visually on option list item on mouseover.\r\n *\r\n * @param {Event} event - Mouseover event.\r\n * @param {Object} event.target - Event target.\r\n * @param {number} event.clientX - Horizontal coordinate in the viewport.\r\n * @param {number} event.clientY - Vertical coordinate in the viewport.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onOptionsListElementMouseover\",\n value: function onOptionsListElementMouseover(_ref5) {\n var target = _ref5.target,\n clientX = _ref5.clientX,\n clientY = _ref5.clientY;\n\n if (target.getAttribute('role') === 'option') {\n // Check that mouse position actually changed\n var isClientXYChanged = clientX - (this.prevMouseEventClientX || 0) || clientY - (this.prevMouseEventClientY || 0);\n\n if (isClientXYChanged) {\n this.focusOptionsListItem(target);\n this.prevMouseEventClientX = clientX;\n this.prevMouseEventClientY = clientY;\n }\n }\n }\n /**\r\n * Close options list if it's open, and a click occurred outside of the container element.\r\n *\r\n * @param {Object} target - Click event target.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onDocumentClick\",\n value: function onDocumentClick(target) {\n if (this.state.isOptionsListOpen && !this.containerElement.contains(target)) {\n this.closeOptionsList();\n }\n }\n /**\r\n * Update selected options from native select to custom select on change.\r\n *\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onSelectElementChange\",\n value: function onSelectElementChange() {\n var _this7 = this;\n\n var selectedOptionsArray = Array.from(this.selectElement.selectedOptions);\n this.optionsListItemElements.forEach(function (listItem) {\n var isCustomOptionSelected = listItem.classList.contains(_this7.settings.listItemElement.selectedClassName),\n isNativeOptionSelected = selectedOptionsArray.some(function (_ref6) {\n var value = _ref6.value;\n return value === listItem.dataset.value;\n });\n\n if (isCustomOptionSelected) {\n if (!isNativeOptionSelected) {\n _this7.selectElement.multiple ? _this7.toggleMultipleSelectOption(listItem, true) : _this7.toggleSingleSelectOption(_this7.getFirstFocusableOptionsListItem(false, true), true);\n }\n } else if (isNativeOptionSelected) {\n _this7.selectElement.multiple ? _this7.toggleMultipleSelectOption(listItem, true) : _this7.toggleSingleSelectOption(listItem, true);\n }\n });\n }\n /**\r\n * Mirror mutations of the native select to the custom select.\r\n *\r\n * @param {MutationRecord[]} mutations\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onSelectElementMutation\",\n value: function onSelectElementMutation(mutations) {\n var _this8 = this;\n\n mutations.forEach(function (mutation) {\n var type = mutation.type,\n target = mutation.target,\n attributeName = mutation.attributeName;\n\n if (type === 'childList') {\n _this8.onSelectElementChildListMutation(mutation);\n } else if (type === 'attributes') {\n var targetTagName = target.tagName.toLowerCase();\n\n if (attributeName === 'disabled') {\n if (targetTagName === 'select') {\n _this8.onSelectElementDisabledMutation();\n } else if (targetTagName === 'option') {\n _this8.onOptionElementDisabledMutation(target);\n } else if (targetTagName === 'optgroup') {\n _this8.onOptgroupElementDisabledMutation(target);\n }\n } else if (attributeName === 'hidden') {\n if (targetTagName === 'select') {\n _this8.onSelectElementHiddenMutation();\n } else if (targetTagName === 'option') {\n _this8.onOptionElementHiddenMutation(target);\n } else if (targetTagName === 'optgroup') {\n _this8.onOptgroupElementHiddenMutation(target);\n }\n }\n }\n });\n }\n /**\r\n * Add or remove option list items on mutation of the child list of the native select.\r\n *\r\n * @param {MutationRecord} mutation - DOM mutation of the native select.\r\n * @param {NodeList} mutation.addedNodes - List of added nodes.\r\n * @param {NodeList} mutation.removedNodes - List of removed nodes.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onSelectElementChildListMutation\",\n value: function onSelectElementChildListMutation(_ref7) {\n var _this9 = this;\n\n var addedNodes = _ref7.addedNodes,\n removedNodes = _ref7.removedNodes;\n var addedOptions = this.filterNodeListByConstructor(addedNodes, HTMLOptionElement),\n removedOptions = this.filterNodeListByConstructor(removedNodes, HTMLOptionElement); // If any options added to native select, also add them to custom select\n\n if (addedOptions.length) {\n this.createOptionsListItemElements(addedOptions);\n } // Same goes for removed options\n\n\n if (removedOptions.length) {\n removedOptions.forEach(function (removedOption) {\n var correspondingListItemIndex = _this9.optionsListItemElements.findIndex(function (_ref8) {\n var value = _ref8.dataset.value;\n return value === removedOption.value;\n });\n\n var correspondingListItem = _this9.optionsListItemElements[correspondingListItemIndex];\n\n if (correspondingListItem) {\n // If removed option was selected, unselect it from the custom select\n if (removedOption.selected) {\n if (_this9.selectElement.multiple) {\n removedOption.selected = false;\n\n _this9.toggleMultipleSelectOption(correspondingListItem, true, removedOption);\n } else {\n _this9.toggleSingleSelectOption(correspondingListItem, true, '');\n }\n } // Remove option list item\n\n\n correspondingListItem.parentElement.removeChild(correspondingListItem);\n\n _this9.optionsListItemElements.splice(correspondingListItemIndex, 1);\n }\n });\n }\n }\n /**\r\n * Toggle disabled state of custom select on mutation of native select disabled attribute.\r\n *\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onSelectElementDisabledMutation\",\n value: function onSelectElementDisabledMutation() {\n if (this.selectElement.disabled && this.state.isOptionsListOpen) {\n this.closeOptionsList();\n }\n\n if (this.labelElement) {\n if (this.selectElement.disabled) {\n this.labelElement.classList.add(this.settings.labelElement.disabledClassName);\n } else {\n this.labelElement.classList.remove(this.settings.labelElement.disabledClassName);\n }\n }\n\n this.buttonElement.disabled = this.selectElement.disabled;\n }\n /**\r\n * Toggle hidden state of custom select on mutation of native select hidden attribute.\r\n *\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onSelectElementHiddenMutation\",\n value: function onSelectElementHiddenMutation() {\n if (this.selectElement.hidden && this.state.isOptionsListOpen) {\n this.closeOptionsList();\n }\n\n this.containerElement.hidden = this.selectElement.hidden;\n }\n /**\r\n * Toggle disabled state of custom option on mutation of native option disabled attribute.\r\n *\r\n * @param {HTMLOptionElement} option - Mutated option element.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onOptionElementDisabledMutation\",\n value: function onOptionElementDisabledMutation(option) {\n var optionsListItem = this.findMatchingOptionsListItem(option);\n\n if (option.disabled) {\n if (!optionsListItem.classList.contains(this.settings.listItemElement.disabledClassName)) {\n optionsListItem.classList.add(this.settings.listItemElement.disabledClassName);\n }\n } else if (optionsListItem.classList.contains(this.settings.listItemElement.disabledClassName)) {\n optionsListItem.classList.remove(this.settings.listItemElement.disabledClassName);\n }\n }\n /**\r\n * Toggle hidden state of custom option on mutation of native option hidden attribute.\r\n *\r\n * @param {HTMLOptionElement} option - Mutated option element.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onOptionElementHiddenMutation\",\n value: function onOptionElementHiddenMutation(option) {\n var optionsListItem = this.findMatchingOptionsListItem(option);\n this.toggleVisibility(optionsListItem, option.hidden);\n }\n /**\r\n * Toggle disabled state of custom optgroup on mutation of native optgroup disabled attribute.\r\n *\r\n * @param {HTMLOptGroupElement} optgroup - Mutated optgroup element.\r\n * @param {string} optgroup.label - Label of optgroup.\r\n * @param {boolean} optgroup.disabled - Disabled attribute of optgroup.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onOptgroupElementDisabledMutation\",\n value: function onOptgroupElementDisabledMutation(_ref9) {\n var _this10 = this;\n\n var label = _ref9.label,\n disabled = _ref9.disabled;\n var listGroup = this.optionsListGroupElements[label];\n\n if (disabled) {\n if (!listGroup.classList.contains(this.settings.listGroupListElement.disabledClassName)) {\n listGroup.classList.add(this.settings.listGroupListElement.disabledClassName);\n }\n } else if (listGroup.classList.contains(this.settings.listGroupListElement.disabledClassName)) {\n listGroup.classList.remove(this.settings.listGroupListElement.disabledClassName);\n }\n\n Array.from(listGroup.children).forEach(function (listItem) {\n if (disabled) {\n if (!listItem.classList.contains(_this10.settings.listItemElement.disabledClassName)) {\n listItem.classList.add(_this10.settings.listItemElement.disabledClassName);\n }\n } else if (listItem.classList.contains(_this10.settings.listItemElement.disabledClassName)) {\n listItem.classList.remove(_this10.settings.listItemElement.disabledClassName);\n }\n });\n }\n /**\r\n * Toggle hidden state of custom optgroup on mutation of native optgroup hidden attribute.\r\n *\r\n * @param {HTMLOptGroupElement} optgroup - Mutated optgroup element.\r\n * @param {string} optgroup.label - Label of optgroup.\r\n * @param {boolean} optgroup.hidden - Hidden attribute of optgroup.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"onOptgroupElementHiddenMutation\",\n value: function onOptgroupElementHiddenMutation(_ref10) {\n var label = _ref10.label,\n hidden = _ref10.hidden;\n this.optionsListGroupElements[label].parentElement.hidden = hidden;\n Array.from(this.optionsListGroupElements[label].children).forEach(function (listItem) {\n listItem.hidden = hidden;\n });\n }\n /**\r\n * Open custom select options list.\r\n *\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"openOptionsList\",\n value: function openOptionsList() {\n if (!this.state.isOptionsListOpen) {\n // Set item height CSS variable, if it is not set yet\n if (!this.state.isItemHeightCSSVariableSet) {\n this.setItemHeightCSSVariable();\n }\n\n this.state.isOptionsListOpen = true;\n this.toggleVisibility(this.optionsListElement, false);\n this.buttonElement.setAttribute('aria-expanded', 'true');\n this.optionsListElement.focus(this.settings.listElement.preventScrollOnFocus ? {\n preventScroll: true\n } : {});\n\n if (this.state.focusedOptionsListItem) {\n this.optionsListElement.setAttribute('aria-activedescendant', this.state.focusedOptionsListItem.id);\n } else if (this.optionsListItemElements.length) {\n this.focusOptionsListItem(this.getFirstFocusableOptionsListItem(false, true));\n }\n }\n }\n /**\r\n * Close custom select options list.\r\n *\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"closeOptionsList\",\n value: function closeOptionsList() {\n if (this.state.isOptionsListOpen) {\n this.state.isOptionsListOpen = false;\n this.toggleVisibility(this.optionsListElement, true);\n this.buttonElement.removeAttribute('aria-expanded');\n this.buttonElement.focus(this.settings.buttonElement.preventScrollOnFocus ? {\n preventScroll: true\n } : {});\n this.optionsListElement.removeAttribute('aria-activedescendant');\n\n if (this.state.focusedOptionsListItem && this.selectElement.multiple) {\n this.state.focusedOptionsListItem.classList.remove(this.settings.listItemElement.focusClassName);\n this.state.focusedOptionsListItem = undefined;\n }\n }\n }\n /**\r\n * Toggle selection of an option of a single-select.\r\n *\r\n * @param {Object} target - Toggled option list item.\r\n * @param {boolean} isPreSelect - Toggled through pre-selection (\"selected\" attribute).\r\n * @param {string} [value=target.dataset.value] - Value of option list item.\r\n * @return {undefined} \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"toggleSingleSelectOption\",\n value: function toggleSingleSelectOption(target) {\n var _this11 = this;\n\n var isPreSelect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : target.dataset.value;\n\n if (!isPreSelect) {\n // Return if tried to toggle selected option\n if (value && value === this.selectElement.value) {\n return;\n } // Set value of the native select\n\n\n this.selectElement.value = value; // Dispatch change event\n\n this.selectElement.dispatchEvent(new CustomEvent('change', {\n bubbles: true,\n detail: {\n dispatcher: 'multiselect'\n }\n }));\n } // Update custom select UI depending on if the selected option has a value or not\n\n\n if (value) {\n // Show the default text content of the button above the selected options\n if (this.settings.buttonElement.showPlaceholder && !this.buttonElement.classList.contains(this.settings.buttonElement.placeholderClassName)) {\n this.buttonElement.classList.add(this.settings.buttonElement.placeholderClassName);\n } // Set selected data attribute, mainly for easier styling\n\n\n if (!this.buttonElement.hasAttribute('data-selected')) {\n this.buttonElement.setAttribute('data-selected', '');\n } // Set text content of the button to match the selected option list item\n\n\n this.buttonElement.firstElementChild.textContent = target.textContent;\n this.buttonElement.firstElementChild.setAttribute('data-label-for', target.id);\n } else {\n // Hide the \"placeholder\" text\n if (this.settings.buttonElement.showPlaceholder && this.buttonElement.classList.contains(this.settings.buttonElement.placeholderClassName)) {\n this.buttonElement.classList.remove(this.settings.buttonElement.placeholderClassName);\n } // Reset text content of the button to the default one\n\n\n this.buttonElement.firstElementChild.textContent = this.settings.buttonElement.showPlaceholder ? this.settings.buttonElement.textContent : target.textContent;\n this.buttonElement.removeAttribute('data-selected');\n this.buttonElement.firstElementChild.removeAttribute('data-label-for');\n } // Remove selected class and \"aria-selected\" attribute from previously selected option\n\n\n if (this.optionsListItemElements) {\n this.optionsListItemElements.forEach(function (listItem) {\n if (listItem.classList.contains(_this11.settings.listItemElement.selectedClassName)) {\n listItem.classList.remove(_this11.settings.listItemElement.selectedClassName);\n }\n\n if (listItem.hasAttribute('aria-selected')) {\n listItem.removeAttribute('aria-selected');\n }\n });\n } // Add selected class and \"aria-selected\" attribute on the selected option\n\n\n target.classList.add(this.settings.listItemElement.selectedClassName);\n target.setAttribute('aria-selected', 'true');\n }\n /**\r\n * Toggle selection of an option of a multiselect.\r\n *\r\n * @param {Object} target - Toggled option list item.\r\n * @param {boolean} isPreSelect - Toggled through pre-selection (\"selected\" attribute).\r\n * @param {HTMLOptionElement} [targetNativeOption=this.findMatchingNativeOption(target)] - Corresponding native option.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"toggleMultipleSelectOption\",\n value: function toggleMultipleSelectOption(target) {\n var isPreSelect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var targetNativeOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.findMatchingNativeOption(target);\n\n if (!isPreSelect) {\n // Toggle selection of native option\n targetNativeOption.selected = !targetNativeOption.selected; // Dispatch change event\n\n this.selectElement.dispatchEvent(new CustomEvent('change', {\n bubbles: true,\n detail: {\n dispatcher: 'multiselect'\n }\n }));\n } // Update custom select UI accordingly\n\n\n if (targetNativeOption.selected) {\n target.classList.add(this.settings.listItemElement.selectedClassName);\n target.setAttribute('aria-selected', 'true');\n\n if (target.dataset.value) {\n // Show the default text content of the button above the selected options\n if (this.settings.buttonElement.showPlaceholder && !this.buttonElement.classList.contains(this.settings.buttonElement.placeholderClassName)) {\n this.buttonElement.classList.add(this.settings.buttonElement.placeholderClassName);\n } // Reset text content of the button, if only the default value is shown\n\n\n if (this.buttonElement.firstElementChild.textContent === this.settings.buttonElement.textContent) {\n this.buttonElement.firstElementChild.textContent = '';\n } // Set selected data attribute, mainly for easier styling\n\n\n if (!this.buttonElement.hasAttribute('data-selected')) {\n this.buttonElement.setAttribute('data-selected', '');\n } // Create a span element for the selected option\n\n\n var spanElement = document.createElement('span'),\n textNode = document.createTextNode(target.textContent);\n spanElement.setAttribute('data-label-for', target.id);\n spanElement.appendChild(textNode); // Add the span element with the text content of the selected option to the button\n\n this.buttonElement.firstElementChild.appendChild(spanElement);\n }\n } else {\n target.classList.remove(this.settings.listItemElement.selectedClassName);\n target.removeAttribute('aria-selected'); // Find the span element that represents the unselected option\n\n var _spanElement = Array.from(this.buttonElement.firstElementChild.children).find(function (_ref11) {\n var labelFor = _ref11.dataset.labelFor;\n return labelFor === target.id;\n }); // Remove the matching span element, if found\n\n\n if (_spanElement) {\n this.buttonElement.firstElementChild.removeChild(_spanElement);\n } // Hide the \"placeholder\" text, if the last selected option was just unselected\n\n\n if (!this.buttonElement.firstElementChild.children.length) {\n if (this.settings.buttonElement.showPlaceholder && this.buttonElement.classList.contains(this.settings.buttonElement.placeholderClassName)) {\n this.buttonElement.classList.remove(this.settings.buttonElement.placeholderClassName);\n } // Reset text content of the button to the default one\n\n\n this.buttonElement.firstElementChild.textContent = this.settings.buttonElement.showPlaceholder ? this.settings.buttonElement.textContent : '';\n this.buttonElement.removeAttribute('data-selected');\n }\n }\n }\n /**\r\n * Set visual focus only to target option list item.\r\n *\r\n * @param {Object} target - Option list item to visually focus.\r\n * @param {boolean} [isTriggeredByKey=false] - Is focus triggered through keyboard nagivation.\r\n * @return {undefined} \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"focusOptionsListItem\",\n value: function focusOptionsListItem(target) {\n var isTriggeredByKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!target) {\n return;\n }\n\n if (this.state.focusedOptionsListItem) {\n this.state.focusedOptionsListItem.classList.remove(this.settings.listItemElement.focusClassName);\n }\n\n this.state.focusedOptionsListItem = target;\n\n if (!target.classList.contains(this.settings.listItemElement.focusClassName)) {\n target.classList.add(this.settings.listItemElement.focusClassName);\n }\n\n if (isTriggeredByKey) {\n this.optionsListElement.setAttribute('aria-activedescendant', target.id); // Scroll to target, if it's off-screen\n\n this.scrollToOptionListItemElement(target); // Auto-select option on focus, in the case of a single select, and if focus is triggered by key\n\n if (!this.selectElement.multiple) {\n this.toggleSingleSelectOption(target);\n }\n }\n }\n /**\r\n * Scroll to option list item, if it's off-screen.\r\n *\r\n * @param {HTMLLIElement} listItem - Option list item of which position to check.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"scrollToOptionListItemElement\",\n value: function scrollToOptionListItemElement(listItem) {\n if (this.optionsListElement.scrollHeight > this.optionsListElement.clientHeight) {\n var listItemBottom = listItem.offsetTop + listItem.offsetHeight,\n scrollBottom = this.optionsListElement.clientHeight + this.optionsListElement.scrollTop;\n\n if (listItemBottom > scrollBottom) {\n this.optionsListElement.scrollTop = listItemBottom - this.optionsListElement.clientHeight;\n } else if (listItem.offsetTop < this.optionsListElement.scrollTop) {\n this.optionsListElement.scrollTop = listItem.offsetTop;\n }\n }\n }\n /**\r\n * Get a boolean value whether to visually focus on an option list item, or not.\r\n *\r\n * @return {boolean} \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"shouldFocusOnOption\",\n value: function shouldFocusOnOption() {\n return this.state.isOptionsListOpen || !this.selectElement.multiple;\n }\n /**\r\n * Get closest focusable option list item by offset.\r\n *\r\n * @param {number} offset - Offset to add to index.\r\n * @param {number} [index=this.getFocusedOptionIndex()] - Index of option list item.\r\n * @return {HTMLLIElement|undefined} Closest option list item to focus, or undefined if none found.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"getClosestFocusableOptionListItem\",\n value: function getClosestFocusableOptionListItem(offset) {\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getFocusedOptionIndex();\n var targetIndex = index + offset; // If target index is equal or less than 0, return first focusable option list item\n\n if (targetIndex <= 0) {\n return this.getFirstFocusableOptionsListItem();\n } // If target index is equal or larger than last index of array, return last focusable option list item\n\n\n if (targetIndex >= this.optionsListItemElements.length - 1) {\n return this.getLastFocusableOptionsListItem();\n } // Else if offset is falsy (0), there's nothing to do\n\n\n if (!offset) {\n return this.state.focusedOptionsListItem;\n }\n\n var targetOptionsListItem = this.optionsListItemElements[targetIndex]; // Check if target is hidden or disabled\n\n if (targetOptionsListItem.hidden || targetOptionsListItem.classList.contains(this.settings.listItemElement.disabledClassName)) {\n // If so, recursively check next or previous option list item, based on whether offset is positive or negative\n return this.getClosestFocusableOptionListItem(offset + Math.sign(offset), index);\n }\n\n return targetOptionsListItem;\n }\n /**\r\n * Get index of the visually focused option list item.\r\n *\r\n * @return {number|undefined} - Index, or undefined if no option list item is focused. \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"getFocusedOptionIndex\",\n value: function getFocusedOptionIndex() {\n return this.state.focusedOptionsListItem && this.optionsListItemElements.indexOf(this.state.focusedOptionsListItem);\n }\n /**\r\n * Create an ID for the option list item.\r\n *\r\n * @param {string} value - Value of an option of the native select.\r\n * @return {string} \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"createOptionsListItemElementId\",\n value: function createOptionsListItemElementId(value) {\n return this.getUniqueElementId(\"\".concat(this.settings.listItemElement.idPrefix, \"-\").concat(value ? value.toLowerCase().replace(/\\s/, '-') : 'empty'));\n }\n /**\r\n * Set option list item height to a CSS variable for the option list element.\r\n * \r\n * @return {undefined} \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"setItemHeightCSSVariable\",\n value: function setItemHeightCSSVariable() {\n var firstListItemWithHeight = this.getFirstFocusableOptionsListItem(true, false); // Do nothing, if could not find an option list item\n\n if (!firstListItemWithHeight) {\n return;\n } // Unhide option list element temporarily (not visually though) to get the height of its child\n\n\n this.optionsListElement.style.height = '0';\n this.optionsListElement.style.border = '0';\n this.optionsListElement.style.overflowY = 'hidden';\n this.optionsListElement.hidden = false; // Check if list item is contained by a hidden group\n\n var listItemGroup = firstListItemWithHeight.parentElement.parentElement.classList.contains(this.settings.listGroupElement.className) && firstListItemWithHeight.parentElement.parentElement;\n var isListItemGroupHidden = listItemGroup === null || listItemGroup === void 0 ? void 0 : listItemGroup.hidden; // If so, unhide the group too\n\n if (isListItemGroupHidden) {\n listItemGroup.hidden = false;\n } // Save list item scroll height\n\n\n var listItemHeight = firstListItemWithHeight.scrollHeight; // Hide group again\n\n if (isListItemGroupHidden) {\n listItemGroup.hidden = true;\n } // Hide option list element again\n\n\n this.optionsListElement.hidden = true;\n this.optionsListElement.style.removeProperty('height');\n this.optionsListElement.style.removeProperty('border');\n this.optionsListElement.style.removeProperty('overflow-y'); // Do nothing, if option list item has no scroll height\n\n if (!listItemHeight) {\n return;\n } // Otherwise set the CSS variable\n\n\n this.optionsListElement.style.setProperty('--item-height', \"\".concat(listItemHeight, \"px\")); // Update state to not set item height CSS variable again\n\n this.state.isItemHeightCSSVariableSet = true;\n }\n /**\r\n * Get first label element associated with the select element.\r\n *\r\n * @param {HTMLSelectElement} selectElement - Native select element.\r\n * @param {NodeList|undefined} selectElement.labels - Label elements associated with select element.\r\n * @param {string} selectElement.id - ID of select element.\r\n * @return {HTMLLabelElement|undefined|null}\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"getAssociatedLabel\",\n value: function getAssociatedLabel(_ref12) {\n var labels = _ref12.labels,\n id = _ref12.id;\n return labels ? labels[0] : document.querySelector(\"label[for=\\\"\".concat(id, \"\\\"]\"));\n }\n /**\r\n * Toggle hidden and aria-hidden attributes of an element.\r\n *\r\n * @param {HTMLElement} element - Any HTML element.\r\n * @param {boolean} [shouldHide=!element.hidden] - Hide or show element.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"toggleVisibility\",\n value: function toggleVisibility(element) {\n var shouldHide = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !element.hidden;\n element.hidden = shouldHide;\n\n if (shouldHide) {\n element.setAttribute('aria-hidden', 'true');\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n /**\r\n * Get first focusable option list item.\r\n *\r\n * @param {boolean} [checkHidden=true] - Whether to check option list item class list for truthy hidden attribute.\r\n * @param {boolean} [checkDisabled=true] - Whether to check option list item class list for disabled class.\r\n * @return {HTMLLIElement|undefined} - First focusable option list item, or undefined if not found.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"getFirstFocusableOptionsListItem\",\n value: function getFirstFocusableOptionsListItem() {\n var _this12 = this;\n\n var checkHidden = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var checkDisabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return this.optionsListItemElements.find(function (listItem) {\n return (!checkHidden || !listItem.hidden) && (!checkDisabled || !listItem.classList.contains(_this12.settings.listItemElement.disabledClassName));\n });\n }\n /**\r\n * Get last focusable option list item.\r\n *\r\n * @return {HTMLLIElement|undefined} - Last focusable option list item, or undefined if not found.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"getLastFocusableOptionsListItem\",\n value: function getLastFocusableOptionsListItem() {\n var lastFocusableListItem;\n\n for (var index = this.optionsListItemElements.length - 1; index >= 0; index--) {\n if (!this.optionsListItemElements[index].hidden && !this.optionsListItemElements[index].classList.contains(this.settings.listItemElement.disabledClassName)) {\n lastFocusableListItem = this.optionsListItemElements[index];\n break;\n }\n }\n\n return lastFocusableListItem;\n }\n /**\r\n * Find option from the native select that matches a given option list item.\r\n *\r\n * @param {HTMLLIElement} optionListItem - Option list item from the custom select.\r\n * @return {HTMLOptionElement} - Corresponding option from the native select.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"findMatchingNativeOption\",\n value: function findMatchingNativeOption(optionListItem) {\n return Array.from(this.selectElement.options).find(function (_ref13) {\n var value = _ref13.value;\n return value === optionListItem.dataset.value;\n });\n }\n /**\r\n * Find option list item that matches a given option from the native select.\r\n *\r\n * @param {HTMLOptionElement} option - Native option element.\r\n * @return {HTMLLIElement} - Corresponding option list item from the custom select.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"findMatchingOptionsListItem\",\n value: function findMatchingOptionsListItem(option) {\n return this.optionsListItemElements.find(function (_ref14) {\n var value = _ref14.dataset.value;\n return value === option.value;\n });\n }\n /**\r\n * Filter node list by constructor.\r\n *\r\n * @param {NodeList} nodeList - Node list to filter.\r\n * @param {Object} constructor - Object to test against.\r\n * @return {Array} - Array of filtered nodes. \r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"filterNodeListByConstructor\",\n value: function filterNodeListByConstructor(nodeList, constructor) {\n return nodeList.length ? Array.from(nodeList).filter(function (node) {\n return node instanceof constructor;\n }) : [];\n }\n /**\r\n * Check element ID is unique, and if not, iterate until one is found, and return the ID suffixed with index.\r\n *\r\n * @param {string} id - Element ID to test.\r\n * @param {number} [index=0] - Index to suffix the ID with.\r\n * @return {string} - Unique element ID.\r\n * @memberof Multiselect\r\n */\n\n }, {\n key: \"getUniqueElementId\",\n value: function getUniqueElementId(id) {\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var idToTest = index ? \"\".concat(id, \"-\").concat(index) : id;\n\n if (document.getElementById(idToTest)) {\n return this.getUniqueElementId(id, index + 1);\n }\n\n return idToTest;\n }\n }]);\n return Multiselect;\n}();\n\nvar _default = Multiselect;\nexports[\"default\"] = _default;","module.exports = require(\"regenerator-runtime\");\n","module.exports = require('./dist');\r\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.2';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n"],"sourceRoot":""}