{"version":3,"file":"application.js","mappings":"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","sources":["webpack://app/./app/javascript/controllers/navbar_controller.js","webpack://app/./app/javascript/controllers/profile_dropdown_controller.js","webpack://app/./app/javascript/controllers/ sync _controller\\.js$","webpack://app/./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://app/./node_modules/@rails/actioncable/src/adapters.js","webpack://app/./node_modules/@rails/actioncable/src/logger.js","webpack://app/./node_modules/@rails/actioncable/src/connection_monitor.js","webpack://app/./node_modules/@rails/actioncable/src/internal.js","webpack://app/./node_modules/@rails/actioncable/src/connection.js","webpack://app/./node_modules/@rails/actioncable/src/subscription.js","webpack://app/./node_modules/@rails/actioncable/src/subscription_guarantor.js","webpack://app/./node_modules/@rails/actioncable/src/subscriptions.js","webpack://app/./node_modules/@rails/actioncable/src/consumer.js","webpack://app/./node_modules/@rails/actioncable/src/index.js","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/define property getters","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/make namespace object","webpack://app/./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","webpack://app/./app/javascript/controllers/application.js","webpack://app/./app/javascript/controllers/index.js","webpack://app/./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js"],"sourcesContent":["import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"mobileMenu\", \"mobileMenuButton\", \"mobileMenuBarsIcon\", \"mobileMenuXIcon\" ]\n static values = { open: Boolean }\n\n toggle() {\n this.openValue = !this.openValue\n\n this.mobileMenuBarsIconTarget.classList.toggle('hidden');\n this.mobileMenuXIconTarget.classList.toggle('hidden');\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"button\", \"shownItem\" ]\n\n toggle() {\n this.shownItemTarget.classList.toggle('hidden')\n }\n}\n","var map = {\n\t\"./navbar_controller.js\": 875,\n\t\"./profile_dropdown_controller.js\": 421\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 74;","/*\nStimulus 3.2.1\nCopyright © 2022 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\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[1];\n let keyFilter = matches[2];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[3]),\n eventName,\n eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n identifier: matches[4],\n methodName: matches[5],\n keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\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\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n isFilterTarget(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filteres = this.keyFilter.split(\"+\");\n const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n return true;\n }\n const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { 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}\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 if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\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 });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.isFilterTarget(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(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\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 start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const matches = element.matches(this.selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n elementMatched(element) {\n this.selectorMatched(element);\n }\n elementUnmatched(element) {\n this.selectorUnmatched(element);\n }\n elementAttributeChanged(element, _attributeName) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(this.selector, element);\n if (!matches && matchedBefore) {\n this.selectorUnmatched(element);\n }\n }\n selectorMatched(element) {\n if (this.delegate.selectorMatched) {\n this.delegate.selectorMatched(element, this.selector, this.details);\n this.matchesByElement.add(this.selector, element);\n }\n }\n selectorUnmatched(element) {\n this.delegate.selectorUnmatched(element, this.selector, this.details);\n this.matchesByElement.delete(this.selector, element);\n }\n}\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.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n }\n start() {\n if (this.selectorObserverMap.size === 0) {\n this.outletDefinitions.forEach((outletName) => {\n const selector = this.selector(outletName);\n const details = { outletName };\n if (selector) {\n this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n }\n });\n this.selectorObserverMap.forEach((observer) => observer.start());\n }\n this.dependentContexts.forEach((context) => context.refresh());\n }\n stop() {\n if (this.selectorObserverMap.size > 0) {\n this.disconnectAllOutlets();\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n }\n selectorMatched(element, _selector, { 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 return (this.hasOutlet(element, outletName) &&\n element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\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 selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\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 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(definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\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\" }, 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 propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (outletController) {\n return outletController;\n }\n else {\n throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n }\n }\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outlet) => {\n const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (controller) {\n return controller;\n }\n else {\n console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n }\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n return outlet;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\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 typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n if (!typeFromObject)\n return;\n const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n if (typeFromObject !== defaultValueType) {\n const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n }\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const typeFromObject = parseValueTypeObject({\n controller: payload.controller,\n token: payload.token,\n typeObject: payload.typeDefinition,\n });\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const key = `${dasherize(payload.token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(payload.typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\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 default {\n logger: self.console,\n WebSocket: self.WebSocket\n}\n","import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordPing() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n this.recordPing()\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n","export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n","import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return this.monitor.recordPing()\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n return this.subscriptions.notify(identifier, \"connected\")\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n","// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor","import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n","import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n","import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\nTurbo 7.2.5\nCopyright © 2023 37signals LLC\n */\n(function () {\n if (window.Reflect === undefined ||\n window.customElements === undefined ||\n window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n const wrapperForTheName = {\n HTMLElement: function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n },\n };\n window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function(submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype)\n return;\n let prototype;\n if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n prototype = window.SubmitEvent.prototype;\n }\n else if (\"SubmitEvent\" in window) {\n return;\n }\n else {\n prototype = window.Event.prototype;\n }\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n },\n });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n FrameLoadingStyle[\"eager\"] = \"eager\";\n FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n static get observedAttributes() {\n return [\"disabled\", \"complete\", \"loading\", \"src\"];\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n return this.delegate.sourceURLReloaded();\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n }\n else if (name == \"complete\") {\n this.delegate.completeChanged();\n }\n else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n }\n else {\n this.delegate.disabledChanged();\n }\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n }\n else {\n this.removeAttribute(\"src\");\n }\n }\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n }\n else {\n this.removeAttribute(\"loading\");\n }\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n }\n else {\n this.removeAttribute(\"disabled\");\n }\n }\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n }\n else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n get complete() {\n return !this.delegate.isLoading;\n }\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n get isPreview() {\n var _a, _b;\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n}\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n default:\n return FrameLoadingStyle.eager;\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n }\n else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1];\n }\n}\nfunction getAction(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n }\n else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\n }\n}\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n }\n else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getMetaContent(\"csp-nonce\");\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail,\n });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n }\n else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n }\n else if (i == 14) {\n return \"4\";\n }\n else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n }\n else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n })\n .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\")\n return value;\n }\n return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n });\n}\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n}\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content;\n}\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n document.head.appendChild(element);\n }\n element.setAttribute(\"content\", content);\n return element;\n}\nfunction findClosestRecursively(element, selector) {\n var _a;\n if (element instanceof Element) {\n return (element.closest(selector) ||\n findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n case \"post\":\n return FetchMethod.post;\n case \"put\":\n return FetchMethod.put;\n case \"patch\":\n return FetchMethod.patch;\n case \"delete\":\n return FetchMethod.delete;\n }\n}\nclass FetchRequest {\n constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n this.abortController = new AbortController();\n this.resolveRequestPromise = (_value) => { };\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n await this.allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n }\n catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error;\n }\n }\n finally {\n this.delegate.requestFinished(this);\n }\n }\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target,\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n }\n else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n }\n else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse;\n }\n get fetchOptions() {\n var _a;\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isIdempotent ? null : this.body,\n signal: this.abortSignal,\n referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n };\n }\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\",\n };\n }\n get isIdempotent() {\n return this.method == FetchMethod.get;\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n async allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise,\n },\n target: this.target,\n });\n if (event.defaultPrevented)\n await requestInterception;\n }\n willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error },\n });\n return !event.defaultPrevented;\n }\n}\n\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\n\nclass StreamMessage {\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message));\n }\n else {\n return message;\n }\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n element.replaceWith(streamElement);\n }\n return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart:\n return FormEnctype.multipart;\n case FormEnctype.plain:\n return FormEnctype.plain;\n default:\n return FormEnctype.urlEncoded;\n }\n}\nclass FormSubmission {\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n this.state = FormSubmissionState.initialized;\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.formData = buildFormData(formElement, submitter);\n this.location = expandURL(this.action);\n if (this.method == FetchMethod.get) {\n mergeFormDataEntries(this.location, [...this.body.entries()]);\n }\n this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n this.mustRedirect = mustRedirect;\n }\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message));\n }\n get method() {\n var _a;\n const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n get action() {\n var _a;\n const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n return this.submitter.getAttribute(\"formaction\") || \"\";\n }\n else {\n return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n }\n get body() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n }\n else {\n return this.formData;\n }\n }\n get enctype() {\n var _a;\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n get isIdempotent() {\n return this.fetchRequest.isIdempotent;\n }\n get stringFormData() {\n return [...this.formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n prepareRequest(request) {\n if (!request.isIdempotent) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n var _a;\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this },\n });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n }\n else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(_request) {\n var _a;\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: Object.assign({ formSubmission: this }, this.result),\n });\n this.delegate.formSubmissionFinished(this);\n }\n requestMustRedirect(request) {\n return !request.isIdempotent && this.mustRedirect;\n }\n requestAcceptsTurboStreamResponse(request) {\n return !request.isIdempotent || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name) {\n formData.append(name, value || \"\");\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n const searchParams = new URLSearchParams();\n for (const [name, value] of entries) {\n if (value instanceof File)\n continue;\n searchParams.append(name, value);\n }\n url.search = searchParams.toString();\n return url;\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get activeElement() {\n return this.element.ownerDocument.activeElement;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n if (element.closest(inertDisabledOrHidden) == null)\n return element;\n else\n continue;\n }\n return null;\n }\n get permanentElements() {\n return queryPermanentElementsAll(this.element);\n }\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = ((event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n });\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n for (const element of document.getElementsByName(target)) {\n if (element instanceof HTMLIFrameElement)\n return false;\n }\n return true;\n }\n else {\n return true;\n }\n}\n\nclass View {\n constructor(delegate, element) {\n this.resolveRenderPromise = (_value) => { };\n this.resolveInterceptionPromise = (_value) => { };\n this.delegate = delegate;\n this.element = element;\n }\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n }\n else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n }\n else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n get scrollRoot() {\n return window;\n }\n async render(renderer) {\n const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender)\n await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n }\n finally {\n delete this.renderer;\n this.resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n }\n else {\n this.invalidate(renderer.reloadReason);\n }\n }\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n }\n else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n invalidate() {\n this.element.innerHTML = \"\";\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = (event) => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n }\n else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = ((event) => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n });\n this.willVisit = ((_event) => {\n delete this.clickEvent;\n });\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\n\nclass LinkClickObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link)) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !((event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\nfunction doesNotTargetIFrame(anchor) {\n if (anchor.hasAttribute(\"target\")) {\n for (const element of document.getElementsByName(anchor.target)) {\n if (element instanceof HTMLIFrameElement)\n return false;\n }\n return true;\n }\n else {\n return true;\n }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n }\n willFollowLinkToLocation(link, location, originalEvent) {\n return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n link.hasAttribute(\"data-turbo-method\"));\n }\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n const type = \"hidden\";\n for (const [name, value] of location.searchParams) {\n form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n }\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n const method = link.getAttribute(\"data-turbo-method\");\n if (method)\n form.setAttribute(\"method\", method);\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame)\n form.setAttribute(\"data-turbo-frame\", turboFrame);\n const turboAction = getVisitAction(link);\n if (turboAction)\n form.setAttribute(\"data-turbo-action\", turboAction);\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm)\n form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream)\n form.setAttribute(\"data-turbo-stream\", \"\");\n this.delegate.submittedFormLinkToLocation(link, location, form);\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\n\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n this.activeElement = null;\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n get shouldRender() {\n return true;\n }\n get reloadReason() {\n return;\n }\n prepareToRender() {\n return;\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n enteringBardo(currentPermanentElement) {\n if (this.activeElement)\n return;\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.activeElement = this.currentSnapshot.activeElement;\n }\n }\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n this.activeElement.focus();\n this.activeElement = null;\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n}\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n static renderElement(currentElement, newElement) {\n var _a;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n const frameElement = newElement;\n const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\n\nclass ProgressBar {\n constructor() {\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n this.trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n static get defaultCSS() {\n return unindent `\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n get cspNonce() {\n return getMetaContent(\"csp-nonce\");\n }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details = outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: [],\n };\n return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element);\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements];\n }\n else if (elements.length > 1) {\n return [...result, ...elements.slice(1)];\n }\n else {\n return result;\n }\n }, []);\n }\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n }\n else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\n\nclass PageSnapshot extends Snapshot {\n constructor(element, headSnapshot) {\n super(element);\n this.headSnapshot = headSnapshot;\n }\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html));\n }\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n static fromDocument({ head, body }) {\n return new this(body, new HeadSnapshot(head));\n }\n clone() {\n const clonedElement = this.element.cloneNode(true);\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions)\n option.selected = false;\n for (const option of source.selectedOptions)\n clone.options[option.index].selected = true;\n }\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n return new PageSnapshot(clonedElement, this.headSnapshot);\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _a;\n const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => { },\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.shouldCacheSnapshot = true;\n this.acceptsStreamResponse = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.followRedirect();\n if (!this.followedRedirect) {\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n }\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n changeHistory() {\n var _a;\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n }\n else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n }\n else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot)\n this.cacheSnapshot();\n if (this.view.renderPromise)\n await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n this.complete();\n }\n else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n }\n else {\n if (this.view.renderPromise)\n await this.view.renderPromise;\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _a;\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false,\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted() {\n this.startRequest();\n }\n requestPreventedHandlingResponse(_request, _response) { }\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected,\n });\n }\n else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected,\n });\n }\n else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false,\n });\n }\n requestFinished() {\n this.finishRequest();\n }\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n }\n else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n }\n else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n }\n else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise((resolve) => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar();\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n }\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n }\n else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode,\n },\n });\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitCompleted(_visit) { }\n pageInvalidated(reason) {\n this.reload(reason);\n }\n visitFailed(_visit) { }\n visitRendered(_visit) { }\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload(reason) {\n var _a;\n dispatch(\"turbo:reload\", { detail: reason });\n window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n }\n get navigator() {\n return this.session.navigator;\n }\n}\n\nclass CacheObserver {\n constructor() {\n this.started = false;\n this.removeStaleElements = ((_event) => {\n const staleElements = [...document.querySelectorAll('[data-turbo-cache=\"false\"]')];\n for (const element of staleElements) {\n element.remove();\n }\n });\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n}\n\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldRedirect(element);\n }\n linkClickIntercepted(element, url, event) {\n const frame = this.findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n willSubmitForm(element, submitter) {\n return (element.closest(\"turbo-frame\") == null &&\n this.shouldSubmit(element, submitter) &&\n this.shouldRedirect(element, submitter));\n }\n formSubmitted(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n shouldSubmit(form, submitter) {\n var _a;\n const action = getAction(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n shouldRedirect(element, submitter) {\n const isNavigatable = element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n if (isNavigatable) {\n const frame = this.findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n }\n else {\n return false;\n }\n }\n findFrameElement(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n}\n\nclass History {\n constructor(delegate) {\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location, restorationIdentifier = uuid()) {\n const state = { turbo: { restorationIdentifier } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n assumeControlOfScrollRestoration() {\n var _a;\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n else {\n window.location.href = location.toString();\n }\n }\n }\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.method == FetchMethod.get;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n const { statusCode, redirected } = fetchResponse;\n const action = this.getActionForFormSubmission(formSubmission);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected },\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n }\n else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n return (action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n getActionForFormSubmission({ submitter, formElement }) {\n return getVisitAction(submitter, formElement) || \"advance\";\n }\n}\n\nvar PageStage;\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n }\n else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\n\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n }\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n return permanentElementMap;\n}\n\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set();\n this.started = false;\n this.inspectFetchResponse = ((event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n });\n this.receiveMessageEvent = (event) => {\n if (this.started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _a;\n const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _a;\n const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n documentElement.replaceChild(newElement, body);\n }\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\");\n }\n}\n\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n }\n else {\n document.documentElement.appendChild(newElement);\n }\n }\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\",\n };\n }\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\",\n };\n }\n }\n async prepareToRender() {\n await this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n await mergedHeadElements;\n await newStylesheetElements;\n }\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n document.head.appendChild(element);\n }\n await Promise.all(loadingElements);\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n isCurrentElementInElementList(element, elementList) {\n for (const [index, newElement] of elementList.entries()) {\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue;\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true;\n }\n }\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true;\n }\n }\n return false;\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\n\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1)\n this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n this.forceReloaded = false;\n }\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n }\n else {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n }\n return this.render(renderer);\n }\n renderError(snapshot, visit) {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot(snapshot = this.snapshot) {\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const { lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n}\n\nclass Preloader {\n constructor(delegate) {\n this.selector = \"a[data-turbo-preload]\";\n this.delegate = delegate;\n }\n get snapshotCache() {\n return this.delegate.navigator.view.snapshotCache;\n }\n start() {\n if (document.readyState === \"loading\") {\n return document.addEventListener(\"DOMContentLoaded\", () => {\n this.preloadOnLoadLinksForView(document.body);\n });\n }\n else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n this.preloadURL(link);\n }\n }\n async preloadURL(link) {\n const location = new URL(link.href);\n if (this.snapshotCache.has(location)) {\n return;\n }\n try {\n const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n const responseText = await response.text();\n const snapshot = PageSnapshot.fromHTMLString(responseText);\n this.snapshotCache.put(location, snapshot);\n }\n catch (_) {\n }\n }\n}\n\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.preloader = new Preloader(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this, window);\n this.formSubmitObserver = new FormSubmitObserver(this, document);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n this.frameRedirector = new FrameRedirector(this, document.documentElement);\n this.streamMessageRenderer = new StreamMessageRenderer();\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n this.formMode = \"on\";\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n if (frameElement instanceof FrameElement) {\n frameElement.src = location.toString();\n frameElement.loaded;\n }\n else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n setFormMode(mode) {\n this.formMode = mode;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n });\n }\n else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\",\n });\n }\n }\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n }\n submittedFormLinkToLocation() { }\n willFollowLinkToLocation(link, location, event) {\n return (this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event));\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n willSubmitForm(form, submitter) {\n const action = getAction(form, submitter);\n return (this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n viewWillCacheSnapshot() {\n var _a;\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const { defaultPrevented, detail: { render }, } = event;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: { url: location.href, originalEvent: event },\n cancelable: true,\n });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true,\n });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: Object.assign({ newBody }, options),\n cancelable: true,\n });\n }\n notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing },\n });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString(),\n }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true,\n });\n }\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false;\n }\n else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n }\n else {\n return submitterIsNavigatable && this.elementIsNavigatable(form);\n }\n }\n }\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n if (this.drive || withinFrame) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n }\n else {\n return true;\n }\n }\n else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n }\n else {\n return false;\n }\n }\n }\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\";\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n },\n },\n};\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n clear() {\n this.session.clearCache();\n }\n resetCacheControl() {\n this.setCacheControl(\"\");\n }\n exemptPageFromCache() {\n this.setCacheControl(\"no-cache\");\n }\n exemptPageFromPreview() {\n this.setCacheControl(\"no-preview\");\n }\n setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach((e) => e.remove());\n },\n replace() {\n this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach((targetElement) => {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n });\n },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n session.start();\n}\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\nfunction clearCache() {\n console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode,\n StreamActions: StreamActions\n});\n\nclass FrameController {\n constructor(element) {\n this.fetchResponseLoaded = (_fetchResponse) => { };\n this.currentFetchRequest = null;\n this.resolveVisitPromise = () => { };\n this.connected = false;\n this.hasBeenLoaded = false;\n this.ignoredAttributes = new Set();\n this.action = null;\n this.visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n delete this.previousFrameElement;\n };\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n connect() {\n if (!this.connected) {\n this.connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n sourceURLChanged() {\n if (this.isIgnoringChangesTo(\"src\"))\n return;\n if (this.element.isConnected) {\n this.complete = false;\n }\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n sourceURLReloaded() {\n const { src } = this.element;\n this.ignoringChangesToAttribute(\"complete\", () => {\n this.element.removeAttribute(\"complete\");\n });\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded;\n }\n completeChanged() {\n if (this.isIgnoringChangesTo(\"complete\"))\n return;\n this.loadSourceURL();\n }\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.appearanceObserver.stop();\n this.loadSourceURL();\n }\n }\n async loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.hasBeenLoaded = true;\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const { body } = parseHTMLDocument(html);\n const newFrameElement = await this.extractForeignFrameElement(body);\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n if (this.view.renderPromise)\n await this.view.renderPromise;\n this.changeHistory();\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n }\n else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n console.warn(`A matching frame for #${this.element.id} was missing from the response, transforming into full-page Visit.`);\n this.visitResponse(fetchResponse.response);\n }\n }\n }\n catch (error) {\n console.error(error);\n this.view.invalidate();\n }\n finally {\n this.fetchResponseLoaded = () => { };\n }\n }\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, element);\n this.loadSourceURL();\n }\n willSubmitFormLinkToLocation(link) {\n return this.shouldInterceptNavigation(link);\n }\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.findFrameElement(link);\n if (frame)\n form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldInterceptNavigation(element);\n }\n linkClickIntercepted(element, location) {\n this.navigateFrame(element, location);\n }\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n }\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n prepareRequest(request) {\n var _a;\n request.headers[\"Turbo-Frame\"] = this.id;\n if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(_request, _response) {\n this.resolveVisitPromise();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n async requestFailedWithResponse(request, response) {\n console.error(response);\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: Object.assign({ newFrame }, options),\n cancelable: true,\n });\n const { defaultPrevented, detail: { render }, } = event;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) { }\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n viewInvalidated() { }\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n async visit(url) {\n var _a;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return new Promise((resolve) => {\n this.resolveVisitPromise = () => {\n this.resolveVisitPromise = () => { };\n this.currentFetchRequest = null;\n resolve();\n };\n request.perform();\n });\n }\n navigateFrame(element, url, submitter) {\n const frame = this.findFrameElement(element, submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n this.withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n this.action = getVisitAction(submitter, element, frame);\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const { visitCachedSnapshot } = frame.delegate;\n frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n const response = { statusCode, redirected, responseHTML };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot,\n };\n if (this.action)\n options.action = this.action;\n session.visit(frame.src, options);\n }\n };\n }\n }\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n willHandleFrameMissingFromResponse(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n const response = fetchResponse.response;\n const visit = async (url, options = {}) => {\n if (url instanceof Response) {\n this.visitResponse(url);\n }\n else {\n session.visit(url, options);\n }\n };\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: { response, visit },\n cancelable: true,\n });\n return !event.defaultPrevented;\n }\n async visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const { location, redirected, statusCode } = wrapped;\n return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n }\n findFrameElement(element, submitter) {\n var _a;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element;\n }\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n }\n catch (error) {\n console.error(error);\n return new FrameElement();\n }\n return null;\n }\n formActionIsVisitable(form, submitter) {\n const action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementIsNavigatable(element)) {\n return false;\n }\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false;\n }\n return true;\n }\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n set sourceURL(sourceURL) {\n this.ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n });\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n get complete() {\n return this.element.hasAttribute(\"complete\");\n }\n set complete(value) {\n this.ignoringChangesToAttribute(\"complete\", () => {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n }\n else {\n this.element.removeAttribute(\"complete\");\n }\n });\n }\n get isActive() {\n return this.element.isActive && this.connected;\n }\n get rootLocation() {\n var _a;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n isIgnoringChangesTo(attributeName) {\n return this.ignoredAttributes.has(attributeName);\n }\n ignoringChangesToAttribute(attributeName, callback) {\n this.ignoredAttributes.add(attributeName);\n callback();\n this.ignoredAttributes.delete(attributeName);\n }\n withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\n\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n async connectedCallback() {\n try {\n await this.render();\n }\n catch (error) {\n console.error(error);\n }\n finally {\n this.disconnect();\n }\n }\n async render() {\n var _a;\n return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n const event = this.beforeRenderEvent;\n if (this.dispatchEvent(event)) {\n await nextAnimationFrame();\n await event.detail.render(this);\n }\n })()));\n }\n disconnect() {\n try {\n this.remove();\n }\n catch (_a) { }\n }\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach((c) => c.remove());\n }\n get duplicateChildren() {\n var _a;\n const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n }\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction;\n }\n this.raise(\"unknown action\");\n }\n this.raise(\"action attribute is missing\");\n }\n get targetElements() {\n if (this.target) {\n return this.targetElementsById;\n }\n else if (this.targets) {\n return this.targetElementsByQuery;\n }\n else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n get templateContent() {\n return this.templateElement.content.cloneNode(true);\n }\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template;\n }\n else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n this.raise(\"first child element must be a