{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/bootstrap5-tags/tags.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./app/javascript/controllers/application.js","webpack:///./app/javascript/controllers/autosave_controller.js","webpack:///./app/javascript/controllers/tags_controller.js","webpack:///./app/javascript/controllers/benefits_controller.js","webpack:///./app/javascript/controllers/clear_controller.js","webpack:///./app/javascript/controllers/chat_controller.js","webpack:///./app/javascript/controllers/chat_whitepaper_controller.js","webpack:///./app/javascript/controllers/turnstile_controller.js","webpack:///./app/javascript/controllers/parsecv_controller.js","webpack:///./app/javascript/controllers/disable_controller.js","webpack:///./app/javascript/controllers/email_suggestions_controller.js","webpack:///./app/javascript/controllers/index.js","webpack:///./app/javascript/packs/importcontrollers.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","iterator","from","_iterableToArray","_unsupportedIterableToArray","TypeError","_nonIterableSpread","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","next","done","_iterableToArrayLimit","_nonIterableRest","minLen","toString","constructor","test","len","arr2","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","apply","_objectSpread","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","configurable","writable","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","ACTIVE_CLASSES","VALUE_ATTRIBUTE","INSTANCE_MAP","WeakMap","Tags","el","_this","this","globalOpts","style","display","set","_selectElement","parseBool","includes","JSON","parse","opts","dataset","allowNew","showAllSuggestions","badgeStyle","allowClear","clearEnd","server","liveServer","serverParams","selected","split","suggestionsThreshold","parseInt","validationRegex","regex","separator","max","clearLabel","searchLabel","valueField","labelField","keepOpen","fullWidth","debounceTime","baseClass","placeholder","_getPlaceholder","_keyboardNavigation","_fireEvents","_searchFunc","debounce","_loadFromServer","overflowParent","parentForm","parentElement","overflow","nodeName","reset","addEventListener","_holderElement","_containerElement","_dropElement","_searchInput","parentNode","insertBefore","nextSibling","_configureHolderElement","_configureDropElement","_configureContainerElement","_configureSearchInput","resetState","resetSuggestions","protoProps","staticProps","removeChild","removeEventListener","isDisabled","hasAttribute","removeAttribute","suggestions","querySelectorAll","option","disabled","map","getAttribute","label","textContent","_buildSuggestions","_this2","show","_abortController","abort","AbortController","query","params","URLSearchParams","fetch","signal","then","json","_showSuggestions","firstOption","querySelector","_this$_dropElement$cl","_this3","classList","add","maxHeight","maxWidth","overflowY","_this$_holderElement$","contains","position","_getBootstrapVersion","height","_this4","visibility","focus","initialValues","selectedOptions","j","initialValue","init","addItem","_this5","autocomplete","spellcheck","backgroundColor","border","outline","ariaLabel","_resetSearchInput","lastChar","text","_add","_adjustWidth","_hideSuggestions","keyCode","preventDefault","selection","getActiveSelection","click","newSelection","_moveSelectionUp","_moveSelectionDown","removeLastItem","canAdd","active","_active$classList","_prev$querySelector$c","prev","previousSibling","remove","scrollTop","offsetTop","_active$classList2","_next$querySelector$c","offsetHeight","size","span","body","fontSize","width","whiteSpace","innerHTML","Math","ceil","clientWidth","getSelectedValues","v","computedFontSize","getComputedStyle","w","_calcTextWidth","minWidth","_this6","lastChild","_loop","_newChildLink$classLi","suggestion","newChild","newChildLink","append","_i2","_Object$entries","entries","_ref2","_newChild$querySelect","removeActiveSelection","removeAll","dispatchEvent","Event","isSingle","activeElement","blur","_firstItem$querySelec","search","toLocaleLowerCase","values","list","found","firstItem","hasPossibleValues","_link$classList","item","link","indexOf","isMatched","isInvalid","left","offsetWidth","offsetLeft","wdiff","hdiff","getBoundingClientRect","y","pageYOffset","transform","ver","jQuery","$","fn","tooltip","VERSION","charAt","opt","find","RegExp","trim","_selection$classList","_this7","removeItem","noEvents","items","lastItem","_isSelected","_validateRegex","_span$classList","_this8","bver","_classes","_classes2","html","classes","badgeClass","concat","btnMargin","btnFloat","closeClass","btn","stopPropagation","_i3","_Object$entries2","_ref6","_ref5","_value","bubbles","selector","getInstance","has","func","timer","_this9","_len","args","_key","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","GenStateSuspendedStart","method","arg","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","result","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","reverse","pop","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_typeof","asyncGeneratorStep","gen","_next","_throw","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_createForOfIteratorHelper","allowArrayLike","it","F","_e2","f","normalCompletion","didErr","step","_e3","_createClass","EventListener","eventTarget","eventName","eventOptions","unorderedBindings","Set","binding","_step","extendedEvent","_stopImmediatePropagation","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_iterator","bindings","handleEvent","sort","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","eventListener","connect","disconnect","reduce","listeners","fetchEventListenerForBinding","bindingConnected","bindingDisconnected","detail","handleError","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","createEventListener","parts","join","descriptorPattern","parseEventTarget","eventTargetName","camelize","replace","_","_char","toUpperCase","capitalize","dasherize","_char2","toLowerCase","Action","element","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","eventNameSuffix","Element","getParamsFromEventTargetAttributes","pattern","attributes","_ref","match","o_O","typecast","token","descriptorString","content","matches","options","Binding","action","willBeInvokedByEvent","invokeWithEvent","controller","currentTarget","actionEvent","logDebugActivity","scope","containsElement","ElementObserver","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","childList","subtree","refresh","takeRecords","matchElementsInTree","_Array$from","removeElement","_Array$from2","_element","addElement","_step2","_iterator2","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","_Array$from3","elementFromNode","processTree","_i4","_Array$from4","elementIsActive","tree","processor","_step3","_iterator3","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","start","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","StringMapObserver","stringMap","attributeOldValue","_step4","_iterator4","knownAttributeNames","refreshAttribute","_step5","_iterator5","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","_oldValue","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","del","prune","Multimap","valuesByKey","some","_ref3","_ref4","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","getValuesForKey","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","findIndex","_ref7","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","clear","forToken","connectAction","disconnectAction","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","hasValue","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_step6","_iterator6","valueDescriptors","_ref9","rawValue","rawOldValue","changedMethodName","changedMethod","reader","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref10","connectTarget","_ref11","disconnectTarget","targetConnected","targetDisconnected","_step7","_iterator7","_step8","_iterator8","functionName","controllerConstructor","bindingObserver","dispatcher","valueObserver","targetObserver","initialize","invokeControllerMethod","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getShadowedDescriptor","getShadowProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertyNames","extendWithReflect","extended","b","a","_constructor","_super2","Module","blessDefinition","contextsByScope","connectedContexts","fetchContextForScope","ClassMap","getDataKey","getAll","getAttributeNameForKey","DataMap","Guide","logger","warnedKeysByObject","warnedKeys","warn","attributeValueContainsToken","TargetSet","targetName","_len2","targetNames","_key2","findTarget","findLegacyTarget","_this10","_len3","_key3","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","_this11","targetDescriptor","targetAttribute","revisedAttributeName","guide","Scope","_this12","closest","controllerSelector","queryElements","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","unloadIdentifier","connectModule","disconnectModule","connectContextForScope","disconnectContextForScope","defaultSchema","Application","_this13","documentElement","debug","logFormattedMessage","router","_start","_callee","_context","readyState","shouldLoad","load","_this14","_len4","rest","_key4","definitions","loadDefinition","_this15","_len5","_key5","identifiers","getContextForElementAndIdentifier","_a","groupCollapsed","log","groupEnd","parseValueDefinitionPair","_ref15","_ref16","typeDefinition","typeFromObject","typeObject","parseValueTypeConstant","defaultValueType","parseValueTypeDefault","parseValueTypeObject","typeFromDefaultValue","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Number","String","array","number","string","writeJSON","stringify","Controller","_ref17","_ref17$target","_ref17$detail","_ref17$prefix","prefix","_ref17$bubbles","_ref17$cancelable","cancelable","CustomEvent","blessings","classDefinition","_ref12","getAttributeName","targetDefinition","_ref13","findAll","valueDefinitionPairs","propertyDescriptorMap","_this16","valueDefinitionPair","valueDescriptor","_ref14","read","write","propertiesForValueDefinitionPair","warnings","Stimulus","duration","setStatus","Rails","fire","formTarget","getElementById","fetchResponse","response","ok","errors","statusTarget","color","badgeStyleValue","fieldTargets","field","scrollOnNewMessage","scrollToBottom","statusDiv","textArea","chatwindowTarget","submitButton","className","metaKey","chatForm","requestSubmit","chatmessagesTarget","scrollHeight","addSelectedClass","chatItem","url","Turbo","visit","siteKeyValue","turnstile","loadTurnstileScript","inputTarget","initTurnstile","defer","onTurnstileLoad","widgetId","buttonTarget","disableButton","render","containerTarget","sitekey","theme","enableButton","callback","form","submit","siteKey","Bootstrap","modal","Modal","cvModalTarget","progressInterval","setInterval","clearInterval","cvModalProgressBarTarget","formData","FormData","cvFieldTarget","files","animateProgressBar","headers","getCSRFToken","prefillForm","hide","whatWasFileld","alert","isOk","first_name","first_nameTarget","last_name","last_nameTarget","public_email","public_emailTarget","phone","phoneTarget","location_country_residency","location_country_residencyTarget","linkedin","linkedinTarget","github","twitter","website","websiteTarget","bio","summaryTarget","employment_history","employment_history_str","employmentHistoryToStr","records","sentence","title","company","year_start","year_end","description","mainContentTarget","meta","button","submitButtonTarget","createSuggestionsContainer","suggestionsDiv","zIndex","borderRadius","marginTop","textAlign","input","atIndex","lastIndexOf","domainPrefix","hideSuggestions","showFilteredSuggestions","filteredDomains","domainsValue","domain","startsWith","suggestionsTarget","cursor","transition","selectSuggestion","email","domains","default","register","HelloController","TagsController","BenefitsController","ClearController","ChatController","ChatWhitepaperController","TurnstileController","ParsecvController","DisableController","EmailSuggestionsController"],"mappings":"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","file":"js/importcontrollers-646d97cb0e868c6650a6.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t7: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \"-\" + {\"18\":\"cf5cac87eea662ea6c5a\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 74);\n","module.exports = require(\"regenerator-runtime\");\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\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) { _defineProperty(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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\r\n * Bootstrap 5 (and 4!) tags\r\n *\r\n * Turns your select[multiple] into nice tags lists\r\n *\r\n * Required Bootstrap 5 styles:\r\n * - badge\r\n * - background-color utility\r\n * - margin-end utility\r\n * - float-start utility\r\n * - forms\r\n * - dropdown\r\n */\nvar ACTIVE_CLASS = \"is-active\";\nvar ACTIVE_CLASSES = [\"is-active\", \"bg-primary\", \"text-white\"];\nvar VALUE_ATTRIBUTE = \"data-value\"; // Static map will minify very badly as class prop, so we use an external constant\n\nvar INSTANCE_MAP = new WeakMap();\n\nvar Tags = /*#__PURE__*/function () {\n /**\r\n * @param {HTMLSelectElement} el\r\n * @param {Object} globalOpts\r\n */\n function Tags(el) {\n var _this = this;\n\n var globalOpts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Tags);\n\n // Hide the select element and register a tags attr\n el.style.display = \"none\";\n INSTANCE_MAP.set(el, this);\n this._selectElement = el; // Allow 1/0, true/false as strings\n\n var parseBool = function parseBool(value) {\n return [\"true\", \"false\", \"1\", \"0\", true, false].includes(value) && !!JSON.parse(value);\n }; // Handle options, using global settings first and data attr override\n\n\n var opts = _objectSpread(_objectSpread({}, globalOpts), el.dataset);\n\n this.allowNew = opts.allowNew ? parseBool(opts.allowNew) : false;\n this.showAllSuggestions = opts.showAllSuggestions ? parseBool(opts.showAllSuggestions) : false;\n this.badgeStyle = opts.badgeStyle || \"primary\";\n this.allowClear = opts.allowClear ? parseBool(opts.allowClear) : false;\n this.clearEnd = opts.clearEnd ? parseBool(opts.clearEnd) : false;\n this.server = opts.server || false;\n this.liveServer = opts.liveServer ? parseBool(opts.liveServer) : false;\n this.serverParams = opts.serverParams || {};\n\n if (typeof this.serverParams == \"string\") {\n this.serverParams = JSON.parse(this.serverParams);\n }\n\n this.selected = opts.selected ? opts.selected.split(\",\") : [];\n this.suggestionsThreshold = typeof opts.suggestionsThreshold != \"undefined\" ? parseInt(opts.suggestionsThreshold) : 1;\n this.validationRegex = opts.regex || \"\";\n this.separator = opts.separator ? opts.separator.split(\"|\") : [];\n this.max = opts.max ? parseInt(opts.max) : null;\n this.clearLabel = opts.clearLabel || \"Clear\";\n this.searchLabel = opts.searchLabel || \"Type a value\";\n this.valueField = opts.valueField || \"value\";\n this.labelField = opts.labelField || \"label\";\n this.keepOpen = opts.keepOpen ? parseBool(opts.keepOpen) : false;\n this.fullWidth = opts.fullWidth ? parseBool(opts.fullWidth) : false;\n this.debounceTime = opts.debounceTime ? parseInt(opts.debounceTime) : 300;\n this.baseClass = opts.baseClass || \"\";\n this.placeholder = opts.placeholder || this._getPlaceholder();\n this._keyboardNavigation = false;\n this._fireEvents = true;\n this._searchFunc = Tags.debounce(function () {\n _this._loadFromServer(true);\n }, this.debounceTime);\n this.overflowParent = null;\n this.parentForm = el.parentElement;\n\n while (this.parentForm) {\n if (this.parentForm.style.overflow === \"hidden\") {\n this.overflowParent = this.parentForm;\n }\n\n this.parentForm = this.parentForm.parentElement;\n\n if (this.parentForm && this.parentForm.nodeName == \"FORM\") {\n break;\n }\n }\n\n this.reset = this.reset.bind(this);\n\n if (this.parentForm) {\n this.parentForm.addEventListener(\"reset\", this.reset);\n } // Create elements\n\n\n this._holderElement = document.createElement(\"div\"); // this is the one holding the fake input and the dropmenu\n\n this._containerElement = document.createElement(\"div\"); // this is the one for the fake input (labels + input)\n\n this._dropElement = document.createElement(\"ul\");\n this._searchInput = document.createElement(\"input\");\n\n this._holderElement.appendChild(this._containerElement);\n\n this._containerElement.appendChild(this._searchInput);\n\n this._holderElement.appendChild(this._dropElement); // insert after select\n\n\n this._selectElement.parentNode.insertBefore(this._holderElement, this._selectElement.nextSibling); // Configure them\n\n\n this._configureHolderElement();\n\n this._configureDropElement();\n\n this._configureContainerElement();\n\n this._configureSearchInput();\n\n this.resetState();\n\n if (this.server && !this.liveServer) {\n this._loadFromServer();\n } else {\n this.resetSuggestions();\n }\n }\n /**\r\n * Attach to all elements matched by the selector\r\n * @param {string} selector\r\n * @param {Object} opts\r\n */\n\n\n _createClass(Tags, [{\n key: \"dispose\",\n value: function dispose() {\n INSTANCE_MAP[\"delete\"](this._selectElement);\n this._selectElement.style.display = \"block\";\n\n this._holderElement.parentNode.removeChild(this._holderElement);\n\n if (this.parentForm) {\n this.parentForm.removeEventListener(\"reset\", this.reset);\n }\n }\n }, {\n key: \"resetState\",\n value: function resetState() {\n if (this.isDisabled()) {\n this._holderElement.setAttribute(\"readonly\", \"\");\n\n this._searchInput.setAttribute(\"disabled\", \"\");\n } else {\n if (this._holderElement.hasAttribute(\"readonly\")) {\n this._holderElement.removeAttribute(\"readonly\");\n }\n\n if (this._searchInput.hasAttribute(\"disabled\")) {\n this._searchInput.removeAttribute(\"disabled\");\n }\n }\n }\n }, {\n key: \"resetSuggestions\",\n value: function resetSuggestions() {\n var suggestions = Array.from(this._selectElement.querySelectorAll(\"option\")).filter(function (option) {\n return !option.disabled;\n }).map(function (option) {\n return {\n value: option.getAttribute(\"value\"),\n label: option.textContent\n };\n });\n\n this._buildSuggestions(suggestions);\n }\n /**\r\n * @param {boolean} show\r\n */\n\n }, {\n key: \"_loadFromServer\",\n value: function _loadFromServer() {\n var _this2 = this;\n\n var show = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (this._abortController) {\n this._abortController.abort();\n }\n\n this._abortController = new AbortController();\n this.serverParams.query = this._searchInput.value;\n var params = new URLSearchParams(this.serverParams).toString();\n fetch(this.server + \"?\" + params, {\n signal: this._abortController.signal\n }).then(function (r) {\n return r.json();\n }).then(function (suggestions) {\n var data = suggestions.data || suggestions;\n\n _this2._buildSuggestions(data);\n\n _this2._abortController = null;\n\n if (show) {\n _this2._showSuggestions();\n }\n })[\"catch\"](function (e) {\n if (e.name === \"AbortError\") {\n return;\n }\n\n console.error(e);\n });\n }\n /**\r\n * @returns {string}\r\n */\n\n }, {\n key: \"_getPlaceholder\",\n value: function _getPlaceholder() {\n // Use placeholder and data-placeholder in priority\n if (this._selectElement.hasAttribute(\"placeholder\")) {\n return this._selectElement.getAttribute(\"placeholder\");\n }\n\n if (this._selectElement.dataset.placeholder) {\n return this._selectElement.dataset.placeholder;\n } // Fallback to first option if no value\n\n\n var firstOption = this._selectElement.querySelector(\"option\");\n\n if (!firstOption) {\n return \"\";\n }\n\n if (firstOption.hasAttribute(\"selected\")) {\n firstOption.removeAttribute(\"selected\");\n }\n\n return !firstOption.value ? firstOption.textContent : \"\";\n }\n }, {\n key: \"_configureDropElement\",\n value: function _configureDropElement() {\n var _this$_dropElement$cl,\n _this3 = this;\n\n (_this$_dropElement$cl = this._dropElement.classList).add.apply(_this$_dropElement$cl, [\"dropdown-menu\", \"p-0\"]);\n\n this._dropElement.style.maxHeight = \"280px\";\n\n if (!this.fullWidth) {\n this._dropElement.style.maxWidth = \"360px\";\n }\n\n this._dropElement.style.overflowY = \"auto\"; // If the mouse was outside, entering remove keyboard nav mode\n\n this._dropElement.addEventListener(\"mouseenter\", function (event) {\n _this3._keyboardNavigation = false;\n });\n }\n }, {\n key: \"_configureHolderElement\",\n value: function _configureHolderElement() {\n var _this$_holderElement$;\n\n (_this$_holderElement$ = this._holderElement.classList).add.apply(_this$_holderElement$, [\"form-control\", \"dropdown\"]);\n\n if (this._selectElement.classList.contains(\"form-select-lg\")) {\n this._holderElement.classList.add(\"form-control-lg\");\n }\n\n if (this._selectElement.classList.contains(\"form-select-sm\")) {\n this._holderElement.classList.add(\"form-control-sm\");\n } // If we don't have an overflow parent, we can simply inherit styles\n // If we have an overflow parent, it needs a relatively positioned element\n\n\n if (this.overflowParent) {\n this._holderElement.style.position = \"inherit\";\n }\n\n if (this._getBootstrapVersion() === 4) {\n // Prevent fixed height due to form-control\n this._holderElement.style.height = \"auto\";\n }\n }\n }, {\n key: \"_configureContainerElement\",\n value: function _configureContainerElement() {\n var _this4 = this;\n\n this._containerElement.addEventListener(\"click\", function (event) {\n if (_this4.isDisabled()) {\n return;\n }\n\n if (_this4._searchInput.style.visibility != \"hidden\") {\n _this4._searchInput.focus();\n }\n }); // add initial values\n // we use selectedOptions because single select can have a selected option\n // without a selected attribute if it's the first value\n\n\n var initialValues = this._selectElement.selectedOptions;\n\n for (var j = 0; j < initialValues.length; j++) {\n var initialValue = initialValues[j];\n\n if (!initialValue.value) {\n continue;\n } // track initial values for reset\n\n\n initialValue.dataset.init = 1;\n this.addItem(initialValue.textContent, initialValue.value);\n }\n }\n }, {\n key: \"_configureSearchInput\",\n value: function _configureSearchInput() {\n var _this5 = this;\n\n this._searchInput.type = \"text\";\n this._searchInput.autocomplete = \"off\";\n this._searchInput.spellcheck = false;\n this._searchInput.style.backgroundColor = \"transparent\";\n this._searchInput.style.border = 0;\n this._searchInput.style.outline = 0;\n this._searchInput.style.maxWidth = \"100%\";\n this._searchInput.ariaLabel = this.searchLabel;\n\n this._resetSearchInput(true);\n\n this._searchInput.addEventListener(\"input\", function (event) {\n // Add item if a separator is used\n // On mobile or copy paste, it can pass multiple chars (eg: when pressing space and it formats the string)\n if (event.data) {\n var lastChar = event.data.slice(-1);\n\n if (_this5.separator.length && _this5._searchInput.value && _this5.separator.includes(lastChar)) {\n // Remove separator even if adding is prevented\n _this5._searchInput.value = _this5._searchInput.value.slice(0, -1);\n var text = _this5._searchInput.value;\n\n _this5._add(text, null);\n\n return;\n }\n } // Adjust input width to current content\n\n\n _this5._adjustWidth(); // Check if we should display suggestions\n\n\n if (_this5._searchInput.value.length >= _this5.suggestionsThreshold) {\n if (_this5.liveServer) {\n _this5._searchFunc();\n } else {\n _this5._showSuggestions();\n }\n } else {\n _this5._hideSuggestions();\n }\n });\n\n this._searchInput.addEventListener(\"focus\", function (event) {\n if (_this5._searchInput.value.length >= _this5.suggestionsThreshold) {\n _this5._showSuggestions();\n }\n });\n\n this._searchInput.addEventListener(\"focusout\", function (event) {\n _this5._hideSuggestions();\n\n if (_this5.keepOpen) {\n _this5._resetSearchInput();\n }\n }); // keypress doesn't send arrow keys, so we use keydown\n\n\n this._searchInput.addEventListener(\"keydown\", function (event) {\n // Keycode reference : https://css-tricks.com/snippets/javascript/javascript-keycodes/\n var key = event.keyCode || event.key; // Keyboard keys\n\n switch (key) {\n case 13:\n case \"Enter\":\n event.preventDefault();\n\n var selection = _this5.getActiveSelection();\n\n if (selection) {\n selection.click();\n } else {\n // We use what is typed if not selected and not empty\n if (_this5.allowNew && _this5._searchInput.value) {\n var text = _this5._searchInput.value;\n\n _this5._add(text, null);\n }\n }\n\n break;\n\n case 38:\n case \"ArrowUp\":\n event.preventDefault();\n _this5._keyboardNavigation = true;\n\n var newSelection = _this5._moveSelectionUp(); // If we use arrow up without input and there is no new selection, hide suggestions\n\n\n if (_this5._searchInput.value.length == 0 && _this5._dropElement.classList.contains(\"show\") && !newSelection) {\n _this5._hideSuggestions();\n }\n\n break;\n\n case 40:\n case \"ArrowDown\":\n event.preventDefault();\n _this5._keyboardNavigation = true;\n\n _this5._moveSelectionDown(); // If we use arrow down without input, show suggestions\n\n\n if (_this5._searchInput.value.length == 0 && !_this5._dropElement.classList.contains(\"show\")) {\n _this5._showSuggestions();\n }\n\n break;\n\n case 8:\n case \"Backspace\":\n if (_this5._searchInput.value.length == 0) {\n _this5.removeLastItem();\n\n _this5._adjustWidth();\n\n _this5._hideSuggestions();\n }\n\n break;\n\n case 27:\n case \"Escape\":\n // We may wish to not use the suggestions\n _this5._hideSuggestions();\n\n break;\n }\n });\n }\n /**\r\n * @param {string} text\r\n * @param {string} value\r\n * @param {object} data\r\n */\n\n }, {\n key: \"_add\",\n value: function _add(text) {\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!this.canAdd(text, value)) {\n return;\n }\n\n this.addItem(text, value, data);\n\n if (this.keepOpen) {\n this._showSuggestions();\n } else {\n this._resetSearchInput();\n }\n }\n /**\r\n * @returns {HTMLElement}\r\n */\n\n }, {\n key: \"_moveSelectionUp\",\n value: function _moveSelectionUp() {\n var active = this.getActiveSelection();\n\n if (active) {\n var _active$classList, _prev$querySelector$c;\n\n var prev = active.parentNode;\n\n do {\n prev = prev.previousSibling;\n } while (prev && prev.style.display == \"none\");\n\n if (!prev) {\n return null;\n }\n\n (_active$classList = active.classList).remove.apply(_active$classList, ACTIVE_CLASSES);\n\n (_prev$querySelector$c = prev.querySelector(\"a\").classList).add.apply(_prev$querySelector$c, ACTIVE_CLASSES); // Don't use scrollIntoView as it scrolls the whole window\n\n\n prev.parentNode.scrollTop = prev.offsetTop - prev.parentNode.offsetTop;\n return prev;\n }\n\n return null;\n }\n /**\r\n * @returns {HTMLElement}\r\n */\n\n }, {\n key: \"_moveSelectionDown\",\n value: function _moveSelectionDown() {\n var active = this.getActiveSelection();\n var next = null;\n\n if (active) {\n var _active$classList2, _next$querySelector$c;\n\n next = active.parentNode;\n\n do {\n next = next.nextSibling;\n } while (next && next.style.display == \"none\");\n\n if (!next) {\n return null;\n }\n\n (_active$classList2 = active.classList).remove.apply(_active$classList2, ACTIVE_CLASSES);\n\n (_next$querySelector$c = next.querySelector(\"a\").classList).add.apply(_next$querySelector$c, ACTIVE_CLASSES); // This is the equivalent of scrollIntoView(false) but only for parent node\n\n\n if (next.offsetTop > next.parentNode.offsetHeight - next.offsetHeight) {\n next.parentNode.scrollTop += next.offsetHeight;\n }\n\n return next;\n }\n\n return next;\n }\n /**\r\n * @param {string} text\r\n * @param {string} size\r\n * @returns {Number}\r\n */\n\n }, {\n key: \"_calcTextWidth\",\n value: function _calcTextWidth(text) {\n var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var span = document.createElement(\"span\");\n document.body.appendChild(span);\n span.style.fontSize = size || \"inherit\";\n span.style.height = \"auto\";\n span.style.width = \"auto\";\n span.style.position = \"absolute\";\n span.style.whiteSpace = \"no-wrap\";\n span.innerHTML = text;\n var width = Math.ceil(span.clientWidth) + 8;\n document.body.removeChild(span);\n return width;\n }\n /**\r\n * Adjust the field to fit its content and show/hide placeholder if needed\r\n */\n\n }, {\n key: \"_adjustWidth\",\n value: function _adjustWidth() {\n if (this._searchInput.value) {\n this._searchInput.size = this._searchInput.value.length;\n } else {\n // Show the placeholder only if empty\n if (this.getSelectedValues().length) {\n this._searchInput.placeholder = \"\";\n this._searchInput.size = 1;\n } else {\n this._searchInput.size = this.placeholder.length > 0 ? this.placeholder.length : 1;\n this._searchInput.placeholder = this.placeholder;\n }\n } // If the string contains ascii chars or strange font, input size may be wrong\n\n\n var v = this._searchInput.value || this._searchInput.placeholder;\n var computedFontSize = window.getComputedStyle(this._holderElement).fontSize;\n\n var w = this._calcTextWidth(v, computedFontSize);\n\n this._searchInput.style.minWidth = w + \"px\";\n }\n /**\r\n * Add suggestions to the drop element\r\n * @param {array} suggestions\r\n */\n\n }, {\n key: \"_buildSuggestions\",\n value: function _buildSuggestions(suggestions) {\n var _this6 = this;\n\n while (this._dropElement.lastChild) {\n this._dropElement.removeChild(this._dropElement.lastChild);\n }\n\n var _loop = function _loop(i) {\n var _newChildLink$classLi;\n\n var suggestion = suggestions[i];\n\n if (!suggestion[_this6.valueField]) {\n return \"continue\";\n } // initial selection\n\n\n if (suggestion.selected || _this6.selected.includes(suggestion[_this6.valueField])) {\n _this6._add(suggestion[_this6.labelField], suggestion[_this6.valueField], suggestion.data);\n\n return \"continue\"; // no need to add as suggestion\n }\n\n var newChild = document.createElement(\"li\");\n var newChildLink = document.createElement(\"a\");\n newChild.append(newChildLink);\n\n (_newChildLink$classLi = newChildLink.classList).add.apply(_newChildLink$classLi, [\"dropdown-item\", \"text-truncate\"]);\n\n newChildLink.setAttribute(VALUE_ATTRIBUTE, suggestion[_this6.valueField]);\n newChildLink.setAttribute(\"href\", \"#\");\n newChildLink.textContent = suggestion[_this6.labelField];\n\n if (suggestion.data) {\n for (var _i2 = 0, _Object$entries = Object.entries(suggestion.data); _i2 < _Object$entries.length; _i2++) {\n var _ref3 = _Object$entries[_i2];\n\n var _ref2 = _slicedToArray(_ref3, 2);\n\n var key = _ref2[0];\n var value = _ref2[1];\n newChildLink.dataset[key] = value;\n }\n }\n\n _this6._dropElement.appendChild(newChild); // Hover sets active item\n\n\n newChildLink.addEventListener(\"mouseenter\", function (event) {\n var _newChild$querySelect;\n\n // Don't trigger enter if using arrows\n if (_this6._keyboardNavigation) {\n return;\n }\n\n _this6.removeActiveSelection();\n\n (_newChild$querySelect = newChild.querySelector(\"a\").classList).add.apply(_newChild$querySelect, ACTIVE_CLASSES);\n }); // Moving the mouse means no longer using keyboard\n\n newChildLink.addEventListener(\"mousemove\", function (event) {\n _this6._keyboardNavigation = false;\n });\n newChildLink.addEventListener(\"mousedown\", function (event) {\n // Otherwise searchInput would lose focus and close the menu\n event.preventDefault();\n });\n newChildLink.addEventListener(\"click\", function (event) {\n event.preventDefault();\n\n _this6._add(newChildLink.textContent, newChildLink.getAttribute(VALUE_ATTRIBUTE), newChildLink.dataset);\n });\n };\n\n for (var i = 0; i < suggestions.length; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.removeAll(); // Reset doesn't fire change event\n\n this._fireEvents = false;\n\n var initialValues = this._selectElement.querySelectorAll(\"option[data-init]\");\n\n for (var j = 0; j < initialValues.length; j++) {\n var initialValue = initialValues[j];\n this.addItem(initialValue.textContent, initialValue.value);\n }\n\n this._adjustWidth();\n\n this._fireEvents = true;\n }\n /**\r\n * @param {bool} init Pass true during init\r\n */\n\n }, {\n key: \"_resetSearchInput\",\n value: function _resetSearchInput() {\n var init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this._searchInput.value = \"\";\n\n this._adjustWidth();\n\n if (!init) {\n this._hideSuggestions(); // Trigger input even to show suggestions if needed\n\n\n this._searchInput.dispatchEvent(new Event(\"input\"));\n } // We use visibility instead of display to keep layout intact\n\n\n if (this.max && this.getSelectedValues().length >= this.max) {\n this._searchInput.style.visibility = \"hidden\";\n } else if (this._searchInput.style.visibility == \"hidden\") {\n this._searchInput.style.visibility = \"visible\";\n }\n\n if (this.isSingle() && !init) {\n document.activeElement.blur();\n }\n }\n /**\r\n * @returns {array}\r\n */\n\n }, {\n key: \"getSelectedValues\",\n value: function getSelectedValues() {\n // option[selected] is used rather that selectedOptions as it works more consistently\n var selected = this._selectElement.querySelectorAll(\"option[selected]\");\n\n return Array.from(selected).map(function (el) {\n return el.value;\n });\n }\n /**\r\n * The element create with buildSuggestions\r\n */\n\n }, {\n key: \"_showSuggestions\",\n value: function _showSuggestions() {\n if (this._searchInput.style.visibility == \"hidden\") {\n return;\n } // Get search value\n\n\n var search = this._searchInput.value.toLocaleLowerCase(); // Get current values\n\n\n var values = this.getSelectedValues(); // Filter the list according to search string\n\n var list = this._dropElement.querySelectorAll(\"li\");\n\n var found = false;\n var firstItem = null;\n var hasPossibleValues = false;\n\n for (var i = 0; i < list.length; i++) {\n var _link$classList;\n\n var item = list[i];\n var text = item.textContent.toLocaleLowerCase();\n var link = item.querySelector(\"a\"); // Remove previous selection\n\n (_link$classList = link.classList).remove.apply(_link$classList, ACTIVE_CLASSES); // Hide selected values\n\n\n if (values.indexOf(link.getAttribute(VALUE_ATTRIBUTE)) != -1) {\n item.style.display = \"none\";\n continue;\n }\n\n hasPossibleValues = true; // Check search length since we can trigger dropdown with arrow\n\n var isMatched = search.length === 0 || text.indexOf(search) !== -1;\n\n if (this.showAllSuggestions || this.suggestionsThreshold === 0 || isMatched) {\n item.style.display = \"list-item\";\n found = true;\n\n if (!firstItem && isMatched) {\n firstItem = item;\n }\n } else {\n item.style.display = \"none\";\n }\n }\n\n if (firstItem || this.showAllSuggestions) {\n this._holderElement.classList.remove(\"is-invalid\"); // Always select first item\n\n\n if (firstItem) {\n var _firstItem$querySelec;\n\n (_firstItem$querySelec = firstItem.querySelector(\"a\").classList).add.apply(_firstItem$querySelec, ACTIVE_CLASSES);\n\n firstItem.parentNode.scrollTop = firstItem.offsetTop;\n }\n } else {\n // No item and we don't allow new items => error\n if (!this.allowNew && !(search.length === 0 && !hasPossibleValues)) {\n this._holderElement.classList.add(\"is-invalid\");\n } else if (this.validationRegex && this.isInvalid()) {\n this._holderElement.classList.remove(\"is-invalid\");\n }\n } // Remove dropdown if not found or to show validation message\n\n\n if (!found || this.isInvalid()) {\n this._dropElement.classList.remove(\"show\");\n } else {\n // Or show it if necessary\n this._dropElement.classList.add(\"show\");\n\n if (this.fullWidth) {\n // Use full input width\n this._dropElement.style.left = -1 + \"px\";\n this._dropElement.style.width = this._holderElement.offsetWidth + \"px\";\n } else {\n // Position next to search input\n var left = this._searchInput.offsetLeft; // Overflow right\n\n var w = document.body.offsetWidth - 1; // avoid rounding issues\n\n var scrollbarOffset = 30; // scrollbars are not taken into account\n\n var wdiff = w - (left + this._dropElement.offsetWidth) - scrollbarOffset; // If the dropdowns goes out of the viewport, remove the diff from the left position\n\n if (wdiff < 0) {\n left = left + wdiff;\n }\n\n this._dropElement.style.left = left + \"px\"; // Overflow bottom\n\n var h = document.body.offsetHeight;\n\n var bottom = this._searchInput.getBoundingClientRect().y + window.pageYOffset + this._dropElement.offsetHeight;\n\n var hdiff = h - bottom;\n\n if (hdiff < 0) {\n // We display above input\n this._dropElement.style.transform = \"translateY(calc(-100% - \" + scrollbarOffset + \"px))\";\n } else {\n this._dropElement.style.transform = \"none\";\n }\n }\n }\n }\n /**\r\n * The element create with buildSuggestions\r\n */\n\n }, {\n key: \"_hideSuggestions\",\n value: function _hideSuggestions() {\n this._dropElement.classList.remove(\"show\");\n\n this._holderElement.classList.remove(\"is-invalid\");\n\n this.removeActiveSelection();\n }\n /**\r\n * @returns {Number}\r\n */\n\n }, {\n key: \"_getBootstrapVersion\",\n value: function _getBootstrapVersion() {\n var ver = 5; // If we have jQuery and the tooltip plugin for BS4\n\n if (window.jQuery && $.fn.tooltip != undefined && $.fn.tooltip.Constructor != undefined) {\n ver = parseInt($.fn.tooltip.Constructor.VERSION.charAt(0));\n }\n\n return ver;\n }\n /**\r\n * Find if label is already selected (based on attribute)\r\n * @param {string} text\r\n * @returns {boolean}\r\n */\n\n }, {\n key: \"_isSelected\",\n value: function _isSelected(text) {\n var opt = Array.from(this._selectElement.querySelectorAll(\"option\")).find(function (el) {\n return el.textContent == text;\n });\n\n if (opt && opt.getAttribute(\"selected\")) {\n return true;\n }\n\n return false;\n }\n /**\r\n * Checks if value matches a configured regex\r\n * @param {string} value\r\n * @returns {boolean}\r\n */\n\n }, {\n key: \"_validateRegex\",\n value: function _validateRegex(value) {\n var regex = new RegExp(this.validationRegex.trim());\n return regex.test(value);\n }\n /**\r\n * @returns {HTMLElement}\r\n */\n\n }, {\n key: \"getActiveSelection\",\n value: function getActiveSelection() {\n return this._dropElement.querySelector(\"a.\" + ACTIVE_CLASS);\n }\n }, {\n key: \"removeActiveSelection\",\n value: function removeActiveSelection() {\n var selection = this.getActiveSelection();\n\n if (selection) {\n var _selection$classList;\n\n (_selection$classList = selection.classList).remove.apply(_selection$classList, ACTIVE_CLASSES);\n }\n }\n }, {\n key: \"removeAll\",\n value: function removeAll() {\n var _this7 = this;\n\n var items = this.getSelectedValues();\n items.forEach(function (item) {\n _this7.removeItem(item, true);\n });\n\n this._adjustWidth();\n }\n /**\r\n * @param {boolean} noEvents\r\n */\n\n }, {\n key: \"removeLastItem\",\n value: function removeLastItem(noEvents) {\n var items = this._containerElement.querySelectorAll(\"span\");\n\n if (!items.length) {\n return;\n }\n\n var lastItem = items[items.length - 1];\n this.removeItem(lastItem.getAttribute(VALUE_ATTRIBUTE), noEvents);\n }\n /**\r\n * @returns {boolean}\r\n */\n\n }, {\n key: \"isDisabled\",\n value: function isDisabled() {\n return this._selectElement.hasAttribute(\"disabled\") || this._selectElement.disabled || this._selectElement.hasAttribute(\"readonly\");\n }\n /**\r\n * @returns {boolean}\r\n */\n\n }, {\n key: \"isInvalid\",\n value: function isInvalid() {\n return this._holderElement.classList.contains(\"is-invalid\");\n }\n /**\r\n * @returns {boolean}\r\n */\n\n }, {\n key: \"isSingle\",\n value: function isSingle() {\n return !this._selectElement.hasAttribute(\"multiple\");\n }\n /**\r\n * @param {string} text\r\n * @param {string} value\r\n * @returns {boolean}\r\n */\n\n }, {\n key: \"canAdd\",\n value: function canAdd(text) {\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!value) {\n value = text;\n } // Check invalid input\n\n\n if (!text) {\n return false;\n } // Check disabled\n\n\n if (this.isDisabled()) {\n return false;\n } // Check already selected input (single will replace)\n\n\n if (!this.isSingle() && this._isSelected(text)) {\n return false;\n } // Check for max\n\n\n if (this.max && this.getSelectedValues().length >= this.max) {\n return false;\n } // Check for regex\n\n\n if (this.validationRegex && !this._validateRegex(text)) {\n this._holderElement.classList.add(\"is-invalid\");\n\n return false;\n }\n\n return true;\n }\n /**\r\n * You might want to use canAdd before to ensure the item is valid\r\n * @param {string} text\r\n * @param {string} value\r\n * @param {object} data\r\n */\n\n }, {\n key: \"addItem\",\n value: function addItem(text) {\n var _span$classList,\n _this8 = this;\n\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!value) {\n value = text;\n } // Single items remove first\n\n\n if (this.isSingle() && this.getSelectedValues().length) {\n this.removeLastItem(true);\n }\n\n var bver = this._getBootstrapVersion();\n\n var opt = this._selectElement.querySelector('option[value=\"' + value + '\"]');\n\n if (opt) {\n data = opt.dataset;\n } // create span\n\n\n var html = text;\n var span = document.createElement(\"span\");\n var classes = [\"badge\"];\n var badgeStyle = this.badgeStyle;\n\n if (data.badgeStyle) {\n badgeStyle = data.badgeStyle;\n }\n\n if (data.badgeClass) {\n var _classes;\n\n (_classes = classes).push.apply(_classes, _toConsumableArray(data.badgeClass.split(\" \")));\n }\n\n if (this.baseClass) {\n var _classes2;\n\n // custom style\n bver === 5 ? classes.push(\"me-2\") : classes.push(\"mr-2\");\n\n (_classes2 = classes).push.apply(_classes2, _toConsumableArray(this.baseClass.split(\" \")));\n } else if (bver === 5) {\n //https://getbootstrap.com/docs/5.1/components/badge/\n classes = [].concat(_toConsumableArray(classes), [\"me-2\", \"bg-\" + badgeStyle, \"mw-100\"]);\n } else {\n // https://getbootstrap.com/docs/4.6/components/badge/\n classes = [].concat(_toConsumableArray(classes), [\"mr-2\", \"badge-\" + badgeStyle]);\n }\n\n (_span$classList = span.classList).add.apply(_span$classList, _toConsumableArray(classes));\n\n span.setAttribute(VALUE_ATTRIBUTE, value);\n\n if (this.allowClear) {\n var closeClass = classes.includes(\"text-dark\") ? \"btn-close\" : \"btn-close-white\";\n var btnMargin;\n var btnFloat;\n\n if (this.clearEnd) {\n btnMargin = bver === 5 ? \"ms-2\" : \"ml-2\";\n btnFloat = bver === 5 ? \"float-end\" : \"float:right;\";\n } else {\n btnMargin = bver === 5 ? \"me-2\" : \"mr-2\";\n btnFloat = bver === 5 ? \"float-start\" : \"float:left;\";\n }\n\n var btn = bver === 5 ? '' : '';\n html = btn + html;\n }\n\n span.innerHTML = html;\n\n this._containerElement.insertBefore(span, this._searchInput);\n\n if (this.allowClear) {\n span.querySelector(\"button\").addEventListener(\"click\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!_this8.isDisabled()) {\n _this8.removeItem(value);\n\n document.activeElement.blur();\n\n _this8._adjustWidth();\n }\n });\n } // we need to create a new option\n\n\n if (!opt) {\n opt = document.createElement(\"option\");\n opt.value = value;\n opt.textContent = text; // innerText is not well supported by jsdom\n // Pass along data provided\n\n for (var _i3 = 0, _Object$entries2 = Object.entries(data); _i3 < _Object$entries2.length; _i3++) {\n var _ref6 = _Object$entries2[_i3];\n\n var _ref5 = _slicedToArray(_ref6, 2);\n\n var key = _ref5[0];\n var _value = _ref5[1];\n opt.dataset[key] = _value;\n }\n\n this._selectElement.appendChild(opt);\n } // update select, we need to set attribute for option[selected]\n\n\n opt.setAttribute(\"selected\", \"selected\");\n opt.selected = true; // Fire change event\n\n if (this._fireEvents) {\n this._selectElement.dispatchEvent(new Event(\"change\", {\n bubbles: true\n }));\n }\n }\n /**\r\n * @param {string} value\r\n * @param {boolean} value\r\n */\n\n }, {\n key: \"removeItem\",\n value: function removeItem(value) {\n var noEvents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var item = this._containerElement.querySelector(\"span[\" + VALUE_ATTRIBUTE + '=\"' + value + '\"]');\n\n if (!item) {\n return;\n }\n\n item.remove(); // update select\n\n var opt = this._selectElement.querySelector('option[value=\"' + value + '\"]');\n\n if (opt) {\n opt.removeAttribute(\"selected\");\n opt.selected = false; // Fire change event\n\n if (this._fireEvents && !noEvents) {\n this._selectElement.dispatchEvent(new Event(\"change\", {\n bubbles: true\n }));\n }\n } // Make input visible\n\n\n if (this._searchInput.style.visibility == \"hidden\" && this.max && this.getSelectedValues().length < this.max) {\n this._searchInput.style.visibility = \"visible\";\n }\n }\n }], [{\n key: \"init\",\n value: function init() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"select[multiple]\";\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var list = document.querySelectorAll(selector);\n\n for (var i = 0; i < list.length; i++) {\n if (Tags.getInstance(list[i])) {\n continue;\n }\n\n new Tags(list[i], opts);\n }\n }\n /**\r\n * @param {HTMLSelectElement} el\r\n */\n\n }, {\n key: \"getInstance\",\n value: function getInstance(el) {\n if (INSTANCE_MAP.has(el)) {\n return INSTANCE_MAP.get(el);\n }\n }\n /**\r\n * @param {Function} func\r\n * @param {number} timeout\r\n * @returns {Function}\r\n */\n\n }, {\n key: \"debounce\",\n value: function debounce(func) {\n var _this9 = this;\n\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n var timer;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n clearTimeout(timer);\n timer = setTimeout(function () {\n func.apply(_this9, args);\n }, timeout);\n };\n }\n }]);\n\n return Tags;\n}();\n\nexport default Tags;","/**\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","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\nStimulus 3.0.0\nCopyright © 2021 Basecamp, LLC\n */\nvar EventListener = /*#__PURE__*/function () {\n function EventListener(eventTarget, eventName, eventOptions) {\n _classCallCheck(this, EventListener);\n\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n\n _createClass(EventListener, [{\n key: \"connect\",\n value: function connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n }, {\n key: \"bindingConnected\",\n value: function bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n }, {\n key: \"bindingDisconnected\",\n value: function bindingDisconnected(binding) {\n this.unorderedBindings[\"delete\"](binding);\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n var extendedEvent = extendEvent(event);\n\n var _iterator = _createForOfIteratorHelper(this.bindings),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var binding = _step.value;\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"bindings\",\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n }]);\n\n return EventListener;\n}();\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var _stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n\n _stopImmediatePropagation.call(this);\n }\n });\n }\n}\n\nvar Dispatcher = /*#__PURE__*/function () {\n function Dispatcher(application) {\n _classCallCheck(this, Dispatcher);\n\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n _createClass(Dispatcher, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n }\n }, {\n key: \"eventListeners\",\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n }\n }, {\n key: \"bindingConnected\",\n value: function bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n }, {\n key: \"bindingDisconnected\",\n value: function bindingDisconnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, \"Error \".concat(message), detail);\n }\n }, {\n key: \"fetchEventListenerForBinding\",\n value: function fetchEventListenerForBinding(binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n }, {\n key: \"fetchEventListener\",\n value: function fetchEventListener(eventTarget, eventName, eventOptions) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var cacheKey = this.cacheKey(eventName, eventOptions);\n var eventListener = eventListenerMap.get(cacheKey);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n\n return eventListener;\n }\n }, {\n key: \"createEventListener\",\n value: function createEventListener(eventTarget, eventName, eventOptions) {\n var eventListener = new EventListener(eventTarget, eventName, eventOptions);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n }\n }, {\n key: \"fetchEventListenerMapForEventTarget\",\n value: function fetchEventListenerMapForEventTarget(eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n }\n }, {\n key: \"cacheKey\",\n value: function cacheKey(eventName, eventOptions) {\n var parts = [eventName];\n Object.keys(eventOptions).sort().forEach(function (key) {\n parts.push(\"\".concat(eventOptions[key] ? \"\" : \"!\").concat(key));\n });\n return parts.join(\":\");\n }\n }]);\n\n return Dispatcher;\n}();\n\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\n\nfunction parseActionDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce(function (options, token) {\n return Object.assign(options, _defineProperty({}, token.replace(/^!/, \"\"), !/^!/.test(token)));\n }, {});\n}\n\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, function (_, _char) {\n return _char.toUpperCase();\n });\n}\n\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, _char2) {\n return \"-\".concat(_char2.toLowerCase());\n });\n}\n\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nvar Action = /*#__PURE__*/function () {\n function Action(element, index, descriptor) {\n _classCallCheck(this, Action);\n\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n _createClass(Action, [{\n key: \"toString\",\n value: function toString() {\n var eventNameSuffix = this.eventTargetName ? \"@\".concat(this.eventTargetName) : \"\";\n return \"\".concat(this.eventName).concat(eventNameSuffix, \"->\").concat(this.identifier, \"#\").concat(this.methodName);\n }\n }, {\n key: \"params\",\n get: function get() {\n if (this.eventTarget instanceof Element) {\n return this.getParamsFromEventTargetAttributes(this.eventTarget);\n } else {\n return {};\n }\n }\n }, {\n key: \"getParamsFromEventTargetAttributes\",\n value: function getParamsFromEventTargetAttributes(eventTarget) {\n var params = {};\n var pattern = new RegExp(\"^data-\".concat(this.identifier, \"-(.+)-param$\"));\n var attributes = Array.from(eventTarget.attributes);\n attributes.forEach(function (_ref) {\n var name = _ref.name,\n value = _ref.value;\n var match = name.match(pattern);\n var key = match && match[1];\n\n if (key) {\n Object.assign(params, _defineProperty({}, camelize(key), typecast(value)));\n }\n });\n return params;\n }\n }, {\n key: \"eventTargetName\",\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n }\n }], [{\n key: \"forToken\",\n value: function forToken(token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n }\n }]);\n\n return Action;\n}();\n\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"input\";\n }\n};\n\nfunction getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}\n\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\n\nvar Binding = /*#__PURE__*/function () {\n function Binding(context, action) {\n _classCallCheck(this, Binding);\n\n this.context = context;\n this.action = action;\n }\n\n _createClass(Binding, [{\n key: \"index\",\n get: function get() {\n return this.action.index;\n }\n }, {\n key: \"eventTarget\",\n get: function get() {\n return this.action.eventTarget;\n }\n }, {\n key: \"eventOptions\",\n get: function get() {\n return this.action.eventOptions;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n }\n }, {\n key: \"eventName\",\n get: function get() {\n return this.action.eventName;\n }\n }, {\n key: \"method\",\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\".concat(this.action, \"\\\" references undefined method \\\"\").concat(this.methodName, \"\\\"\"));\n }\n }, {\n key: \"invokeWithEvent\",\n value: function invokeWithEvent(event) {\n var target = event.target,\n currentTarget = event.currentTarget;\n\n try {\n var params = this.action.params;\n var actionEvent = Object.assign(event, {\n params: params\n });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, {\n event: event,\n target: target,\n currentTarget: currentTarget,\n action: this.methodName\n });\n } catch (error) {\n var identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\".concat(this.action, \"\\\"\"), detail);\n }\n }\n }, {\n key: \"willBeInvokedByEvent\",\n value: function willBeInvokedByEvent(event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n }\n }, {\n key: \"controller\",\n get: function get() {\n return this.context.controller;\n }\n }, {\n key: \"methodName\",\n get: function get() {\n return this.action.methodName;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }]);\n\n return Binding;\n}();\n\nvar ElementObserver = /*#__PURE__*/function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n _classCallCheck(this, ElementObserver);\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n _createClass(ElementObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _Array$from = Array.from(this.elements); _i < _Array$from.length; _i++) {\n var element = _Array$from[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _i2 = 0, _Array$from2 = Array.from(matches); _i2 < _Array$from2.length; _i2++) {\n var _element = _Array$from2[_i2];\n this.addElement(_element);\n }\n }\n }\n }, {\n key: \"processMutations\",\n value: function processMutations(mutations) {\n if (this.started) {\n var _iterator2 = _createForOfIteratorHelper(mutations),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var mutation = _step2.value;\n this.processMutation(mutation);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n }, {\n key: \"processMutation\",\n value: function processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n }, {\n key: \"processAttributeChange\",\n value: function processAttributeChange(node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n }, {\n key: \"processRemovedNodes\",\n value: function processRemovedNodes(nodes) {\n for (var _i3 = 0, _Array$from3 = Array.from(nodes); _i3 < _Array$from3.length; _i3++) {\n var node = _Array$from3[_i3];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n }, {\n key: \"processAddedNodes\",\n value: function processAddedNodes(nodes) {\n for (var _i4 = 0, _Array$from4 = Array.from(nodes); _i4 < _Array$from4.length; _i4++) {\n var node = _Array$from4[_i4];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n return this.delegate.matchElement(element);\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree() {\n var tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n }, {\n key: \"processTree\",\n value: function processTree(tree, processor) {\n var _iterator3 = _createForOfIteratorHelper(this.matchElementsInTree(tree)),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var element = _step3.value;\n processor.call(this, element);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"elementFromNode\",\n value: function elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n }, {\n key: \"elementIsActive\",\n value: function elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n }, {\n key: \"addElement\",\n value: function addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n }, {\n key: \"removeElement\",\n value: function removeElement(element) {\n if (this.elements.has(element)) {\n this.elements[\"delete\"](element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n }]);\n\n return ElementObserver;\n}();\n\nvar AttributeObserver = /*#__PURE__*/function () {\n function AttributeObserver(element, attributeName, delegate) {\n _classCallCheck(this, AttributeObserver);\n\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n _createClass(AttributeObserver, [{\n key: \"element\",\n get: function get() {\n return this.elementObserver.element;\n }\n }, {\n key: \"selector\",\n get: function get() {\n return \"[\".concat(this.attributeName, \"]\");\n }\n }, {\n key: \"start\",\n value: function start() {\n this.elementObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.elementObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.elementObserver.refresh();\n }\n }, {\n key: \"started\",\n get: function get() {\n return this.elementObserver.started;\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree(tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n }, {\n key: \"elementMatched\",\n value: function elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n }, {\n key: \"elementUnmatched\",\n value: function elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n }, {\n key: \"elementAttributeChanged\",\n value: function elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n }]);\n\n return AttributeObserver;\n}();\n\nvar StringMapObserver = /*#__PURE__*/function () {\n function StringMapObserver(element, delegate) {\n var _this2 = this;\n\n _classCallCheck(this, StringMapObserver);\n\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this2.processMutations(mutations);\n });\n }\n\n _createClass(StringMapObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (this.started) {\n var _iterator4 = _createForOfIteratorHelper(this.knownAttributeNames),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var attributeName = _step4.value;\n this.refreshAttribute(attributeName, null);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }\n }, {\n key: \"processMutations\",\n value: function processMutations(mutations) {\n if (this.started) {\n var _iterator5 = _createForOfIteratorHelper(mutations),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var mutation = _step5.value;\n this.processMutation(mutation);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n }, {\n key: \"processMutation\",\n value: function processMutation(mutation) {\n var attributeName = mutation.attributeName;\n\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n }, {\n key: \"refreshAttribute\",\n value: function refreshAttribute(attributeName, oldValue) {\n var key = this.delegate.getStringMapKeyForAttribute(attributeName);\n\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n\n var value = this.element.getAttribute(attributeName);\n\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n\n if (value == null) {\n var _oldValue = this.stringMap.get(attributeName);\n\n this.stringMap[\"delete\"](attributeName);\n if (_oldValue) this.stringMapKeyRemoved(key, attributeName, _oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n }, {\n key: \"stringMapKeyAdded\",\n value: function stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n }, {\n key: \"stringMapValueChanged\",\n value: function stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n }, {\n key: \"stringMapKeyRemoved\",\n value: function stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n }, {\n key: \"knownAttributeNames\",\n get: function get() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n }, {\n key: \"currentAttributeNames\",\n get: function get() {\n return Array.from(this.element.attributes).map(function (attribute) {\n return attribute.name;\n });\n }\n }, {\n key: \"recordedAttributeNames\",\n get: function get() {\n return Array.from(this.stringMap.keys());\n }\n }]);\n\n return StringMapObserver;\n}();\n\nfunction _add(map, key, value) {\n fetch(map, key).add(value);\n}\n\nfunction del(map, key, value) {\n fetch(map, key)[\"delete\"](value);\n prune(map, key);\n}\n\nfunction fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\n\nfunction prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map[\"delete\"](key);\n }\n}\n\nvar Multimap = /*#__PURE__*/function () {\n function Multimap() {\n _classCallCheck(this, Multimap);\n\n this.valuesByKey = new Map();\n }\n\n _createClass(Multimap, [{\n key: \"keys\",\n get: function get() {\n return Array.from(this.valuesByKey.keys());\n }\n }, {\n key: \"values\",\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n }\n }, {\n key: \"size\",\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n }\n }, {\n key: \"add\",\n value: function add(key, value) {\n _add(this.valuesByKey, key, value);\n }\n }, {\n key: \"delete\",\n value: function _delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n }, {\n key: \"has\",\n value: function has(key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n }, {\n key: \"hasKey\",\n value: function hasKey(key) {\n return this.valuesByKey.has(key);\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n }\n }, {\n key: \"getValuesForKey\",\n value: function getValuesForKey(key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n }, {\n key: \"getKeysForValue\",\n value: function getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n values = _ref3[1];\n\n return values.has(value);\n }).map(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n key = _ref5[0],\n values = _ref5[1];\n\n return key;\n });\n }\n }]);\n\n return Multimap;\n}();\n\nvar IndexedMultimap = /*#__PURE__*/function (_Multimap) {\n _inherits(IndexedMultimap, _Multimap);\n\n var _super = _createSuper(IndexedMultimap);\n\n function IndexedMultimap() {\n var _this3;\n\n _classCallCheck(this, IndexedMultimap);\n\n _this3 = _super.call(this);\n _this3.keysByValue = new Map();\n return _this3;\n }\n\n _createClass(IndexedMultimap, [{\n key: \"values\",\n get: function get() {\n return Array.from(this.keysByValue.keys());\n }\n }, {\n key: \"add\",\n value: function add(key, value) {\n _get(_getPrototypeOf(IndexedMultimap.prototype), \"add\", this).call(this, key, value);\n\n _add(this.keysByValue, value, key);\n }\n }, {\n key: \"delete\",\n value: function _delete(key, value) {\n _get(_getPrototypeOf(IndexedMultimap.prototype), \"delete\", this).call(this, key, value);\n\n del(this.keysByValue, value, key);\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(value) {\n return this.keysByValue.has(value);\n }\n }, {\n key: \"getKeysForValue\",\n value: function getKeysForValue(value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n }]);\n\n return IndexedMultimap;\n}(Multimap);\n\nvar TokenListObserver = /*#__PURE__*/function () {\n function TokenListObserver(element, attributeName, delegate) {\n _classCallCheck(this, TokenListObserver);\n\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n _createClass(TokenListObserver, [{\n key: \"started\",\n get: function get() {\n return this.attributeObserver.started;\n }\n }, {\n key: \"start\",\n value: function start() {\n this.attributeObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.attributeObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.attributeObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.attributeObserver.element;\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return this.attributeObserver.attributeName;\n }\n }, {\n key: \"elementMatchedAttribute\",\n value: function elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n }, {\n key: \"elementAttributeValueChanged\",\n value: function elementAttributeValueChanged(element) {\n var _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n }, {\n key: \"elementUnmatchedAttribute\",\n value: function elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n }, {\n key: \"tokensMatched\",\n value: function tokensMatched(tokens) {\n var _this4 = this;\n\n tokens.forEach(function (token) {\n return _this4.tokenMatched(token);\n });\n }\n }, {\n key: \"tokensUnmatched\",\n value: function tokensUnmatched(tokens) {\n var _this5 = this;\n\n tokens.forEach(function (token) {\n return _this5.tokenUnmatched(token);\n });\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement[\"delete\"](token.element, token);\n }\n }, {\n key: \"refreshTokensForElement\",\n value: function refreshTokensForElement(element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n previousToken = _ref7[0],\n currentToken = _ref7[1];\n\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n }, {\n key: \"readTokensForElement\",\n value: function readTokensForElement(element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n }]);\n\n return TokenListObserver;\n}();\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nvar ValueListObserver = /*#__PURE__*/function () {\n function ValueListObserver(element, attributeName, delegate) {\n _classCallCheck(this, ValueListObserver);\n\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n _createClass(ValueListObserver, [{\n key: \"started\",\n get: function get() {\n return this.tokenListObserver.started;\n }\n }, {\n key: \"start\",\n value: function start() {\n this.tokenListObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.tokenListObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.tokenListObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.tokenListObserver.element;\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return this.tokenListObserver.attributeName;\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(token) {\n var element = token.element;\n\n var _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(token) {\n var element = token.element;\n\n var _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element)[\"delete\"](token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n }, {\n key: \"fetchParseResultForToken\",\n value: function fetchParseResultForToken(token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n }\n }, {\n key: \"fetchValuesByTokenForElement\",\n value: function fetchValuesByTokenForElement(element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n }\n }, {\n key: \"parseToken\",\n value: function parseToken(token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n }\n }]);\n\n return ValueListObserver;\n}();\n\nvar BindingObserver = /*#__PURE__*/function () {\n function BindingObserver(context, delegate) {\n _classCallCheck(this, BindingObserver);\n\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n _createClass(BindingObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"actionAttribute\",\n get: function get() {\n return this.schema.actionAttribute;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.context.schema;\n }\n }, {\n key: \"bindings\",\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n }\n }, {\n key: \"connectAction\",\n value: function connectAction(action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n }, {\n key: \"disconnectAction\",\n value: function disconnectAction(action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction[\"delete\"](action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n }, {\n key: \"disconnectAllActions\",\n value: function disconnectAllActions() {\n var _this6 = this;\n\n this.bindings.forEach(function (binding) {\n return _this6.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }\n }, {\n key: \"parseValueForToken\",\n value: function parseValueForToken(token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n }, {\n key: \"elementMatchedValue\",\n value: function elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n }, {\n key: \"elementUnmatchedValue\",\n value: function elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n }]);\n\n return BindingObserver;\n}();\n\nvar ValueObserver = /*#__PURE__*/function () {\n function ValueObserver(context, receiver) {\n _classCallCheck(this, ValueObserver);\n\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n this.invokeChangedCallbacksForDefaultValues();\n }\n\n _createClass(ValueObserver, [{\n key: \"start\",\n value: function start() {\n this.stringMapObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.stringMapObserver.stop();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"controller\",\n get: function get() {\n return this.context.controller;\n }\n }, {\n key: \"getStringMapKeyForAttribute\",\n value: function getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n }, {\n key: \"stringMapKeyAdded\",\n value: function stringMapKeyAdded(key, attributeName) {\n var descriptor = this.valueDescriptorMap[attributeName];\n\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n }, {\n key: \"stringMapValueChanged\",\n value: function stringMapValueChanged(value, name, oldValue) {\n var descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n\n this.invokeChangedCallback(name, value, oldValue);\n }\n }, {\n key: \"stringMapKeyRemoved\",\n value: function stringMapKeyRemoved(key, attributeName, oldValue) {\n var descriptor = this.valueDescriptorNameMap[key];\n\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n }, {\n key: \"invokeChangedCallbacksForDefaultValues\",\n value: function invokeChangedCallbacksForDefaultValues() {\n var _iterator6 = _createForOfIteratorHelper(this.valueDescriptors),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _ref9 = _step6.value;\n var key = _ref9.key;\n var name = _ref9.name;\n var defaultValue = _ref9.defaultValue;\n var writer = _ref9.writer;\n\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n }, {\n key: \"invokeChangedCallback\",\n value: function invokeChangedCallback(name, rawValue, rawOldValue) {\n var changedMethodName = \"\".concat(name, \"Changed\");\n var changedMethod = this.receiver[changedMethodName];\n\n if (typeof changedMethod == \"function\") {\n var descriptor = this.valueDescriptorNameMap[name];\n var value = descriptor.reader(rawValue);\n var oldValue = rawOldValue;\n\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n\n changedMethod.call(this.receiver, value, oldValue);\n }\n }\n }, {\n key: \"valueDescriptors\",\n get: function get() {\n var valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(function (key) {\n return valueDescriptorMap[key];\n });\n }\n }, {\n key: \"valueDescriptorNameMap\",\n get: function get() {\n var _this7 = this;\n\n var descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(function (key) {\n var descriptor = _this7.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(attributeName) {\n var descriptor = this.valueDescriptorNameMap[attributeName];\n var hasMethodName = \"has\".concat(capitalize(descriptor.name));\n return this.receiver[hasMethodName];\n }\n }]);\n\n return ValueObserver;\n}();\n\nvar TargetObserver = /*#__PURE__*/function () {\n function TargetObserver(context, delegate) {\n _classCallCheck(this, TargetObserver);\n\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n\n _createClass(TargetObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(_ref10) {\n var element = _ref10.element,\n name = _ref10.content;\n\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(_ref11) {\n var element = _ref11.element,\n name = _ref11.content;\n this.disconnectTarget(element, name);\n }\n }, {\n key: \"connectTarget\",\n value: function connectTarget(element, name) {\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n this.delegate.targetConnected(element, name);\n }\n }\n }, {\n key: \"disconnectTarget\",\n value: function disconnectTarget(element, name) {\n if (this.targetsByName.has(name, element)) {\n this.targetsByName[\"delete\"](name, element);\n this.delegate.targetDisconnected(element, name);\n }\n }\n }, {\n key: \"disconnectAllTargets\",\n value: function disconnectAllTargets() {\n var _iterator7 = _createForOfIteratorHelper(this.targetsByName.keys),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var name = _step7.value;\n\n var _iterator8 = _createForOfIteratorHelper(this.targetsByName.getValuesForKey(name)),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var element = _step8.value;\n this.disconnectTarget(element, name);\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return \"data-\".concat(this.context.identifier, \"-target\");\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }]);\n\n return TargetObserver;\n}();\n\nvar Context = /*#__PURE__*/function () {\n function Context(module, scope) {\n var _this8 = this;\n\n _classCallCheck(this, Context);\n\n this.logDebugActivity = function (functionName) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var identifier = _this8.identifier,\n controller = _this8.controller,\n element = _this8.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n\n _this8.application.logDebugActivity(_this8.identifier, functionName, detail);\n };\n\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n _createClass(Context, [{\n key: \"connect\",\n value: function connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n }, {\n key: \"application\",\n get: function get() {\n return this.module.application;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.module.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.application.schema;\n }\n }, {\n key: \"dispatcher\",\n get: function get() {\n return this.application.dispatcher;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"parentElement\",\n get: function get() {\n return this.element.parentElement;\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \".concat(message), detail);\n }\n }, {\n key: \"targetConnected\",\n value: function targetConnected(element, name) {\n this.invokeControllerMethod(\"\".concat(name, \"TargetConnected\"), element);\n }\n }, {\n key: \"targetDisconnected\",\n value: function targetDisconnected(element, name) {\n this.invokeControllerMethod(\"\".concat(name, \"TargetDisconnected\"), element);\n }\n }, {\n key: \"invokeControllerMethod\",\n value: function invokeControllerMethod(methodName) {\n var controller = this.controller;\n\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n controller[methodName].apply(controller, args);\n }\n }\n }]);\n\n return Context;\n}();\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (values, constructor) {\n getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) {\n return values.add(name);\n });\n return values;\n }, new Set()));\n}\n\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce(function (pairs, constructor) {\n pairs.push.apply(pairs, _toConsumableArray(getOwnStaticObjectPairs(constructor, propertyName)));\n return pairs;\n }, []);\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors.reverse();\n}\n\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n var definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n var definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(function (key) {\n return [key, definition[key]];\n }) : [];\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\n\nfunction shadow(constructor, properties) {\n var shadowConstructor = extend(constructor);\n var shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\n\nfunction getBlessedProperties(constructor) {\n var blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce(function (blessedProperties, blessing) {\n var properties = blessing(constructor);\n\n for (var key in properties) {\n var descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n\n return blessedProperties;\n }, {});\n}\n\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce(function (shadowProperties, key) {\n var descriptor = getShadowedDescriptor(prototype, properties, key);\n\n if (descriptor) {\n Object.assign(shadowProperties, _defineProperty({}, key, descriptor));\n }\n\n return shadowProperties;\n }, {});\n}\n\nfunction getShadowedDescriptor(prototype, properties, key) {\n var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n var shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n\n if (!shadowedByValue) {\n var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n\n return descriptor;\n }\n}\n\nvar getOwnKeys = function () {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return function (object) {\n return [].concat(_toConsumableArray(Object.getOwnPropertyNames(object)), _toConsumableArray(Object.getOwnPropertySymbols(object)));\n };\n } else {\n return Object.getOwnPropertyNames;\n }\n}();\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, this instanceof extended ? this.constructor : void 0);\n }\n\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return /*#__PURE__*/function (_constructor) {\n _inherits(extended, _constructor);\n\n var _super2 = _createSuper(extended);\n\n function extended() {\n _classCallCheck(this, extended);\n\n return _super2.apply(this, arguments);\n }\n\n return extended;\n }(constructor);\n };\n }\n}();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n\nvar Module = /*#__PURE__*/function () {\n function Module(application, definition) {\n _classCallCheck(this, Module);\n\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n _createClass(Module, [{\n key: \"identifier\",\n get: function get() {\n return this.definition.identifier;\n }\n }, {\n key: \"controllerConstructor\",\n get: function get() {\n return this.definition.controllerConstructor;\n }\n }, {\n key: \"contexts\",\n get: function get() {\n return Array.from(this.connectedContexts);\n }\n }, {\n key: \"connectContextForScope\",\n value: function connectContextForScope(scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n }, {\n key: \"disconnectContextForScope\",\n value: function disconnectContextForScope(scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts[\"delete\"](context);\n context.disconnect();\n }\n }\n }, {\n key: \"fetchContextForScope\",\n value: function fetchContextForScope(scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n }\n }]);\n\n return Module;\n}();\n\nvar ClassMap = /*#__PURE__*/function () {\n function ClassMap(scope) {\n _classCallCheck(this, ClassMap);\n\n this.scope = scope;\n }\n\n _createClass(ClassMap, [{\n key: \"has\",\n value: function has(name) {\n return this.data.has(this.getDataKey(name));\n }\n }, {\n key: \"get\",\n value: function get(name) {\n return this.getAll(name)[0];\n }\n }, {\n key: \"getAll\",\n value: function getAll(name) {\n var tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n }, {\n key: \"getAttributeName\",\n value: function getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n }, {\n key: \"getDataKey\",\n value: function getDataKey(name) {\n return \"\".concat(name, \"-class\");\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }]);\n\n return ClassMap;\n}();\n\nvar DataMap = /*#__PURE__*/function () {\n function DataMap(scope) {\n _classCallCheck(this, DataMap);\n\n this.scope = scope;\n }\n\n _createClass(DataMap, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n }, {\n key: \"set\",\n value: function set(key, value) {\n var name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n }, {\n key: \"has\",\n value: function has(key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n if (this.has(key)) {\n var name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n }, {\n key: \"getAttributeNameForKey\",\n value: function getAttributeNameForKey(key) {\n return \"data-\".concat(this.identifier, \"-\").concat(dasherize(key));\n }\n }]);\n\n return DataMap;\n}();\n\nvar Guide = /*#__PURE__*/function () {\n function Guide(logger) {\n _classCallCheck(this, Guide);\n\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n\n _createClass(Guide, [{\n key: \"warn\",\n value: function warn(object, key, message) {\n var warnedKeys = this.warnedKeysByObject.get(object);\n\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n }]);\n\n return Guide;\n}();\n\nfunction attributeValueContainsToken(attributeName, token) {\n return \"[\".concat(attributeName, \"~=\\\"\").concat(token, \"\\\"]\");\n}\n\nvar TargetSet = /*#__PURE__*/function () {\n function TargetSet(scope) {\n _classCallCheck(this, TargetSet);\n\n this.scope = scope;\n }\n\n _createClass(TargetSet, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.scope.schema;\n }\n }, {\n key: \"has\",\n value: function has(targetName) {\n return this.find(targetName) != null;\n }\n }, {\n key: \"find\",\n value: function find() {\n var _this9 = this;\n\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n targetNames[_key2] = arguments[_key2];\n }\n\n return targetNames.reduce(function (target, targetName) {\n return target || _this9.findTarget(targetName) || _this9.findLegacyTarget(targetName);\n }, undefined);\n }\n }, {\n key: \"findAll\",\n value: function findAll() {\n var _this10 = this;\n\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n\n return targetNames.reduce(function (targets, targetName) {\n return [].concat(_toConsumableArray(targets), _toConsumableArray(_this10.findAllTargets(targetName)), _toConsumableArray(_this10.findAllLegacyTargets(targetName)));\n }, []);\n }\n }, {\n key: \"findTarget\",\n value: function findTarget(targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n }, {\n key: \"findAllTargets\",\n value: function findAllTargets(targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n }, {\n key: \"getSelectorForTargetName\",\n value: function getSelectorForTargetName(targetName) {\n var attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n }, {\n key: \"findLegacyTarget\",\n value: function findLegacyTarget(targetName) {\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n }, {\n key: \"findAllLegacyTargets\",\n value: function findAllLegacyTargets(targetName) {\n var _this11 = this;\n\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(function (element) {\n return _this11.deprecate(element, targetName);\n });\n }\n }, {\n key: \"getLegacySelectorForTargetName\",\n value: function getLegacySelectorForTargetName(targetName) {\n var targetDescriptor = \"\".concat(this.identifier, \".\").concat(targetName);\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n }, {\n key: \"deprecate\",\n value: function deprecate(element, targetName) {\n if (element) {\n var identifier = this.identifier;\n var attributeName = this.schema.targetAttribute;\n var revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, \"target:\".concat(targetName), \"Please replace \".concat(attributeName, \"=\\\"\").concat(identifier, \".\").concat(targetName, \"\\\" with \").concat(revisedAttributeName, \"=\\\"\").concat(targetName, \"\\\". \") + \"The \".concat(attributeName, \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n }\n\n return element;\n }\n }, {\n key: \"guide\",\n get: function get() {\n return this.scope.guide;\n }\n }]);\n\n return TargetSet;\n}();\n\nvar Scope = /*#__PURE__*/function () {\n function Scope(schema, element, identifier, logger) {\n var _this12 = this;\n\n _classCallCheck(this, Scope);\n\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n\n this.containsElement = function (element) {\n return element.closest(_this12.controllerSelector) === _this12.element;\n };\n\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n\n _createClass(Scope, [{\n key: \"findElement\",\n value: function findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n }, {\n key: \"findAllElements\",\n value: function findAllElements(selector) {\n return [].concat(_toConsumableArray(this.element.matches(selector) ? [this.element] : []), _toConsumableArray(this.queryElements(selector).filter(this.containsElement)));\n }\n }, {\n key: \"queryElements\",\n value: function queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n }, {\n key: \"controllerSelector\",\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n }]);\n\n return Scope;\n}();\n\nvar ScopeObserver = /*#__PURE__*/function () {\n function ScopeObserver(element, schema, delegate) {\n _classCallCheck(this, ScopeObserver);\n\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n _createClass(ScopeObserver, [{\n key: \"start\",\n value: function start() {\n this.valueListObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.valueListObserver.stop();\n }\n }, {\n key: \"controllerAttribute\",\n get: function get() {\n return this.schema.controllerAttribute;\n }\n }, {\n key: \"parseValueForToken\",\n value: function parseValueForToken(token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n }\n }, {\n key: \"elementMatchedValue\",\n value: function elementMatchedValue(element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n }, {\n key: \"elementUnmatchedValue\",\n value: function elementUnmatchedValue(element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n }, {\n key: \"fetchScopesByIdentifierForElement\",\n value: function fetchScopesByIdentifierForElement(element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n }\n }]);\n\n return ScopeObserver;\n}();\n\nvar Router = /*#__PURE__*/function () {\n function Router(application) {\n _classCallCheck(this, Router);\n\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n _createClass(Router, [{\n key: \"element\",\n get: function get() {\n return this.application.element;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.application.schema;\n }\n }, {\n key: \"logger\",\n get: function get() {\n return this.application.logger;\n }\n }, {\n key: \"controllerAttribute\",\n get: function get() {\n return this.schema.controllerAttribute;\n }\n }, {\n key: \"modules\",\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n }\n }, {\n key: \"contexts\",\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n }\n }, {\n key: \"start\",\n value: function start() {\n this.scopeObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.scopeObserver.stop();\n }\n }, {\n key: \"loadDefinition\",\n value: function loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n }\n }, {\n key: \"unloadIdentifier\",\n value: function unloadIdentifier(identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n }\n }, {\n key: \"getContextForElementAndIdentifier\",\n value: function getContextForElementAndIdentifier(element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n }, {\n key: \"createScopeForElementAndIdentifier\",\n value: function createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n }, {\n key: \"scopeConnected\",\n value: function scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n }, {\n key: \"scopeDisconnected\",\n value: function scopeDisconnected(scope) {\n this.scopesByIdentifier[\"delete\"](scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n }, {\n key: \"connectModule\",\n value: function connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n }\n }, {\n key: \"disconnectModule\",\n value: function disconnectModule(module) {\n this.modulesByIdentifier[\"delete\"](module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n }\n }]);\n\n return Router;\n}();\n\nvar defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: function targetAttributeForScope(identifier) {\n return \"data-\".concat(identifier, \"-target\");\n }\n};\n\nvar Application = /*#__PURE__*/function () {\n function Application() {\n var _this13 = this;\n\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n\n _classCallCheck(this, Application);\n\n this.logger = console;\n this.debug = false;\n\n this.logDebugActivity = function (identifier, functionName) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_this13.debug) {\n _this13.logFormattedMessage(identifier, functionName, detail);\n }\n };\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n _createClass(Application, [{\n key: \"start\",\n value: function () {\n var _start = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return domReady();\n\n case 2:\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function start() {\n return _start.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: \"stop\",\n value: function stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n }, {\n key: \"register\",\n value: function register(identifier, controllerConstructor) {\n if (controllerConstructor.shouldLoad) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n }\n }\n }, {\n key: \"load\",\n value: function load(head) {\n var _this14 = this;\n\n for (var _len4 = arguments.length, rest = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n rest[_key4 - 1] = arguments[_key4];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this14.router.loadDefinition(definition);\n });\n }\n }, {\n key: \"unload\",\n value: function unload(head) {\n var _this15 = this;\n\n for (var _len5 = arguments.length, rest = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n rest[_key5 - 1] = arguments[_key5];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this15.router.unloadIdentifier(identifier);\n });\n }\n }, {\n key: \"controllers\",\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n }\n }, {\n key: \"getControllerForElementAndIdentifier\",\n value: function getControllerForElementAndIdentifier(element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message, detail) {\n var _a;\n\n this.logger.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n }, {\n key: \"logFormattedMessage\",\n value: function logFormattedMessage(identifier, functionName) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(\"\".concat(identifier, \" #\").concat(functionName));\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n }], [{\n key: \"start\",\n value: function start(element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n }\n }]);\n\n return Application;\n}();\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", function () {\n return resolve();\n });\n } else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n var classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce(function (properties, classDefinition) {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\n\nfunction propertiesForClassDefinition(key) {\n var _ref12;\n\n return _ref12 = {}, _defineProperty(_ref12, \"\".concat(key, \"Class\"), {\n get: function get() {\n var classes = this.classes;\n\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n var attribute = classes.getAttributeName(key);\n throw new Error(\"Missing attribute \\\"\".concat(attribute, \"\\\"\"));\n }\n }\n }), _defineProperty(_ref12, \"\".concat(key, \"Classes\"), {\n get: function get() {\n return this.classes.getAll(key);\n }\n }), _defineProperty(_ref12, \"has\".concat(capitalize(key), \"Class\"), {\n get: function get() {\n return this.classes.has(key);\n }\n }), _ref12;\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n var targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce(function (properties, targetDefinition) {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\n\nfunction propertiesForTargetDefinition(name) {\n var _ref13;\n\n return _ref13 = {}, _defineProperty(_ref13, \"\".concat(name, \"Target\"), {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\".concat(name, \"\\\" for \\\"\").concat(this.identifier, \"\\\" controller\"));\n }\n }\n }), _defineProperty(_ref13, \"\".concat(name, \"Targets\"), {\n get: function get() {\n return this.targets.findAll(name);\n }\n }), _defineProperty(_ref13, \"has\".concat(capitalize(name), \"Target\"), {\n get: function get() {\n return this.targets.has(name);\n }\n }), _ref13;\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n var propertyDescriptorMap = {\n valueDescriptorMap: {\n get: function get() {\n var _this16 = this;\n\n return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n\n var attributeName = _this16.data.getAttributeNameForKey(valueDescriptor.key);\n\n return Object.assign(result, _defineProperty({}, attributeName, valueDescriptor));\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n\nfunction propertiesForValueDefinitionPair(valueDefinitionPair) {\n var _ref14;\n\n var definition = parseValueDefinitionPair(valueDefinitionPair);\n var key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return _ref14 = {}, _defineProperty(_ref14, name, {\n get: function get() {\n var value = this.data.get(key);\n\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set: function set(value) {\n if (value === undefined) {\n this.data[\"delete\"](key);\n } else {\n this.data.set(key, write(value));\n }\n }\n }), _defineProperty(_ref14, \"has\".concat(capitalize(name)), {\n get: function get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }), _ref14;\n}\n\nfunction parseValueDefinitionPair(_ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n token = _ref16[0],\n typeDefinition = _ref16[1];\n\n return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\n\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n\n case Boolean:\n return \"boolean\";\n\n case Number:\n return \"number\";\n\n case Object:\n return \"object\";\n\n case String:\n return \"string\";\n }\n}\n\nfunction parseValueTypeDefault(defaultValue) {\n switch (_typeof(defaultValue)) {\n case \"boolean\":\n return \"boolean\";\n\n case \"number\":\n return \"number\";\n\n case \"string\":\n return \"string\";\n }\n\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\n\nfunction parseValueTypeObject(typeObject) {\n var typeFromObject = parseValueTypeConstant(typeObject.type);\n\n if (typeFromObject) {\n var defaultValueType = parseValueTypeDefault(typeObject[\"default\"]);\n\n if (typeFromObject !== defaultValueType) {\n throw new Error(\"Type \\\"\".concat(typeFromObject, \"\\\" must match the type of the default value. Given default value: \\\"\").concat(typeObject[\"default\"], \"\\\" as \\\"\").concat(defaultValueType, \"\\\"\"));\n }\n\n return typeFromObject;\n }\n}\n\nfunction parseValueTypeDefinition(typeDefinition) {\n var typeFromObject = parseValueTypeObject(typeDefinition);\n var typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n var typeFromConstant = parseValueTypeConstant(typeDefinition);\n var type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n throw new Error(\"Unknown value type \\\"\".concat(typeDefinition, \"\\\"\"));\n}\n\nfunction defaultValueForDefinition(typeDefinition) {\n var constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n var defaultValue = typeDefinition[\"default\"];\n if (defaultValue !== undefined) return defaultValue;\n return typeDefinition;\n}\n\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n var key = \"\".concat(dasherize(token), \"-value\");\n var type = parseValueTypeDefinition(typeDefinition);\n return {\n type: type,\n key: key,\n name: camelize(key),\n\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n\n reader: readers[type],\n writer: writers[type] || writers[\"default\"]\n };\n}\n\nvar defaultValuesByType = {\n get array() {\n return [];\n },\n\n \"boolean\": false,\n number: 0,\n\n get object() {\n return {};\n },\n\n string: \"\"\n};\nvar readers = {\n array: function array(value) {\n var array = JSON.parse(value);\n\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n\n return array;\n },\n \"boolean\": function boolean(value) {\n return !(value == \"0\" || value == \"false\");\n },\n number: function number(value) {\n return Number(value);\n },\n object: function object(value) {\n var object = JSON.parse(value);\n\n if (object === null || _typeof(object) != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"Expected object\");\n }\n\n return object;\n },\n string: function string(value) {\n return value;\n }\n};\nvar writers = {\n \"default\": writeString,\n array: writeJSON,\n object: writeJSON\n};\n\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value) {\n return \"\".concat(value);\n}\n\nvar Controller = /*#__PURE__*/function () {\n function Controller(context) {\n _classCallCheck(this, Controller);\n\n this.context = context;\n }\n\n _createClass(Controller, [{\n key: \"application\",\n get: function get() {\n return this.context.application;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"targets\",\n get: function get() {\n return this.scope.targets;\n }\n }, {\n key: \"classes\",\n get: function get() {\n return this.scope.classes;\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }, {\n key: \"initialize\",\n value: function initialize() {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"dispatch\",\n value: function dispatch(eventName) {\n var _ref17 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref17$target = _ref17.target,\n target = _ref17$target === void 0 ? this.element : _ref17$target,\n _ref17$detail = _ref17.detail,\n detail = _ref17$detail === void 0 ? {} : _ref17$detail,\n _ref17$prefix = _ref17.prefix,\n prefix = _ref17$prefix === void 0 ? this.identifier : _ref17$prefix,\n _ref17$bubbles = _ref17.bubbles,\n bubbles = _ref17$bubbles === void 0 ? true : _ref17$bubbles,\n _ref17$cancelable = _ref17.cancelable,\n cancelable = _ref17$cancelable === void 0 ? true : _ref17$cancelable;\n\n var type = prefix ? \"\".concat(prefix, \":\").concat(eventName) : eventName;\n var event = new CustomEvent(type, {\n detail: detail,\n bubbles: bubbles,\n cancelable: cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n }], [{\n key: \"shouldLoad\",\n get: function get() {\n return true;\n }\n }]);\n\n return Controller;\n}();\n\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, _add as add, defaultSchema, del, fetch, prune };","import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.warnings = true\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n","// https://github.com/hotwired/turbo/issues/96\n\nimport { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['form', 'status']\n\n connect() {\n // console.log(\"STIMULUS AUTOSAVE!!!\")\n this.timeout = null\n this.duration = this.data.get('duration') || 1000\n }\n\n save() {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.setStatus(\"\")\n Rails.fire(this.formTarget, 'submit')\n }, this.duration)\n }\n\n save_employment() {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.setStatus(\"\")\n Rails.fire(this.formTarget, 'submit')\n }, this.duration)\n }\n\n async submitted(event) {\n // console.log(\"--------------\")\n // console.log(event)\n // console.log(\"--------------\")\n \n document.getElementById('mysubmit').removeAttribute(\"disabled\");\n \n let response = await event.detail.fetchResponse.response\n\n if(response.ok) {\n this.setStatus(\"Saved\")\n } else {\n this.setStatus(\"Error\", response.errors)\n }\n }\n\n setStatus(message, error=\"\") {\n this.statusTarget.style.color = \"grey\";\n\n if(message == \"Error\") {\n\n this.statusTarget.style.color = \"red\";\n message = `${message}: ${JSON.stringify(error)}`\n\n } else if(message == \"Saved\") {\n this.statusTarget.style.color = \"#00cd70\";\n } else {\n // message = \"Saving...\"\n }\n\n // this.statusTarget.textContent = message\n\n this.timeout = setTimeout(() => {\n this.statusTarget.textContent = ''\n }, 2000)\n }\n}","import { Controller } from \"@hotwired/stimulus\"\nimport Tags from \"bootstrap5-tags\"\n\nexport default class extends Controller {\n static values = { badgeStyle: String }\n\n connect() {\n new Tags(this.element, { allowClear: true, clearEnd: true, badgeStyle: this.badgeStyleValue })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Tags from \"bootstrap5-tags\"\n\nexport default class extends Controller {\n static values = { badgeStyle: String }\n\n connect() {\n new Tags(this.element, { allowClear: true, showAllSuggestions: true, clearEnd: true, badgeStyle: this.badgeStyleValue })\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['field']\n\n clearAll() {\n this.element.classList.add(\"hidden\")\n this.fieldTargets.forEach((field) => { field.value = \"\" })\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = ['chatwindow', \"chatmessages\"]\n\n connect() {\n this.scrollOnNewMessage = this.scrollOnNewMessage.bind(this);\n document.addEventListener('turbo:before-stream-render', this.scrollOnNewMessage);\n this.scrollToBottom();\n }\n\n disconnect() {\n document.removeEventListener('turbo:before-stream-render', this.scrollOnNewMessage);\n }\n\n scrollOnNewMessage() {\n setTimeout(() => {\n this.scrollToBottom();\n if(this.statusDiv() != null) {\n this.statusDiv().innerHTML = \"online\"\n this.statusDiv().style.color = \"#e6007a\";\n }\n this.textArea().focus();\n }, \"100\");\n }\n\n open() {\n this.chatwindowTarget.style.display = \"block\";\n this.scrollToBottom();\n this.textArea().focus();\n }\n\n close() {\n this.chatwindowTarget.style.display = \"none\"; \n }\n\n disableForm() {\n this.textArea().placeholder=\"\";\n this.submitButton().disabled = true;\n this.submitButton().className += \" my-btn-disabled\";\n this.submitButton().value = \"\";\n if(this.statusDiv() != null) {\n this.statusDiv().innerHTML = \"...typing\"\n this.statusDiv().style.color = \"#bbbbbb\";\n }\n }\n\n enterPressed(event) {\n if (this.submitButton().disabled) {\n // console.log(\"btn disabled\")\n return\n }\n\n if (event.keyCode == 13 && event.metaKey) {\n // console.log(\"enter pressed\")\n this.chatForm().requestSubmit();\n }\n }\n\n // enterPressed(event) {\n // this.textArea().value = this.textArea().value.trim()\n // if (event.keyCode == 13 && !event.shiftKey && !event.metaKey) {\n // if(this.textArea().value == \"\") {\n // console.log(\"empty string\")\n // this.textArea().value = \"\"\n // event.preventDefault();\n // }\n // this.chatForm().requestSubmit();\n // }\n // }\n\n // shiftEnterPressed(event) {\n // if (event.keyCode == 13 && event.shiftKey) {\n // console.log(\"shift + enter pressed\")\n // //this.textArea().value = this.textArea().value + \" h1 \"\n // }\n // }\n\n submitButton() {\n return this.element.querySelector(\"#submit-button\");\n }\n\n textArea() {\n return this.element.querySelector(\"#chat_message_user_question\");\n }\n\n scrollToBottom() {\n this.chatmessagesTarget.scrollTop = this.chatmessagesTarget.scrollHeight;\n }\n\n statusDiv() {\n return document.getElementById(\"statusdiv\")\n }\n\n chatForm() {\n return document.getElementById(\"my-chat-form\")\n }\n\n}\n","import { Controller } from \"@hotwired/stimulus\"\n//import { Turbo } from \"@hotwired/turbo-rails\"\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener('click', this.addSelectedClass.bind(this));\n }\n\n disconnect() {\n this.element.removeEventListener('click', this.addSelectedClass.bind(this));\n }\n\n addSelectedClass(event) {\n // Ensure the event target is the element\n const target = event.target.closest('.chat-item a');\n if (!target) return;\n\n event.preventDefault();\n\n // Remove 'selected_class' from all chat item divs\n document.querySelectorAll('.chat-item').forEach((chatItem) => {\n chatItem.classList.remove('selected_class');\n });\n\n // Get the parent div of the clicked link\n const parentDiv = target.parentElement;\n\n // Add 'selected_class' to the parent div of the clicked link\n parentDiv.classList.add('selected_class');\n\n // Now do the redirect\n let url = target.getAttribute('href');\n Turbo.visit(url); // Turbo-frames will handle this visit\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"turnstile\"\nexport default class extends Controller {\n static values = { siteKey: String }\n static targets = [ \"button\", \"container\", \"input\" ]\n\n connect() {\n // https://developers.cloudflare.com/turnstile/reference/testing/\n this.siteKeyValue = \"0x4AAAAAAAD8pBB2F5BQoFKr\" // ur site public key or test key\n\n if (!window.turnstile) {\n this.loadTurnstileScript()\n }\n \n this.element.addEventListener(\"submit\", (event) => {\n if (this.inputTarget.value === \"\") {\n event.preventDefault()\n this.initTurnstile()\n }\n })\n }\n\n loadTurnstileScript() {\n const script = document.createElement(\"script\")\n script.src = \"https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload=onTurnstileLoad\"\n script.defer = \"defer\"\n script.async = true\n\n window.onTurnstileLoad = () => {}\n document.body.appendChild(script)\n }\n\n disconnect() {\n if (this.widgetId) {\n turnstile.remove(this.widgetId)\n }\n }\n\n disableButton() {\n // this.buttonTarget.disabled = true\n //this.buttonTarget.style.display = 'none'\n this.buttonTarget.remove();\n // this.buttonTarget.value = \"Please compelte the captch above\"\n // this.buttonTarget.classList.add(\"cursor-not-allowed.opacity-50\")\n }\n\n enableButton() {\n // this.buttonTarget.disabled = false\n // this.buttonTarget.value = \"Please wait...\"\n // this.buttonTarget.classList.remove(\"cursor-not-allowed.opacity-50\")\n }\n\n initTurnstile() {\n this.disableButton()\n\n this.widgetId = turnstile.render(this.containerTarget, {\n sitekey: this.siteKeyValue,\n theme: \"dark\",\n \"before-interactive-callback\": () => {\n this.disableButton()\n this.containerTarget.classList.remove(\"hidden\")\n },\n \"after-interactive-callback\": () => {\n this.containerTarget.classList.add(\"hidden\")\n this.enableButton()\n },\n callback: (token) => {\n // Success!\n this.inputTarget.value = token\n this.inputTarget.form.submit()\n },\n })\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n//import { Modal } from 'bootstrap';\n\nexport default class extends Controller {\n\n static targets = [\n // \"question_1\",\n \"cvField\",\n \"first_name\",\n \"last_name\",\n \"public_email\",\n \"phone\",\n \"linkedin\",\n \"location_country_residency\",\n \"website\",\n \"summary\",\n \"cvModal\",\n \"cvModalProgressBar\"\n ];\n\n connect() {\n console.log(\"hi from parsecv js\")\n // this.modal = new Modal(this.cvModalTarget);\n import('bootstrap').then((Bootstrap) => {\n this.modal = new Bootstrap.Modal(this.cvModalTarget);\n });\n }\n\n animateProgressBar() {\n\n const totalDuration = 20 * 1000; // seconds\n\n const interval = 100; // milliseconds\n const step = (100 * interval) / totalDuration; // calculate step for each interval\n let width = 0;\n\n const progressInterval = setInterval(() => {\n if (width >= 100) {\n clearInterval(progressInterval);\n } else {\n width += step;\n this.cvModalProgressBarTarget.style.width = width + '%';\n this.cvModalProgressBarTarget.setAttribute('aria-valuenow', width);\n }\n }, interval);\n }\n\n\n\n\n uploadAndParse() {\n let formData = new FormData();\n formData.append(\"cv\", this.cvFieldTarget.files[0]);\n\n // let question1Label = this.element.querySelector(\"#label_question_1\")\n\n // if(question1Label !== undefined && question1Label !== null) {\n // let question1_text = question1Label.textContent\n // console.log(\"question1_text: \" + question1_text)\n // formData.append(\"question_1\", question1_text);\n // }\n\n this.modal.show();\n this.animateProgressBar();\n\n fetch('/upload_file', {\n method: 'POST',\n body: formData,\n headers: {'X-CSRF-Token': this.getCSRFToken()}\n })\n .then(response => response.json())\n .then(data => {\n this.prefillForm(data)\n this.modal.hide();\n });\n }\n\n prefillForm(data) {\n // console.log(data)\n\n var whatWasFileld = []\n\n if(data == undefined || data == null || data =='') {\n alert(\"❌ No fields found. Try another CV\");\n this.modal.hide();\n return ;\n }\n\n\n // if(this.isOk(data.question_1)) {\n // this.question_1Target.value = data.question_1\n // whatWasFileld.push(\"Question 1\\n\")\n // }\n \n if(this.isOk(data.first_name)) {\n this.first_nameTarget.value = data.first_name\n whatWasFileld.push(\"First name\")\n }\n\n if(this.isOk(data.last_name)) {\n this.last_nameTarget.value = data.last_name\n whatWasFileld.push(\"Last name\")\n }\n\n if(this.isOk(data.public_email)) {\n this.public_emailTarget.value = data.public_email\n whatWasFileld.push(\"Email\")\n }\n\n if(this.isOk(data.phone)) {\n this.phoneTarget.value = data.phone\n whatWasFileld.push(\"Phone\")\n }\n\n if(data.location_country_residency!=\"\"){\n this.location_country_residencyTarget.value = data.location_country_residency\n whatWasFileld.push(\"Location\")\n }\n\n if(this.isOk(data.linkedin)){\n this.linkedinTarget.value = data.linkedin\n whatWasFileld.push(\"LinkedIn\")\n }\n\n if(this.isOk(data.github)){\n this.linkedinTarget.value = data.github\n whatWasFileld.push(\"GitHub\")\n }\n\n if(this.isOk(data.twitter)){\n this.linkedinTarget.value = data.twitter\n whatWasFileld.push(\"Twitter\")\n }\n\n if(this.isOk(data.website)){\n this.websiteTarget.value = data.website\n whatWasFileld.push(\"Website\")\n }\n\n if(this.isOk(data.bio)){\n this.summaryTarget.value = data.bio\n whatWasFileld.push(\"Additional Information\")\n }\n\n if(data.employment_history !== undefined && data.employment_history.length !== 0) {\n let employment_history_str = this.employmentHistoryToStr(data.employment_history)\n this.summaryTarget.value = this.summaryTarget.value + \"\\n\\n\" + employment_history_str\n whatWasFileld.push(\"Employment History\")\n }\n\n\n if (whatWasFileld.length == 0) {\n alert(\"No fields found. Try another CV\")\n } else {\n alert(\"✅ We autofilled these:\\n - \" + whatWasFileld.join('\\n - '))\n }\n\n this.modal.hide();\n }\n\n isOk(value) {\n return value !== null && value !== undefined && value !== '';\n }\n\n employmentHistoryToStr(records) {\n // console.log(records)\n let all = \"\\n\\nEmployment History:\\n\"\n records.forEach((record) => {\n let sentence = `${record.title} at ${record.company} (${record.year_start} - ${record.year_end})\\n${record.description}\\n\\n`;\n all = all + sentence\n });\n // console.log(all)\n return all\n }\n\n showBlurOverlay() {\n document.querySelector('.blur-overlay').style.display = 'block';\n this.mainContentTarget.classList.add('blur-content');\n }\n\n getCSRFToken() {\n const meta = document.querySelector('meta[name=\"csrf-token\"]');\n return meta ? meta.getAttribute('content') : '';\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n// javascript/controllers/disable_controller.js\nexport default class extends Controller {\n static targets = [\"submitButton\"]\n\n\n // connect() {\n // console.log(\"conncted\");\n // }\n\n disable(event) {\n //console.log(\"disabling...\");\n event.preventDefault()\n const button = this.submitButtonTarget\n // const disableMessage = button.dataset.disableWith || \"Wait...\"\n const disableMessage = \"Wait...\"\n button.disabled = true\n button.value = disableMessage\n button.classList.remove(\"my-btn\");\n button.classList.remove(\"my-btn-primary-reserve\");\n button.classList.add(\"btn\")\n button.classList.add(\"btn-dark\")\n this.element.submit()\n }\n}","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\", \"suggestions\"]\n static values = {\n domains: {\n type: Array,\n default: [\"gmail.com\", \"hotmail.com\", \"icloud.com\", \"outlook.com\", \"yahoo.com\"]\n }\n }\n\n connect() {\n console.log(\"hiiii!\")\n this.createSuggestionsContainer()\n }\n\n createSuggestionsContainer() {\n const suggestionsDiv = document.createElement(\"div\")\n suggestionsDiv.classList.add(\"email-suggestions\", \"d-none\")\n suggestionsDiv.setAttribute(\"data-email-suggestions-target\", \"suggestions\")\n suggestionsDiv.style.position = \"absolute\"\n suggestionsDiv.style.width = \"150%\"\n suggestionsDiv.style.zIndex = \"1000\"\n suggestionsDiv.style.backgroundColor = \"#000\"\n suggestionsDiv.style.border = \"1px solid #6c757d\"\n suggestionsDiv.style.borderRadius = \"4px\"\n suggestionsDiv.style.marginTop = \"2px\"\n suggestionsDiv.style.zIndex = \"9999999999\";\n suggestionsDiv.style.textAlign = \"left\";\n this.inputTarget.parentElement.style.position = \"relative\"\n this.inputTarget.parentElement.appendChild(suggestionsDiv)\n }\n\n handleInput(event) {\n const input = event.target.value\n const atIndex = input.lastIndexOf(\"@\")\n\n if (atIndex !== -1) {\n const prefix = input.slice(0, atIndex + 1)\n const domainPrefix = input.slice(atIndex + 1).toLowerCase()\n\n if (!input.includes(\".\", atIndex)) {\n this.showFilteredSuggestions(prefix, domainPrefix)\n } else {\n this.hideSuggestions()\n }\n } else {\n this.hideSuggestions()\n }\n }\n\n showFilteredSuggestions(prefix, domainPrefix) {\n const filteredDomains = this.domainsValue.filter(domain =>\n domain.toLowerCase().startsWith(domainPrefix)\n )\n\n if (filteredDomains.length === 0) {\n this.hideSuggestions()\n return\n }\n\n this.suggestionsTarget.innerHTML = \"\"\n this.suggestionsTarget.classList.remove(\"d-none\")\n\n filteredDomains.forEach(domain => {\n const suggestion = document.createElement(\"div\")\n suggestion.classList.add(\"suggestion-item\", \"p-2\")\n suggestion.style.cursor = \"pointer\"\n suggestion.style.transition = \"background-color 0.2s\"\n suggestion.style.textAlign = \"left\"\n suggestion.textContent = prefix + domain\n suggestion.addEventListener(\"mouseenter\", () => {\n suggestion.style.backgroundColor = \"#2c3034\"\n })\n suggestion.addEventListener(\"mouseleave\", () => {\n suggestion.style.backgroundColor = \"transparent\"\n })\n suggestion.addEventListener(\"click\", () => this.selectSuggestion(prefix + domain))\n this.suggestionsTarget.appendChild(suggestion)\n })\n }\n\n selectSuggestion(email) {\n this.inputTarget.value = email\n this.hideSuggestions()\n }\n\n hideSuggestions() {\n this.suggestionsTarget.classList.add(\"d-none\")\n }\n\n // Hide suggestions when clicking outside\n clickOutside(event) {\n if (!this.element.contains(event.target)) {\n this.hideSuggestions()\n }\n }\n} ","// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller\n\nimport { application } from \"./application\"\n\nimport HelloController from \"./autosave_controller\"\napplication.register(\"autosave\", HelloController)\n\nimport TagsController from \"./tags_controller\"\napplication.register(\"tags\", TagsController)\n\nimport BenefitsController from \"./benefits_controller\"\napplication.register(\"benefits\", BenefitsController)\n\nimport ClearController from \"./clear_controller\"\napplication.register(\"clear\", ClearController)\n\nimport ChatController from \"./chat_controller\"\napplication.register(\"chat\", ChatController)\n\nimport ChatWhitepaperController from \"./chat_whitepaper_controller\"\napplication.register(\"chat-whitepaper\", ChatWhitepaperController)\n\nimport TurnstileController from \"./turnstile_controller\"\napplication.register(\"turnstile\", TurnstileController)\n\nimport ParsecvController from \"./parsecv_controller\"\napplication.register(\"parsecv\", ParsecvController)\n\nimport DisableController from \"./disable_controller\"\napplication.register(\"disable\", DisableController)\n\nimport EmailSuggestionsController from \"./email_suggestions_controller\"\napplication.register(\"email-suggestions\", EmailSuggestionsController)","import \"controllers\""],"sourceRoot":""}