{"version":3,"file":"js/364-7f77d9b47d38c4009e4a.js","mappings":"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","sources":["webpack://app/./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://app/./node_modules/html-to-image/es/util.js","webpack://app/./node_modules/html-to-image/es/clone-pseudos.js","webpack://app/./node_modules/html-to-image/es/mimes.js","webpack://app/./node_modules/html-to-image/es/dataurl.js","webpack://app/./node_modules/html-to-image/es/clone-node.js","webpack://app/./node_modules/html-to-image/es/embed-resources.js","webpack://app/./node_modules/html-to-image/es/embed-images.js","webpack://app/./node_modules/html-to-image/es/embed-webfonts.js","webpack://app/./node_modules/html-to-image/es/index.js","webpack://app/./node_modules/html-to-image/es/apply-style.js","webpack://app/./node_modules/morphdom/dist/morphdom-esm.js","webpack://app/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://app/./node_modules/@floating-ui/utils/dom/dist/floating-ui.utils.dom.mjs","webpack://app/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://app/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs"],"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","export function resolveUrl(url, baseUrl) {\n // url is absolute already\n if (url.match(/^[a-z]+:\\/\\//i)) {\n return url;\n }\n // url is absolute already, without protocol\n if (url.match(/^\\/\\//)) {\n return window.location.protocol + url;\n }\n // dataURI, mailto:, tel:, etc.\n if (url.match(/^[a-z]+:/i)) {\n return url;\n }\n const doc = document.implementation.createHTMLDocument();\n const base = doc.createElement('base');\n const a = doc.createElement('a');\n doc.head.appendChild(base);\n doc.body.appendChild(a);\n if (baseUrl) {\n base.href = baseUrl;\n }\n a.href = url;\n return a.href;\n}\nexport const uuid = (() => {\n // generate uuid for className of pseudo elements.\n // We should not use GUIDs, otherwise pseudo elements sometimes cannot be captured.\n let counter = 0;\n // ref: http://stackoverflow.com/a/6248722/2519373\n const random = () => \n // eslint-disable-next-line no-bitwise\n `0000${((Math.random() * 36 ** 4) << 0).toString(36)}`.slice(-4);\n return () => {\n counter += 1;\n return `u${random()}${counter}`;\n };\n})();\nexport function delay(ms) {\n return (args) => new Promise((resolve) => {\n setTimeout(() => resolve(args), ms);\n });\n}\nexport function toArray(arrayLike) {\n const arr = [];\n for (let i = 0, l = arrayLike.length; i < l; i++) {\n arr.push(arrayLike[i]);\n }\n return arr;\n}\nfunction px(node, styleProperty) {\n const win = node.ownerDocument.defaultView || window;\n const val = win.getComputedStyle(node).getPropertyValue(styleProperty);\n return val ? parseFloat(val.replace('px', '')) : 0;\n}\nfunction getNodeWidth(node) {\n const leftBorder = px(node, 'border-left-width');\n const rightBorder = px(node, 'border-right-width');\n return node.clientWidth + leftBorder + rightBorder;\n}\nfunction getNodeHeight(node) {\n const topBorder = px(node, 'border-top-width');\n const bottomBorder = px(node, 'border-bottom-width');\n return node.clientHeight + topBorder + bottomBorder;\n}\nexport function getImageSize(targetNode, options = {}) {\n const width = options.width || getNodeWidth(targetNode);\n const height = options.height || getNodeHeight(targetNode);\n return { width, height };\n}\nexport function getPixelRatio() {\n let ratio;\n let FINAL_PROCESS;\n try {\n FINAL_PROCESS = process;\n }\n catch (e) {\n // pass\n }\n const val = FINAL_PROCESS && FINAL_PROCESS.env\n ? FINAL_PROCESS.env.devicePixelRatio\n : null;\n if (val) {\n ratio = parseInt(val, 10);\n if (Number.isNaN(ratio)) {\n ratio = 1;\n }\n }\n return ratio || window.devicePixelRatio || 1;\n}\n// @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size\nconst canvasDimensionLimit = 16384;\nexport function checkCanvasDimensions(canvas) {\n if (canvas.width > canvasDimensionLimit ||\n canvas.height > canvasDimensionLimit) {\n if (canvas.width > canvasDimensionLimit &&\n canvas.height > canvasDimensionLimit) {\n if (canvas.width > canvas.height) {\n canvas.height *= canvasDimensionLimit / canvas.width;\n canvas.width = canvasDimensionLimit;\n }\n else {\n canvas.width *= canvasDimensionLimit / canvas.height;\n canvas.height = canvasDimensionLimit;\n }\n }\n else if (canvas.width > canvasDimensionLimit) {\n canvas.height *= canvasDimensionLimit / canvas.width;\n canvas.width = canvasDimensionLimit;\n }\n else {\n canvas.width *= canvasDimensionLimit / canvas.height;\n canvas.height = canvasDimensionLimit;\n }\n }\n}\nexport function canvasToBlob(canvas, options = {}) {\n if (canvas.toBlob) {\n return new Promise((resolve) => {\n canvas.toBlob(resolve, options.type ? options.type : 'image/png', options.quality ? options.quality : 1);\n });\n }\n return new Promise((resolve) => {\n const binaryString = window.atob(canvas\n .toDataURL(options.type ? options.type : undefined, options.quality ? options.quality : undefined)\n .split(',')[1]);\n const len = binaryString.length;\n const binaryArray = new Uint8Array(len);\n for (let i = 0; i < len; i += 1) {\n binaryArray[i] = binaryString.charCodeAt(i);\n }\n resolve(new Blob([binaryArray], {\n type: options.type ? options.type : 'image/png',\n }));\n });\n}\nexport function createImage(url) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.decode = () => resolve(img);\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.crossOrigin = 'anonymous';\n img.decoding = 'async';\n img.src = url;\n });\n}\nexport async function svgToDataURL(svg) {\n return Promise.resolve()\n .then(() => new XMLSerializer().serializeToString(svg))\n .then(encodeURIComponent)\n .then((html) => `data:image/svg+xml;charset=utf-8,${html}`);\n}\nexport async function nodeToDataURL(node, width, height) {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttribute('width', `${width}`);\n svg.setAttribute('height', `${height}`);\n svg.setAttribute('viewBox', `0 0 ${width} ${height}`);\n foreignObject.setAttribute('width', '100%');\n foreignObject.setAttribute('height', '100%');\n foreignObject.setAttribute('x', '0');\n foreignObject.setAttribute('y', '0');\n foreignObject.setAttribute('externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(node);\n return svgToDataURL(svg);\n}\nexport const isInstanceOfElement = (node, instance) => {\n if (node instanceof instance)\n return true;\n const nodePrototype = Object.getPrototypeOf(node);\n if (nodePrototype === null)\n return false;\n return (nodePrototype.constructor.name === instance.name ||\n isInstanceOfElement(nodePrototype, instance));\n};\n//# sourceMappingURL=util.js.map","import { uuid, toArray } from './util';\nfunction formatCSSText(style) {\n const content = style.getPropertyValue('content');\n return `${style.cssText} content: '${content.replace(/'|\"/g, '')}';`;\n}\nfunction formatCSSProperties(style) {\n return toArray(style)\n .map((name) => {\n const value = style.getPropertyValue(name);\n const priority = style.getPropertyPriority(name);\n return `${name}: ${value}${priority ? ' !important' : ''};`;\n })\n .join(' ');\n}\nfunction getPseudoElementStyle(className, pseudo, style) {\n const selector = `.${className}:${pseudo}`;\n const cssText = style.cssText\n ? formatCSSText(style)\n : formatCSSProperties(style);\n return document.createTextNode(`${selector}{${cssText}}`);\n}\nfunction clonePseudoElement(nativeNode, clonedNode, pseudo) {\n const style = window.getComputedStyle(nativeNode, pseudo);\n const content = style.getPropertyValue('content');\n if (content === '' || content === 'none') {\n return;\n }\n const className = uuid();\n try {\n clonedNode.className = `${clonedNode.className} ${className}`;\n }\n catch (err) {\n return;\n }\n const styleElement = document.createElement('style');\n styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));\n clonedNode.appendChild(styleElement);\n}\nexport function clonePseudoElements(nativeNode, clonedNode) {\n clonePseudoElement(nativeNode, clonedNode, ':before');\n clonePseudoElement(nativeNode, clonedNode, ':after');\n}\n//# sourceMappingURL=clone-pseudos.js.map","const WOFF = 'application/font-woff';\nconst JPEG = 'image/jpeg';\nconst mimes = {\n woff: WOFF,\n woff2: WOFF,\n ttf: 'application/font-truetype',\n eot: 'application/vnd.ms-fontobject',\n png: 'image/png',\n jpg: JPEG,\n jpeg: JPEG,\n gif: 'image/gif',\n tiff: 'image/tiff',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n};\nfunction getExtension(url) {\n const match = /\\.([^./]*?)$/g.exec(url);\n return match ? match[1] : '';\n}\nexport function getMimeType(url) {\n const extension = getExtension(url).toLowerCase();\n return mimes[extension] || '';\n}\n//# sourceMappingURL=mimes.js.map","function getContentFromDataUrl(dataURL) {\n return dataURL.split(/,/)[1];\n}\nexport function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n}\nexport function makeDataUrl(content, mimeType) {\n return `data:${mimeType};base64,${content}`;\n}\nexport async function fetchAsDataURL(url, init, process) {\n const res = await fetch(url, init);\n if (res.status === 404) {\n throw new Error(`Resource \"${res.url}\" not found`);\n }\n const blob = await res.blob();\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = () => {\n try {\n resolve(process({ res, result: reader.result }));\n }\n catch (error) {\n reject(error);\n }\n };\n reader.readAsDataURL(blob);\n });\n}\nconst cache = {};\nfunction getCacheKey(url, contentType, includeQueryParams) {\n let key = url.replace(/\\?.*/, '');\n if (includeQueryParams) {\n key = url;\n }\n // font resource\n if (/ttf|otf|eot|woff2?/i.test(key)) {\n key = key.replace(/.*\\//, '');\n }\n return contentType ? `[${contentType}]${key}` : key;\n}\nexport async function resourceToDataURL(resourceUrl, contentType, options) {\n const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);\n if (cache[cacheKey] != null) {\n return cache[cacheKey];\n }\n // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n if (options.cacheBust) {\n // eslint-disable-next-line no-param-reassign\n resourceUrl += (/\\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime();\n }\n let dataURL;\n try {\n const content = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {\n if (!contentType) {\n // eslint-disable-next-line no-param-reassign\n contentType = res.headers.get('Content-Type') || '';\n }\n return getContentFromDataUrl(result);\n });\n dataURL = makeDataUrl(content, contentType);\n }\n catch (error) {\n dataURL = options.imagePlaceholder || '';\n let msg = `Failed to fetch resource: ${resourceUrl}`;\n if (error) {\n msg = typeof error === 'string' ? error : error.message;\n }\n if (msg) {\n console.warn(msg);\n }\n }\n cache[cacheKey] = dataURL;\n return dataURL;\n}\n//# sourceMappingURL=dataurl.js.map","import { clonePseudoElements } from './clone-pseudos';\nimport { createImage, toArray, isInstanceOfElement } from './util';\nimport { getMimeType } from './mimes';\nimport { resourceToDataURL } from './dataurl';\nasync function cloneCanvasElement(canvas) {\n const dataURL = canvas.toDataURL();\n if (dataURL === 'data:,') {\n return canvas.cloneNode(false);\n }\n return createImage(dataURL);\n}\nasync function cloneVideoElement(video, options) {\n if (video.currentSrc) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = video.clientWidth;\n canvas.height = video.clientHeight;\n ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL();\n return createImage(dataURL);\n }\n const poster = video.poster;\n const contentType = getMimeType(poster);\n const dataURL = await resourceToDataURL(poster, contentType, options);\n return createImage(dataURL);\n}\nasync function cloneIFrameElement(iframe) {\n var _a;\n try {\n if ((_a = iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.body) {\n return (await cloneNode(iframe.contentDocument.body, {}, true));\n }\n }\n catch (_b) {\n // Failed to clone iframe\n }\n return iframe.cloneNode(false);\n}\nasync function cloneSingleNode(node, options) {\n if (isInstanceOfElement(node, HTMLCanvasElement)) {\n return cloneCanvasElement(node);\n }\n if (isInstanceOfElement(node, HTMLVideoElement)) {\n return cloneVideoElement(node, options);\n }\n if (isInstanceOfElement(node, HTMLIFrameElement)) {\n return cloneIFrameElement(node);\n }\n return node.cloneNode(false);\n}\nconst isSlotElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SLOT';\nasync function cloneChildren(nativeNode, clonedNode, options) {\n var _a, _b;\n let children = [];\n if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {\n children = toArray(nativeNode.assignedNodes());\n }\n else if (isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n ((_a = nativeNode.contentDocument) === null || _a === void 0 ? void 0 : _a.body)) {\n children = toArray(nativeNode.contentDocument.body.childNodes);\n }\n else {\n children = toArray(((_b = nativeNode.shadowRoot) !== null && _b !== void 0 ? _b : nativeNode).childNodes);\n }\n if (children.length === 0 ||\n isInstanceOfElement(nativeNode, HTMLVideoElement)) {\n return clonedNode;\n }\n await children.reduce((deferred, child) => deferred\n .then(() => cloneNode(child, options))\n .then((clonedChild) => {\n if (clonedChild) {\n clonedNode.appendChild(clonedChild);\n }\n }), Promise.resolve());\n return clonedNode;\n}\nfunction cloneCSSStyle(nativeNode, clonedNode) {\n const targetStyle = clonedNode.style;\n if (!targetStyle) {\n return;\n }\n const sourceStyle = window.getComputedStyle(nativeNode);\n if (sourceStyle.cssText) {\n targetStyle.cssText = sourceStyle.cssText;\n targetStyle.transformOrigin = sourceStyle.transformOrigin;\n }\n else {\n toArray(sourceStyle).forEach((name) => {\n let value = sourceStyle.getPropertyValue(name);\n if (name === 'font-size' && value.endsWith('px')) {\n const reducedFont = Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1;\n value = `${reducedFont}px`;\n }\n if (isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n name === 'display' &&\n value === 'inline') {\n value = 'block';\n }\n if (name === 'd' && clonedNode.getAttribute('d')) {\n value = `path(${clonedNode.getAttribute('d')})`;\n }\n targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));\n });\n }\n}\nfunction cloneInputValue(nativeNode, clonedNode) {\n if (isInstanceOfElement(nativeNode, HTMLTextAreaElement)) {\n clonedNode.innerHTML = nativeNode.value;\n }\n if (isInstanceOfElement(nativeNode, HTMLInputElement)) {\n clonedNode.setAttribute('value', nativeNode.value);\n }\n}\nfunction cloneSelectValue(nativeNode, clonedNode) {\n if (isInstanceOfElement(nativeNode, HTMLSelectElement)) {\n const clonedSelect = clonedNode;\n const selectedOption = Array.from(clonedSelect.children).find((child) => nativeNode.value === child.getAttribute('value'));\n if (selectedOption) {\n selectedOption.setAttribute('selected', '');\n }\n }\n}\nfunction decorate(nativeNode, clonedNode) {\n if (isInstanceOfElement(clonedNode, Element)) {\n cloneCSSStyle(nativeNode, clonedNode);\n clonePseudoElements(nativeNode, clonedNode);\n cloneInputValue(nativeNode, clonedNode);\n cloneSelectValue(nativeNode, clonedNode);\n }\n return clonedNode;\n}\nasync function ensureSVGSymbols(clone, options) {\n const uses = clone.querySelectorAll ? clone.querySelectorAll('use') : [];\n if (uses.length === 0) {\n return clone;\n }\n const processedDefs = {};\n for (let i = 0; i < uses.length; i++) {\n const use = uses[i];\n const id = use.getAttribute('xlink:href');\n if (id) {\n const exist = clone.querySelector(id);\n const definition = document.querySelector(id);\n if (!exist && definition && !processedDefs[id]) {\n // eslint-disable-next-line no-await-in-loop\n processedDefs[id] = (await cloneNode(definition, options, true));\n }\n }\n }\n const nodes = Object.values(processedDefs);\n if (nodes.length) {\n const ns = 'http://www.w3.org/1999/xhtml';\n const svg = document.createElementNS(ns, 'svg');\n svg.setAttribute('xmlns', ns);\n svg.style.position = 'absolute';\n svg.style.width = '0';\n svg.style.height = '0';\n svg.style.overflow = 'hidden';\n svg.style.display = 'none';\n const defs = document.createElementNS(ns, 'defs');\n svg.appendChild(defs);\n for (let i = 0; i < nodes.length; i++) {\n defs.appendChild(nodes[i]);\n }\n clone.appendChild(svg);\n }\n return clone;\n}\nexport async function cloneNode(node, options, isRoot) {\n if (!isRoot && options.filter && !options.filter(node)) {\n return null;\n }\n return Promise.resolve(node)\n .then((clonedNode) => cloneSingleNode(clonedNode, options))\n .then((clonedNode) => cloneChildren(node, clonedNode, options))\n .then((clonedNode) => decorate(node, clonedNode))\n .then((clonedNode) => ensureSVGSymbols(clonedNode, options));\n}\n//# sourceMappingURL=clone-node.js.map","import { resolveUrl } from './util';\nimport { getMimeType } from './mimes';\nimport { isDataUrl, makeDataUrl, resourceToDataURL } from './dataurl';\nconst URL_REGEX = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nconst URL_WITH_FORMAT_REGEX = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g;\nconst FONT_SRC_REGEX = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;\nfunction toRegex(url) {\n // eslint-disable-next-line no-useless-escape\n const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, 'g');\n}\nexport function parseURLs(cssText) {\n const urls = [];\n cssText.replace(URL_REGEX, (raw, quotation, url) => {\n urls.push(url);\n return raw;\n });\n return urls.filter((url) => !isDataUrl(url));\n}\nexport async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {\n try {\n const resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL;\n const contentType = getMimeType(resourceURL);\n let dataURL;\n if (getContentFromUrl) {\n const content = await getContentFromUrl(resolvedURL);\n dataURL = makeDataUrl(content, contentType);\n }\n else {\n dataURL = await resourceToDataURL(resolvedURL, contentType, options);\n }\n return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);\n }\n catch (error) {\n // pass\n }\n return cssText;\n}\nfunction filterPreferredFontFormat(str, { preferredFontFormat }) {\n return !preferredFontFormat\n ? str\n : str.replace(FONT_SRC_REGEX, (match) => {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];\n if (!format) {\n return '';\n }\n if (format === preferredFontFormat) {\n return `src: ${src};`;\n }\n }\n });\n}\nexport function shouldEmbed(url) {\n return url.search(URL_REGEX) !== -1;\n}\nexport async function embedResources(cssText, baseUrl, options) {\n if (!shouldEmbed(cssText)) {\n return cssText;\n }\n const filteredCSSText = filterPreferredFontFormat(cssText, options);\n const urls = parseURLs(filteredCSSText);\n return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));\n}\n//# sourceMappingURL=embed-resources.js.map","import { embedResources } from './embed-resources';\nimport { toArray, isInstanceOfElement } from './util';\nimport { isDataUrl, resourceToDataURL } from './dataurl';\nimport { getMimeType } from './mimes';\nasync function embedProp(propName, node, options) {\n var _a;\n const propValue = (_a = node.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue(propName);\n if (propValue) {\n const cssString = await embedResources(propValue, null, options);\n node.style.setProperty(propName, cssString, node.style.getPropertyPriority(propName));\n return true;\n }\n return false;\n}\nasync function embedBackground(clonedNode, options) {\n if (!(await embedProp('background', clonedNode, options))) {\n await embedProp('background-image', clonedNode, options);\n }\n if (!(await embedProp('mask', clonedNode, options))) {\n await embedProp('mask-image', clonedNode, options);\n }\n}\nasync function embedImageNode(clonedNode, options) {\n const isImageElement = isInstanceOfElement(clonedNode, HTMLImageElement);\n if (!(isImageElement && !isDataUrl(clonedNode.src)) &&\n !(isInstanceOfElement(clonedNode, SVGImageElement) &&\n !isDataUrl(clonedNode.href.baseVal))) {\n return;\n }\n const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal;\n const dataURL = await resourceToDataURL(url, getMimeType(url), options);\n await new Promise((resolve, reject) => {\n clonedNode.onload = resolve;\n clonedNode.onerror = reject;\n const image = clonedNode;\n if (image.decode) {\n image.decode = resolve;\n }\n if (image.loading === 'lazy') {\n image.loading = 'eager';\n }\n if (isImageElement) {\n clonedNode.srcset = '';\n clonedNode.src = dataURL;\n }\n else {\n clonedNode.href.baseVal = dataURL;\n }\n });\n}\nasync function embedChildren(clonedNode, options) {\n const children = toArray(clonedNode.childNodes);\n const deferreds = children.map((child) => embedImages(child, options));\n await Promise.all(deferreds).then(() => clonedNode);\n}\nexport async function embedImages(clonedNode, options) {\n if (isInstanceOfElement(clonedNode, Element)) {\n await embedBackground(clonedNode, options);\n await embedImageNode(clonedNode, options);\n await embedChildren(clonedNode, options);\n }\n}\n//# sourceMappingURL=embed-images.js.map","import { toArray } from './util';\nimport { fetchAsDataURL } from './dataurl';\nimport { shouldEmbed, embedResources } from './embed-resources';\nconst cssFetchCache = {};\nasync function fetchCSS(url) {\n let cache = cssFetchCache[url];\n if (cache != null) {\n return cache;\n }\n const res = await fetch(url);\n const cssText = await res.text();\n cache = { url, cssText };\n cssFetchCache[url] = cache;\n return cache;\n}\nasync function embedFonts(data, options) {\n let cssText = data.cssText;\n const regexUrl = /url\\([\"']?([^\"')]+)[\"']?\\)/g;\n const fontLocs = cssText.match(/url\\([^)]+\\)/g) || [];\n const loadFonts = fontLocs.map(async (loc) => {\n let url = loc.replace(regexUrl, '$1');\n if (!url.startsWith('https://')) {\n url = new URL(url, data.url).href;\n }\n return fetchAsDataURL(url, options.fetchRequestInit, ({ result }) => {\n cssText = cssText.replace(loc, `url(${result})`);\n return [loc, result];\n });\n });\n return Promise.all(loadFonts).then(() => cssText);\n}\nfunction parseCSS(source) {\n if (source == null) {\n return [];\n }\n const result = [];\n const commentsRegex = /(\\/\\*[\\s\\S]*?\\*\\/)/gi;\n // strip out comments\n let cssText = source.replace(commentsRegex, '');\n // eslint-disable-next-line prefer-regex-literals\n const keyframesRegex = new RegExp('((@.*?keyframes [\\\\s\\\\S]*?){([\\\\s\\\\S]*?}\\\\s*?)})', 'gi');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const matches = keyframesRegex.exec(cssText);\n if (matches === null) {\n break;\n }\n result.push(matches[0]);\n }\n cssText = cssText.replace(keyframesRegex, '');\n const importRegex = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi;\n // to match css & media queries together\n const combinedCSSRegex = '((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]' +\n '*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})';\n // unified regex\n const unifiedRegex = new RegExp(combinedCSSRegex, 'gi');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let matches = importRegex.exec(cssText);\n if (matches === null) {\n matches = unifiedRegex.exec(cssText);\n if (matches === null) {\n break;\n }\n else {\n importRegex.lastIndex = unifiedRegex.lastIndex;\n }\n }\n else {\n unifiedRegex.lastIndex = importRegex.lastIndex;\n }\n result.push(matches[0]);\n }\n return result;\n}\nasync function getCSSRules(styleSheets, options) {\n const ret = [];\n const deferreds = [];\n // First loop inlines imports\n styleSheets.forEach((sheet) => {\n if ('cssRules' in sheet) {\n try {\n toArray(sheet.cssRules || []).forEach((item, index) => {\n if (item.type === CSSRule.IMPORT_RULE) {\n let importIndex = index + 1;\n const url = item.href;\n const deferred = fetchCSS(url)\n .then((metadata) => embedFonts(metadata, options))\n .then((cssText) => parseCSS(cssText).forEach((rule) => {\n try {\n sheet.insertRule(rule, rule.startsWith('@import')\n ? (importIndex += 1)\n : sheet.cssRules.length);\n }\n catch (error) {\n console.error('Error inserting rule from remote css', {\n rule,\n error,\n });\n }\n }))\n .catch((e) => {\n console.error('Error loading remote css', e.toString());\n });\n deferreds.push(deferred);\n }\n });\n }\n catch (e) {\n const inline = styleSheets.find((a) => a.href == null) || document.styleSheets[0];\n if (sheet.href != null) {\n deferreds.push(fetchCSS(sheet.href)\n .then((metadata) => embedFonts(metadata, options))\n .then((cssText) => parseCSS(cssText).forEach((rule) => {\n inline.insertRule(rule, sheet.cssRules.length);\n }))\n .catch((err) => {\n console.error('Error loading remote stylesheet', err);\n }));\n }\n console.error('Error inlining remote css file', e);\n }\n }\n });\n return Promise.all(deferreds).then(() => {\n // Second loop parses rules\n styleSheets.forEach((sheet) => {\n if ('cssRules' in sheet) {\n try {\n toArray(sheet.cssRules || []).forEach((item) => {\n ret.push(item);\n });\n }\n catch (e) {\n console.error(`Error while reading CSS rules from ${sheet.href}`, e);\n }\n }\n });\n return ret;\n });\n}\nfunction getWebFontRules(cssRules) {\n return cssRules\n .filter((rule) => rule.type === CSSRule.FONT_FACE_RULE)\n .filter((rule) => shouldEmbed(rule.style.getPropertyValue('src')));\n}\nasync function parseWebFontRules(node, options) {\n if (node.ownerDocument == null) {\n throw new Error('Provided element is not within a Document');\n }\n const styleSheets = toArray(node.ownerDocument.styleSheets);\n const cssRules = await getCSSRules(styleSheets, options);\n return getWebFontRules(cssRules);\n}\nexport async function getWebFontCSS(node, options) {\n const rules = await parseWebFontRules(node, options);\n const cssTexts = await Promise.all(rules.map((rule) => {\n const baseUrl = rule.parentStyleSheet ? rule.parentStyleSheet.href : null;\n return embedResources(rule.cssText, baseUrl, options);\n }));\n return cssTexts.join('\\n');\n}\nexport async function embedWebFonts(clonedNode, options) {\n const cssText = options.fontEmbedCSS != null\n ? options.fontEmbedCSS\n : options.skipFonts\n ? null\n : await getWebFontCSS(clonedNode, options);\n if (cssText) {\n const styleNode = document.createElement('style');\n const sytleContent = document.createTextNode(cssText);\n styleNode.appendChild(sytleContent);\n if (clonedNode.firstChild) {\n clonedNode.insertBefore(styleNode, clonedNode.firstChild);\n }\n else {\n clonedNode.appendChild(styleNode);\n }\n }\n}\n//# sourceMappingURL=embed-webfonts.js.map","import { cloneNode } from './clone-node';\nimport { embedImages } from './embed-images';\nimport { applyStyle } from './apply-style';\nimport { embedWebFonts, getWebFontCSS } from './embed-webfonts';\nimport { getImageSize, getPixelRatio, createImage, canvasToBlob, nodeToDataURL, checkCanvasDimensions, } from './util';\nexport async function toSvg(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const clonedNode = (await cloneNode(node, options, true));\n await embedWebFonts(clonedNode, options);\n await embedImages(clonedNode, options);\n applyStyle(clonedNode, options);\n const datauri = await nodeToDataURL(clonedNode, width, height);\n return datauri;\n}\nexport async function toCanvas(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const svg = await toSvg(node, options);\n const img = await createImage(svg);\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n const ratio = options.pixelRatio || getPixelRatio();\n const canvasWidth = options.canvasWidth || width;\n const canvasHeight = options.canvasHeight || height;\n canvas.width = canvasWidth * ratio;\n canvas.height = canvasHeight * ratio;\n if (!options.skipAutoScale) {\n checkCanvasDimensions(canvas);\n }\n canvas.style.width = `${canvasWidth}`;\n canvas.style.height = `${canvasHeight}`;\n if (options.backgroundColor) {\n context.fillStyle = options.backgroundColor;\n context.fillRect(0, 0, canvas.width, canvas.height);\n }\n context.drawImage(img, 0, 0, canvas.width, canvas.height);\n return canvas;\n}\nexport async function toPixelData(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const canvas = await toCanvas(node, options);\n const ctx = canvas.getContext('2d');\n return ctx.getImageData(0, 0, width, height).data;\n}\nexport async function toPng(node, options = {}) {\n const canvas = await toCanvas(node, options);\n return canvas.toDataURL();\n}\nexport async function toJpeg(node, options = {}) {\n const canvas = await toCanvas(node, options);\n return canvas.toDataURL('image/jpeg', options.quality || 1);\n}\nexport async function toBlob(node, options = {}) {\n const canvas = await toCanvas(node, options);\n const blob = await canvasToBlob(canvas);\n return blob;\n}\nexport async function getFontEmbedCSS(node, options = {}) {\n return getWebFontCSS(node, options);\n}\n//# sourceMappingURL=index.js.map","export function applyStyle(node, options) {\n const { style } = node;\n if (options.backgroundColor) {\n style.backgroundColor = options.backgroundColor;\n }\n if (options.width) {\n style.width = `${options.width}px`;\n }\n if (options.height) {\n style.height = `${options.height}px`;\n }\n const manual = options.style;\n if (manual != null) {\n Object.keys(manual).forEach((key) => {\n style[key] = manual[key];\n });\n }\n return node;\n}\n//# sourceMappingURL=apply-style.js.map","var DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n var toNodeAttrs = toNode.attributes;\n var attr;\n var attrName;\n var attrNamespaceURI;\n var attrValue;\n var fromValue;\n\n // document-fragments dont have attributes so lets not do anything\n if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n return;\n }\n\n // update attributes on original DOM element\n for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n attr = toNodeAttrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n if (fromValue !== attrValue) {\n if (attr.prefix === 'xmlns'){\n attrName = attr.name; // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n }\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n }\n\n // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n var fromNodeAttrs = fromNode.attributes;\n\n for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n attr = fromNodeAttrs[d];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n}\n\nvar range; // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\n\nvar doc = typeof document === 'undefined' ? undefined : document;\nvar HAS_TEMPLATE_SUPPORT = !!doc && 'content' in doc.createElement('template');\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && 'createContextualFragment' in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n var template = doc.createElement('template');\n template.innerHTML = str;\n return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n if (!range) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n\n var fragment = range.createContextualFragment(str);\n return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n var fragment = doc.createElement('body');\n fragment.innerHTML = str;\n return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\nfunction toElement(str) {\n str = str.trim();\n if (HAS_TEMPLATE_SUPPORT) {\n // avoid restrictions on content for things like `