{"version":3,"file":"stimulus-d1c3bb31.js","sources":["../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/@hotwired/stimulus/dist/stimulus.js"],"sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/*\nStimulus 3.0.1\nCopyright © 2021 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 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())\n .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\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).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\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.split(\":\").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 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\nclass Action {\n constructor(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n static forToken(token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n }\n toString() {\n const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n }\n get params() {\n if (this.eventTarget instanceof Element) {\n return this.getParamsFromEventTargetAttributes(this.eventTarget);\n }\n else {\n return {};\n }\n }\n getParamsFromEventTargetAttributes(eventTarget) {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n const attributes = Array.from(eventTarget.attributes);\n attributes.forEach(({ name, value }) => {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n Object.assign(params, { [camelize(key)]: typecast(value) });\n }\n });\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n}\nconst defaultEventNames = {\n \"a\": e => \"click\",\n \"button\": e => \"click\",\n \"form\": e => \"submit\",\n \"details\": e => \"toggle\",\n \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n \"select\": e => \"change\",\n \"textarea\": e => \"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 if (this.willBeInvokedByEvent(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 invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\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 (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(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 }\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\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\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 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)\n .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.trim().split(/\\s+/).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));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token);\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 this.invokeChangedCallbacksForDefaultValues();\n }\n start() {\n this.stringMapObserver.start();\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 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 }\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\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 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 try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\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.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 invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\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\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) => [\n ...Object.getOwnPropertyNames(object),\n ...Object.getOwnPropertySymbols(object)\n ];\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 () { this.a.call(this); };\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\n || this.findTarget(targetName)\n || 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 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 }\n findElement(selector) {\n return this.element.matches(selector)\n ? this.element\n : 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}\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 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 }\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}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`\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 }\n static start(element, schema) {\n const application = new Application(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 if (controllerConstructor.shouldLoad) {\n this.load({ identifier, controllerConstructor });\n }\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => this.router.loadDefinition(definition));\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 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);\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) {\n const definition = parseValueDefinitionPair(valueDefinitionPair);\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]) {\n return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array: return \"array\";\n case Boolean: return \"boolean\";\n case Number: return \"number\";\n case Object: return \"object\";\n case String: return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\": return \"boolean\";\n case \"number\": return \"number\";\n case \"string\": 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(typeObject) {\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n if (typeFromObject) {\n const defaultValueType = parseValueTypeDefault(typeObject.default);\n if (typeFromObject !== defaultValueType) {\n throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n }\n return typeFromObject;\n }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n const typeFromObject = parseValueTypeObject(typeDefinition);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(typeDefinition);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() { return []; },\n boolean: false,\n number: 0,\n get object() { return {}; },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || value == \"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 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 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 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 = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n"],"names":["ReactPropTypesSecret","ReactPropTypesSecret_1","require$$0","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","props","propName","componentName","location","propFullName","secret","err","getShim","ReactPropTypes","propTypesModule","EventListener","eventTarget","eventName","eventOptions","binding","event","extendedEvent","extendEvent","left","right","leftIndex","rightIndex","stopImmediatePropagation","Dispatcher","application","eventListener","listeners","map","error","message","detail","eventListenerMap","cacheKey","parts","key","descriptorPattern","parseActionDescriptorString","descriptorString","matches","parseEventTarget","parseEventOptions","eventTargetName","options","token","stringifyEventTarget","camelize","value","_","char","capitalize","dasherize","tokenize","Action","element","index","descriptor","getDefaultEventNameForElement","eventNameSuffix","params","pattern","name","match","typecast","defaultEventNames","e","tagName","Binding","context","action","method","target","currentTarget","actionEvent","identifier","controller","ElementObserver","delegate","mutations","callback","mutation","node","attributeName","nodes","tree","processor","AttributeObserver","StringMapObserver","oldValue","attribute","add","fetch","del","prune","values","Multimap","set","size","TokenListObserver","unmatchedTokens","matchedTokens","tokens","previousTokens","currentTokens","firstDifferingIndex","zip","previousToken","currentToken","tokensAreEqual","tokenString","parseTokenString","content","length","ValueListObserver","parseResult","valuesByToken","BindingObserver","ValueObserver","receiver","defaultValue","writer","rawValue","rawOldValue","changedMethodName","changedMethod","valueDescriptorMap","descriptors","hasMethodName","TargetObserver","_a","Context","module","scope","functionName","methodName","args","readInheritableStaticArrayValues","constructor","propertyName","ancestors","getAncestorsForConstructor","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","definition","bless","shadow","getBlessedProperties","properties","shadowConstructor","extend","shadowProperties","getShadowProperties","blessedProperties","blessing","prototype","getOwnKeys","getShadowedDescriptor","shadowingDescriptor","object","extendWithReflect","extended","testReflectExtension","b","blessDefinition","Module","ClassMap","DataMap","Guide","logger","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","targets","selector","targetDescriptor","revisedAttributeName","Scope","schema","ScopeObserver","scopesByIdentifier","referenceCount","Router","contexts","defaultSchema","Application","domReady","controllerConstructor","head","rest","resolve","ClassPropertiesBlessing","classDefinition","propertiesForClassDefinition","classes","TargetPropertiesBlessing","targetDefinition","propertiesForTargetDefinition","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","result","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","propertiesForValueDefinitionPair","read","write","typeDefinition","valueDescriptorForTokenAndTypeDefinition","parseValueTypeConstant","constant","parseValueTypeDefault","parseValueTypeObject","typeObject","typeFromObject","defaultValueType","parseValueTypeDefinition","typeFromDefaultValue","typeFromConstant","type","defaultValueForDefinition","defaultValuesByType","readers","writers","array","writeString","writeJSON","Controller","prefix","bubbles","cancelable"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}