{"version":3,"file":"js/335-e5f9f889d8fd137aea4c.js","mappings":"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","sources":["webpack://zin_mijngrond_tool/./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","webpack://zin_mijngrond_tool/./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://zin_mijngrond_tool/./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack://zin_mijngrond_tool/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack://zin_mijngrond_tool/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack://zin_mijngrond_tool/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack://zin_mijngrond_tool/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack://zin_mijngrond_tool/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","webpack://zin_mijngrond_tool/./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack://zin_mijngrond_tool/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack://zin_mijngrond_tool/./node_modules/core-js/fn/array/find-index.js","webpack://zin_mijngrond_tool/./node_modules/core-js/fn/array/find.js","webpack://zin_mijngrond_tool/./node_modules/core-js/fn/array/from.js","webpack://zin_mijngrond_tool/./node_modules/core-js/fn/map.js","webpack://zin_mijngrond_tool/./node_modules/core-js/fn/object/assign.js","webpack://zin_mijngrond_tool/./node_modules/core-js/fn/promise.js","webpack://zin_mijngrond_tool/./node_modules/core-js/fn/set.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_a-function.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_an-instance.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_an-object.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_array-from-iterable.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_array-includes.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_array-methods.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_array-species-constructor.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_array-species-create.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_classof.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_cof.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_collection-strong.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_collection-to-json.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_collection.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_core.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_create-property.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_ctx.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_defined.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_descriptors.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_dom-create.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_export.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_fails.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_for-of.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_function-to-string.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_global.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_has.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_hide.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_html.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_inherit-if-required.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_invoke.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_iobject.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_is-array-iter.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_is-array.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_is-object.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_iter-call.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_iter-create.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_iter-define.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_iter-detect.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_iter-step.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_iterators.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_library.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_meta.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_microtask.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_new-promise-capability.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-assign.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-create.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-dp.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-dps.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-gopd.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-gops.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-gpo.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-keys-internal.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-keys.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_object-pie.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_perform.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_promise-resolve.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_property-desc.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_redefine-all.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_redefine.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_set-collection-from.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_set-collection-of.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_set-proto.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_set-species.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_shared-key.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_shared.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_species-constructor.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_string-at.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_task.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_to-absolute-index.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_to-integer.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_to-iobject.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_to-length.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_to-object.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_to-primitive.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_uid.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_user-agent.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_validate-collection.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/_wks.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/core.get-iterator-method.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.array.find-index.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.array.find.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.array.from.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.array.iterator.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.map.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.object.assign.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.object.to-string.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.promise.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.set.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es6.string.iterator.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es7.map.from.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es7.map.of.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es7.map.to-json.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es7.promise.finally.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es7.promise.try.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es7.set.from.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es7.set.of.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/es7.set.to-json.js","webpack://zin_mijngrond_tool/./node_modules/core-js/modules/web.dom.iterable.js","webpack://zin_mijngrond_tool/./node_modules/dirty-form/dist/dirty-form.js","webpack://zin_mijngrond_tool/./node_modules/element-closest/element-closest.js","webpack://zin_mijngrond_tool/./node_modules/mutation-observer-inner-html-shim/mutation-observer-inner-html-shim.js","webpack://zin_mijngrond_tool/./node_modules/stimulus-use/dist/index.js","webpack://zin_mijngrond_tool/./node_modules/@stimulus-components/checkbox-select-all/dist/stimulus-checkbox-select-all.mjs"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","/*!\nTurbo 8.0.5\nCopyright © 2024 37signals LLC\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 ||\n 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();\n\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?.type == \"submit\" ? candidate : null\n}\n\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n\n(function () {\n if (\"submitter\" in Event.prototype) return\n\n let prototype = window.Event.prototype;\n // Certain versions of Safari 15 have a bug where they won't\n // populate the submitter. This hurts TurboDrive's enable/disable detection.\n // See https://bugs.webkit.org/show_bug.cgi?id=229660\n if (\"SubmitEvent\" in window) {\n const prototypeOfSubmitEvent = window.SubmitEvent.prototype;\n\n if (/Apple Computer/.test(navigator.vendor) && !(\"submitter\" in prototypeOfSubmitEvent)) {\n prototype = prototypeOfSubmitEvent;\n } else {\n return // polyfill not needed\n }\n }\n\n addEventListener(\"click\", clickCaptured, true);\n\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\nconst FrameLoadingStyle = {\n eager: \"eager\",\n lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n * \n * \n * Show all expanded messages in this frame.\n * \n *\n *
\n * Show response from this form within this frame.\n *
\n *
\n */\nclass FrameElement extends HTMLElement {\n static delegateConstructor = undefined\n\n loaded = Promise.resolve()\n\n static get observedAttributes() {\n return [\"disabled\", \"loading\", \"src\"]\n }\n\n constructor() {\n super();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n\n connectedCallback() {\n this.delegate.connect();\n }\n\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n\n reload() {\n return this.delegate.sourceURLReloaded()\n }\n\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else if (name == \"disabled\") {\n this.delegate.disabledChanged();\n }\n }\n\n /**\n * Gets the URL to lazily load source HTML from\n */\n get src() {\n return this.getAttribute(\"src\")\n }\n\n /**\n * Sets the URL to lazily load source HTML from\n */\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n\n /**\n * Gets the refresh mode for the frame.\n */\n get refresh() {\n return this.getAttribute(\"refresh\")\n }\n\n /**\n * Sets the refresh mode for the frame.\n */\n set refresh(value) {\n if (value) {\n this.setAttribute(\"refresh\", value);\n } else {\n this.removeAttribute(\"refresh\");\n }\n }\n\n /**\n * Determines if the element is loading\n */\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n }\n\n /**\n * Sets the value of if the element is loading\n */\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n\n /**\n * Gets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n get disabled() {\n return this.hasAttribute(\"disabled\")\n }\n\n /**\n * Sets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n\n /**\n * Gets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\")\n }\n\n /**\n * Sets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n\n /**\n * Determines if the element has finished loading\n */\n get complete() {\n return !this.delegate.isLoading\n }\n\n /**\n * Gets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isActive() {\n return this.ownerDocument === document && !this.isPreview\n }\n\n /**\n * Sets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isPreview() {\n return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n }\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}\n\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1)\n // eslint-disable-next-line no-cond-assign\n } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1]\n }\n}\n\nfunction getAction$1(form, submitter) {\n const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n return expandURL(action)\n}\n\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/)\n}\n\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location)\n}\n\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0]\n}\n\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname)\n}\n\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n\n get succeeded() {\n return this.response.ok\n }\n\n get failed() {\n return !this.succeeded\n }\n\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499\n }\n\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599\n }\n\n get redirected() {\n return this.response.redirected\n }\n\n get location() {\n return expandURL(this.response.url)\n }\n\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n }\n\n get statusCode() {\n return this.response.status\n }\n\n get contentType() {\n return this.header(\"Content-Type\")\n }\n\n get responseText() {\n return this.response.clone().text()\n }\n\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text()\n } else {\n return Promise.resolve(undefined)\n }\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 } 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}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\n\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content\n}\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\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n\n return event\n}\n\nfunction nextRepaint() {\n if (document.visibilityState === \"hidden\") {\n return nextEventLoopTick()\n } else {\n return nextAnimationFrame()\n }\n}\n\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction nextMicrotask() {\n return Promise.resolve()\n}\n\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\")\n}\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}\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}\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 } else if (i == 14) {\n return \"4\"\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16)\n } else {\n return Math.floor(Math.random() * 15).toString(16)\n }\n })\n .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value\n }\n\n return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName))\n}\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}\n\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n\n element.removeAttribute(\"aria-busy\");\n }\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\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n })\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}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n\n return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content\n}\n\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n\n document.head.appendChild(element);\n }\n\n element.setAttribute(\"content\", content);\n\n return element\n}\n\nfunction findClosestRecursively(element, selector) {\n if (element instanceof Element) {\n return (\n element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n )\n }\n}\n\nfunction elementIsFocusable(element) {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n const before = reader();\n\n callback();\n\n await nextAnimationFrame();\n\n const after = reader();\n\n return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n if (name === \"_blank\") {\n return false\n } else if (name) {\n for (const element of document.getElementsByName(name)) {\n if (element instanceof HTMLIFrameElement) return false\n }\n\n return true\n } else {\n return true\n }\n}\n\nfunction findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\")\n}\n\nfunction getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n\n return (...args) => {\n const callback = () => fn.apply(this, args);\n clearTimeout(timeoutId);\n timeoutId = setTimeout(callback, delay);\n }\n}\n\nclass LimitedSet extends Set {\n constructor(maxSize) {\n super();\n this.maxSize = maxSize;\n }\n\n add(value) {\n if (this.size >= this.maxSize) {\n const iterator = this.values();\n const oldestValue = iterator.next().value;\n this.delete(oldestValue);\n }\n super.add(value);\n }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nconst nativeFetch = window.fetch;\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n const modifiedHeaders = new Headers(options.headers || {});\n const requestUID = uuid();\n recentRequests.add(requestUID);\n modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n return nativeFetch(url, {\n ...options,\n headers: modifiedHeaders\n })\n}\n\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}\n\nconst FetchMethod = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n patch: \"patch\",\n delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FetchEnctype.multipart:\n return FetchEnctype.multipart\n case FetchEnctype.plain:\n return FetchEnctype.plain\n default:\n return FetchEnctype.urlEncoded\n }\n}\n\nconst FetchEnctype = {\n urlEncoded: \"application/x-www-form-urlencoded\",\n multipart: \"multipart/form-data\",\n plain: \"text/plain\"\n};\n\nclass FetchRequest {\n abortController = new AbortController()\n #resolveRequestPromise = (_value) => {}\n\n constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n this.delegate = delegate;\n this.url = url;\n this.target = target;\n this.fetchOptions = {\n credentials: \"same-origin\",\n redirect: \"follow\",\n method: method.toUpperCase(),\n headers: { ...this.defaultHeaders },\n body: body,\n signal: this.abortSignal,\n referrer: this.delegate.referrer?.href\n };\n this.enctype = enctype;\n }\n\n get method() {\n return this.fetchOptions.method\n }\n\n set method(value) {\n const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n this.url.search = \"\";\n\n const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n this.url = url;\n this.fetchOptions.body = body;\n this.fetchOptions.method = fetchMethod.toUpperCase();\n }\n\n get headers() {\n return this.fetchOptions.headers\n }\n\n set headers(value) {\n this.fetchOptions.headers = value;\n }\n\n get body() {\n if (this.isSafe) {\n return this.url.searchParams\n } else {\n return this.fetchOptions.body\n }\n }\n\n set body(value) {\n this.fetchOptions.body = value;\n }\n\n get location() {\n return this.url\n }\n\n get params() {\n return this.url.searchParams\n }\n\n get entries() {\n return this.body ? Array.from(this.body.entries()) : []\n }\n\n cancel() {\n this.abortController.abort();\n }\n\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n\n if (event.detail.fetchRequest) {\n this.response = event.detail.fetchRequest.response;\n } else {\n this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n }\n\n const response = await this.response;\n return await this.receive(response)\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 } finally {\n this.delegate.requestFinished(this);\n }\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 } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse\n }\n\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n }\n }\n\n get isSafe() {\n return isSafe(this.method)\n }\n\n get abortSignal() {\n return this.abortController.signal\n }\n\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\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 this.url = event.detail.url;\n if (event.defaultPrevented) await requestInterception;\n\n return event\n }\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\n return !event.defaultPrevented\n }\n}\n\nfunction isSafe(fetchMethod) {\n return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n const searchParams =\n Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n if (isSafe(method)) {\n return [mergeIntoURLSearchParams(resource, searchParams), null]\n } else if (enctype == FetchEnctype.urlEncoded) {\n return [resource, searchParams]\n } else {\n return [resource, requestBody]\n }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n const entries = [];\n\n for (const [name, value] of requestBody) {\n if (value instanceof File) continue\n else entries.push([name, value]);\n }\n\n return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n url.search = searchParams.toString();\n\n return url\n}\n\nclass AppearanceObserver {\n started = false\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n\n intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry?.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n }\n}\n\nclass StreamMessage {\n static contentType = \"text/vnd.turbo-stream.html\"\n\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message))\n } else {\n return message\n }\n }\n\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\n\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n\n element.replaceWith(streamElement);\n }\n\n return fragment\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache {\n #prefetchTimeout = null\n #prefetched = null\n\n get(url) {\n if (this.#prefetched && this.#prefetched.url === url && this.#prefetched.expire > Date.now()) {\n return this.#prefetched.request\n }\n }\n\n setLater(url, request, ttl) {\n this.clear();\n\n this.#prefetchTimeout = setTimeout(() => {\n request.perform();\n this.set(url, request, ttl);\n this.#prefetchTimeout = null;\n }, PREFETCH_DELAY);\n }\n\n set(url, request, ttl) {\n this.#prefetched = { url, request, expire: new Date(new Date().getTime() + ttl) };\n }\n\n clear() {\n if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n this.#prefetched = null;\n }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n initialized: \"initialized\",\n requesting: \"requesting\",\n waiting: \"waiting\",\n receiving: \"receiving\",\n stopping: \"stopping\",\n stopped: \"stopped\"\n};\n\nclass FormSubmission {\n state = FormSubmissionState.initialized\n\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message))\n }\n\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n const method = getMethod(formElement, submitter);\n const action = getAction(getFormAction(formElement, submitter), method);\n const body = buildFormData(formElement, submitter);\n const enctype = getEnctype(formElement, submitter);\n\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n this.mustRedirect = mustRedirect;\n }\n\n get method() {\n return this.fetchRequest.method\n }\n\n set method(value) {\n this.fetchRequest.method = value;\n }\n\n get action() {\n return this.fetchRequest.url.toString()\n }\n\n set action(value) {\n this.fetchRequest.url = expandURL(value);\n }\n\n get body() {\n return this.fetchRequest.body\n }\n\n get enctype() {\n return this.fetchRequest.enctype\n }\n\n get isSafe() {\n return this.fetchRequest.isSafe\n }\n\n get location() {\n return this.fetchRequest.url\n }\n\n // The submission process\n\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return\n }\n }\n\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform()\n }\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\n // Fetch request delegate\n\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n this.state = FormSubmissionState.waiting;\n this.submitter?.setAttribute(\"disabled\", \"\");\n this.setSubmitsWith();\n markAsBusy(this.formElement);\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this }\n });\n this.delegate.formSubmissionStarted(this);\n }\n\n requestPreventedHandlingResponse(request, response) {\n prefetchCache.clear();\n\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n return\n }\n\n prefetchCache.clear();\n\n 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 } else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n\n requestFinished(_request) {\n this.state = FormSubmissionState.stopped;\n this.submitter?.removeAttribute(\"disabled\");\n this.resetSubmitterText();\n clearBusyState(this.formElement);\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: { formSubmission: this, ...this.result }\n });\n this.delegate.formSubmissionFinished(this);\n }\n\n // Private\n\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return\n\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n\n resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return\n\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n\n requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect\n }\n\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n }\n\n get submitsWith() {\n return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n }\n}\n\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter?.getAttribute(\"name\");\n const value = submitter?.getAttribute(\"value\");\n\n if (name) {\n formData.append(name, value || \"\");\n }\n\n return formData\n}\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}\n\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n if (submitter?.hasAttribute(\"formaction\")) {\n return submitter.getAttribute(\"formaction\") || \"\"\n } else {\n return formElement.getAttribute(\"action\") || formElementAction || \"\"\n }\n}\n\nfunction getAction(formAction, fetchMethod) {\n const action = expandURL(formAction);\n\n if (isSafe(fetchMethod)) {\n action.search = \"\";\n }\n\n return action\n}\n\nfunction getMethod(formElement, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n\n get activeElement() {\n return this.element.ownerDocument.activeElement\n }\n\n get children() {\n return [...this.element.children]\n }\n\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null\n }\n\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n }\n\n get isConnected() {\n return this.element.isConnected\n }\n\n get firstAutofocusableElement() {\n return queryAutofocusableElement(this.element)\n }\n\n get permanentElements() {\n return queryPermanentElementsAll(this.element)\n }\n\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id)\n }\n\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n\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\n return permanentElementMap\n }\n}\n\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n\n submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n }\n\n submitBubbled = (event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n\n if (\n form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n return doesNotTargetIFrame(target)\n}\n\nclass View {\n #resolveRenderPromise = (_value) => {}\n #resolveInterceptionPromise = (_value) => {}\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n // Scrolling\n\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n\n scrollToElement(element) {\n element.scrollIntoView();\n }\n\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n\n get scrollRoot() {\n return window\n }\n\n // Rendering\n\n async render(renderer) {\n const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n // A workaround to ignore tracked element mismatch reloads when performing\n // a promoted Visit from a frame navigation\n const shouldInvalidate = willRender;\n\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n\n const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender) await renderInterception;\n\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n } finally {\n delete this.renderer;\n this.#resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n } else if (shouldInvalidate) {\n this.invalidate(renderer.reloadReason);\n }\n }\n\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n\n markVisitDirection(direction) {\n this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n }\n\n unmarkVisitDirection() {\n this.element.removeAttribute(\"data-turbo-visit-direction\");\n }\n\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `Content missing`;\n }\n\n get snapshot() {\n return new Snapshot(this.element)\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\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\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\n clickBubbled = (event) => {\n if (this.clickEventIsSignificant(event)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n }\n\n linkClicked = (event) => {\n if (this.clickEvent && this.clickEventIsSignificant(event)) {\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\n willVisit = (_event) => {\n delete this.clickEvent;\n }\n\n clickEventIsSignificant(event) {\n const target = event.composed ? event.target?.parentElement : event.target;\n const element = findLinkFromClickTarget(target) || target;\n\n return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n }\n}\n\nclass LinkClickObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n\n clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n }\n\n clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link.target)) {\n const location = getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n }\n\n clickEventIsSignificant(event) {\n return !(\n (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 }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n }\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return false\n }\n\n prefetchAndCacheRequestToLocation(link, location) {\n return\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, originalEvent) {\n return (\n this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n )\n }\n\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n\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\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n const turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n this.delegate.submittedFormLinkToLocation(link, location, form);\n\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 static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\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\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\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder?.replaceWith(permanentElement);\n }\n\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id)\n }\n\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n }\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 #activeElement = null\n\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\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\n get shouldRender() {\n return true\n }\n\n get shouldAutofocus() {\n return true\n }\n\n get reloadReason() {\n return\n }\n\n prepareToRender() {\n return\n }\n\n render() {\n // Abstract method\n }\n\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n\n focusFirstAutofocusableElement() {\n if (this.shouldAutofocus) {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (element) {\n element.focus();\n }\n }\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement) {\n if (this.#activeElement) return\n\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.#activeElement = this.currentSnapshot.activeElement;\n }\n }\n\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n this.#activeElement.focus();\n\n this.#activeElement = null;\n }\n }\n\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n }\n\n get currentElement() {\n return this.currentSnapshot.element\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n }\n\n get renderMethod() {\n return \"replace\"\n }\n}\n\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n\n const frameElement = newElement;\n const sourceRange = frameElement.ownerDocument?.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n\n get shouldRender() {\n return true\n }\n\n async render() {\n await nextRepaint();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextRepaint();\n this.focusFirstAutofocusableElement();\n await nextRepaint();\n this.activateScriptElements();\n }\n\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\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\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true\n }\n }\n return false\n }\n\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\")\n }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value\n } else {\n return defaultValue\n }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value\n } else {\n return defaultValue\n }\n}\n\nclass ProgressBar {\n static animationDuration = 300 /*ms*/\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\n hiding = false\n value = 0\n visible = false\n\n constructor() {\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\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\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n\n // Private\n\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\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\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n\n trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n }\n\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\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\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element\n }\n\n get cspNonce() {\n return getMetaContent(\"csp-nonce\")\n }\n}\n\nclass HeadSnapshot extends Snapshot {\n detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details =\n outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return {\n ...result,\n [outerHTML]: {\n ...details,\n elements: [...details.elements, element]\n }\n }\n }, {})\n\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\")\n }\n\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n }\n\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n }\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\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 } else if (elements.length > 1) {\n return [...result, ...elements.slice(1)]\n } else {\n return result\n }\n }, [])\n }\n\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null\n }\n\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const {\n elements: [element]\n } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result\n }, undefined | undefined)\n }\n}\n\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\"\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\"\n }\n}\n\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n\n return element\n}\n\nclass PageSnapshot extends Snapshot {\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html))\n }\n\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument)\n }\n\n static fromDocument({ documentElement, body, head }) {\n return new this(documentElement, body, new HeadSnapshot(head))\n }\n\n constructor(documentElement, body, headSnapshot) {\n super(body);\n this.documentElement = documentElement;\n this.headSnapshot = headSnapshot;\n }\n\n clone() {\n const clonedElement = this.element.cloneNode(true);\n\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions) option.selected = false;\n for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n }\n\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n\n return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n }\n\n get lang() {\n return this.documentElement.getAttribute(\"lang\")\n }\n\n get headElement() {\n return this.headSnapshot.element\n }\n\n get rootLocation() {\n const root = this.getSetting(\"root\") ?? \"/\";\n return expandURL(root)\n }\n\n get cacheControlValue() {\n return this.getSetting(\"cache-control\")\n }\n\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\"\n }\n\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\"\n }\n\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\"\n }\n\n get prefersViewTransitions() {\n return this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\"\n }\n\n get shouldMorphPage() {\n return this.getSetting(\"refresh-method\") === \"morph\"\n }\n\n get shouldPreserveScrollPosition() {\n return this.getSetting(\"refresh-scroll\") === \"preserve\"\n }\n\n // Private\n\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`)\n }\n}\n\nclass ViewTransitioner {\n #viewTransitionStarted = false\n #lastOperation = Promise.resolve()\n\n renderChange(useViewTransition, render) {\n if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n this.#viewTransitionStarted = true;\n this.#lastOperation = this.#lastOperation.then(async () => {\n await document.startViewTransition(render).finished;\n });\n } else {\n this.#lastOperation = this.#lastOperation.then(render);\n }\n\n return this.#lastOperation\n }\n\n get viewTransitionsAvailable() {\n return document.startViewTransition\n }\n}\n\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\n\nconst TimingMetric = {\n visitStart: \"visitStart\",\n requestStart: \"requestStart\",\n requestEnd: \"requestEnd\",\n visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n initialized: \"initialized\",\n started: \"started\",\n canceled: \"canceled\",\n failed: \"failed\",\n completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n networkFailure: 0,\n timeoutFailure: -1,\n contentTypeMismatch: -2\n};\n\nconst Direction = {\n advance: \"forward\",\n restore: \"back\",\n replace: \"none\"\n};\n\nclass Visit {\n identifier = uuid() // Required by turbo-ios\n timingMetrics = {}\n\n followedRedirect = false\n historyChanged = false\n scrolled = false\n shouldCacheSnapshot = true\n acceptsStreamResponse = false\n snapshotCached = false\n state = VisitState.initialized\n viewTransitioner = new ViewTransitioner()\n\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n\n const {\n action,\n historyChanged,\n referrer,\n snapshot,\n snapshotHTML,\n response,\n visitCachedSnapshot,\n willRender,\n updateHistory,\n shouldCacheSnapshot,\n acceptsStreamResponse,\n direction\n } = {\n ...defaultOptions,\n ...options\n };\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.isPageRefresh = this.view.isPageRefresh(this);\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 this.direction = direction || Direction[action];\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get history() {\n return this.delegate.history\n }\n\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n }\n\n get silent() {\n return this.isSamePage\n }\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\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\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.adapter.visitCompleted(this);\n this.state = VisitState.completed;\n this.followRedirect();\n\n if (!this.followedRedirect) {\n this.delegate.visitCompleted(this);\n }\n }\n }\n\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n this.delegate.visitCompleted(this);\n }\n }\n\n changeHistory() {\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === this.referrer?.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\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\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 } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot) this.cacheSnapshot();\n if (this.view.renderPromise) await this.view.renderPromise;\n\n if (isSuccessful(statusCode) && responseHTML != null) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n await this.renderPageSnapshot(snapshot, false);\n\n this.adapter.visitRendered(this);\n this.complete();\n } else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\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\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML)\n }\n }\n\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null\n }\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 || this.isPageRefresh) {\n this.adapter.visitRendered(this);\n } else {\n if (this.view.renderPromise) await this.view.renderPromise;\n\n await this.renderPageSnapshot(snapshot, isPreview);\n\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n\n followRedirect() {\n if (this.redirectedToLocation && !this.followedRedirect && this.response?.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\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\n // Fetch request delegate\n\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted() {\n this.startRequest();\n }\n\n requestPreventedHandlingResponse(_request, _response) {}\n\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 } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\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 } else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n\n requestFinished() {\n this.finishRequest();\n }\n\n // Scrolling\n\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n\n this.scrolled = true;\n }\n }\n\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true\n }\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\n // Instrumentation\n\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n\n getTimingMetrics() {\n return { ...this.timingMetrics }\n }\n\n // Private\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\n hasPreloadedResponse() {\n return typeof this.response == \"object\"\n }\n\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot()\n } else {\n return this.willRender\n }\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\n async render(callback) {\n this.cancelRender();\n this.frame = await nextRepaint();\n await callback();\n delete this.frame;\n }\n\n async renderPageSnapshot(snapshot, isPreview) {\n await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n });\n }\n\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\n\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n progressBar = new ProgressBar()\n\n constructor(session) {\n this.session = session;\n }\n\n visitProposedToLocation(location, options) {\n if (locationIsVisitable(location, this.navigator.rootLocation)) {\n this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n } else {\n window.location.href = location.toString();\n }\n }\n\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\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\n visitRequestFinished(_visit) {}\n\n visitCompleted(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n pageInvalidated(reason) {\n this.reload(reason);\n }\n\n visitFailed(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n visitRendered(_visit) {}\n\n // Form Submission Delegate\n\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n\n // Private\n\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\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\n showProgressBar = () => {\n this.progressBar.show();\n }\n\n reload(reason) {\n dispatch(\"turbo:reload\", { detail: reason });\n\n window.location.href = this.location?.toString() || window.location.href;\n }\n\n get navigator() {\n return this.session.navigator\n }\n}\n\nclass CacheObserver {\n selector = \"[data-turbo-temporary]\"\n deprecatedSelector = \"[data-turbo-cache=false]\"\n\n started = false\n\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n removeTemporaryElements = (_event) => {\n for (const element of this.temporaryElements) {\n element.remove();\n }\n }\n\n get temporaryElements() {\n return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]\n }\n\n get temporaryElementsWithDeprecation() {\n const elements = document.querySelectorAll(this.deprecatedSelector);\n\n if (elements.length) {\n console.warn(\n `The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`\n );\n }\n\n return [...elements]\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\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldRedirect(element)\n }\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\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return (\n element.closest(\"turbo-frame\") == null &&\n this.#shouldSubmit(element, submitter) &&\n this.#shouldRedirect(element, submitter)\n )\n }\n\n formSubmitted(element, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n\n #shouldSubmit(form, submitter) {\n const action = getAction$1(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL(meta?.content ?? \"/\");\n\n return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n }\n\n #shouldRedirect(element, submitter) {\n const isNavigatable =\n element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n\n if (isNavigatable) {\n const frame = this.#findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false\n } else {\n return false\n }\n }\n\n #findFrameElement(element, submitter) {\n const id = 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 location\n restorationIdentifier = uuid()\n restorationData = {}\n started = false\n pageLoaded = false\n currentIndex = 0\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n this.started = true;\n this.replace(new URL(window.location.href));\n }\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\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n\n update(method, location, restorationIdentifier = uuid()) {\n if (method === history.pushState) ++this.currentIndex;\n\n const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n\n // Restoration data\n\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {}\n }\n\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = {\n ...restorationData,\n ...additionalData\n };\n }\n\n // Scroll restoration\n\n assumeControlOfScrollRestoration() {\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n\n // Event handlers\n\n 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, restorationIndex } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n this.currentIndex = restorationIndex;\n }\n }\n }\n\n onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n }\n\n // Private\n\n shouldHandlePopState() {\n // Safari dispatches a popstate event after window's load event, ignore it\n return this.pageIsLoaded()\n }\n\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\"\n }\n}\n\nclass LinkPrefetchObserver {\n started = false\n #prefetchedLink = null\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (this.started) return\n\n if (this.eventTarget.readyState === \"loading\") {\n this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n } else {\n this.#enable();\n }\n }\n\n stop() {\n if (!this.started) return\n\n this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = false;\n }\n\n #enable = () => {\n this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = true;\n }\n\n #tryToPrefetchRequest = (event) => {\n if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n const target = event.target;\n const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n if (isLink && this.#isPrefetchable(target)) {\n const link = target;\n const location = getLocationForLink(link);\n\n if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n this.#prefetchedLink = link;\n\n const fetchRequest = new FetchRequest(\n this,\n FetchMethod.get,\n location,\n new URLSearchParams(),\n target\n );\n\n prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);\n }\n }\n }\n\n #cancelRequestIfObsolete = (event) => {\n if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n }\n\n #cancelPrefetchRequest = () => {\n prefetchCache.clear();\n this.#prefetchedLink = null;\n }\n\n #tryToUsePrefetchedRequest = (event) => {\n if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n const cached = prefetchCache.get(event.detail.url.toString());\n\n if (cached) {\n // User clicked link, use cache response\n event.detail.fetchRequest = cached;\n }\n\n prefetchCache.clear();\n }\n }\n\n prepareRequest(request) {\n const link = request.target;\n\n request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n const turboFrame = link.closest(\"turbo-frame\");\n const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n }\n }\n\n // Fetch request interface\n\n requestSucceededWithResponse() {}\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n get #cacheTtl() {\n return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n }\n\n #isPrefetchable(link) {\n const href = link.getAttribute(\"href\");\n\n if (!href) return false\n\n if (unfetchableLink(link)) return false\n if (linkToTheSamePage(link)) return false\n if (linkOptsOut(link)) return false\n if (nonSafeLink(link)) return false\n if (eventPrevented(link)) return false\n\n return true\n }\n}\n\nconst unfetchableLink = (link) => {\n return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n return false\n};\n\nconst nonSafeLink = (link) => {\n const turboMethod = link.getAttribute(\"data-turbo-method\");\n if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n if (isUJS(link)) return true\n if (link.hasAttribute(\"data-turbo-confirm\")) return true\n if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n return false\n};\n\nconst isUJS = (link) => {\n return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n return event.defaultPrevented\n};\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n }\n\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n referrer: this.location,\n ...options\n });\n this.currentVisit.start();\n }\n\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n this.formSubmission.start();\n }\n\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get rootLocation() {\n return this.view.snapshot.rootLocation\n }\n\n get history() {\n return this.delegate.history\n }\n\n // Form submission delegate\n\n formSubmissionStarted(formSubmission) {\n // Not all adapters implement formSubmissionStarted\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\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.isSafe;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n\n const { statusCode, redirected } = fetchResponse;\n const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n } else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n if(!snapshot.shouldPreserveScrollPosition) {\n this.view.scrollToTop();\n }\n this.view.clearSnapshotCache();\n }\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished(formSubmission) {\n // Not all adapters implement formSubmissionFinished\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n delete this.currentVisit;\n }\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\n return (\n action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor))\n )\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n\n // Visits\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n #getActionForFormSubmission(formSubmission, fetchResponse) {\n const { submitter, formElement } = formSubmission;\n return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n }\n\n #getDefaultAction(fetchResponse) {\n const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n return sameLocationRedirect ? \"replace\" : \"advance\"\n }\n}\n\nconst PageStage = {\n initial: 0,\n loading: 1,\n interactive: 2,\n complete: 3\n};\n\nclass PageObserver {\n stage = PageStage.initial\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\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\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\n interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n } else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n }\n\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\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\n pageWillUnload = () => {\n this.delegate.pageWillUnload();\n }\n\n get readyState() {\n return document.readyState\n }\n}\n\nclass ScrollObserver {\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n\n onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n }\n\n // Private\n\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n withAutofocusFromFragment(fragment, () => {\n withPreservedFocus(() => {\n document.documentElement.appendChild(fragment);\n });\n });\n });\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n\n leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n\n return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n const generatedID = `turbo-stream-autofocus-${uuid()}`;\n const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n let willAutofocusId = null;\n\n if (elementWithAutofocus) {\n if (elementWithAutofocus.id) {\n willAutofocusId = elementWithAutofocus.id;\n } else {\n willAutofocusId = generatedID;\n }\n\n elementWithAutofocus.id = willAutofocusId;\n }\n\n callback();\n await nextRepaint();\n\n const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n if (hasNoActiveElement && willAutofocusId) {\n const elementToAutofocus = document.getElementById(willAutofocusId);\n\n if (elementIsFocusable(elementToAutofocus)) {\n elementToAutofocus.focus();\n }\n if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n elementToAutofocus.removeAttribute(\"id\");\n }\n }\n}\n\nasync function withPreservedFocus(callback) {\n const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n if (restoreFocusTo) {\n const elementToFocus = document.getElementById(restoreFocusTo);\n\n if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n elementToFocus.focus();\n }\n }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n for (const streamElement of nodeListOfStreamElements) {\n const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n if (elementWithAutofocus) return elementWithAutofocus\n }\n\n return null\n}\n\nclass StreamObserver {\n sources = new Set()\n #started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.#started) {\n this.#started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n stop() {\n if (this.#started) {\n this.#started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\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\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n streamSourceIsConnected(source) {\n return this.sources.has(source)\n }\n\n inspectFetchResponse = (event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n }\n\n receiveMessageEvent = (event) => {\n if (this.#started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n }\n\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\n\nfunction fetchResponseFromEvent(event) {\n const fetchResponse = event.detail?.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse\n }\n}\n\nfunction fetchResponseIsStream(response) {\n const contentType = response.contentType ?? \"\";\n return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n\n documentElement.replaceChild(newElement, body);\n }\n\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\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\n get newHead() {\n return this.newSnapshot.headSnapshot.element\n }\n\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\")\n }\n}\n\n// base IIFE to define idiomorph\nvar Idiomorph = (function () {\n\n //=============================================================================\n // AND NOW IT BEGINS...\n //=============================================================================\n let EMPTY_SET = new Set();\n\n // default configuration values, updatable by users now\n let defaults = {\n morphStyle: \"outerHTML\",\n callbacks : {\n beforeNodeAdded: noOp,\n afterNodeAdded: noOp,\n beforeNodeMorphed: noOp,\n afterNodeMorphed: noOp,\n beforeNodeRemoved: noOp,\n afterNodeRemoved: noOp,\n beforeAttributeUpdated: noOp,\n\n },\n head: {\n style: 'merge',\n shouldPreserve: function (elt) {\n return elt.getAttribute(\"im-preserve\") === \"true\";\n },\n shouldReAppend: function (elt) {\n return elt.getAttribute(\"im-re-append\") === \"true\";\n },\n shouldRemove: noOp,\n afterHeadMorphed: noOp,\n }\n };\n\n //=============================================================================\n // Core Morphing Algorithm - morph, morphNormalizedContent, morphOldNodeTo, morphChildren\n //=============================================================================\n function morph(oldNode, newContent, config = {}) {\n\n if (oldNode instanceof Document) {\n oldNode = oldNode.documentElement;\n }\n\n if (typeof newContent === 'string') {\n newContent = parseContent(newContent);\n }\n\n let normalizedContent = normalizeContent(newContent);\n\n let ctx = createMorphContext(oldNode, normalizedContent, config);\n\n return morphNormalizedContent(oldNode, normalizedContent, ctx);\n }\n\n function morphNormalizedContent(oldNode, normalizedNewContent, ctx) {\n if (ctx.head.block) {\n let oldHead = oldNode.querySelector('head');\n let newHead = normalizedNewContent.querySelector('head');\n if (oldHead && newHead) {\n let promises = handleHeadElement(newHead, oldHead, ctx);\n // when head promises resolve, call morph again, ignoring the head tag\n Promise.all(promises).then(function () {\n morphNormalizedContent(oldNode, normalizedNewContent, Object.assign(ctx, {\n head: {\n block: false,\n ignore: true\n }\n }));\n });\n return;\n }\n }\n\n if (ctx.morphStyle === \"innerHTML\") {\n\n // innerHTML, so we are only updating the children\n morphChildren(normalizedNewContent, oldNode, ctx);\n return oldNode.children;\n\n } else if (ctx.morphStyle === \"outerHTML\" || ctx.morphStyle == null) {\n // otherwise find the best element match in the new content, morph that, and merge its siblings\n // into either side of the best match\n let bestMatch = findBestNodeMatch(normalizedNewContent, oldNode, ctx);\n\n // stash the siblings that will need to be inserted on either side of the best match\n let previousSibling = bestMatch?.previousSibling;\n let nextSibling = bestMatch?.nextSibling;\n\n // morph it\n let morphedNode = morphOldNodeTo(oldNode, bestMatch, ctx);\n\n if (bestMatch) {\n // if there was a best match, merge the siblings in too and return the\n // whole bunch\n return insertSiblings(previousSibling, morphedNode, nextSibling);\n } else {\n // otherwise nothing was added to the DOM\n return []\n }\n } else {\n throw \"Do not understand how to morph style \" + ctx.morphStyle;\n }\n }\n\n\n /**\n * @param possibleActiveElement\n * @param ctx\n * @returns {boolean}\n */\n function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n return ctx.ignoreActiveValue && possibleActiveElement === document.activeElement && possibleActiveElement !== document.body;\n }\n\n /**\n * @param oldNode root node to merge content into\n * @param newContent new content to merge\n * @param ctx the merge context\n * @returns {Element} the element that ended up in the DOM\n */\n function morphOldNodeTo(oldNode, newContent, ctx) {\n if (ctx.ignoreActive && oldNode === document.activeElement) ; else if (newContent == null) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n\n oldNode.remove();\n ctx.callbacks.afterNodeRemoved(oldNode);\n return null;\n } else if (!isSoftMatch(oldNode, newContent)) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n if (ctx.callbacks.beforeNodeAdded(newContent) === false) return oldNode;\n\n oldNode.parentElement.replaceChild(newContent, oldNode);\n ctx.callbacks.afterNodeAdded(newContent);\n ctx.callbacks.afterNodeRemoved(oldNode);\n return newContent;\n } else {\n if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) return oldNode;\n\n if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== \"morph\") {\n handleHeadElement(newContent, oldNode, ctx);\n } else {\n syncNodeFrom(newContent, oldNode, ctx);\n if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n morphChildren(newContent, oldNode, ctx);\n }\n }\n ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n return oldNode;\n }\n }\n\n /**\n * This is the core algorithm for matching up children. The idea is to use id sets to try to match up\n * nodes as faithfully as possible. We greedily match, which allows us to keep the algorithm fast, but\n * by using id sets, we are able to better match up with content deeper in the DOM.\n *\n * Basic algorithm is, for each node in the new content:\n *\n * - if we have reached the end of the old parent, append the new content\n * - if the new content has an id set match with the current insertion point, morph\n * - search for an id set match\n * - if id set match found, morph\n * - otherwise search for a \"soft\" match\n * - if a soft match is found, morph\n * - otherwise, prepend the new node before the current insertion point\n *\n * The two search algorithms terminate if competing node matches appear to outweigh what can be achieved\n * with the current node. See findIdSetMatch() and findSoftMatch() for details.\n *\n * @param {Element} newParent the parent element of the new content\n * @param {Element } oldParent the old content that we are merging the new content into\n * @param ctx the merge context\n */\n function morphChildren(newParent, oldParent, ctx) {\n\n let nextNewChild = newParent.firstChild;\n let insertionPoint = oldParent.firstChild;\n let newChild;\n\n // run through all the new content\n while (nextNewChild) {\n\n newChild = nextNewChild;\n nextNewChild = newChild.nextSibling;\n\n // if we are at the end of the exiting parent's children, just append\n if (insertionPoint == null) {\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.appendChild(newChild);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // if the current node has an id set match then morph\n if (isIdSetMatch(newChild, insertionPoint, ctx)) {\n morphOldNodeTo(insertionPoint, newChild, ctx);\n insertionPoint = insertionPoint.nextSibling;\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // otherwise search forward in the existing old children for an id set match\n let idSetMatch = findIdSetMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a potential match, remove the nodes until that point and morph\n if (idSetMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, idSetMatch, ctx);\n morphOldNodeTo(idSetMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // no id set match found, so scan forward for a soft match for the current node\n let softMatch = findSoftMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a soft match for the current node, morph\n if (softMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, softMatch, ctx);\n morphOldNodeTo(softMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // abandon all hope of morphing, just insert the new child before the insertion point\n // and move on\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.insertBefore(newChild, insertionPoint);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n }\n\n // remove any remaining old nodes that didn't match up with new content\n while (insertionPoint !== null) {\n\n let tempNode = insertionPoint;\n insertionPoint = insertionPoint.nextSibling;\n removeNode(tempNode, ctx);\n }\n }\n\n //=============================================================================\n // Attribute Syncing Code\n //=============================================================================\n\n /**\n * @param attr {String} the attribute to be mutated\n * @param to {Element} the element that is going to be updated\n * @param updateType {(\"update\"|\"remove\")}\n * @param ctx the merge context\n * @returns {boolean} true if the attribute should be ignored, false otherwise\n */\n function ignoreAttribute(attr, to, updateType, ctx) {\n if(attr === 'value' && ctx.ignoreActiveValue && to === document.activeElement){\n return true;\n }\n return ctx.callbacks.beforeAttributeUpdated(attr, to, updateType) === false;\n }\n\n /**\n * syncs a given node with another node, copying over all attributes and\n * inner element state from the 'from' node to the 'to' node\n *\n * @param {Element} from the element to copy attributes & state from\n * @param {Element} to the element to copy attributes & state to\n * @param ctx the merge context\n */\n function syncNodeFrom(from, to, ctx) {\n let type = from.nodeType;\n\n // if is an element type, sync the attributes from the\n // new node into the new node\n if (type === 1 /* element type */) {\n const fromAttributes = from.attributes;\n const toAttributes = to.attributes;\n for (const fromAttribute of fromAttributes) {\n if (ignoreAttribute(fromAttribute.name, to, 'update', ctx)) {\n continue;\n }\n if (to.getAttribute(fromAttribute.name) !== fromAttribute.value) {\n to.setAttribute(fromAttribute.name, fromAttribute.value);\n }\n }\n // iterate backwards to avoid skipping over items when a delete occurs\n for (let i = toAttributes.length - 1; 0 <= i; i--) {\n const toAttribute = toAttributes[i];\n if (ignoreAttribute(toAttribute.name, to, 'remove', ctx)) {\n continue;\n }\n if (!from.hasAttribute(toAttribute.name)) {\n to.removeAttribute(toAttribute.name);\n }\n }\n }\n\n // sync text nodes\n if (type === 8 /* comment */ || type === 3 /* text */) {\n if (to.nodeValue !== from.nodeValue) {\n to.nodeValue = from.nodeValue;\n }\n }\n\n if (!ignoreValueOfActiveElement(to, ctx)) {\n // sync input values\n syncInputValue(from, to, ctx);\n }\n }\n\n /**\n * @param from {Element} element to sync the value from\n * @param to {Element} element to sync the value to\n * @param attributeName {String} the attribute name\n * @param ctx the merge context\n */\n function syncBooleanAttribute(from, to, attributeName, ctx) {\n if (from[attributeName] !== to[attributeName]) {\n let ignoreUpdate = ignoreAttribute(attributeName, to, 'update', ctx);\n if (!ignoreUpdate) {\n to[attributeName] = from[attributeName];\n }\n if (from[attributeName]) {\n if (!ignoreUpdate) {\n to.setAttribute(attributeName, from[attributeName]);\n }\n } else {\n if (!ignoreAttribute(attributeName, to, 'remove', ctx)) {\n to.removeAttribute(attributeName);\n }\n }\n }\n }\n\n /**\n * NB: many bothans died to bring us information:\n *\n * https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n * https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n *\n * @param from {Element} the element to sync the input value from\n * @param to {Element} the element to sync the input value to\n * @param ctx the merge context\n */\n function syncInputValue(from, to, ctx) {\n if (from instanceof HTMLInputElement &&\n to instanceof HTMLInputElement &&\n from.type !== 'file') {\n\n let fromValue = from.value;\n let toValue = to.value;\n\n // sync boolean attributes\n syncBooleanAttribute(from, to, 'checked', ctx);\n syncBooleanAttribute(from, to, 'disabled', ctx);\n\n if (!from.hasAttribute('value')) {\n if (!ignoreAttribute('value', to, 'remove', ctx)) {\n to.value = '';\n to.removeAttribute('value');\n }\n } else if (fromValue !== toValue) {\n if (!ignoreAttribute('value', to, 'update', ctx)) {\n to.setAttribute('value', fromValue);\n to.value = fromValue;\n }\n }\n } else if (from instanceof HTMLOptionElement) {\n syncBooleanAttribute(from, to, 'selected', ctx);\n } else if (from instanceof HTMLTextAreaElement && to instanceof HTMLTextAreaElement) {\n let fromValue = from.value;\n let toValue = to.value;\n if (ignoreAttribute('value', to, 'update', ctx)) {\n return;\n }\n if (fromValue !== toValue) {\n to.value = fromValue;\n }\n if (to.firstChild && to.firstChild.nodeValue !== fromValue) {\n to.firstChild.nodeValue = fromValue;\n }\n }\n }\n\n //=============================================================================\n // the HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n //=============================================================================\n function handleHeadElement(newHeadTag, currentHead, ctx) {\n\n let added = [];\n let removed = [];\n let preserved = [];\n let nodesToAppend = [];\n\n let headMergeStyle = ctx.head.style;\n\n // put all new head elements into a Map, by their outerHTML\n let srcToNewHeadNodes = new Map();\n for (const newHeadChild of newHeadTag.children) {\n srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n }\n\n // for each elt in the current head\n for (const currentHeadElt of currentHead.children) {\n\n // If the current head element is in the map\n let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n if (inNewContent || isPreserved) {\n if (isReAppended) {\n // remove the current version and let the new version replace it and re-execute\n removed.push(currentHeadElt);\n } else {\n // this element already exists and should not be re-appended, so remove it from\n // the new content map, preserving it in the DOM\n srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n preserved.push(currentHeadElt);\n }\n } else {\n if (headMergeStyle === \"append\") {\n // we are appending and this existing element is not new content\n // so if and only if it is marked for re-append do we do anything\n if (isReAppended) {\n removed.push(currentHeadElt);\n nodesToAppend.push(currentHeadElt);\n }\n } else {\n // if this is a merge, we remove this content since it is not in the new head\n if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n removed.push(currentHeadElt);\n }\n }\n }\n }\n\n // Push the remaining new head elements in the Map into the\n // nodes to append to the head tag\n nodesToAppend.push(...srcToNewHeadNodes.values());\n\n let promises = [];\n for (const newNode of nodesToAppend) {\n let newElt = document.createRange().createContextualFragment(newNode.outerHTML).firstChild;\n if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n if (newElt.href || newElt.src) {\n let resolve = null;\n let promise = new Promise(function (_resolve) {\n resolve = _resolve;\n });\n newElt.addEventListener('load', function () {\n resolve();\n });\n promises.push(promise);\n }\n currentHead.appendChild(newElt);\n ctx.callbacks.afterNodeAdded(newElt);\n added.push(newElt);\n }\n }\n\n // remove all removed elements, after we have appended the new elements to avoid\n // additional network requests for things like style sheets\n for (const removedElement of removed) {\n if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n currentHead.removeChild(removedElement);\n ctx.callbacks.afterNodeRemoved(removedElement);\n }\n }\n\n ctx.head.afterHeadMorphed(currentHead, {added: added, kept: preserved, removed: removed});\n return promises;\n }\n\n function noOp() {\n }\n\n /*\n Deep merges the config object and the Idiomoroph.defaults object to\n produce a final configuration object\n */\n function mergeDefaults(config) {\n let finalConfig = {};\n // copy top level stuff into final config\n Object.assign(finalConfig, defaults);\n Object.assign(finalConfig, config);\n\n // copy callbacks into final config (do this to deep merge the callbacks)\n finalConfig.callbacks = {};\n Object.assign(finalConfig.callbacks, defaults.callbacks);\n Object.assign(finalConfig.callbacks, config.callbacks);\n\n // copy head config into final config (do this to deep merge the head)\n finalConfig.head = {};\n Object.assign(finalConfig.head, defaults.head);\n Object.assign(finalConfig.head, config.head);\n return finalConfig;\n }\n\n function createMorphContext(oldNode, newContent, config) {\n config = mergeDefaults(config);\n return {\n target: oldNode,\n newContent: newContent,\n config: config,\n morphStyle: config.morphStyle,\n ignoreActive: config.ignoreActive,\n ignoreActiveValue: config.ignoreActiveValue,\n idMap: createIdMap(oldNode, newContent),\n deadIds: new Set(),\n callbacks: config.callbacks,\n head: config.head\n }\n }\n\n function isIdSetMatch(node1, node2, ctx) {\n if (node1 == null || node2 == null) {\n return false;\n }\n if (node1.nodeType === node2.nodeType && node1.tagName === node2.tagName) {\n if (node1.id !== \"\" && node1.id === node2.id) {\n return true;\n } else {\n return getIdIntersectionCount(ctx, node1, node2) > 0;\n }\n }\n return false;\n }\n\n function isSoftMatch(node1, node2) {\n if (node1 == null || node2 == null) {\n return false;\n }\n return node1.nodeType === node2.nodeType && node1.tagName === node2.tagName\n }\n\n function removeNodesBetween(startInclusive, endExclusive, ctx) {\n while (startInclusive !== endExclusive) {\n let tempNode = startInclusive;\n startInclusive = startInclusive.nextSibling;\n removeNode(tempNode, ctx);\n }\n removeIdsFromConsideration(ctx, endExclusive);\n return endExclusive.nextSibling;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential id match\n // for the newChild. We stop if we find a potential id match for the new child OR\n // if the number of potential id matches we are discarding is greater than the\n // potential id matches for the new child\n //=============================================================================\n function findIdSetMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n // max id matches we are willing to discard in our search\n let newChildPotentialIdCount = getIdIntersectionCount(ctx, newChild, oldParent);\n\n let potentialMatch = null;\n\n // only search forward if there is a possibility of an id match\n if (newChildPotentialIdCount > 0) {\n let potentialMatch = insertionPoint;\n // if there is a possibility of an id match, scan forward\n // keep track of the potential id match count we are discarding (the\n // newChildPotentialIdCount must be greater than this to make it likely\n // worth it)\n let otherMatchCount = 0;\n while (potentialMatch != null) {\n\n // If we have an id match, return the current potential match\n if (isIdSetMatch(newChild, potentialMatch, ctx)) {\n return potentialMatch;\n }\n\n // computer the other potential matches of this new content\n otherMatchCount += getIdIntersectionCount(ctx, potentialMatch, newContent);\n if (otherMatchCount > newChildPotentialIdCount) {\n // if we have more potential id matches in _other_ content, we\n // do not have a good candidate for an id match, so return null\n return null;\n }\n\n // advanced to the next old content child\n potentialMatch = potentialMatch.nextSibling;\n }\n }\n return potentialMatch;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential soft match\n // for the newChild. We stop if we find a potential soft match for the new child OR\n // if we find a potential id match in the old parents children OR if we find two\n // potential soft matches for the next two pieces of new content\n //=============================================================================\n function findSoftMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n let potentialSoftMatch = insertionPoint;\n let nextSibling = newChild.nextSibling;\n let siblingSoftMatchCount = 0;\n\n while (potentialSoftMatch != null) {\n\n if (getIdIntersectionCount(ctx, potentialSoftMatch, newContent) > 0) {\n // the current potential soft match has a potential id set match with the remaining new\n // content so bail out of looking\n return null;\n }\n\n // if we have a soft match with the current node, return it\n if (isSoftMatch(newChild, potentialSoftMatch)) {\n return potentialSoftMatch;\n }\n\n if (isSoftMatch(nextSibling, potentialSoftMatch)) {\n // the next new node has a soft match with this node, so\n // increment the count of future soft matches\n siblingSoftMatchCount++;\n nextSibling = nextSibling.nextSibling;\n\n // If there are two future soft matches, bail to allow the siblings to soft match\n // so that we don't consume future soft matches for the sake of the current node\n if (siblingSoftMatchCount >= 2) {\n return null;\n }\n }\n\n // advanced to the next old content child\n potentialSoftMatch = potentialSoftMatch.nextSibling;\n }\n\n return potentialSoftMatch;\n }\n\n function parseContent(newContent) {\n let parser = new DOMParser();\n\n // remove svgs to avoid false-positive matches on head, etc.\n let contentWithSvgsRemoved = newContent.replace(/]*>|>)([\\s\\S]*?)<\\/svg>/gim, '');\n\n // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n if (contentWithSvgsRemoved.match(/<\\/html>/) || contentWithSvgsRemoved.match(/<\\/head>/) || contentWithSvgsRemoved.match(/<\\/body>/)) {\n let content = parser.parseFromString(newContent, \"text/html\");\n // if it is a full HTML document, return the document itself as the parent container\n if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n content.generatedByIdiomorph = true;\n return content;\n } else {\n // otherwise return the html element as the parent container\n let htmlElement = content.firstChild;\n if (htmlElement) {\n htmlElement.generatedByIdiomorph = true;\n return htmlElement;\n } else {\n return null;\n }\n }\n } else {\n // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n // deal with touchy tags like tr, tbody, etc.\n let responseDoc = parser.parseFromString(\"\", \"text/html\");\n let content = responseDoc.body.querySelector('template').content;\n content.generatedByIdiomorph = true;\n return content\n }\n }\n\n function normalizeContent(newContent) {\n if (newContent == null) {\n // noinspection UnnecessaryLocalVariableJS\n const dummyParent = document.createElement('div');\n return dummyParent;\n } else if (newContent.generatedByIdiomorph) {\n // the template tag created by idiomorph parsing can serve as a dummy parent\n return newContent;\n } else if (newContent instanceof Node) {\n // a single node is added as a child to a dummy parent\n const dummyParent = document.createElement('div');\n dummyParent.append(newContent);\n return dummyParent;\n } else {\n // all nodes in the array or HTMLElement collection are consolidated under\n // a single dummy parent element\n const dummyParent = document.createElement('div');\n for (const elt of [...newContent]) {\n dummyParent.append(elt);\n }\n return dummyParent;\n }\n }\n\n function insertSiblings(previousSibling, morphedNode, nextSibling) {\n let stack = [];\n let added = [];\n while (previousSibling != null) {\n stack.push(previousSibling);\n previousSibling = previousSibling.previousSibling;\n }\n while (stack.length > 0) {\n let node = stack.pop();\n added.push(node); // push added preceding siblings on in order and insert\n morphedNode.parentElement.insertBefore(node, morphedNode);\n }\n added.push(morphedNode);\n while (nextSibling != null) {\n stack.push(nextSibling);\n added.push(nextSibling); // here we are going in order, so push on as we scan, rather than add\n nextSibling = nextSibling.nextSibling;\n }\n while (stack.length > 0) {\n morphedNode.parentElement.insertBefore(stack.pop(), morphedNode.nextSibling);\n }\n return added;\n }\n\n function findBestNodeMatch(newContent, oldNode, ctx) {\n let currentElement;\n currentElement = newContent.firstChild;\n let bestElement = currentElement;\n let score = 0;\n while (currentElement) {\n let newScore = scoreElement(currentElement, oldNode, ctx);\n if (newScore > score) {\n bestElement = currentElement;\n score = newScore;\n }\n currentElement = currentElement.nextSibling;\n }\n return bestElement;\n }\n\n function scoreElement(node1, node2, ctx) {\n if (isSoftMatch(node1, node2)) {\n return .5 + getIdIntersectionCount(ctx, node1, node2);\n }\n return 0;\n }\n\n function removeNode(tempNode, ctx) {\n removeIdsFromConsideration(ctx, tempNode);\n if (ctx.callbacks.beforeNodeRemoved(tempNode) === false) return;\n\n tempNode.remove();\n ctx.callbacks.afterNodeRemoved(tempNode);\n }\n\n //=============================================================================\n // ID Set Functions\n //=============================================================================\n\n function isIdInConsideration(ctx, id) {\n return !ctx.deadIds.has(id);\n }\n\n function idIsWithinNode(ctx, id, targetNode) {\n let idSet = ctx.idMap.get(targetNode) || EMPTY_SET;\n return idSet.has(id);\n }\n\n function removeIdsFromConsideration(ctx, node) {\n let idSet = ctx.idMap.get(node) || EMPTY_SET;\n for (const id of idSet) {\n ctx.deadIds.add(id);\n }\n }\n\n function getIdIntersectionCount(ctx, node1, node2) {\n let sourceSet = ctx.idMap.get(node1) || EMPTY_SET;\n let matchCount = 0;\n for (const id of sourceSet) {\n // a potential match is an id in the source and potentialIdsSet, but\n // that has not already been merged into the DOM\n if (isIdInConsideration(ctx, id) && idIsWithinNode(ctx, id, node2)) {\n ++matchCount;\n }\n }\n return matchCount;\n }\n\n /**\n * A bottom up algorithm that finds all elements with ids inside of the node\n * argument and populates id sets for those nodes and all their parents, generating\n * a set of ids contained within all nodes for the entire hierarchy in the DOM\n *\n * @param node {Element}\n * @param {Map>} idMap\n */\n function populateIdMapForNode(node, idMap) {\n let nodeParent = node.parentElement;\n // find all elements with an id property\n let idElements = node.querySelectorAll('[id]');\n for (const elt of idElements) {\n let current = elt;\n // walk up the parent hierarchy of that element, adding the id\n // of element to the parent's id set\n while (current !== nodeParent && current != null) {\n let idSet = idMap.get(current);\n // if the id set doesn't exist, create it and insert it in the map\n if (idSet == null) {\n idSet = new Set();\n idMap.set(current, idSet);\n }\n idSet.add(elt.id);\n current = current.parentElement;\n }\n }\n }\n\n /**\n * This function computes a map of nodes to all ids contained within that node (inclusive of the\n * node). This map can be used to ask if two nodes have intersecting sets of ids, which allows\n * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n * to contribute to a parent nodes matching.\n *\n * @param {Element} oldContent the old content that will be morphed\n * @param {Element} newContent the new content to morph to\n * @returns {Map>} a map of nodes to id sets for the\n */\n function createIdMap(oldContent, newContent) {\n let idMap = new Map();\n populateIdMapForNode(oldContent, idMap);\n populateIdMapForNode(newContent, idMap);\n return idMap;\n }\n\n //=============================================================================\n // This is what ends up becoming the Idiomorph global object\n //=============================================================================\n return {\n morph,\n defaults\n }\n })();\n\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n Idiomorph.morph(currentElement, newElement, {\n ...options,\n callbacks: new DefaultIdiomorphCallbacks(callbacks)\n });\n}\n\nfunction morphChildren(currentElement, newElement) {\n morphElements(currentElement, newElement.children, {\n morphStyle: \"innerHTML\"\n });\n}\n\nclass DefaultIdiomorphCallbacks {\n #beforeNodeMorphed\n\n constructor({ beforeNodeMorphed } = {}) {\n this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n }\n\n beforeNodeAdded = (node) => {\n return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n }\n\n beforeNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n const event = dispatch(\"turbo:before-morph-element\", {\n cancelable: true,\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n return !event.defaultPrevented\n } else {\n return false\n }\n }\n }\n\n beforeAttributeUpdated = (attributeName, target, mutationType) => {\n const event = dispatch(\"turbo:before-morph-attribute\", {\n cancelable: true,\n target,\n detail: { attributeName, mutationType }\n });\n\n return !event.defaultPrevented\n }\n\n beforeNodeRemoved = (node) => {\n return this.beforeNodeMorphed(node)\n }\n\n afterNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n dispatch(\"turbo:morph-element\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n }\n }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n static renderElement(currentElement, newElement) {\n dispatch(\"turbo:before-frame-morph\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n morphChildren(currentElement, newElement);\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 } else {\n document.documentElement.appendChild(newElement);\n }\n }\n\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n }\n\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n }\n }\n\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n }\n }\n }\n\n async prepareToRender() {\n this.#setLanguage();\n await this.mergeHead();\n }\n\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot\n }\n\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n #setLanguage() {\n const { documentElement } = this.currentSnapshot;\n const { lang } = this.newSnapshot;\n\n if (lang) {\n documentElement.setAttribute(\"lang\", lang);\n } else {\n documentElement.removeAttribute(\"lang\");\n }\n }\n\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n\n await mergedHeadElements;\n await newStylesheetElements;\n\n if (this.willRender) {\n this.removeUnusedDynamicStylesheetElements();\n }\n }\n\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n }\n\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n\n document.head.appendChild(element);\n }\n\n await Promise.all(loadingElements);\n }\n\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n\n removeUnusedDynamicStylesheetElements() {\n for (const element of this.unusedDynamicStylesheetElements) {\n document.head.removeChild(element);\n }\n }\n\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n\n isCurrentElementInElementList(element, elementList) {\n for (const [index, newElement] of elementList.entries()) {\n // if title element...\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\n // if any other element...\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n return false\n }\n\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n\n get unusedDynamicStylesheetElements() {\n return this.oldHeadStylesheetElements.filter((element) => {\n return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n })\n }\n\n get oldHeadStylesheetElements() {\n return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n }\n\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements\n }\n\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements\n }\n\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\")\n }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n static renderElement(currentElement, newElement) {\n morphElements(currentElement, newElement, {\n callbacks: {\n beforeNodeMorphed: element => !canRefreshFrame(element)\n }\n });\n\n for (const frame of currentElement.querySelectorAll(\"turbo-frame\")) {\n if (canRefreshFrame(frame)) refreshFrame(frame);\n }\n\n dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n }\n\n async preservingPermanentElements(callback) {\n return await callback()\n }\n\n get renderMethod() {\n return \"morph\"\n }\n\n get shouldAutofocus() {\n return false\n }\n}\n\nfunction canRefreshFrame(frame) {\n return frame instanceof FrameElement &&\n frame.src &&\n frame.refresh === \"morph\" &&\n !frame.closest(\"[data-turbo-permanent]\")\n}\n\nfunction refreshFrame(frame) {\n frame.addEventListener(\"turbo:before-frame-render\", ({ detail }) => {\n detail.render = MorphingFrameRenderer.renderElement;\n }, { once: true });\n\n frame.reload();\n}\n\nclass SnapshotCache {\n keys = []\n snapshots = {}\n\n constructor(size) {\n this.size = size;\n }\n\n has(location) {\n return toCacheKey(location) in this.snapshots\n }\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\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot\n }\n\n clear() {\n this.snapshots = {};\n }\n\n // Private\n\n read(location) {\n return this.snapshots[toCacheKey(location)]\n }\n\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\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 snapshotCache = new SnapshotCache(10)\n lastRenderedLocation = new URL(location.href)\n forceReloaded = false\n\n shouldTransitionTo(newSnapshot) {\n return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n }\n\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;\n const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n const renderer = new rendererClass(this.snapshot, snapshot, rendererClass.renderElement, isPreview, willRender);\n\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit?.changeHistory();\n }\n\n return this.render(renderer)\n }\n\n renderError(snapshot, visit) {\n visit?.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer)\n }\n\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\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\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location)\n }\n\n isPageRefresh(visit) {\n return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n }\n\n shouldPreserveScrollPosition(visit) {\n return this.isPageRefresh(visit) && this.snapshot.shouldPreserveScrollPosition\n }\n\n get snapshot() {\n return PageSnapshot.fromElement(this.element)\n }\n}\n\nclass Preloader {\n selector = \"a[data-turbo-preload]\"\n\n constructor(delegate, snapshotCache) {\n this.delegate = delegate;\n this.snapshotCache = snapshotCache;\n }\n\n start() {\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n\n stop() {\n document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n }\n\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n if (this.delegate.shouldPreloadLink(link)) {\n this.preloadURL(link);\n }\n }\n }\n\n async preloadURL(link) {\n const location = new URL(link.href);\n\n if (this.snapshotCache.has(location)) {\n return\n }\n\n const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n await fetchRequest.perform();\n }\n\n // Fetch request delegate\n\n prepareRequest(fetchRequest) {\n fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n }\n\n async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n try {\n const responseHTML = await fetchResponse.responseHTML;\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n this.snapshotCache.put(fetchRequest.url, snapshot);\n } catch (_) {\n // If we cannot preload that is ok!\n }\n }\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n #preloadAll = () => {\n this.preloadOnLoadLinksForView(document.body);\n }\n}\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n\n clear() {\n this.session.clearCache();\n }\n\n resetCacheControl() {\n this.#setCacheControl(\"\");\n }\n\n exemptPageFromCache() {\n this.#setCacheControl(\"no-cache\");\n }\n\n exemptPageFromPreview() {\n this.#setCacheControl(\"no-preview\");\n }\n\n #setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nclass Session {\n navigator = new Navigator(this)\n history = new History(this)\n view = new PageView(this, document.documentElement)\n adapter = new BrowserAdapter(this)\n\n pageObserver = new PageObserver(this)\n cacheObserver = new CacheObserver()\n linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n linkClickObserver = new LinkClickObserver(this, window)\n formSubmitObserver = new FormSubmitObserver(this, document)\n scrollObserver = new ScrollObserver(this)\n streamObserver = new StreamObserver(this)\n formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n frameRedirector = new FrameRedirector(this, document.documentElement)\n streamMessageRenderer = new StreamMessageRenderer()\n cache = new Cache(this)\n\n drive = true\n enabled = true\n progressBarDelay = 500\n started = false\n formMode = \"on\"\n #pageRefreshDebouncePeriod = 150\n\n constructor(recentRequests) {\n this.recentRequests = recentRequests;\n this.preloader = new Preloader(this, this.view.snapshotCache);\n this.debouncedRefresh = this.refresh;\n this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n }\n\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.linkPrefetchObserver.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\n disable() {\n this.enabled = false;\n }\n\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.linkPrefetchObserver.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.preloader.stop();\n this.started = false;\n }\n }\n\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n if (frameElement instanceof FrameElement) {\n const action = options.action || getVisitAction(frameElement);\n\n frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n frameElement.src = location.toString();\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n\n refresh(url, requestId) {\n const isRecentRequest = requestId && this.recentRequests.has(requestId);\n if (!isRecentRequest && !this.navigator.currentVisit) {\n this.visit(url, { action: \"replace\", shouldCacheSnapshot: false });\n }\n }\n\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n\n clearCache() {\n this.view.clearSnapshotCache();\n }\n\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n\n setFormMode(mode) {\n this.formMode = mode;\n }\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n get pageRefreshDebouncePeriod() {\n return this.#pageRefreshDebouncePeriod\n }\n\n set pageRefreshDebouncePeriod(value) {\n this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n this.#pageRefreshDebouncePeriod = value;\n }\n\n // Preloader delegate\n\n shouldPreloadLink(element) {\n const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n const isStream = element.hasAttribute(\"data-turbo-stream\");\n const frameTarget = element.getAttribute(\"data-turbo-frame\");\n const frame = frameTarget == \"_top\" ?\n null :\n document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n if (isUnsafe || isStream || frame instanceof FrameElement) {\n return false\n } else {\n const location = new URL(element.href);\n\n return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n }\n\n // History delegate\n\n historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n direction\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n }\n\n // Scroll observer delegate\n\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n\n // Form click observer delegate\n\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n\n submittedFormLinkToLocation() {}\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation)\n )\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, event) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event)\n )\n }\n\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n\n // Navigator delegate\n\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location)\n }\n\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n this.view.markVisitDirection(visit.direction);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n\n visitCompleted(visit) {\n this.view.unmarkVisitDirection();\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action)\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return (\n this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n )\n }\n\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n\n // Page observer delegate\n\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n\n // Stream observer delegate\n\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n\n // Page view delegate\n\n viewWillCacheSnapshot() {\n if (!this.navigator.currentVisit?.silent) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender(renderMethod);\n }\n\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n\n // Frame element\n\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n\n // Application events\n\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented\n }\n\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented\n }\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\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true\n })\n }\n\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n }\n\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\")\n }\n\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: { newBody, ...options },\n cancelable: true\n })\n }\n\n notifyApplicationAfterRender(renderMethod) {\n return dispatch(\"turbo:render\", { detail: { renderMethod } })\n }\n\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing }\n })\n }\n\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(\n new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n })\n );\n }\n\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame })\n }\n\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true\n })\n }\n\n // Helpers\n\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form)\n }\n }\n }\n\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n // Check if Drive is enabled on the session or we're within a Frame.\n if (this.drive || withinFrame) {\n // Element is navigatable by default, unless `data-turbo=\"false\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\"\n } else {\n return true\n }\n } else {\n // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\"\n } else {\n return false\n }\n }\n }\n\n // Private\n\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\"\n }\n\n get snapshot() {\n return this.view.snapshot\n }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString()\n }\n }\n};\n\nconst session = new Session(recentRequests);\nconst { cache, navigator: navigator$1 } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\n\n/**\n * Removes all entries from the Turbo Drive page cache.\n * Call this when state has changed on the server that may affect cached pages.\n *\n * @deprecated since version 7.2.0 in favor of `Turbo.cache.clear()`\n */\nfunction clearCache() {\n console.warn(\n \"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 );\n session.clearCache();\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\n\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\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 fetch: fetchWithTurboHeaders,\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});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n #currentFetchRequest = null\n #resolveVisitPromise = () => {}\n #connected = false\n #hasBeenLoaded = false\n #ignoredAttributes = new Set()\n action = null\n\n constructor(element) {\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\n // Frame delegate\n\n connect() {\n if (!this.#connected) {\n this.#connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.#loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\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\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLChanged() {\n if (this.#isIgnoringChangesTo(\"src\")) return\n\n if (this.element.isConnected) {\n this.complete = false;\n }\n\n if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLReloaded() {\n const { src } = this.element;\n this.element.removeAttribute(\"complete\");\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded\n }\n\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n this.#loadSourceURL();\n }\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\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const document = parseHTMLDocument(html);\n const pageSnapshot = PageSnapshot.fromDocument(document);\n\n if (pageSnapshot.isVisitable) {\n await this.#loadFrameResponse(fetchResponse, document);\n } else {\n await this.#handleUnvisitableFrameResponse(fetchResponse);\n }\n }\n } finally {\n this.fetchResponseLoaded = () => Promise.resolve();\n }\n }\n\n // Appearance observer delegate\n\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n this.#loadSourceURL();\n }\n\n // Form link click observer delegate\n\n willSubmitFormLinkToLocation(link) {\n return this.#shouldInterceptNavigation(link)\n }\n\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.#findFrameElement(link);\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldInterceptNavigation(element)\n }\n\n linkClickIntercepted(element, location) {\n this.#navigateFrame(element, location);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n }\n\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n request.headers[\"Turbo-Frame\"] = this.id;\n\n if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n\n requestPreventedHandlingResponse(_request, _response) {\n this.#resolveVisitPromise();\n }\n\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n async requestFailedWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n requestErrored(request, error) {\n console.error(error);\n this.#resolveVisitPromise();\n }\n\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n\n // Form submission delegate\n\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.#findFrameElement(formElement));\n }\n\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n frame.delegate.loadResponse(response);\n\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.#findFrameElement(formElement));\n }\n\n // View delegate\n\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: { newFrame, ...options },\n cancelable: true\n });\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated() {}\n\n // Frame renderer delegate\n\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n\n visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n\n delete this.previousFrameElement;\n }\n\n // Private\n\n async #loadFrameResponse(fetchResponse, document) {\n const newFrameElement = await this.extractForeignFrameElement(document.body);\n\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) await this.view.renderPromise;\n this.changeHistory();\n\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n await this.fetchResponseLoaded(fetchResponse);\n } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n this.#handleFrameMissingFromResponse(fetchResponse);\n }\n }\n\n async #visit(url) {\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n this.#currentFetchRequest?.cancel();\n this.#currentFetchRequest = request;\n\n return new Promise((resolve) => {\n this.#resolveVisitPromise = () => {\n this.#resolveVisitPromise = () => {};\n this.#currentFetchRequest = null;\n resolve();\n };\n request.perform();\n })\n }\n\n #navigateFrame(element, url, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n this.#withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n\n proposeVisitIfNavigatedWithAction(frame, action = null) {\n this.action = action;\n\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const { visitCachedSnapshot } = frame.delegate;\n\n frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = await fetchResponse.responseHTML;\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\n if (this.action) options.action = this.action;\n\n session.visit(frame.src, options);\n }\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\n async #handleUnvisitableFrameResponse(fetchResponse) {\n console.warn(\n `The response (${fetchResponse.statusCode}) from is performing a full page visit due to turbo-visit-control.`\n );\n\n await this.#visitResponse(fetchResponse.response);\n }\n\n #willHandleFrameMissingFromResponse(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n\n const response = fetchResponse.response;\n const visit = async (url, options) => {\n if (url instanceof Response) {\n this.#visitResponse(url);\n } else {\n session.visit(url, options);\n }\n };\n\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: { response, visit },\n cancelable: true\n });\n\n return !event.defaultPrevented\n }\n\n #handleFrameMissingFromResponse(fetchResponse) {\n this.view.missing();\n this.#throwFrameMissingError(fetchResponse);\n }\n\n #throwFrameMissingError(fetchResponse) {\n const message = `The response (${fetchResponse.statusCode}) did not contain the expected and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n throw new TurboFrameMissingError(message)\n }\n\n async #visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const { location, redirected, statusCode } = wrapped;\n\n return session.visit(location, { response: { redirected, statusCode, responseHTML } })\n }\n\n #findFrameElement(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return getFrameElementById(id) ?? this.element\n }\n\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element\n }\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 } catch (error) {\n console.error(error);\n return new FrameElement()\n }\n\n return null\n }\n\n #formActionIsVisitable(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return locationIsVisitable(expandURL(action), this.rootLocation)\n }\n\n #shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter)) {\n return false\n }\n\n if (!this.enabled || id == \"_top\") {\n return false\n }\n\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled\n }\n }\n\n if (!session.elementIsNavigatable(element)) {\n return false\n }\n\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false\n }\n\n return true\n }\n\n // Computed properties\n\n get id() {\n return this.element.id\n }\n\n get enabled() {\n return !this.element.disabled\n }\n\n get sourceURL() {\n if (this.element.src) {\n return this.element.src\n }\n }\n\n set sourceURL(sourceURL) {\n this.#ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL ?? null;\n });\n }\n\n get loadingStyle() {\n return this.element.loading\n }\n\n get isLoading() {\n return this.formSubmission !== undefined || this.#resolveVisitPromise() !== undefined\n }\n\n get complete() {\n return this.element.hasAttribute(\"complete\")\n }\n\n set complete(value) {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n } else {\n this.element.removeAttribute(\"complete\");\n }\n }\n\n get isActive() {\n return this.element.isActive && this.#connected\n }\n\n get rootLocation() {\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = meta?.content ?? \"/\";\n return expandURL(root)\n }\n\n #isIgnoringChangesTo(attributeName) {\n return this.#ignoredAttributes.has(attributeName)\n }\n\n #ignoringChangesToAttribute(attributeName, callback) {\n this.#ignoredAttributes.add(attributeName);\n callback();\n this.#ignoredAttributes.delete(attributeName);\n }\n\n #withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\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}\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\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element\n }\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e.nextSibling));\n },\n\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.append(this.templateContent));\n },\n\n before() {\n this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e));\n },\n\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.prepend(this.templateContent));\n },\n\n remove() {\n this.targetElements.forEach((e) => e.remove());\n },\n\n replace() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphElements(targetElement, this.templateContent);\n } else {\n targetElement.replaceWith(this.templateContent);\n }\n });\n },\n\n update() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphChildren(targetElement, this.templateContent);\n } else {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n }\n });\n },\n\n refresh() {\n session.refresh(this.baseURI, this.requestId);\n }\n};\n\n//