{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/stimulus/dist/stimulus.js","webpack:///./app/javascript/packs/search.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./app/javascript/controllers sync \\.js$","webpack:///./app/javascript/controllers/copytext_controller.js","webpack:///./app/javascript/controllers/darkmode_controller.js","webpack:///./app/javascript/controllers/dropdown_controller.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","length","err","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","toString","slice","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","EventListener","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","bindings","hasBindings","size","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","clearEventListeners","arguments","undefined","clearEventListenersForBinding","handleError","error","message","detail","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","createEventListener","set","parts","keys","join","defaultActionDescriptorFilters","_ref","stopPropagation","prevent","_ref2","preventDefault","self","_ref3","element","target","descriptorPattern","parseEventTarget","eventTargetName","window","document","camelize","replace","_","char","toUpperCase","namespaceCamelize","capitalize","charAt","dasherize","toLowerCase","Action","descriptor","schema","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","keyFilter","static","token","descriptorString","matches","trim","match","includes","split","options","parseActionDescriptorString","content","eventFilter","isFilterTarget","filteres","modifiers","_modifiers$map2","modifier","meta","ctrl","alt","shift","metaKey","ctrlKey","altKey","shiftKey","standardFilter","filter","keyMappings","params","pattern","RegExp","_ref4","attributes","typecast","a","button","form","details","input","e","getAttribute","select","textarea","Error","JSON","parse","o_O","Binding","context","action","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","method","controller","actionDescriptorFilters","passes","_ref5","entries","_ref6","currentTarget","actionEvent","logDebugActivity","KeyboardEvent","Element","contains","scope","containsElement","ElementObserver","delegate","mutationObserverInit","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","selector","hasAttribute","querySelectorAll","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_ref7","_ref8","_ref9","_ref10","SelectorObserver","matchesByElement","selectorMatchElement","selectorMatched","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","zip","findIndex","_ref11","_ref12","previousToken","currentToken","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","connectAction","disconnectAction","clear","forToken","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_ref13","valueDescriptors","data","rawValue","rawOldValue","changedMethodName","changedMethod","reader","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref14","connectTarget","_ref15","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","outletDefinitions","outletName","body","observer","dependentContexts","disconnectAllOutlets","_selector","_ref16","outlet","getOutlet","connectOutlet","_ref17","getOutletFromMap","disconnectOutlet","_ref18","hasOutlet","controllerAttribute","outletConnected","outletDisconnected","outlets","getSelectorForOutletName","outletDependencies","dependencies","router","controllerConstructor","dependentControllerIdentifiers","identifiers","contexts","getControllerForElementAndIdentifier","find","Context","_this","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","_len","args","_key2","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessings","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","setPrototypeOf","b","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","setAttribute","removeAttribute","Guide","logger","warnedKeysByObject","warn","warnedKeys","attributeValueContainsToken","TargetSet","targetName","_len2","targetNames","_key3","findTarget","findLegacyTarget","findAll","_len3","_key4","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","_len4","outletNames","_key5","findOutlet","_len5","_key6","findAllOutlets","outletAttributeForScope","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","isDocumentScope","documentElement","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","defaultSchema","enter","tab","esc","space","up","down","home","end","objectFromEntries","array","memo","_ref19","_ref20","k","v","Application","_this2","console","debug","logFormattedMessage","async","Promise","resolve","readyState","register","load","registerActionOption","head","_len6","rest","_key7","shouldLoad","unload","_len7","_key8","controllers","onerror","groupCollapsed","log","groupEnd","parseValueDefinitionPair","_ref21","_ref22","payload","typeFromObject","parseValueTypeConstant","typeObject","defaultValueType","parseValueTypeDefault","default","propertyPath","parseValueTypeObject","typeDefinition","typeFromDefaultValue","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","Number","String","boolean","number","string","writeJSON","stringify","Controller","_identifier","_application","dispatch","_ref23","_ref23$target","_ref23$detail","_ref23$prefix","prefix","_ref23$bubbles","bubbles","_ref23$cancelable","cancelable","CustomEvent","dispatchEvent","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletController","propertiesForOutletDefinition","searching","search_input","getElementById","clearTimeout","setTimeout","search_form","requestSubmit","search_results","innerHTML","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","querySelector","cspNonce","expando","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","$","csrfParam","csrfToken","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","fire","evt","createEvent","initCustomEvent","Event","defaultPrevented","obj","stopEverything","eventType","handler","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","response","responseText","getResponseHeader","floor","status","success","statusText","complete","beforeSend","XMLHttpRequest","OPENED","send","url","location","href","indexOf","dataType","accept","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","createElement","appendChild","removeChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","disabled","option","selected","checked","encodeURIComponent","formElements","el","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","style","display","click","isRemote","handleRemote","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","webpackContext","req","id","webpackContextResolve","code","_default","_Controller","_inherits","_super","_createSuper","_classCallCheck","apply","linkTarget","copyText","setSelectionRange","navigator","clipboard","writeText","then","pIcon","sIcon","classList","remove","search","localStorage","theme","_enableDarkMode","_enableLightMode","_setIcon","myDate","Date","setMonth","getMonth","cookie","_setCookie","icon","getElementsByClassName","_enableIcon","_setDarkMode","menuTarget","dropdownButton","menu","menuDropdown","require","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","chrome_cta","userAgent","pulse_button","gtag","plausible","props","service","notifications","setInterval","lastNotification","lastElementChild","insertBefore","firstElementChild","show_components_button","main_header","scrollY","steps","target_element","step","timeoutId","search_components","component","innerText"],"mappings":"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","file":"js/application-8fbe3bb5256aaaf347d1.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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 = \"https://isdown.app/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\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.\"); }\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); }\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; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\nStimulus 3.2.1\nCopyright © 2022 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n const stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n let clearEventListeners = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners) this.clearEventListenersForBinding(binding);\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0) this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\nconst defaultActionDescriptorFilters = {\n stop(_ref) {\n let event = _ref.event,\n value = _ref.value;\n if (value) event.stopPropagation();\n return true;\n },\n prevent(_ref2) {\n let event = _ref2.event,\n value = _ref2.value;\n if (value) event.preventDefault();\n return true;\n },\n self(_ref3) {\n let event = _ref3.event,\n value = _ref3.value,\n element = _ref3.element;\n if (value) {\n return element === event.target;\n } else {\n return true;\n }\n }\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[1];\n let keyFilter = matches[2];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[3]),\n eventName,\n eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n identifier: matches[4],\n methodName: matches[5],\n keyFilter\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, {\n [token.replace(/^!/, \"\")]: !/^!/.test(token)\n }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\nclass Action {\n constructor(element, index, descriptor, schema) {\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 this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n isFilterTarget(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filteres = this.keyFilter.split(\"+\");\n const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n const _modifiers$map = modifiers.map(modifier => filteres.includes(modifier)),\n _modifiers$map2 = _slicedToArray(_modifiers$map, 4),\n meta = _modifiers$map2[0],\n ctrl = _modifiers$map2[1],\n alt = _modifiers$map2[2],\n shift = _modifiers$map2[3];\n if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n return true;\n }\n const standardFilter = filteres.filter(key => !modifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const _ref4 of Array.from(this.element.attributes)) {\n const name = _ref4.name;\n const value = _ref4.value;\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n select: () => \"change\",\n textarea: () => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const element = this.action.element;\n const actionDescriptorFilters = this.context.application.actionDescriptorFilters;\n let passes = true;\n for (const _ref5 of Object.entries(this.eventOptions)) {\n var _ref6 = _slicedToArray(_ref5, 2);\n const name = _ref6[0];\n const value = _ref6[1];\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({\n name,\n value,\n event,\n element\n });\n } else {\n continue;\n }\n }\n return passes;\n }\n invokeWithEvent(event) {\n const target = event.target,\n currentTarget = event.currentTarget;\n try {\n const params = this.action.params;\n const actionEvent = Object.assign(event, {\n params\n });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, {\n event,\n target,\n currentTarget,\n action: this.methodName\n });\n } catch (error) {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n const detail = {\n identifier,\n controller,\n element,\n index,\n event\n };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n return false;\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 get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\n };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n 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 processAttributeChange(node, attributeName) {\n const element = node;\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 processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree() {\n let tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(_ref7 => {\n let _ref8 = _slicedToArray(_ref7, 2),\n _key = _ref8[0],\n values = _ref8[1];\n return values.has(value);\n }).map(_ref9 => {\n let _ref10 = _slicedToArray(_ref9, 2),\n key = _ref10[0],\n _values = _ref10[1];\n return key;\n });\n }\n}\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\nclass SelectorObserver {\n constructor(element, selector, delegate) {\n let details = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n this.selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const matches = element.matches(this.selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector)).filter(match => this.matchElement(match));\n return match.concat(matches);\n }\n elementMatched(element) {\n this.selectorMatched(element);\n }\n elementUnmatched(element) {\n this.selectorUnmatched(element);\n }\n elementAttributeChanged(element, _attributeName) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(this.selector, element);\n if (!matches && matchedBefore) {\n this.selectorUnmatched(element);\n }\n }\n selectorMatched(element) {\n if (this.delegate.selectorMatched) {\n this.delegate.selectorMatched(element, this.selector, this.details);\n this.matchesByElement.add(this.selector, element);\n }\n }\n selectorUnmatched(element) {\n this.delegate.selectorUnmatched(element, this.selector, this.details);\n this.matchesByElement.delete(this.selector, element);\n }\n}\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n 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 stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\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 stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(_ref11 => {\n let _ref12 = _slicedToArray(_ref11, 2),\n previousToken = _ref12[0],\n currentToken = _ref12[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length).map((content, index) => ({\n element,\n attributeName,\n content,\n index\n }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({\n length\n }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const element = token.element;\n const _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const element = token.element;\n const _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return {\n value\n };\n } catch (error) {\n return {\n error\n };\n }\n }\n}\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\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 invokeChangedCallbacksForDefaultValues() {\n for (const _ref13 of this.valueDescriptors) {\n const key = _ref13.key;\n const name = _ref13.name;\n const defaultValue = _ref13.defaultValue;\n const writer = _ref13.writer;\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n } catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched(_ref14) {\n let element = _ref14.element,\n name = _ref14.content;\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched(_ref15) {\n let element = _ref15.element,\n name = _ref15.content;\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\nclass OutletObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n }\n start() {\n if (this.selectorObserverMap.size === 0) {\n this.outletDefinitions.forEach(outletName => {\n const selector = this.selector(outletName);\n const details = {\n outletName\n };\n if (selector) {\n this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n }\n });\n this.selectorObserverMap.forEach(observer => observer.start());\n }\n this.dependentContexts.forEach(context => context.refresh());\n }\n stop() {\n if (this.selectorObserverMap.size > 0) {\n this.disconnectAllOutlets();\n this.selectorObserverMap.forEach(observer => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n refresh() {\n this.selectorObserverMap.forEach(observer => observer.refresh());\n }\n selectorMatched(element, _selector, _ref16) {\n let outletName = _ref16.outletName;\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, _ref17) {\n let outletName = _ref17.outletName;\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, _ref18) {\n let outletName = _ref18.outletName;\n return this.hasOutlet(element, outletName) && element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`);\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach(module => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach(outlet => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter(context => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find(outlet => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\nclass Context {\n constructor(module, scope) {\n var _this = this;\n this.logDebugActivity = function (functionName) {\n let detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const identifier = _this.identifier,\n controller = _this.controller,\n element = _this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n _this.application.logDebugActivity(_this.identifier, functionName, detail);\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 this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n controller[methodName](...args);\n }\n }\n}\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, {\n [key]: descriptor\n });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return object => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n } else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\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 function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () {};\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return constructor => class extended extends constructor {};\n }\n})();\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find() {\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll() {\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n targetNames[_key4] = arguments[_key4];\n }\n return targetNames.reduce((targets, targetName) => [...targets, ...this.findAllTargets(targetName), ...this.findAllLegacyTargets(targetName)], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const identifier = this.identifier;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` + `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find() {\n for (var _len4 = arguments.length, outletNames = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {\n outletNames[_key5] = arguments[_key5];\n }\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll() {\n for (var _len5 = arguments.length, outletNames = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {\n outletNames[_key6] = arguments[_key6];\n }\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector) return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = element => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [...(this.element.matches(selector) ? [this.element] : []), ...this.queryElements(selector).filter(this.containsElement)];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope ? this : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\nclass ScopeObserver {\n constructor(element, schema, delegate) {\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 start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const element = token.element,\n identifier = token.content;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\nclass Router {\n constructor(application) {\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 get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad(definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({\n enter: \"Enter\",\n tab: \"Tab\",\n esc: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n left: \"ArrowLeft\",\n right: \"ArrowRight\",\n home: \"Home\",\n end: \"End\"\n }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(c => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map(n => [n, n])))\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, _ref19) => {\n let _ref20 = _slicedToArray(_ref19, 2),\n k = _ref20[0],\n v = _ref20[1];\n return Object.assign(Object.assign({}, memo), {\n [k]: v\n });\n }, {});\n}\nclass Application {\n constructor() {\n var _this2 = this;\n let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = function (identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (_this2.debug) {\n _this2.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({\n identifier,\n controllerConstructor\n });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head) {\n for (var _len6 = arguments.length, rest = new Array(_len6 > 1 ? _len6 - 1 : 0), _key7 = 1; _key7 < _len6; _key7++) {\n rest[_key7 - 1] = arguments[_key7];\n }\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head) {\n for (var _len7 = arguments.length, rest = new Array(_len7 > 1 ? _len7 - 1 : 0), _key8 = 1; _key8 < _len7; _key8++) {\n rest[_key8 - 1] = arguments[_key8];\n }\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\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 logFormattedMessage(identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n } else {\n resolve();\n }\n });\n}\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const classes = this.classes;\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (outletController) {\n return outletController;\n } else {\n throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n }\n }\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets.map(outlet => {\n const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (controller) {\n return controller;\n } else {\n console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n }\n }).filter(controller => controller);\n }\n return [];\n }\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n return outlet;\n } else {\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n }\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n }\n }\n };\n}\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n } else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, {\n [attributeName]: valueDescriptor\n });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair(_ref21, controller) {\n let _ref22 = _slicedToArray(_ref21, 2),\n token = _ref22[0],\n typeDefinition = _ref22[1];\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n if (!typeFromObject) return;\n const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n if (typeFromObject !== defaultValueType) {\n const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n }\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const typeFromObject = parseValueTypeObject({\n controller: payload.controller,\n token: payload.token,\n typeObject: payload.typeDefinition\n });\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined) return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const key = `${dasherize(payload.token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(payload.typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {}\n connect() {}\n disconnect() {}\n dispatch(eventName) {\n let _ref23 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref23$target = _ref23.target,\n target = _ref23$target === void 0 ? this.element : _ref23$target,\n _ref23$detail = _ref23.detail,\n detail = _ref23$detail === void 0 ? {} : _ref23$detail,\n _ref23$prefix = _ref23.prefix,\n prefix = _ref23$prefix === void 0 ? this.identifier : _ref23$prefix,\n _ref23$bubbles = _ref23.bubbles,\n bubbles = _ref23$bubbles === void 0 ? true : _ref23$bubbles,\n _ref23$cancelable = _ref23.cancelable,\n cancelable = _ref23$cancelable === void 0 ? true : _ref23$cancelable;\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, {\n detail,\n bubbles,\n cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing, OutletPropertiesBlessing];\nController.targets = [];\nController.outlets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };","// IMPORTANT! This is used in both general search and services search\n\ndocument.addEventListener(\"DOMContentLoaded\", (e) => {\n search_input = document.getElementById('q');\n\n if(!!search_input){\n search_input.addEventListener('keyup', function(){\n search();\n });\n\n document.getElementById('q').addEventListener('blur', function(e){\n setTimeout(function(){\n let search_results = document.getElementById('search-results');\n if(search_results){\n search_results.innerHTML = '';\n }\n }, 500)\n });\n }\n});\n\nlet searching;\n\nfunction search(){\n clearTimeout(searching);\n\n searching = setTimeout(function(){\n\n search_form = document.getElementById('search');\n\n if(search_form.requestSubmit){\n search_form.requestSubmit();\n }\n }, 500);\n}\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","var map = {\n\t\"./copytext_controller.js\": 8,\n\t\"./darkmode_controller.js\": 9,\n\t\"./dropdown_controller.js\": 10,\n\t\"./index.js\": 11\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7;","import { Controller } from 'stimulus';\n\nexport default class extends Controller {\n static targets = [\"link\", \"copy\"];\n\n connect() {\n // let dropdown = document.getElementsByClassName('dropdown');\n let publicLink = this.linkTarget;\n let copyButton = this.linkTarget;\n\n }\n\n copy() {\n var copyText = this.linkTarget;\n\n /* Select the text field */\n copyText.select();\n copyText.setSelectionRange(0, 99999); /* For mobile devices */\n\n navigator.clipboard.writeText(copyText.value).then(function() {\n }, function(err) {\n console.error('Async: Could not copy text: ', err);\n });\n\n let pIcon = document.getElementById('1st-icon');\n let sIcon = document.getElementById('2nd-icon');\n\n pIcon.classList.add('hidden');\n sIcon.classList.remove('hidden');\n\n setTimeout(function(){\n pIcon.classList.remove('hidden');\n sIcon.classList.add('hidden');\n }, 700);\n }\n}","import { Controller } from 'stimulus';\n\nexport default class extends Controller {\n static targets = [\"darkmode\"];\n\n connect() {\n // let dropdown = document.getElementsByClassName('dropdown');\n let darkmode = this.linkTarget;\n\n if(window.location.search.match('dark=1')){\n localStorage.theme = 'dark';\n }\n\n if('theme' in localStorage){\n if(localStorage.theme === 'dark'){\n this._enableDarkMode();\n } else {\n this._enableLightMode();\n }\n } else {\n // this._setDarkMode();\n this._enableLightMode();\n }\n\n this._setIcon();\n }\n\n _setDarkMode() {\n if (localStorage.theme === 'dark') {//|| (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {\n this._enableDarkMode();\n } else {\n this._enableLightMode();\n }\n }\n\n _setCookie(value){\n var myDate = new Date();\n myDate.setMonth(myDate.getMonth() + 12);\n document.cookie = \"darkmode=\" + value + \";expires=\" + myDate + \";path=/;samesite;secure\";\n }\n\n _enableDarkMode() {\n document.documentElement.classList.add('dark');\n this._setCookie(true);\n }\n\n _enableLightMode() {\n document.documentElement.classList.remove('dark');\n this._setCookie(false);\n }\n\n _enableIcon(icon){\n document.getElementsByClassName('js-icon-light')[0].classList.add('hidden');\n document.getElementsByClassName('js-icon-dark')[0].classList.add('hidden');\n // document.getElementsByClassName('js-icon-system')[0].classList.add('hidden');\n\n document.getElementsByClassName('js-icon-' + icon)[0].classList.remove('hidden');\n }\n\n _setIcon(){\n if (localStorage.theme === 'dark') {\n this._enableIcon('dark');\n } else if(localStorage.theme === 'light') {\n this._enableIcon('light');\n } else {\n // this._enableIcon('system');\n this._enableIcon('light');\n }\n }\n\n toggle() {\n if (localStorage.theme === 'dark') {\n localStorage.theme = 'light';\n this._enableLightMode();\n } else if (localStorage.theme === 'light') {\n localStorage.theme = 'dark';\n this._enableDarkMode();\n } else if (!('theme' in localStorage)) {\n localStorage.theme = 'dark';\n this._enableDarkMode();\n }\n\n // On page load or when changing themes, best to add inline in `head` to avoid FOUC\n this._setIcon();\n this._setDarkMode();\n }\n}","import { Controller } from 'stimulus';\n\nexport default class extends Controller {\n static targets = [\"menu\"];\n\n connect() {\n // let dropdown = document.getElementsByClassName('dropdown');\n let menu = this.menuTarget;\n\n document.addEventListener('click', function (event) {\n let dropdownButton = event.target.closest(\".dropdown\");\n let menu = event.target.closest(\".menu\");\n\n if (dropdownButton == null) {\n document.querySelectorAll('.menu').forEach(menuDropdown => {\n if (!menuDropdown.classList.contains('hidden')) {\n menuDropdown.classList.add('hidden');\n }\n });\n } else if (dropdownButton != event.target.parentNode && dropdownButton.parentNode != event.target.parentNode) {\n if (!menu.classList.contains('hidden')) {\n menu.classList.add('hidden');\n }\n }\n });\n }\n\n toggle() {\n if (this.menuTarget.classList.contains('hidden')) {\n this.menuTarget.classList.remove('hidden');\n } else {\n this.menuTarget.classList.add('hidden');\n }\n }\n}","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nrequire('stylesheets/application.scss')\n\nrequire(\"@rails/ujs\").start()\nrequire('./search')\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\n// import \"cal-sans\";\nconst application = Application.start()\nconst context = require.context(\"../controllers\", true, /\\.js$/)\napplication.load(definitionsFromContext(context))\n\n\ndocument.addEventListener(\"DOMContentLoaded\", (e) => {\n let chrome_cta = document.getElementById('chrome-cta');\n let is_chrome = navigator.userAgent.toLowerCase().indexOf(\"chrome\") > -1;\n\n if(!is_chrome && !!chrome_cta){\n chrome_cta.remove();\n }\n\n let pulse_button = document.getElementById('js-pulse');\n\n if(pulse_button){\n pulse_button.addEventListener('click', (e) => {\n gtag('event', 'pulse', { 'event_category' : e.target.getAttribute('data-service') });\n plausible('Pulse', {props: { service: e.target.getAttribute('data-service') }});\n });\n }\n\n let notifications = document.getElementById('notifications-animation');\n\n if(notifications){\n setInterval(() => {\n let lastNotification = notifications.lastElementChild;\n\n notifications.insertBefore(lastNotification, notifications.firstElementChild )\n }, 5000);\n }\n\n let show_components_button = document.getElementById('js-show-components');\n\n if(show_components_button){\n show_components_button.addEventListener('click', (e) => {\n let components = document.getElementById('hidden_components');\n components.classList.remove('hidden');\n show_components_button.classList.add('hidden');\n e.preventDefault();\n });\n }\n\n let main_header = document.getElementById('main-header');\n if(main_header){\n document.addEventListener('scroll', function(e) {\n if(window.scrollY > 0){\n main_header.classList.add('header-scrolled');\n } else {\n main_header.classList.remove('header-scrolled');\n }\n });\n }\n\n let steps = document.getElementById('welcome-steps');\n if(steps){\n // get links and add on click event\n let links = steps.querySelectorAll('a.step');\n\n links.forEach((link) => {\n link.addEventListener('click', (e) => {\n let tagName = 'a'\n let el = e.target;\n\n while (el && el.parentNode) {\n if (el.tagName && el.tagName.toLowerCase() == tagName) {\n break;\n }\n el = el.parentNode;\n }\n\n let target = el.getAttribute('data-target');\n\n let target_element = document.getElementById(target);\n // hide all steps and show the target\n steps.querySelectorAll('.wstep').forEach((step) => {\n step.classList.add('hidden');\n });\n\n steps.querySelectorAll('.step').forEach((step) => {\n step.classList.remove('step-active');\n });\n\n el.classList.add('step-active');\n target_element.classList.remove('hidden');\n e.preventDefault();\n });\n });\n }\n\n let search_components = document.getElementById('search_components');\n let timeoutId;\n // let search_loading = document.getElementById('search_loading');\n\n if(search_components){\n search_components.addEventListener('keyup', (e) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n let components = document.getElementById('component_container').querySelectorAll('.component');\n // search_loading.classList.remove('hidden');\n\n components.forEach((component) => {\n let name = component.innerText;\n\n if(name.toLowerCase().includes(e.target.value.toLowerCase())){\n component.classList.remove('hidden');\n\n if (component.classList.contains('component-children')) {\n component.closest('.component-group').getElementsByClassName('component-parent')[0].classList.remove('hidden');\n component.closest('.component-children-wrapper').classList.remove('hidden');\n }\n } else {\n component.classList.add('hidden');\n }\n });\n // search_loading.classList.add('hidden');\n }, 500); // Wait for 500 milliseconds before executing the function\n });\n }\n});","/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys().map(key => definitionForModuleWithContextAndKey(context, key)).filter(value => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier,\n controllerConstructor\n };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };"],"sourceRoot":""}