{"version":3,"file":"application.js","mappings":"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","sources":["webpack://app/./node_modules/@rails/actioncable/src/adapters.js","webpack://app/./node_modules/@rails/actioncable/src/logger.js","webpack://app/./node_modules/@rails/actioncable/src/connection_monitor.js","webpack://app/./node_modules/@rails/actioncable/src/internal.js","webpack://app/./node_modules/@rails/actioncable/src/connection.js","webpack://app/./node_modules/@rails/actioncable/src/subscription.js","webpack://app/./node_modules/@rails/actioncable/src/subscription_guarantor.js","webpack://app/./node_modules/@rails/actioncable/src/subscriptions.js","webpack://app/./node_modules/@rails/actioncable/src/consumer.js","webpack://app/./node_modules/@rails/actioncable/src/index.js","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/define property getters","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/make namespace object","webpack://app/./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack://app/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/form_submissions.js","webpack://app/./node_modules/alpinejs/dist/module.esm.js","webpack://app/./app/javascript/application.js"],"sourcesContent":["export default {\n logger: self.console,\n WebSocket: self.WebSocket\n}\n","import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordPing() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n this.recordPing()\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n","export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n","import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return this.monitor.recordPing()\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n return this.subscriptions.notify(identifier, \"connected\")\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n","// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n","import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor","import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n","import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n","import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\nTurbo 7.1.0\nCopyright © 2021 Basecamp, LLC\n */\n(function () {\n if (window.Reflect === undefined || window.customElements === undefined ||\n window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n const wrapperForTheName = {\n 'HTMLElement': function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n }\n };\n window.HTMLElement =\n wrapperForTheName['HTMLElement'];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function(submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap;\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype)\n return;\n let prototype;\n if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n prototype = window.SubmitEvent.prototype;\n }\n else if (\"SubmitEvent\" in window) {\n return;\n }\n else {\n prototype = window.Event.prototype;\n }\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n }\n });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n FrameLoadingStyle[\"eager\"] = \"eager\";\n FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n static get observedAttributes() {\n return [\"disabled\", \"loading\", \"src\"];\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n const { src } = this;\n this.src = null;\n this.src = src;\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n }\n else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n }\n else {\n this.delegate.disabledChanged();\n }\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n }\n else {\n this.removeAttribute(\"src\");\n }\n }\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n }\n else {\n this.removeAttribute(\"loading\");\n }\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n }\n else {\n this.removeAttribute(\"disabled\");\n }\n }\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n }\n else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n get complete() {\n return !this.delegate.isLoading;\n }\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n get isPreview() {\n var _a, _b;\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n}\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\": return FrameLoadingStyle.lazy;\n default: return FrameLoadingStyle.eager;\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n }\n else if (anchorMatch = url.href.match(/#(.*)$/)) {\n return anchorMatch[1];\n }\n}\nfunction getAction(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null\n ? url.href.slice(0, -(anchor.length + 1))\n : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n }\n else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\n }\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, { cancelable, bubbles: true, detail });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n }\n else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextAnimationFrame() {\n return new Promise(resolve => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise(resolve => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map(line => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.apply(null, { length: 36 }).map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n }\n else if (i == 14) {\n return \"4\";\n }\n else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n }\n else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n }).join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map(element => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\")\n return value;\n }\n return null;\n}\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\": return FetchMethod.get;\n case \"post\": return FetchMethod.post;\n case \"put\": return FetchMethod.put;\n case \"patch\": return FetchMethod.patch;\n case \"delete\": return FetchMethod.delete;\n }\n}\nclass FetchRequest {\n constructor(delegate, method, location, body = new URLSearchParams, target = null) {\n this.abortController = new AbortController;\n this.resolveRequestPromise = (value) => { };\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n var _a, _b;\n const { fetchOptions } = this;\n (_b = (_a = this.delegate).prepareHeadersForRequest) === null || _b === void 0 ? void 0 : _b.call(_a, this.headers, this);\n await this.allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n this.delegate.requestErrored(this, error);\n throw error;\n }\n }\n finally {\n this.delegate.requestFinished(this);\n }\n }\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", { cancelable: true, detail: { fetchResponse }, target: this.target });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n }\n else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n }\n else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse;\n }\n get fetchOptions() {\n var _a;\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isIdempotent ? null : this.body,\n signal: this.abortSignal,\n referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href\n };\n }\n get defaultHeaders() {\n return {\n \"Accept\": \"text/html, application/xhtml+xml\"\n };\n }\n get isIdempotent() {\n return this.method == FetchMethod.get;\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n async allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise(resolve => this.resolveRequestPromise = resolve);\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise\n },\n target: this.target\n });\n if (event.defaultPrevented)\n await requestInterception;\n }\n}\n\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = entries => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\n\nclass StreamMessage {\n constructor(html) {\n this.templateElement = document.createElement(\"template\");\n this.templateElement.innerHTML = html;\n }\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(message);\n }\n else {\n return message;\n }\n }\n get fragment() {\n const fragment = document.createDocumentFragment();\n for (const element of this.foreignElements) {\n fragment.appendChild(document.importNode(element, true));\n }\n return fragment;\n }\n get foreignElements() {\n return this.templateChildren.reduce((streamElements, child) => {\n if (child.tagName.toLowerCase() == \"turbo-stream\") {\n return [...streamElements, child];\n }\n else {\n return streamElements;\n }\n }, []);\n }\n get templateChildren() {\n return Array.from(this.templateElement.content.children);\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart: return FormEnctype.multipart;\n case FormEnctype.plain: return FormEnctype.plain;\n default: return FormEnctype.urlEncoded;\n }\n}\nclass FormSubmission {\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n this.state = FormSubmissionState.initialized;\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.formData = buildFormData(formElement, submitter);\n this.location = expandURL(this.action);\n if (this.method == FetchMethod.get) {\n mergeFormDataEntries(this.location, [...this.body.entries()]);\n }\n this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n this.mustRedirect = mustRedirect;\n }\n static confirmMethod(message, element) {\n return confirm(message);\n }\n get method() {\n var _a;\n const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n get action() {\n var _a;\n const formElementAction = typeof this.formElement.action === 'string' ? this.formElement.action : null;\n return ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formaction\")) || this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n get body() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n }\n else {\n return this.formData;\n }\n }\n get enctype() {\n var _a;\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n get isIdempotent() {\n return this.fetchRequest.isIdempotent;\n }\n get stringFormData() {\n return [...this.formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n get confirmationMessage() {\n return this.formElement.getAttribute(\"data-turbo-confirm\");\n }\n get needsConfirmation() {\n return this.confirmationMessage !== null;\n }\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n if (this.needsConfirmation) {\n const answer = FormSubmission.confirmMethod(this.confirmationMessage, this.formElement);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n prepareHeadersForRequest(headers, request) {\n if (!request.isIdempotent) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n headers[\"X-CSRF-Token\"] = token;\n }\n headers[\"Accept\"] = [StreamMessage.contentType, headers[\"Accept\"]].join(\", \");\n }\n }\n requestStarted(request) {\n var _a;\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n dispatch(\"turbo:submit-start\", { target: this.formElement, detail: { formSubmission: this } });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n }\n else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(request) {\n var _a;\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n dispatch(\"turbo:submit-end\", { target: this.formElement, detail: Object.assign({ formSubmission: this }, this.result) });\n this.delegate.formSubmissionFinished(this);\n }\n requestMustRedirect(request) {\n return !request.isIdempotent && this.mustRedirect;\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name && value != null && formData.get(name) != value) {\n formData.append(name, value);\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction getMetaContent(name) {\n const element = document.querySelector(`meta[name=\"${name}\"]`);\n return element && element.content;\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n const searchParams = new URLSearchParams;\n for (const [name, value] of entries) {\n if (value instanceof File)\n continue;\n searchParams.append(name, value);\n }\n url.search = searchParams.toString();\n return url;\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n return this.element.querySelector(\"[autofocus]\");\n }\n get permanentElements() {\n return [...this.element.querySelectorAll(\"[id][data-turbo-permanent]\")];\n }\n getPermanentElementById(id) {\n return this.element.querySelector(`#${id}[data-turbo-permanent]`);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\n\nclass FormInterceptor {\n constructor(delegate, element) {\n this.submitBubbled = ((event) => {\n const form = event.target;\n if (!event.defaultPrevented && form instanceof HTMLFormElement && form.closest(\"turbo-frame, html\") == this.element) {\n const submitter = event.submitter || undefined;\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.method;\n if (method != \"dialog\" && this.delegate.shouldInterceptFormSubmission(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmissionIntercepted(form, submitter);\n }\n }\n });\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"submit\", this.submitBubbled);\n }\n stop() {\n this.element.removeEventListener(\"submit\", this.submitBubbled);\n }\n}\n\nclass View {\n constructor(delegate, element) {\n this.resolveRenderPromise = (value) => { };\n this.resolveInterceptionPromise = (value) => { };\n this.delegate = delegate;\n this.element = element;\n }\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n }\n else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n }\n else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n get scrollRoot() {\n return window;\n }\n async render(renderer) {\n const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise(resolve => this.resolveRenderPromise = resolve);\n this.renderer = renderer;\n this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise(resolve => this.resolveInterceptionPromise = resolve);\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, this.resolveInterceptionPromise);\n if (!immediateRender)\n await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n this.finishRenderingSnapshot(renderer);\n }\n finally {\n delete this.renderer;\n this.resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n }\n else {\n this.invalidate();\n }\n }\n invalidate() {\n this.delegate.viewInvalidated();\n }\n prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n }\n else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n invalidate() {\n this.element.innerHTML = \"\";\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = (event) => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n }\n else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = ((event) => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url);\n }\n }\n delete this.clickEvent;\n });\n this.willVisit = () => {\n delete this.clickEvent;\n };\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element\n ? target\n : target instanceof Node\n ? target.parentElement\n : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\n\nclass Bardo {\n constructor(permanentElementMap) {\n this.permanentElementMap = permanentElementMap;\n }\n static preservingPermanentElements(permanentElementMap, callback) {\n const bardo = new this(permanentElementMap);\n bardo.enter();\n callback();\n bardo.leave();\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const [, newPermanentElement] = this.permanentElementMap[id];\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find(element => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\n\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.promise = new Promise((resolve, reject) => this.resolvingFunctions = { resolve, reject });\n }\n get shouldRender() {\n return true;\n }\n prepareToRender() {\n return;\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n createScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n }\n else {\n const createdScriptElement = document.createElement(\"script\");\n if (this.cspNonce) {\n createdScriptElement.nonce = this.cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n }\n preservingPermanentElements(callback) {\n Bardo.preservingPermanentElements(this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n get cspNonce() {\n var _a;\n return (_a = document.head.querySelector('meta[name=\"csp-nonce\"]')) === null || _a === void 0 ? void 0 : _a.getAttribute(\"content\");\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of [...sourceElement.attributes]) {\n destinationElement.setAttribute(name, value);\n }\n}\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n var _a;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(this.currentElement);\n destinationRange.deleteContents();\n const frameElement = this.newElement;\n const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n this.currentElement.appendChild(sourceRange.extractContents());\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 if (element) {\n element.scrollIntoView({ block });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = this.createScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\n\nclass ProgressBar {\n constructor() {\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n this.trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n static get defaultCSS() {\n return unindent `\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 9999;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + (this.value * 90)}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details = outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter(outerHTML => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter(outerHTML => !(outerHTML in snapshot.detailsByOuterHTML))\n .map(outerHTML => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element);\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements];\n }\n else if (elements.length > 1) {\n return [...result, ...elements.slice(1)];\n }\n else {\n return result;\n }\n }, []);\n }\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element\n ? element.getAttribute(\"content\")\n : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { elements: [element] } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n }\n else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.tagName.toLowerCase();\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\n\nclass PageSnapshot extends Snapshot {\n constructor(element, headSnapshot) {\n super(element);\n this.headSnapshot = headSnapshot;\n }\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html));\n }\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n static fromDocument({ head, body }) {\n return new this(body, new HeadSnapshot(head));\n }\n clone() {\n return new PageSnapshot(this.element.cloneNode(true), this.headSnapshot);\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _a;\n const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => { },\n willRender: true,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const { action, historyChanged, referrer, snapshotHTML, response, visitCachedSnapshot, willRender } = Object.assign(Object.assign({}, defaultOptions), options);\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.scrolled = !willRender;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n this.followRedirect();\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n changeHistory() {\n var _a;\n if (!this.historyChanged) {\n const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n const method = this.getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n }\n else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n }\n else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n this.cacheSnapshot();\n if (this.view.renderPromise)\n await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender);\n this.adapter.visitRendered(this);\n this.complete();\n }\n else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML));\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n }\n else {\n if (this.view.renderPromise)\n await this.view.renderPromise;\n await this.view.renderPage(snapshot, isPreview, this.willRender);\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _a;\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: 'replace',\n response: this.response\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.adapter.visitRendered(this);\n });\n }\n }\n requestStarted() {\n this.startRequest();\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({ statusCode: SystemStatusCode.contentTypeMismatch, redirected });\n }\n else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({ statusCode: SystemStatusCode.contentTypeMismatch, redirected });\n }\n else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n requestErrored(request, error) {\n this.recordResponse({ statusCode: SystemStatusCode.networkFailure, redirected: false });\n }\n requestFinished() {\n this.finishRequest();\n }\n performScroll() {\n if (!this.scrolled) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n }\n else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\": return history.replaceState;\n case \"advance\":\n case \"restore\": return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n }\n else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n }\n else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot().then(snapshot => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise(resolve => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n this.performScroll();\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar;\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, uuid(), options);\n }\n visitStarted(visit) {\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.changeHistory();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n }\n else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload();\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitCompleted(visit) {\n }\n pageInvalidated() {\n this.reload();\n }\n visitFailed(visit) {\n }\n visitRendered(visit) {\n }\n formSubmissionStarted(formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload() {\n window.location.reload();\n }\n get navigator() {\n return this.session.navigator;\n }\n}\n\nclass CacheObserver {\n constructor() {\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n removeStaleElements() {\n const staleElements = [...document.querySelectorAll('[data-turbo-cache=\"false\"]')];\n for (const element of staleElements) {\n element.remove();\n }\n }\n}\n\nclass FormSubmitObserver {\n constructor(delegate) {\n this.started = false;\n this.submitCaptured = () => {\n removeEventListener(\"submit\", this.submitBubbled, false);\n addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = ((event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n if (method != \"dialog\" && this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n }\n });\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\n\nclass FrameRedirector {\n constructor(element) {\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formInterceptor = new FormInterceptor(this, element);\n }\n start() {\n this.linkInterceptor.start();\n this.formInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formInterceptor.stop();\n }\n shouldInterceptLinkClick(element, url) {\n return this.shouldRedirect(element);\n }\n linkClickIntercepted(element, url) {\n const frame = this.findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url);\n }\n }\n shouldInterceptFormSubmission(element, submitter) {\n return this.shouldSubmit(element, submitter);\n }\n formSubmissionIntercepted(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n if (frame) {\n frame.removeAttribute(\"reloadable\");\n frame.delegate.formSubmissionIntercepted(element, submitter);\n }\n }\n shouldSubmit(form, submitter) {\n var _a;\n const action = getAction(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n shouldRedirect(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n }\n findFrameElement(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n}\n\nclass History {\n constructor(delegate) {\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async (event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location, restorationIdentifier = uuid()) {\n const state = { turbo: { restorationIdentifier } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n assumeControlOfScrollRestoration() {\n var _a;\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\n\nclass LinkClickObserver {\n constructor(delegate) {\n this.started = false;\n this.clickCaptured = () => {\n removeEventListener(\"click\", this.clickBubbled, false);\n addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = (event) => {\n if (this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !((event.target && event.target.isContentEditable)\n || event.defaultPrevented\n || event.which > 1\n || event.altKey\n || event.ctrlKey\n || event.metaKey\n || event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n if (target instanceof Element) {\n return target.closest(\"a[href]:not([target^=_]):not([download])\");\n }\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n else {\n window.location.href = location.toString();\n }\n }\n }\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === 'function') {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n if (formSubmission.method != FetchMethod.get) {\n this.view.clearSnapshotCache();\n }\n const { statusCode, redirected } = fetchResponse;\n const action = this.getActionForFormSubmission(formSubmission);\n const visitOptions = { action, response: { statusCode, responseHTML, redirected } };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot);\n }\n else {\n await this.view.renderPage(snapshot);\n }\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === 'function') {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === 'restore' && typeof anchor === 'undefined';\n return action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor));\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n getActionForFormSubmission(formSubmission) {\n const { formElement, submitter } = formSubmission;\n const action = getAttribute(\"data-turbo-action\", submitter, formElement);\n return isAction(action) ? action : \"advance\";\n }\n}\n\nvar PageStage;\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n }\n else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\n\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set;\n this.started = false;\n this.inspectFetchResponse = ((event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n });\n this.receiveMessageEvent = (event) => {\n if (this.started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(new StreamMessage(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _a;\n const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _a;\n const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const { documentElement, head, body } = document;\n documentElement.replaceChild(this.newHead, head);\n documentElement.replaceChild(this.newElement, body);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = this.createScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return [...document.documentElement.querySelectorAll(\"script\")];\n }\n}\n\nclass PageRenderer extends Renderer {\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n prepareToRender() {\n this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n mergeHead() {\n this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n this.removeCurrentHeadProvisionalElements();\n this.copyNewHeadProvisionalElements();\n }\n replaceBody() {\n this.preservingPermanentElements(() => {\n this.activateNewBody();\n this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n copyNewHeadStylesheetElements() {\n for (const element of this.newHeadStylesheetElements) {\n document.head.appendChild(element);\n }\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(this.createScriptElement(element));\n }\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = this.createScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n assignNewBody() {\n if (document.body && this.newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(this.newElement);\n }\n else {\n document.documentElement.appendChild(this.newElement);\n }\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\n\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1)\n this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n }\n renderPage(snapshot, isPreview = false, willRender = true) {\n const renderer = new PageRenderer(this.snapshot, snapshot, isPreview, willRender);\n return this.render(renderer);\n }\n renderError(snapshot) {\n const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot() {\n if (this.shouldCacheSnapshot) {\n this.delegate.viewWillCacheSnapshot();\n const { snapshot, lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n get shouldCacheSnapshot() {\n return this.snapshot.isCacheable;\n }\n}\n\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this);\n this.formSubmitObserver = new FormSubmitObserver(this);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.frameRedirector = new FrameRedirector(document.documentElement);\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.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.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location, options = {}) {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n document.documentElement.appendChild(StreamMessage.wrap(message).fragment);\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, { action: \"restore\", historyChanged: true });\n }\n else {\n this.adapter.pageInvalidated();\n }\n }\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n willFollowLinkToLocation(link, location) {\n return this.elementDriveEnabled(link)\n && locationIsVisitable(location, this.snapshot.rootLocation)\n && this.applicationAllowsFollowingLinkToLocation(link, location);\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n this.convertLinkWithMethodClickToFormSubmission(link) || this.visit(location.href, { action });\n }\n convertLinkWithMethodClickToFormSubmission(link) {\n const linkMethod = link.getAttribute(\"data-turbo-method\");\n if (linkMethod) {\n const form = document.createElement(\"form\");\n form.method = linkMethod;\n form.action = link.getAttribute(\"href\") || \"undefined\";\n form.hidden = true;\n if (link.hasAttribute(\"data-turbo-confirm\")) {\n form.setAttribute(\"data-turbo-confirm\", link.getAttribute(\"data-turbo-confirm\"));\n }\n const frame = this.getTargetFrameForLink(link);\n if (frame) {\n form.setAttribute(\"data-turbo-frame\", frame);\n form.addEventListener(\"turbo:submit-start\", () => form.remove());\n }\n else {\n form.addEventListener(\"submit\", () => form.remove());\n }\n document.body.appendChild(form);\n return dispatch(\"submit\", { cancelable: true, target: form });\n }\n else {\n return false;\n }\n }\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n visitStarted(visit) {\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n willSubmitForm(form, submitter) {\n const action = getAction(form, submitter);\n return this.elementDriveEnabled(form)\n && (!submitter || this.elementDriveEnabled(submitter))\n && locationIsVisitable(expandURL(action), this.snapshot.rootLocation);\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n viewWillCacheSnapshot() {\n var _a;\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender({ element }, resume) {\n const event = this.notifyApplicationBeforeRender(element, resume);\n return !event.defaultPrevented;\n }\n viewRenderedSnapshot(snapshot, isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n viewInvalidated() {\n this.adapter.pageInvalidated();\n }\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n applicationAllowsFollowingLinkToLocation(link, location) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location) {\n return dispatch(\"turbo:click\", { target: link, detail: { url: location.href }, cancelable: true });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", { detail: { url: location.href }, cancelable: true });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n markAsBusy(document.documentElement);\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, resume) {\n return dispatch(\"turbo:before-render\", { detail: { newBody, resume }, cancelable: true });\n }\n notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n notifyApplicationAfterPageLoad(timing = {}) {\n clearBusyState(document.documentElement);\n return dispatch(\"turbo:load\", { detail: { url: this.location.href, timing } });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", { oldURL: oldURL.toString(), newURL: newURL.toString() }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", { detail: { fetchResponse }, target: frame, cancelable: true });\n }\n elementDriveEnabled(element) {\n const container = element === null || element === void 0 ? void 0 : element.closest(\"[data-turbo]\");\n if (this.drive) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n }\n else {\n return true;\n }\n }\n else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n }\n else {\n return false;\n }\n }\n }\n getActionForLink(link) {\n const action = link.getAttribute(\"data-turbo-action\");\n return isAction(action) ? action : \"advance\";\n }\n getTargetFrameForLink(link) {\n const frame = link.getAttribute(\"data-turbo-frame\");\n if (frame) {\n return frame;\n }\n else {\n const container = link.closest(\"turbo-frame\");\n if (container) {\n return container.id;\n }\n }\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n }\n }\n};\n\nconst session = new Session;\nconst { navigator: navigator$1 } = session;\nfunction start() {\n session.start();\n}\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\nfunction clearCache() {\n session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\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});\n\nclass FrameController {\n constructor(element) {\n this.fetchResponseLoaded = (fetchResponse) => { };\n this.currentFetchRequest = null;\n this.resolveVisitPromise = () => { };\n this.connected = false;\n this.hasBeenLoaded = false;\n this.settingSourceURL = false;\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.formInterceptor = new FormInterceptor(this, this.element);\n }\n connect() {\n if (!this.connected) {\n this.connected = true;\n this.reloadable = false;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n this.linkInterceptor.start();\n this.formInterceptor.start();\n this.sourceURLChanged();\n }\n }\n disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.linkInterceptor.stop();\n this.formInterceptor.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n sourceURLChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.appearanceObserver.stop();\n this.loadSourceURL();\n }\n }\n async loadSourceURL() {\n if (!this.settingSourceURL && this.enabled && this.isActive && (this.reloadable || this.sourceURL != this.currentURL)) {\n const previousURL = this.currentURL;\n this.currentURL = this.sourceURL;\n if (this.sourceURL) {\n try {\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.hasBeenLoaded = true;\n }\n catch (error) {\n this.currentURL = previousURL;\n throw error;\n }\n }\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const { body } = parseHTMLDocument(html);\n const snapshot = new Snapshot(await this.extractForeignFrameElement(body));\n const renderer = new FrameRenderer(this.view.snapshot, snapshot, false, false);\n if (this.view.renderPromise)\n await this.view.renderPromise;\n await this.view.render(renderer);\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n }\n }\n catch (error) {\n console.error(error);\n this.view.invalidate();\n }\n finally {\n this.fetchResponseLoaded = () => { };\n }\n }\n elementAppearedInViewport(element) {\n this.loadSourceURL();\n }\n shouldInterceptLinkClick(element, url) {\n if (element.hasAttribute(\"data-turbo-method\")) {\n return false;\n }\n else {\n return this.shouldInterceptNavigation(element);\n }\n }\n linkClickIntercepted(element, url) {\n this.reloadable = true;\n this.navigateFrame(element, url);\n }\n shouldInterceptFormSubmission(element, submitter) {\n return this.shouldInterceptNavigation(element, submitter);\n }\n formSubmissionIntercepted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.reloadable = false;\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareHeadersForRequest(fetchRequest.headers, fetchRequest);\n this.formSubmission.start();\n }\n prepareHeadersForRequest(headers, request) {\n headers[\"Turbo-Frame\"] = this.id;\n }\n requestStarted(request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(request, response) {\n this.resolveVisitPromise();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n requestFailedWithResponse(request, response) {\n console.error(response);\n this.resolveVisitPromise();\n }\n requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n requestFinished(request) {\n clearBusyState(this.element);\n }\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n this.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n allowsImmediateRender(snapshot, resume) {\n return true;\n }\n viewRenderedSnapshot(snapshot, isPreview) {\n }\n viewInvalidated() {\n }\n async visit(url) {\n var _a;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams, this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return new Promise(resolve => {\n this.resolveVisitPromise = () => {\n this.resolveVisitPromise = () => { };\n this.currentFetchRequest = null;\n resolve();\n };\n request.perform();\n });\n }\n navigateFrame(element, url, submitter) {\n const frame = this.findFrameElement(element, submitter);\n this.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n frame.setAttribute(\"reloadable\", \"\");\n frame.src = url;\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n const action = getAttribute(\"data-turbo-action\", submitter, element, frame);\n if (isAction(action)) {\n const { visitCachedSnapshot } = new SnapshotSubstitution(frame);\n frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n const response = { statusCode, redirected, responseHTML };\n session.visit(frame.src, { action, response, visitCachedSnapshot, willRender: false });\n }\n };\n }\n }\n findFrameElement(element, submitter) {\n var _a;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n if (element = activateElement(container.querySelector(`turbo-frame#${id}`), this.currentURL)) {\n return element;\n }\n if (element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.currentURL)) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n console.error(`Response has no matching element`);\n }\n catch (error) {\n console.error(error);\n }\n return new FrameElement();\n }\n formActionIsVisitable(form, submitter) {\n const action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementDriveEnabled(element)) {\n return false;\n }\n if (submitter && !session.elementDriveEnabled(submitter)) {\n return false;\n }\n return true;\n }\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n get reloadable() {\n const frame = this.findFrameElement(this.element);\n return frame.hasAttribute(\"reloadable\");\n }\n set reloadable(value) {\n const frame = this.findFrameElement(this.element);\n if (value) {\n frame.setAttribute(\"reloadable\", \"\");\n }\n else {\n frame.removeAttribute(\"reloadable\");\n }\n }\n set sourceURL(sourceURL) {\n this.settingSourceURL = true;\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n this.currentURL = this.element.src;\n this.settingSourceURL = false;\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n get isActive() {\n return this.element.isActive && this.connected;\n }\n get rootLocation() {\n var _a;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n}\nclass SnapshotSubstitution {\n constructor(element) {\n this.visitCachedSnapshot = ({ element }) => {\n var _a;\n const { id, clone } = this;\n (_a = element.querySelector(\"#\" + id)) === null || _a === void 0 ? void 0 : _a.replaceWith(clone);\n };\n this.clone = element.cloneNode(true);\n this.id = element.id;\n }\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach(e => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach(e => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach(e => e.remove());\n },\n replace() {\n this.targetElements.forEach(e => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach(e => {\n e.innerHTML = \"\";\n e.append(this.templateContent);\n });\n }\n};\n\nclass StreamElement extends HTMLElement {\n async connectedCallback() {\n try {\n await this.render();\n }\n catch (error) {\n console.error(error);\n }\n finally {\n this.disconnect();\n }\n }\n async render() {\n var _a;\n return (_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n if (this.dispatchEvent(this.beforeRenderEvent)) {\n await nextAnimationFrame();\n this.performAction();\n }\n })());\n }\n disconnect() {\n try {\n this.remove();\n }\n catch (_a) { }\n }\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach(c => c.remove());\n }\n get duplicateChildren() {\n var _a;\n const existingChildren = this.targetElements.flatMap(e => [...e.children]).filter(c => !!c.id);\n const newChildrenIds = [...(_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children].filter(c => !!c.id).map(c => c.id);\n return existingChildren.filter(c => newChildrenIds.includes(c.id));\n }\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction;\n }\n this.raise(\"unknown action\");\n }\n this.raise(\"action attribute is missing\");\n }\n get targetElements() {\n if (this.target) {\n return this.targetElementsById;\n }\n else if (this.targets) {\n return this.targetElementsByQuery;\n }\n else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n get templateContent() {\n return this.templateElement.content.cloneNode(true);\n }\n get templateElement() {\n if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n this.raise(\"first child element must be a