{"version":3,"file":"js/6599-f55098fd9e868939a701.js","mappings":"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","sources":["webpack://priv_source/./node_modules/@hotwired/stimulus/dist/stimulus.js"],"sourcesContent":["/*\nStimulus 3.2.1\nCopyright © 2023 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 }\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, 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 }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\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, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\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, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\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)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\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[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\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}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\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 shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\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 keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\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 }\n catch (o_O) {\n return value;\n }\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 const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\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;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\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.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\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}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\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 }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\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(tree = 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 }\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}\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}\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}\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)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => 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}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\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 get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\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 { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\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, { attributes: true, attributeOldValue: true });\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)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\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}\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 [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\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(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\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\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\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;\n const { value } = this.fetchParseResultForToken(token);\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;\n const { value } = this.fetchParseResultForToken(token);\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 { value };\n }\n catch (error) {\n return { 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}\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)\n 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 }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\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 }\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;\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}\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({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\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}\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}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\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\n .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 updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\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 schema() {\n return this.context.schema;\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}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, 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 }\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 }\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 }\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, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, 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, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\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, { [key]: descriptor });\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 }\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: { value: extended },\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 }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\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}\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}\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 }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\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}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\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(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\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;\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}\". ` +\n `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}\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(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\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)\n 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}\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 [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\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\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\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, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\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}\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.call(definition.controllerConstructor, 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 proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and 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}\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({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.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({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\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, ...rest) {\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, detail = {}) {\n detail = Object.assign({ application: this }, 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 }\n else {\n resolve();\n }\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;\n if (classes.has(key)) {\n return classes.get(key);\n }\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}\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 getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\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}\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 }\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}\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, { [attributeName]: valueDescriptor });\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, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\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([token, typeDefinition], controller) {\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))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : 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 \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(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.replace(/_/g, \"\"));\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}\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 }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n"],"names":["EventListener","constructor","eventTarget","eventName","eventOptions","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation","Object","assign","immediatePropagationStopped","call","extendEvent","bindings","hasBindings","size","Array","from","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","clearEventListeners","clearEventListenersForBinding","handleError","error","message","detail","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","get","createEventListener","set","parts","keys","key","push","join","defaultActionDescriptorFilters","value","stopPropagation","prevent","preventDefault","self","element","target","descriptorPattern","parseEventTarget","eventTargetName","window","document","camelize","replace","_","char","toUpperCase","namespaceCamelize","capitalize","charAt","slice","dasherize","toLowerCase","isSomething","object","undefined","hasProperty","property","prototype","hasOwnProperty","allModifiers","defaultEventNames","a","button","form","details","input","e","getAttribute","select","textarea","Error","typecast","JSON","parse","o_O","Binding","context","action","identifier","actionEvent","prepareActionEvent","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","method","controller","methodName","actionDescriptorFilters","passes","name","entries","filter","params","currentTarget","logDebugActivity","KeyboardEvent","shouldIgnoreKeyboardEvent","MouseEvent","shouldIgnoreMouseEvent","Element","contains","scope","containsElement","ElementObserver","delegate","mutationObserverInit","attributes","childList","subtree","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","pause","callback","takeRecords","matches","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","node","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","match","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_key","_values","SelectorObserver","_selector","matchesByElement","selectorMatchElement","selectorMatched","selectors","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","unmatchedTokens","matchedTokens","refreshTokensForElement","tokensUnmatched","tokens","token","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","length","Math","max","zip","findIndex","previousToken","currentToken","content","tokenString","trim","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","descriptor","tagName","getDefaultEventNameForElement","keyFilter","descriptorString","includes","options","test","parseActionDescriptorString","toString","eventFilter","filters","keyFilterDissatisfied","standardFilter","keyMappings","pattern","RegExp","meta","ctrl","alt","shift","modifier","metaKey","ctrlKey","altKey","shiftKey","forToken","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","valueDescriptors","data","rawValue","rawOldValue","changedMethodName","changedMethod","reader","TypeError","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","connectTarget","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","isArray","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","reverse","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","attributeObserverMap","outletDefinitions","outletName","setupSelectorObserverForOutlet","setupAttributeObserverForOutlet","dependentContexts","observer","disconnectAllOutlets","stopSelectorObservers","stopAttributeObservers","outlet","getOutlet","connectOutlet","getOutletFromMap","disconnectOutlet","hasOutlet","hasOutletController","controllerAttribute","_element","getOutletNameFromOutletAttributeName","updateSelectorObserverForOutlet","outletConnected","outletDisconnected","selectorObserver","body","attributeNameForOutletName","outlets","getSelectorForOutletName","outletAttributeForScope","find","dependencies","router","modules","module","controllerConstructor","outletDependencies","identifiers","dependentControllerIdentifiers","contexts","getControllerForElementAndIdentifier","Context","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","args","bless","properties","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","Reflect","construct","arguments","create","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","targetNames","findTarget","findLegacyTarget","findAll","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","outletNames","findOutlet","findAllOutlets","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","documentElement","isDocumentScope","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","parseValueForElementAndIdentifier","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","proposeToConnectScopeForElementAndIdentifier","console","defaultSchema","enter","tab","esc","space","up","down","home","end","page_up","page_down","objectFromEntries","c","n","array","memo","k","v","Application","debug","logFormattedMessage","Promise","resolve","readyState","register","load","registerActionOption","head","rest","shouldLoad","unload","onerror","groupCollapsed","log","groupEnd","getOutletController","getControllerAndEnsureConnectedScope","outletController","parseValueDefinitionPair","typeDefinition","payload","typeFromObject","typeObject","hasType","hasDefault","default","fullObject","onlyType","onlyDefault","parseValueTypeConstant","typeFromDefaultValue","parseValueTypeDefault","parseValueTypeObject","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","constantFromType","defaultValueForDefinition","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","Number","String","boolean","number","string","writeJSON","stringify","Controller","_identifier","_application","dispatch","prefix","bubbles","cancelable","CustomEvent","dispatchEvent","blessings","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","read","write","hasCustomDefaultValue","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletElement","propertiesForOutletDefinition"],"sourceRoot":""}