{"version":3,"file":"application.js","mappings":"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","sources":["webpack://rolemodel_website/webpack/runtime/load script","webpack://rolemodel_website/./node_modules/@honeybadger-io/js/dist/browser/honeybadger.js","webpack://rolemodel_website/webpack/bootstrap","webpack://rolemodel_website/webpack/runtime/define property getters","webpack://rolemodel_website/webpack/runtime/ensure chunk","webpack://rolemodel_website/webpack/runtime/get javascript chunk filename","webpack://rolemodel_website/webpack/runtime/get mini-css chunk filename","webpack://rolemodel_website/webpack/runtime/global","webpack://rolemodel_website/webpack/runtime/hasOwnProperty shorthand","webpack://rolemodel_website/webpack/runtime/publicPath","webpack://rolemodel_website/webpack/runtime/jsonp chunk loading","webpack://rolemodel_website/./node_modules/@slightlyoff/lite-vimeo/lite-vimeo.js","webpack://rolemodel_website/./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack://rolemodel_website/./app/javascript/controllers/accordion_controller.js","webpack://rolemodel_website/./app/javascript/controllers/tabs_controller.js","webpack://rolemodel_website/./node_modules/web-vitals/dist/web-vitals.js","webpack://rolemodel_website/./node_modules/@lit/reactive-element/css-tag.js","webpack://rolemodel_website/./node_modules/@lit/reactive-element/reactive-element.js","webpack://rolemodel_website/./node_modules/lit-html/lit-html.js","webpack://rolemodel_website/./node_modules/lit-element/lit-element.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.TUVJKY7S.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.WIJ5PGEU.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.LBC6JESY.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.B4BZKR24.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.5F6CPPXO.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.CEMITGOC.js","webpack://rolemodel_website/./node_modules/@shoelace-style/localize/dist/index.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.2A3352EO.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.I33L3NO6.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.3Y6SB6QS.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.P7ZG6EMR.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.QSGNZ7NT.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.LMJPQPQT.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.CJDR7567.js","webpack://rolemodel_website/./node_modules/@lit/reactive-element/decorators/property.js","webpack://rolemodel_website/./node_modules/@lit/reactive-element/decorators/query.js","webpack://rolemodel_website/./node_modules/@lit/reactive-element/decorators/base.js","webpack://rolemodel_website/./node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.7UUIUZXI.js","webpack://rolemodel_website/./node_modules/lit-html/directive-helpers.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.M34G3YZA.js","webpack://rolemodel_website/./node_modules/@lit/reactive-element/decorators/state.js","webpack://rolemodel_website/./node_modules/lit-html/directive.js","webpack://rolemodel_website/./node_modules/lit-html/directives/class-map.js","webpack://rolemodel_website/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.RXMELJZK.js","webpack://rolemodel_website/./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack://rolemodel_website/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack://rolemodel_website/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack://rolemodel_website/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack://rolemodel_website/./app/javascript/application.js","webpack://rolemodel_website/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack://rolemodel_website/./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"rolemodel_website:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Honeybadger = factory());\n}(this, (function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var UNKNOWN_FUNCTION = '';\n /**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\n function parse(stackString) {\n var lines = stackString.split('\\n');\n return lines.reduce(function (stack, line) {\n var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n if (parseResult) {\n stack.push(parseResult);\n }\n\n return stack;\n }, []);\n }\n var chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n var chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n function parseChrome(line) {\n var parts = chromeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n var submatch = chromeEvalRe.exec(parts[2]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n\n parts[3] = submatch[2]; // line\n\n parts[4] = submatch[3]; // column\n }\n\n return {\n file: !isNative ? parts[2] : null,\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: isNative ? [parts[2]] : [],\n lineNumber: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n }\n\n var winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n function parseWinjs(line) {\n var parts = winjsRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n }\n\n var geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n var geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\n function parseGecko(line) {\n var parts = geckoRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = geckoEvalRe.exec(parts[3]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: parts[2] ? parts[2].split(',') : [],\n lineNumber: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n }\n\n var javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\n function parseJSC(line) {\n var parts = javaScriptCoreRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[4],\n column: parts[5] ? +parts[5] : null\n };\n }\n\n var nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n function parseNode(line) {\n var parts = nodeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n }\n\n function merge(obj1, obj2) {\n var result = {};\n for (var k in obj1) {\n result[k] = obj1[k];\n }\n for (var k in obj2) {\n result[k] = obj2[k];\n }\n return result;\n }\n function mergeNotice(notice1, notice2) {\n var result = merge(notice1, notice2);\n if (notice1.context && notice2.context) {\n result.context = merge(notice1.context, notice2.context);\n }\n return result;\n }\n function objectIsEmpty(obj) {\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)) {\n return false;\n }\n }\n return true;\n }\n function objectIsExtensible(obj) {\n if (typeof Object.isExtensible !== 'function') {\n return true;\n }\n return Object.isExtensible(obj);\n }\n function makeBacktrace(stack, shift) {\n if (shift === void 0) { shift = 0; }\n try {\n var backtrace = parse(stack).map(function (line) {\n return {\n file: line.file,\n method: line.methodName,\n number: line.lineNumber,\n column: line.column\n };\n });\n backtrace.splice(0, shift);\n return backtrace;\n }\n catch (_err) {\n // TODO: log error\n return [];\n }\n }\n function runBeforeNotifyHandlers(notice, handlers) {\n for (var i = 0, len = handlers.length; i < len; i++) {\n var handler = handlers[i];\n if (handler(notice) === false) {\n return false;\n }\n }\n return true;\n }\n function runAfterNotifyHandlers(notice, handlers, error) {\n if (error === void 0) { error = undefined; }\n for (var i = 0, len = handlers.length; i < len; i++) {\n handlers[i](error, notice);\n }\n return true;\n }\n // Returns a new object with properties from other object.\n function shallowClone(obj) {\n if (typeof (obj) !== 'object' || obj === null) {\n return {};\n }\n var result = {};\n for (var k in obj) {\n result[k] = obj[k];\n }\n return result;\n }\n function sanitize(obj, maxDepth) {\n if (maxDepth === void 0) { maxDepth = 8; }\n var seenObjects = [];\n function seen(obj) {\n if (!obj || typeof (obj) !== 'object') {\n return false;\n }\n for (var i = 0; i < seenObjects.length; i++) {\n var value = seenObjects[i];\n if (value === obj) {\n return true;\n }\n }\n seenObjects.push(obj);\n return false;\n }\n function canSerialize(obj) {\n var typeOfObj = typeof obj;\n // Functions are TMI\n if (/function/.test(typeOfObj)) {\n // Let special toJSON method pass as it's used by JSON.stringify (#722)\n return obj.name === 'toJSON';\n }\n // Symbols can't convert to strings.\n if (/symbol/.test(typeOfObj)) {\n return false;\n }\n if (obj === null) {\n return false;\n }\n // No prototype, likely created with `Object.create(null)`.\n if (typeof obj === 'object' && typeof obj.hasOwnProperty === 'undefined') {\n return false;\n }\n return true;\n }\n function serialize(obj, depth) {\n if (depth === void 0) { depth = 0; }\n if (depth >= maxDepth) {\n return '[DEPTH]';\n }\n // Inspect invalid types\n if (!canSerialize(obj)) {\n return Object.prototype.toString.call(obj);\n }\n // Halt circular references\n if (seen(obj)) {\n return '[RECURSION]';\n }\n // Serialize inside arrays\n if (Array.isArray(obj)) {\n return obj.map(function (o) { return safeSerialize(o, depth + 1); });\n }\n // Serialize inside objects\n if (typeof (obj) === 'object') {\n var ret = {};\n for (var k in obj) {\n var v = obj[k];\n if (Object.prototype.hasOwnProperty.call(obj, k) && (k != null) && (v != null)) {\n ret[k] = safeSerialize(v, depth + 1);\n }\n }\n return ret;\n }\n // Return everything else untouched\n return obj;\n }\n function safeSerialize(obj, depth) {\n if (depth === void 0) { depth = 0; }\n try {\n return serialize(obj, depth);\n }\n catch (e) {\n return \"[ERROR] \" + e;\n }\n }\n return safeSerialize(obj);\n }\n function logger(client) {\n var log = function (method) {\n return function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (method === 'debug' && !client.config.debug) {\n return;\n }\n args.unshift('[Honeybadger]');\n (_a = client.config.logger)[method].apply(_a, args);\n };\n };\n return {\n log: log('log'),\n info: log('info'),\n debug: log('debug'),\n warn: log('warn'),\n error: log('error')\n };\n }\n /**\n * Converts any object into a notice object (which at minimum has the same\n * properties as Error, but supports additional Honeybadger properties.)\n */\n function makeNotice(thing) {\n var notice;\n if (!thing) {\n notice = {};\n }\n else if (Object.prototype.toString.call(thing) === '[object Error]') {\n var e = thing;\n notice = merge(thing, { name: e.name, message: e.message, stack: e.stack });\n }\n else if (typeof thing === 'object') {\n notice = shallowClone(thing);\n }\n else {\n var m = String(thing);\n notice = { message: m };\n }\n return notice;\n }\n /**\n * Instrument an existing function inside an object (usually global).\n * @param {!Object} object\n * @param {!String} name\n * @param {!Function} replacement\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function instrument(object, name, replacement) {\n if (!object || !name || !replacement || !(name in object)) {\n return;\n }\n var original = object[name];\n while (original && original.__hb_original) {\n original = original.__hb_original;\n }\n try {\n object[name] = replacement(original);\n object[name].__hb_original = original;\n }\n catch (_e) {\n // Ignores errors like this one:\n // Error: TypeError: Cannot set property onunhandledrejection of [object Object] which has only a getter\n // User-Agent: Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-G960F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.1 Chrome/79.0.3945.136 Mobile Safari/537.36\n }\n }\n function endpoint(config, path) {\n var endpoint = config.endpoint.trim().replace(/\\/$/, '');\n path = path.trim().replace(/(^\\/|\\/$)/g, '');\n return endpoint + \"/\" + path;\n }\n function generateStackTrace() {\n try {\n throw new Error('');\n }\n catch (e) {\n if (e.stack) {\n return e.stack;\n }\n }\n var maxStackSize = 10;\n var stack = [];\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize) {\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(RegExp.$1 || '');\n }\n else {\n stack.push('');\n }\n try {\n curr = curr.caller;\n }\n catch (e) {\n break;\n }\n }\n return stack.join('\\n');\n }\n function filter(obj, filters) {\n if (!is('Object', obj)) {\n return;\n }\n if (!is('Array', filters)) {\n filters = [];\n }\n var seen = [];\n function filter(obj) {\n var k, newObj;\n if (is('Object', obj) || is('Array', obj)) {\n if (seen.indexOf(obj) !== -1) {\n return '[CIRCULAR DATA STRUCTURE]';\n }\n seen.push(obj);\n }\n if (is('Object', obj)) {\n newObj = {};\n for (k in obj) {\n if (filterMatch(k, filters)) {\n newObj[k] = '[FILTERED]';\n }\n else {\n newObj[k] = filter(obj[k]);\n }\n }\n return newObj;\n }\n if (is('Array', obj)) {\n return obj.map(function (v) { return filter(v); });\n }\n if (is('Function', obj)) {\n return '[FUNC]';\n }\n return obj;\n }\n return filter(obj);\n }\n function filterMatch(key, filters) {\n for (var i = 0; i < filters.length; i++) {\n if (key.toLowerCase().indexOf(filters[i].toLowerCase()) !== -1) {\n return true;\n }\n }\n return false;\n }\n function is(type, obj) {\n var klass = Object.prototype.toString.call(obj).slice(8, -1);\n return obj !== undefined && obj !== null && klass === type;\n }\n function filterUrl(url, filters) {\n if (!filters) {\n return url;\n }\n if (typeof url !== 'string') {\n return url;\n }\n var query = url.split(/\\?/, 2)[1];\n if (!query) {\n return url;\n }\n var result = url;\n query.split(/[&]\\s?/).forEach(function (pair) {\n var _a = pair.split('=', 2), key = _a[0], value = _a[1];\n if (filterMatch(key, filters)) {\n result = result.replace(key + \"=\" + value, key + \"=[FILTERED]\");\n }\n });\n return result;\n }\n function formatCGIData(vars, prefix) {\n if (prefix === void 0) { prefix = ''; }\n var formattedVars = {};\n Object.keys(vars).forEach(function (key) {\n var formattedKey = prefix + key.replace(/\\W/g, '_').toUpperCase();\n formattedVars[formattedKey] = vars[key];\n });\n return formattedVars;\n }\n\n var notifier = {\n name: 'honeybadger-js',\n url: 'https://github.com/honeybadger-io/honeybadger-js',\n version: '3.2.9'\n };\n // Split at commas\n var TAG_SEPARATOR = /,/;\n // Removes any non-word characters\n var TAG_SANITIZER = /[^\\w]/g;\n // Checks for blank strings\n var STRING_EMPTY = '';\n // Checks for non-blank characters\n var NOT_BLANK = /\\S/;\n var Client = /** @class */ (function () {\n function Client(opts) {\n if (opts === void 0) { opts = {}; }\n /** @internal */\n this.__pluginsExecuted = false;\n /** @internal */\n this.__context = {};\n /** @internal */\n this.__breadcrumbs = [];\n /** @internal */\n this.__beforeNotifyHandlers = [];\n /** @internal */\n this.__afterNotifyHandlers = [];\n this.config = __assign({ apiKey: null, endpoint: 'https://api.honeybadger.io', environment: null, hostname: null, projectRoot: null, component: null, action: null, revision: null, reportData: null, breadcrumbsEnabled: true, maxBreadcrumbs: 40, maxObjectDepth: 8, logger: console, developmentEnvironments: ['dev', 'development', 'test'], disabled: false, debug: false, tags: null, enableUncaught: true, enableUnhandledRejection: true, afterUncaught: function () { return true; }, filters: ['creditcard', 'password'], __plugins: [] }, opts);\n this.logger = logger(this);\n }\n Client.prototype.factory = function (_opts) {\n throw (new Error('Must implement __factory in subclass'));\n };\n Client.prototype.getVersion = function () {\n return notifier.version;\n };\n Client.prototype.configure = function (opts) {\n var _this = this;\n if (opts === void 0) { opts = {}; }\n for (var k in opts) {\n this.config[k] = opts[k];\n }\n if (!this.__pluginsExecuted) {\n this.__pluginsExecuted = true;\n this.config.__plugins.forEach(function (plugin) { return plugin.load(_this); });\n }\n return this;\n };\n Client.prototype.beforeNotify = function (handler) {\n this.__beforeNotifyHandlers.push(handler);\n return this;\n };\n Client.prototype.afterNotify = function (handler) {\n this.__afterNotifyHandlers.push(handler);\n return this;\n };\n Client.prototype.setContext = function (context) {\n if (typeof context === 'object') {\n this.__context = merge(this.__context, context);\n }\n return this;\n };\n Client.prototype.resetContext = function (context) {\n this.logger.warn('Deprecation warning: `Honeybadger.resetContext()` has been deprecated; please use `Honeybadger.clear()` instead.');\n if (typeof context === 'object' && context !== null) {\n this.__context = merge({}, context);\n }\n else {\n this.__context = {};\n }\n return this;\n };\n Client.prototype.clear = function () {\n this.__context = {};\n this.__breadcrumbs = [];\n return this;\n };\n Client.prototype.notify = function (notice, name, extra) {\n if (name === void 0) { name = undefined; }\n if (extra === void 0) { extra = undefined; }\n if (this.config.disabled) {\n this.logger.warn('Deprecation warning: instead of `disabled: true`, use `reportData: false` to explicitly disable Honeybadger reporting. (Dropping notice: honeybadger.js is disabled)');\n return false;\n }\n if (!this.__reportData()) {\n this.logger.debug('Dropping notice: honeybadger.js is in development mode');\n return false;\n }\n if (!this.config.apiKey) {\n this.logger.warn('Unable to send error report: no API key has been configured');\n return false;\n }\n notice = makeNotice(notice);\n if (name && !(typeof name === 'object')) {\n var n = String(name);\n name = { name: n };\n }\n if (name) {\n notice = mergeNotice(notice, name);\n }\n if (typeof extra === 'object' && extra !== null) {\n notice = mergeNotice(notice, extra);\n }\n if (objectIsEmpty(notice)) {\n return false;\n }\n var noticeTags = this.__constructTags(notice.tags);\n var contextTags = this.__constructTags(this.__context[\"tags\"]);\n var configTags = this.__constructTags(this.config.tags);\n // Turning into a Set will remove duplicates\n var tags = noticeTags.concat(contextTags).concat(configTags);\n var uniqueTags = tags.filter(function (item, index) { return tags.indexOf(item) === index; });\n notice = merge(notice, {\n name: notice.name || 'Error',\n context: merge(this.__context, notice.context),\n projectRoot: notice.projectRoot || this.config.projectRoot,\n environment: notice.environment || this.config.environment,\n component: notice.component || this.config.component,\n action: notice.action || this.config.action,\n revision: notice.revision || this.config.revision,\n tags: uniqueTags\n });\n var backtraceShift = 0;\n if (typeof notice.stack !== 'string' || !notice.stack.trim()) {\n notice.stack = generateStackTrace();\n backtraceShift = 2;\n }\n notice.backtrace = makeBacktrace(notice.stack, backtraceShift);\n if (!runBeforeNotifyHandlers(notice, this.__beforeNotifyHandlers)) {\n return false;\n }\n this.addBreadcrumb('Honeybadger Notice', {\n category: 'notice',\n metadata: {\n message: notice.message,\n name: notice.name,\n stack: notice.stack\n }\n });\n notice.__breadcrumbs = this.config.breadcrumbsEnabled ? this.__breadcrumbs.slice() : [];\n return this.__send(notice);\n };\n Client.prototype.addBreadcrumb = function (message, opts) {\n if (!this.config.breadcrumbsEnabled) {\n return;\n }\n opts = opts || {};\n var metadata = shallowClone(opts.metadata);\n var category = opts.category || 'custom';\n var timestamp = new Date().toISOString();\n this.__breadcrumbs.push({\n category: category,\n message: message,\n metadata: metadata,\n timestamp: timestamp\n });\n var limit = this.config.maxBreadcrumbs;\n if (this.__breadcrumbs.length > limit) {\n this.__breadcrumbs = this.__breadcrumbs.slice(this.__breadcrumbs.length - limit);\n }\n return this;\n };\n /** @internal */\n Client.prototype.__reportData = function () {\n if (this.config.reportData !== null) {\n return this.config.reportData;\n }\n return !(this.config.environment && this.config.developmentEnvironments.includes(this.config.environment));\n };\n /** @internal */\n Client.prototype.__send = function (_notice) {\n throw (new Error('Must implement send in subclass'));\n };\n /** @internal */\n Client.prototype.__buildPayload = function (notice) {\n var headers = filter(notice.headers, this.config.filters) || {};\n var cgiData = filter(__assign(__assign({}, notice.cgiData), formatCGIData(headers, 'HTTP_')), this.config.filters);\n return {\n notifier: notifier,\n breadcrumbs: {\n enabled: !!this.config.breadcrumbsEnabled,\n trail: notice.__breadcrumbs || []\n },\n error: {\n class: notice.name,\n message: notice.message,\n backtrace: notice.backtrace,\n fingerprint: notice.fingerprint,\n tags: notice.tags\n },\n request: {\n url: filterUrl(notice.url, this.config.filters),\n component: notice.component,\n action: notice.action,\n context: notice.context,\n cgi_data: cgiData,\n params: filter(notice.params, this.config.filters) || {},\n session: filter(notice.session, this.config.filters) || {}\n },\n server: {\n project_root: notice.projectRoot,\n environment_name: notice.environment,\n revision: notice.revision,\n hostname: this.config.hostname,\n time: new Date().toUTCString()\n },\n details: notice.details || {}\n };\n };\n /** @internal */\n Client.prototype.__constructTags = function (tags) {\n if (!tags) {\n return [];\n }\n return tags.toString().split(TAG_SEPARATOR).map(function (tag) {\n return tag.replace(TAG_SANITIZER, STRING_EMPTY);\n }).filter(function (tag) { return NOT_BLANK.test(tag); });\n };\n return Client;\n }());\n\n /**\n * Converts an HTMLElement into a human-readable string.\n * @param {!HTMLElement} element\n * @return {string}\n */\n function stringNameOfElement(element) {\n if (!element || !element.tagName) {\n return '';\n }\n var name = element.tagName.toLowerCase();\n // Ignore the root element in selectors and events.\n if (name === 'html') {\n return '';\n }\n if (element.id) {\n name += \"#\" + element.id;\n }\n var stringClassNames = element.getAttribute('class');\n if (stringClassNames) {\n stringClassNames.split(/\\s+/).forEach(function (className) {\n name += \".\" + className;\n });\n }\n ['alt', 'name', 'title', 'type'].forEach(function (attrName) {\n var attr = element.getAttribute(attrName);\n if (attr) {\n name += \"[\" + attrName + \"=\\\"\" + attr + \"\\\"]\";\n }\n });\n var siblings = getSiblings(element);\n if (siblings.length > 1) {\n name += \":nth-child(\" + (Array.prototype.indexOf.call(siblings, element) + 1) + \")\";\n }\n return name;\n }\n function stringSelectorOfElement(element) {\n var name = stringNameOfElement(element);\n if (element.parentNode && element.parentNode.tagName) {\n var parentName = stringSelectorOfElement(element.parentNode);\n if (parentName.length > 0) {\n return parentName + \" > \" + name;\n }\n }\n return name;\n }\n function stringTextOfElement(element) {\n var text = element.textContent || element.innerText || '';\n if (!text && (element.type === 'submit' || element.type === 'button')) {\n text = element.value;\n }\n return truncate(text.trim(), 300);\n }\n function nativeFetch() {\n if (!window.fetch) {\n return false;\n }\n if (isNative(window.fetch)) {\n return true;\n }\n // If fetch isn't native, it may be wrapped by someone else. Try to get\n // a pristine function from an iframe.\n try {\n var sandbox = document.createElement('iframe');\n sandbox.style.display = 'none';\n document.head.appendChild(sandbox);\n var result = sandbox.contentWindow.fetch && isNative(sandbox.contentWindow.fetch);\n document.head.removeChild(sandbox);\n return result;\n }\n catch (err) {\n if (console && console.warn) {\n console.warn('failed to detect native fetch via iframe: ' + err);\n }\n }\n return false;\n }\n function isNative(func) {\n return func.toString().indexOf('native') !== -1;\n }\n function parseURL(url) {\n // Regexp: https://tools.ietf.org/html/rfc3986#appendix-B\n var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/) || {};\n return {\n protocol: match[2],\n host: match[4],\n pathname: match[5]\n };\n }\n function localURLPathname(url) {\n var parsed = parseURL(url);\n var parsedDocURL = parseURL(document.URL);\n // URL must be relative\n if (!parsed.host || !parsed.protocol) {\n return parsed.pathname;\n }\n // Same domain\n if (parsed.protocol === parsedDocURL.protocol && parsed.host === parsedDocURL.host) {\n return parsed.pathname;\n }\n // x-domain\n return parsed.protocol + \"://\" + parsed.host + parsed.pathname;\n }\n function decodeCookie(string) {\n var result = {};\n string.split(/[;,]\\s?/).forEach(function (pair) {\n var _a = pair.split('=', 2), key = _a[0], value = _a[1];\n result[key] = value;\n });\n return result;\n }\n function encodeCookie(object) {\n if (typeof object !== 'object') {\n return undefined;\n }\n var cookies = [];\n for (var k in object) {\n cookies.push(k + '=' + object[k]);\n }\n return cookies.join(';');\n }\n // Helpers\n function getSiblings(element) {\n try {\n var nodes = element.parentNode.childNodes;\n var siblings_1 = [];\n Array.prototype.forEach.call(nodes, function (node) {\n if (node.tagName && node.tagName === element.tagName) {\n siblings_1.push(node);\n }\n });\n return siblings_1;\n }\n catch (e) {\n return [];\n }\n }\n function truncate(string, length) {\n if (string.length > length) {\n string = string.substr(0, length) + '...';\n }\n return string;\n }\n // Used to decide which error handling method to use when wrapping async\n // handlers: try/catch, or `window.onerror`. When available, `window.onerror`\n // will provide more information in modern browsers.\n var preferCatch = (function () {\n var preferCatch = true;\n // IE < 10\n if (!window.atob) {\n preferCatch = false;\n }\n // Modern browsers support the full ErrorEvent API\n // See https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n if (window.ErrorEvent) {\n try {\n if ((new window.ErrorEvent('')).colno === 0) {\n preferCatch = false;\n }\n // eslint-disable-next-line no-empty\n }\n catch (_e) { }\n }\n return preferCatch;\n })();\n\n /* eslint-disable prefer-rest-params */\n var ignoreOnError = 0;\n var currentTimeout;\n function ignoreNextOnError() {\n ignoreOnError += 1;\n clearTimeout(currentTimeout);\n currentTimeout = setTimeout(function () {\n ignoreOnError = 0;\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function onError(_window) {\n if (_window === void 0) { _window = window; }\n return {\n load: function (client) {\n instrument(_window, 'onerror', function (original) {\n var onerror = function (msg, url, line, col, err) {\n client.logger.debug('window.onerror callback invoked', arguments);\n if (ignoreOnError > 0) {\n client.logger.debug('Ignoring window.onerror (error likely reported earlier)', arguments);\n ignoreOnError -= 1;\n return;\n }\n if (!client.config.enableUncaught) {\n return;\n }\n if (line === 0 && /Script error\\.?/.test(msg)) {\n // See https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers/onerror#Notes\n client.logger.info('Ignoring cross-domain script error: enable CORS to track these types of errors', arguments);\n return;\n }\n var notice = makeNotice(err);\n if (!notice.name) {\n notice.name = 'window.onerror';\n }\n if (!notice.message) {\n notice.message = msg;\n }\n if (!notice.stack) {\n // Simulate v8 stack\n notice.stack = [notice.message, '\\n at ? (', url || 'unknown', ':', line || 0, ':', col || 0, ')'].join('');\n }\n client.addBreadcrumb((notice.name === 'window.onerror' || !notice.name) ? 'window.onerror' : \"window.onerror: \" + notice.name, {\n category: 'error',\n metadata: {\n name: notice.name,\n message: notice.message,\n stack: notice.stack\n }\n });\n client.notify(notice);\n };\n return function (msg, url, line, col, err) {\n onerror(msg, url, line, col, err);\n if (typeof original === 'function') {\n return original.apply(window, arguments);\n }\n return false;\n };\n });\n }\n };\n }\n\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function onUnhandledRejection (_window) {\n if (_window === void 0) { _window = window; }\n return {\n load: function (client) {\n if (!client.config.enableUnhandledRejection) {\n return;\n }\n instrument(_window, 'onunhandledrejection', function (original) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event\n function onunhandledrejection(promiseRejectionEvent) {\n var _a;\n client.logger.debug('window.onunhandledrejection callback invoked', arguments);\n if (!client.config.enableUnhandledRejection) {\n return;\n }\n var reason = promiseRejectionEvent.reason;\n if (reason instanceof Error) {\n // simulate v8 stack\n // const fileName = reason.fileName || 'unknown'\n // const lineNumber = reason.lineNumber || 0\n var fileName = 'unknown';\n var lineNumber = 0;\n var stackFallback = reason.message + \"\\n at ? (\" + fileName + \":\" + lineNumber + \")\";\n var stack = reason.stack || stackFallback;\n var err = {\n name: reason.name,\n message: \"UnhandledPromiseRejectionWarning: \" + reason,\n stack: stack\n };\n client.addBreadcrumb(\"window.onunhandledrejection: \" + err.name, {\n category: 'error',\n metadata: err\n });\n client.notify(err);\n return;\n }\n var message = typeof reason === 'string' ? reason : ((_a = JSON.stringify(reason)) !== null && _a !== void 0 ? _a : 'Unspecified reason');\n client.notify({\n name: 'window.onunhandledrejection',\n message: \"UnhandledPromiseRejectionWarning: \" + message\n });\n }\n return function (promiseRejectionEvent) {\n onunhandledrejection(promiseRejectionEvent);\n if (typeof original === 'function') {\n original.apply(this, arguments);\n }\n };\n });\n }\n };\n }\n\n /* eslint-disable prefer-rest-params */\n function breadcrumbs (_window) {\n if (_window === void 0) { _window = window; }\n return {\n load: function (client) {\n function breadcrumbsEnabled(type) {\n if (client.config.breadcrumbsEnabled === true) {\n return true;\n }\n if (type) {\n return client.config.breadcrumbsEnabled[type] === true;\n }\n return client.config.breadcrumbsEnabled !== false;\n }\n // Breadcrumbs: instrument console\n (function () {\n if (!breadcrumbsEnabled('console')) {\n return;\n }\n function inspectArray(obj) {\n if (!Array.isArray(obj)) {\n return '';\n }\n return obj.map(function (value) {\n try {\n return String(value);\n }\n catch (e) {\n return '[unknown]';\n }\n }).join(' ');\n }\n ['debug', 'info', 'warn', 'error', 'log'].forEach(function (level) {\n instrument(_window.console, level, function (original) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n var message = inspectArray(args);\n var opts = {\n category: 'log',\n metadata: {\n level: level,\n arguments: sanitize(args, 3)\n }\n };\n client.addBreadcrumb(message, opts);\n if (typeof original === 'function') {\n Function.prototype.apply.call(original, _window.console, arguments);\n }\n };\n });\n });\n })();\n // Breadcrumbs: instrument click events\n (function () {\n if (!breadcrumbsEnabled('dom')) {\n return;\n }\n _window.addEventListener('click', function (event) {\n var message, selector, text;\n try {\n message = stringNameOfElement(event.target);\n selector = stringSelectorOfElement(event.target);\n text = stringTextOfElement(event.target);\n }\n catch (e) {\n message = 'UI Click';\n selector = '[unknown]';\n text = '[unknown]';\n }\n // There's nothing to display\n if (message.length === 0) {\n return;\n }\n client.addBreadcrumb(message, {\n category: 'ui.click',\n metadata: {\n selector: selector,\n text: text,\n event: event\n }\n });\n }, true);\n })();\n // Breadcrumbs: instrument XMLHttpRequest\n (function () {\n if (!breadcrumbsEnabled('network')) {\n return;\n }\n // -- On xhr.open: capture initial metadata\n instrument(XMLHttpRequest.prototype, 'open', function (original) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var url = arguments[1];\n var method = typeof arguments[0] === 'string' ? arguments[0].toUpperCase() : arguments[0];\n var message = method + \" \" + localURLPathname(url);\n this.__hb_xhr = {\n type: 'xhr',\n method: method,\n url: url,\n message: message\n };\n if (typeof original === 'function') {\n original.apply(xhr, arguments);\n }\n };\n });\n // -- On xhr.send: set up xhr.onreadystatechange to report breadcrumb\n instrument(XMLHttpRequest.prototype, 'send', function (original) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n function onreadystatechangeHandler() {\n if (xhr.readyState === 4) {\n var message = void 0;\n if (xhr.__hb_xhr) {\n xhr.__hb_xhr.status_code = xhr.status;\n message = xhr.__hb_xhr.message;\n delete xhr.__hb_xhr.message;\n }\n client.addBreadcrumb(message || 'XMLHttpRequest', {\n category: 'request',\n metadata: xhr.__hb_xhr\n });\n }\n }\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n instrument(xhr, 'onreadystatechange', function (original) {\n return function () {\n onreadystatechangeHandler();\n if (typeof original === 'function') {\n // eslint-disable-next-line prefer-rest-params\n original.apply(this, arguments);\n }\n };\n });\n }\n else {\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n if (typeof original === 'function') {\n // eslint-disable-next-line prefer-rest-params\n original.apply(xhr, arguments);\n }\n };\n });\n })();\n // Breadcrumbs: instrument fetch\n (function () {\n if (!breadcrumbsEnabled('network')) {\n return;\n }\n if (!nativeFetch()) {\n // Polyfills use XHR.\n return;\n }\n instrument(_window, 'fetch', function (original) {\n return function () {\n // eslint-disable-next-line prefer-rest-params\n var input = arguments[0];\n var method = 'GET';\n var url;\n if (typeof input === 'string') {\n url = input;\n }\n else if ('Request' in _window && input instanceof Request) {\n url = input.url;\n if (input.method) {\n method = input.method;\n }\n }\n else {\n url = String(input);\n }\n if (arguments[1] && arguments[1].method) {\n method = arguments[1].method;\n }\n if (typeof method === 'string') {\n method = method.toUpperCase();\n }\n var message = method + \" \" + localURLPathname(url);\n var metadata = {\n type: 'fetch',\n method: method,\n url: url\n };\n return original\n .apply(this, arguments)\n .then(function (response) {\n metadata['status_code'] = response.status;\n client.addBreadcrumb(message, {\n category: 'request',\n metadata: metadata\n });\n return response;\n })\n .catch(function (error) {\n client.addBreadcrumb('fetch error', {\n category: 'error',\n metadata: metadata\n });\n throw error;\n });\n };\n });\n })();\n // Breadcrumbs: instrument navigation\n (function () {\n if (!breadcrumbsEnabled('navigation')) {\n return;\n }\n // The last known href of the current page\n var lastHref = _window.location.href;\n function recordUrlChange(from, to) {\n lastHref = to;\n client.addBreadcrumb('Page changed', {\n category: 'navigation',\n metadata: {\n from: from,\n to: to\n }\n });\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n instrument(_window, 'onpopstate', function (original) {\n return function () {\n recordUrlChange(lastHref, _window.location.href);\n if (original) {\n return original.apply(this, arguments);\n }\n };\n });\n // https://developer.mozilla.org/en-US/docs/Web/API/History/pushState\n // https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState\n function historyWrapper(original) {\n return function () {\n var url = arguments.length > 2 ? arguments[2] : undefined;\n if (url) {\n recordUrlChange(lastHref, String(url));\n }\n return original.apply(this, arguments);\n };\n }\n instrument(_window.history, 'pushState', historyWrapper);\n instrument(_window.history, 'replaceState', historyWrapper);\n })();\n }\n };\n }\n\n /* eslint-disable prefer-rest-params */\n function timers (_window) {\n if (_window === void 0) { _window = window; }\n return {\n load: function (client) {\n // Wrap timers\n (function () {\n function instrumentTimer(wrapOpts) {\n return function (original) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout\n return function (func, delay) {\n if (typeof func === 'function') {\n var args_1 = Array.prototype.slice.call(arguments, 2);\n func = client.__wrap(func, wrapOpts);\n return original(function () {\n func.apply(void 0, args_1);\n }, delay);\n }\n else {\n return original(func, delay);\n }\n };\n };\n }\n instrument(_window, 'setTimeout', instrumentTimer({ component: 'setTimeout' }));\n instrument(_window, 'setInterval', instrumentTimer({ component: 'setInterval' }));\n })();\n }\n };\n }\n\n function eventListeners (_window) {\n if (_window === void 0) { _window = window; }\n return {\n load: function (client) {\n // Wrap event listeners\n // Event targets borrowed from bugsnag-js:\n // See https://github.com/bugsnag/bugsnag-js/blob/d55af916a4d3c7757f979d887f9533fe1a04cc93/src/bugsnag.js#L542\n var targets = ['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'];\n targets.forEach(function (prop) {\n var prototype = _window[prop] && _window[prop].prototype;\n if (prototype && Object.prototype.hasOwnProperty.call(prototype, 'addEventListener')) {\n instrument(prototype, 'addEventListener', function (original) {\n var wrapOpts = { component: prop + \".prototype.addEventListener\" };\n // See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n return function (type, listener, useCapture, wantsUntrusted) {\n try {\n if (listener && listener.handleEvent != null) {\n listener.handleEvent = client.__wrap(listener.handleEvent, wrapOpts);\n }\n }\n catch (e) {\n // Ignore 'Permission denied to access property \"handleEvent\"' errors.\n client.logger.error(e);\n }\n return original.call(this, type, client.__wrap(listener, wrapOpts), useCapture, wantsUntrusted);\n };\n });\n instrument(prototype, 'removeEventListener', function (original) {\n return function (type, listener, useCapture, wantsUntrusted) {\n original.call(this, type, listener, useCapture, wantsUntrusted);\n return original.call(this, type, client.__wrap(listener), useCapture, wantsUntrusted);\n };\n });\n }\n });\n }\n };\n }\n\n var Honeybadger = /** @class */ (function (_super) {\n __extends(Honeybadger, _super);\n function Honeybadger(opts) {\n if (opts === void 0) { opts = {}; }\n var _this = _super.call(this, __assign({ async: true, maxErrors: null, projectRoot: window.location.protocol + '//' + window.location.host }, opts)) || this;\n /** @internal */\n _this.__errorsSent = 0;\n /** @internal */\n _this.__lastWrapErr = undefined;\n /** @internal */\n _this.__beforeNotifyHandlers = [\n function (notice) {\n if (_this.__exceedsMaxErrors()) {\n _this.logger.debug('Dropping notice: max errors exceeded', notice);\n return false;\n }\n if (!notice.url) {\n notice.url = document.URL;\n }\n return true;\n }\n ];\n return _this;\n }\n Honeybadger.prototype.configure = function (opts) {\n if (opts === void 0) { opts = {}; }\n return _super.prototype.configure.call(this, opts);\n };\n Honeybadger.prototype.resetMaxErrors = function () {\n return (this.__errorsSent = 0);\n };\n Honeybadger.prototype.factory = function (opts) {\n return new Honeybadger(opts);\n };\n /** @internal */\n Honeybadger.prototype.__buildPayload = function (notice) {\n var cgiData = {\n HTTP_USER_AGENT: undefined,\n HTTP_REFERER: undefined,\n HTTP_COOKIE: undefined\n };\n cgiData.HTTP_USER_AGENT = navigator.userAgent;\n if (document.referrer.match(/\\S/)) {\n cgiData.HTTP_REFERER = document.referrer;\n }\n var cookiesObject;\n if (typeof notice.cookies === 'string') {\n cookiesObject = decodeCookie(notice.cookies);\n }\n else {\n cookiesObject = notice.cookies;\n }\n if (cookiesObject) {\n cgiData.HTTP_COOKIE = encodeCookie(filter(cookiesObject, this.config.filters));\n }\n var payload = _super.prototype.__buildPayload.call(this, notice);\n payload.request.cgi_data = merge(cgiData, payload.request.cgi_data);\n return payload;\n };\n /** @internal */\n Honeybadger.prototype.__send = function (notice) {\n var _this = this;\n this.__incrementErrorsCount();\n var payload = this.__buildPayload(notice);\n var handlers = Array.prototype.slice.call(this.__afterNotifyHandlers);\n if (notice.afterNotify) {\n handlers.unshift(notice.afterNotify);\n }\n try {\n var x_1 = new XMLHttpRequest();\n x_1.open('POST', endpoint(this.config, '/v1/notices/js'), this.config.async);\n x_1.setRequestHeader('X-API-Key', this.config.apiKey);\n x_1.setRequestHeader('Content-Type', 'application/json');\n x_1.setRequestHeader('Accept', 'text/json, application/json');\n x_1.send(JSON.stringify(sanitize(payload, this.config.maxObjectDepth)));\n x_1.onload = function () {\n if (x_1.status !== 201) {\n runAfterNotifyHandlers(notice, handlers, new Error(\"Bad HTTP response: \" + x_1.status));\n _this.logger.debug(\"Unable to send error report: \" + x_1.status + \": \" + x_1.statusText, x_1, notice);\n return;\n }\n runAfterNotifyHandlers(merge(notice, {\n id: JSON.parse(x_1.response).id\n }), handlers);\n _this.logger.debug('Error report sent', notice);\n };\n }\n catch (err) {\n runAfterNotifyHandlers(notice, handlers, err);\n this.logger.error('Unable to send error report: error while initializing request', err, notice);\n }\n return true;\n };\n /**\n * wrap always returns the same function so that callbacks can be removed via\n * removeEventListener.\n * @internal\n */\n Honeybadger.prototype.__wrap = function (f, opts) {\n if (opts === void 0) { opts = {}; }\n var func = f;\n if (!opts) {\n opts = {};\n }\n try {\n if (typeof func !== 'function') {\n return func;\n }\n if (!objectIsExtensible(func)) {\n return func;\n }\n if (!func.___hb) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var client_1 = this;\n func.___hb = function () {\n var onErrorEnabled = client_1.config.enableUncaught;\n // Catch if:\n // 1. We explicitly want to catch (i.e. if the error could be\n // caught before reaching window.onerror)\n // 2. The browser provides less information via the window.onerror\n // handler\n // 3. The window.onerror handler is unavailable\n if (opts.catch || preferCatch || !onErrorEnabled) {\n try {\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n catch (err) {\n if (client_1.__lastWrapErr === err) {\n throw (err);\n }\n client_1.__lastWrapErr = err;\n ignoreNextOnError();\n client_1.addBreadcrumb(opts.component ? opts.component + \": \" + err.name : err.name, {\n category: 'error',\n metadata: {\n message: err.message,\n name: err.name,\n stack: err.stack\n }\n });\n client_1.notify(err);\n throw (err);\n }\n }\n else {\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n };\n }\n func.___hb.___hb = func.___hb;\n return func.___hb;\n }\n catch (_e) {\n return func;\n }\n };\n /** @internal */\n Honeybadger.prototype.__incrementErrorsCount = function () {\n return this.__errorsSent++;\n };\n /** @internal */\n Honeybadger.prototype.__exceedsMaxErrors = function () {\n return this.config.maxErrors && this.__errorsSent >= this.config.maxErrors;\n };\n return Honeybadger;\n }(Client));\n var browser = new Honeybadger({\n __plugins: [\n onError(),\n onUnhandledRejection(),\n timers(),\n eventListeners(),\n breadcrumbs()\n ]\n });\n\n return browser;\n\n})));\n//# sourceMappingURL=honeybadger.js.map\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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"actioncable\" + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t34: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkrolemodel_website\"] = self[\"webpackChunkrolemodel_website\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/**\n *\n * The shadowDom / Intersection Observer version of Paul's concept:\n * https://github.com/paulirish/lite-youtube-embed\n *\n * A lightweight YouTube embed. Still should feel the same to the user, just\n * MUCH faster to initialize and paint.\n *\n * Thx to these as the inspiration\n * https://storage.googleapis.com/amp-vs-non-amp/youtube-lazy.html\n * https://autoplay-youtube-player.glitch.me/\n *\n * Once built it, I also found these (👍👍):\n * https://github.com/ampproject/amphtml/blob/master/extensions/amp-youtube\n * https://github.com/Daugilas/lazyYT https://github.com/vb/lazyframe\n */\n/*\n * Vimeo example embed markup:\n\n

\n Alex Russell - The Mobile Web: MIA from\n Fronteers\n on Vimeo.\n

\n */\nlet LiteVimeoEmbed = /** @class */ (() => {\n class LiteVimeoEmbed extends HTMLElement {\n constructor() {\n super();\n this.iframeLoaded = false;\n this.setupDom();\n }\n static get observedAttributes() {\n return ['videoid'];\n }\n connectedCallback() {\n this.addEventListener('pointerover', LiteVimeoEmbed.warmConnections, {\n once: true,\n });\n this.addEventListener('click', () => this.addIframe());\n }\n get videoId() {\n return encodeURIComponent(this.getAttribute('videoid') || '');\n }\n set videoId(id) {\n this.setAttribute('videoid', id);\n }\n get videoTitle() {\n return this.getAttribute('videotitle') || 'Video';\n }\n set videoTitle(title) {\n this.setAttribute('videotitle', title);\n }\n get videoPlay() {\n return this.getAttribute('videoPlay') || 'Play';\n }\n set videoPlay(name) {\n this.setAttribute('videoPlay', name);\n }\n get videoStartAt() {\n return this.getAttribute('videoPlay') || '0s';\n }\n set videoStartAt(time) {\n this.setAttribute('videoPlay', time);\n }\n get autoLoad() {\n return this.hasAttribute('autoload');\n }\n set autoLoad(value) {\n if (value) {\n this.setAttribute('autoload', '');\n }\n else {\n this.removeAttribute('autoload');\n }\n }\n get autoPlay() {\n return this.hasAttribute('autoplay');\n }\n set autoPlay(value) {\n if (value) {\n this.setAttribute('autoplay', 'autoplay');\n }\n else {\n this.removeAttribute('autoplay');\n }\n }\n /**\n * Define our shadowDOM for the component\n */\n setupDom() {\n const shadowDom = this.attachShadow({ mode: 'open' });\n shadowDom.innerHTML = `\n \n
\n \n \n \n \n \n \n
\n `;\n this.domRefFrame = this.shadowRoot.querySelector('#frame');\n this.domRefImg = {\n fallback: this.shadowRoot.querySelector('#fallbackPlaceholder'),\n webp: this.shadowRoot.querySelector('#webpPlaceholder'),\n jpeg: this.shadowRoot.querySelector('#jpegPlaceholder'),\n };\n this.domRefPlayButton = this.shadowRoot.querySelector('.lvo-playbtn');\n }\n /**\n * Parse our attributes and fire up some placeholders\n */\n setupComponent() {\n this.initImagePlaceholder();\n this.domRefPlayButton.setAttribute('aria-label', `${this.videoPlay}: ${this.videoTitle}`);\n this.setAttribute('title', `${this.videoPlay}: ${this.videoTitle}`);\n if (this.autoLoad) {\n this.initIntersectionObserver();\n }\n }\n /**\n * Lifecycle method that we use to listen for attribute changes to period\n * @param {*} name\n * @param {*} oldVal\n * @param {*} newVal\n */\n attributeChangedCallback(name, oldVal, newVal) {\n switch (name) {\n case 'videoid': {\n if (oldVal !== newVal) {\n this.setupComponent();\n // if we have a previous iframe, remove it and the activated class\n if (this.domRefFrame.classList.contains('lvo-activated')) {\n this.domRefFrame.classList.remove('lvo-activated');\n this.shadowRoot.querySelector('iframe').remove();\n }\n }\n break;\n }\n default:\n break;\n }\n }\n /**\n * Inject the iframe into the component body\n */\n addIframe() {\n if (!this.iframeLoaded) {\n /**\n * Vimeo example embed markup:\n *\n * \n */\n // FIXME: add a setting for autoplay\n const apValue = ((this.autoLoad && this.autoPlay) || (!this.autoLoad)) ?\n \"autoplay=1\" : \"\";\n const srcUrl = new URL(`/video/${this.videoId}?${apValue}&#t=${this.videoStartAt}`, \"https://player.vimeo.com/\");\n // TODO: construct src value w/ URL constructor\n const iframeHTML = `\n`;\n this.domRefFrame.insertAdjacentHTML('beforeend', iframeHTML);\n this.domRefFrame.classList.add('lvo-activated');\n this.iframeLoaded = true;\n }\n }\n /**\n * Setup the placeholder image for the component\n */\n async initImagePlaceholder() {\n // TODO(slightlyoff): TODO: cache API responses\n // we don't know which image type to preload, so warm the connection\n LiteVimeoEmbed.addPrefetch('preconnect', 'https://i.vimeocdn.com/');\n // API is the video-id based\n // http://vimeo.com/api/v2/video/364402896.json\n const apiUrl = `https://vimeo.com/api/v2/video/${this.videoId}.json`;\n // Now fetch the JSON that locates our placeholder from vimeo's JSON API\n const apiResponse = (await (await fetch(apiUrl)).json())[0];\n // Extract the image id, e.g. 819916979, from a URL like:\n // thumbnail_large: \"https://i.vimeocdn.com/video/819916979_640.jpg\"\n const tnLarge = apiResponse.thumbnail_large;\n const imgId = (tnLarge.substr(tnLarge.lastIndexOf(\"/\") + 1)).split(\"_\")[0];\n // const posterUrlWebp =\n // `https://i.ytimg.com/vi_webp/${this.videoId}/hqdefault.webp`;\n const posterUrlWebp = `https://i.vimeocdn.com/video/${imgId}.webp?mw=1100&mh=619&q=70`;\n const posterUrlJpeg = `https://i.vimeocdn.com/video/${imgId}.jpg?mw=1100&mh=619&q=70`;\n this.domRefImg.webp.srcset = posterUrlWebp;\n this.domRefImg.jpeg.srcset = posterUrlJpeg;\n this.domRefImg.fallback.src = posterUrlJpeg;\n this.domRefImg.fallback.setAttribute('aria-label', `${this.videoPlay}: ${this.videoTitle}`);\n this.domRefImg.fallback.setAttribute('alt', `${this.videoPlay}: ${this.videoTitle}`);\n }\n /**\n * Setup the Intersection Observer to load the iframe when scrolled into view\n */\n initIntersectionObserver() {\n if ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window) {\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: 0,\n };\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (entry.isIntersecting && !this.iframeLoaded) {\n LiteVimeoEmbed.warmConnections();\n this.addIframe();\n observer.unobserve(this);\n }\n });\n }, options);\n observer.observe(this);\n }\n }\n /**\n * Add a to the head\n * @param {*} kind\n * @param {*} url\n * @param {*} as\n */\n static addPrefetch(kind, url, as) {\n const linkElem = document.createElement('link');\n linkElem.rel = kind;\n linkElem.href = url;\n if (as) {\n linkElem.as = as;\n }\n linkElem.crossOrigin = 'true';\n document.head.append(linkElem);\n }\n /**\n * Begin preconnecting to warm up the iframe load Since the embed's netwok\n * requests load within its iframe, preload/prefetch'ing them outside the\n * iframe will only cause double-downloads. So, the best we can do is warm up\n * a few connections to origins that are in the critical path.\n *\n * Maybe `` would work, but it's unsupported:\n * http://crbug.com/593267 But TBH, I don't think it'll happen soon with Site\n * Isolation and split caches adding serious complexity.\n */\n static warmConnections() {\n if (LiteVimeoEmbed.preconnected)\n return;\n // Host that Vimeo uses to serve JS needed by player\n LiteVimeoEmbed.addPrefetch('preconnect', 'https://f.vimeocdn.com');\n // The iframe document comes from player.vimeo.com\n LiteVimeoEmbed.addPrefetch('preconnect', 'https://player.vimeo.com');\n // Image for placeholder comes from i.vimeocdn.com\n LiteVimeoEmbed.addPrefetch('preconnect', 'https://i.vimeocdn.com');\n LiteVimeoEmbed.preconnected = true;\n }\n }\n LiteVimeoEmbed.preconnected = false;\n return LiteVimeoEmbed;\n})();\nexport { LiteVimeoEmbed };\n// Register custom element\ncustomElements.define('lite-vimeo', LiteVimeoEmbed);\n//# sourceMappingURL=lite-vimeo.js.map","/*\nStimulus 3.2.1\nCopyright © 2022 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[1];\n let keyFilter = matches[2];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[3]),\n eventName,\n eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n identifier: matches[4],\n methodName: matches[5],\n keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n isFilterTarget(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filteres = this.keyFilter.split(\"+\");\n const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n return true;\n }\n const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details = {}) {\n this.selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const matches = element.matches(this.selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n elementMatched(element) {\n this.selectorMatched(element);\n }\n elementUnmatched(element) {\n this.selectorUnmatched(element);\n }\n elementAttributeChanged(element, _attributeName) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(this.selector, element);\n if (!matches && matchedBefore) {\n this.selectorUnmatched(element);\n }\n }\n selectorMatched(element) {\n if (this.delegate.selectorMatched) {\n this.delegate.selectorMatched(element, this.selector, this.details);\n this.matchesByElement.add(this.selector, element);\n }\n }\n selectorUnmatched(element) {\n this.delegate.selectorUnmatched(element, this.selector, this.details);\n this.matchesByElement.delete(this.selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n }\n start() {\n if (this.selectorObserverMap.size === 0) {\n this.outletDefinitions.forEach((outletName) => {\n const selector = this.selector(outletName);\n const details = { outletName };\n if (selector) {\n this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n }\n });\n this.selectorObserverMap.forEach((observer) => observer.start());\n }\n this.dependentContexts.forEach((context) => context.refresh());\n }\n stop() {\n if (this.selectorObserverMap.size > 0) {\n this.disconnectAllOutlets();\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n return (this.hasOutlet(element, outletName) &&\n element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad(definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (outletController) {\n return outletController;\n }\n else {\n throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n }\n }\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outlet) => {\n const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (controller) {\n return controller;\n }\n else {\n console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n }\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n return outlet;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n if (!typeFromObject)\n return;\n const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n if (typeFromObject !== defaultValueType) {\n const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n }\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const typeFromObject = parseValueTypeObject({\n controller: payload.controller,\n token: payload.token,\n typeObject: payload.typeDefinition,\n });\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const key = `${dasherize(payload.token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(payload.typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class AccordionController extends Controller {\n static targets = [\"details\", \"detailImages\"]\n\n changeOpenDetails(event) {\n this.detailsTargets.map(details => {\n details.dataset.hiding = event.target !== details\n details.open = event.target === details\n })\n\n this.detailImagesTargets.map(image => {\n image.classList.add('diagram-accordion__image--hidden')\n\n if (image.dataset.id === event.target.dataset.id) {\n image.classList.remove('diagram-accordion__image--hidden')\n }\n })\n }\n\n blockHideDetails(event) {\n if(event.target.dataset.hiding === \"false\") {\n event.preventDefault()\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\n static values = { activeClass: String }\n static targets = [ \"tab\", \"tabPanel\" ]\n\n\n initialize() {\n this.showTab()\n }\n\n change(e){\n this.index = this.tabTargets.indexOf(e.target)\n this.showTab(this.index)\n }\n\n showTab() {\n this.tabPanelTargets.forEach((el, i) => {\n if(i === this.index){\n el.classList.remove('display-none')\n } else {\n el.classList.add('display-none')\n }\n })\n\n this.tabTargets.forEach((el, i) => {\n if(i === this.index){\n el.classList.add(this.activeClass)\n } else {\n el.classList.remove(this.activeClass)\n }\n })\n }\n\n get index() {\n return parseInt(this.data.get('index'))\n }\n\n get activeClass() {\n return this.activeClassValue || 'tab--active'\n }\n\n set index(value) {\n this.data.set(\"index\", value)\n this.showTab()\n }\n}\n","var e,t,n,i,r=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:\"v2-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12)}},a=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if(\"first-input\"===e&&!(\"PerformanceEventTiming\"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},o=function(e,t){var n=function n(i){\"pagehide\"!==i.type&&\"hidden\"!==document.visibilityState||(e(i),t&&(removeEventListener(\"visibilitychange\",n,!0),removeEventListener(\"pagehide\",n,!0)))};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},u=function(e){addEventListener(\"pageshow\",(function(t){t.persisted&&e(t)}),!0)},c=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},f=-1,s=function(){return\"hidden\"===document.visibilityState?0:1/0},m=function(){o((function(e){var t=e.timeStamp;f=t}),!0)},v=function(){return f<0&&(f=s(),m(),u((function(){setTimeout((function(){f=s(),m()}),0)}))),{get firstHiddenTime(){return f}}},d=function(e,t){var n,i=v(),o=r(\"FCP\"),f=function(e){\"first-contentful-paint\"===e.name&&(m&&m.disconnect(),e.startTime-1&&e(t)},f=r(\"CLS\",0),s=0,m=[],v=function(e){if(!e.hadRecentInput){var t=m[0],i=m[m.length-1];s&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(s+=e.value,m.push(e)):(s=e.value,m=[e]),s>f.value&&(f.value=s,f.entries=m,n())}},h=a(\"layout-shift\",v);h&&(n=c(i,f,t),o((function(){h.takeRecords().map(v),n(!0)})),u((function(){s=0,l=-1,f=r(\"CLS\",0),n=c(i,f,t)})))},T={passive:!0,capture:!0},y=new Date,g=function(i,r){e||(e=r,t=i,n=new Date,w(removeEventListener),E())},E=function(){if(t>=0&&t1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,t){var n=function(){g(e,t),r()},i=function(){r()},r=function(){removeEventListener(\"pointerup\",n,T),removeEventListener(\"pointercancel\",i,T)};addEventListener(\"pointerup\",n,T),addEventListener(\"pointercancel\",i,T)}(t,e):g(t,e)}},w=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(t){return e(t,S,T)}))},L=function(n,f){var s,m=v(),d=r(\"FID\"),p=function(e){e.startTimeperformance.now())return;n.entries=[t],e(n)}catch(e){}},\"complete\"===document.readyState?setTimeout(t,0):addEventListener(\"load\",(function(){return setTimeout(t,0)}))};export{h as getCLS,d as getFCP,L as getFID,F as getLCP,P as getTTFB};\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),n=new WeakMap;class o{constructor(t,e,n){if(this._$cssResult$=!0,n!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=n.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&n.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new o(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const n=1===t.length?t[0]:e.reduce(((e,s,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[n+1]),t[0]);return new o(n,t,s)},S=(s,n)=>{e?s.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((e=>{const n=document.createElement(\"style\"),o=t.litNonce;void 0!==o&&n.setAttribute(\"nonce\",o),n.textContent=e.cssText,s.appendChild(n)}))},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{o as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as i}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var s;const e=window,r=e.trustedTypes,h=r?r.emptyScript:\"\",o=e.reactiveElementPolyfillSupport,n={toAttribute(t,i){switch(i){case Boolean:t=t?h:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},a=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:n,reflect:!1,hasChanged:a},d=\"finalized\";class u extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var i;this.finalize(),(null!==(i=this.h)&&void 0!==i?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Ep(s,i);void 0!==e&&(this._$Ev.set(e,s),t.push(e))})),t}static createProperty(t,i=l){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=\"symbol\"==typeof t?Symbol():\"__\"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,s){return{get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l}static finalize(){if(this.hasOwnProperty(d))return!1;this[d]=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty(\"properties\")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(t(i))}else void 0!==i&&s.push(t(i));return s}static _$Ep(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$ES)&&void 0!==i?i:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var i;null===(i=this._$ES)||void 0===i||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,s){this._$AK(t,s)}_$EO(t,i,s=l){var e;const r=this.constructor._$Ep(t,s);if(void 0!==r&&!0===s.reflect){const h=(void 0!==(null===(e=s.converter)||void 0===e?void 0:e.toAttribute)?s.converter:n).toAttribute(i,s.type);this._$El=t,null==h?this.removeAttribute(r):this.setAttribute(r,h),this._$El=null}}_$AK(t,i){var s;const e=this.constructor,r=e._$Ev.get(t);if(void 0!==r&&this._$El!==r){const t=e.getPropertyOptions(r),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(s=t.converter)||void 0===s?void 0:s.fromAttribute)?t.converter:n;this._$El=r,this[r]=h.fromAttribute(i,t.type),this._$El=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||a)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,i)=>this[i]=t)),this._$Ei=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$Ek()}catch(t){throw i=!1,this._$Ek(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$ES)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,i)=>this._$EO(i,this[i],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}u[d]=!0,u.elementProperties=new Map,u.elementStyles=[],u.shadowRootOptions={mode:\"open\"},null==o||o({ReactiveElement:u}),(null!==(s=e.reactiveElementVersions)&&void 0!==s?s:e.reactiveElementVersions=[]).push(\"1.6.2\");export{u as ReactiveElement,n as defaultConverter,a as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=window,s=i.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,o=\"$lit$\",n=`lit$${(Math.random()+\"\").slice(9)}$`,l=\"?\"+n,h=`<${l}>`,r=document,u=()=>r.createComment(\"\"),d=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,c=Array.isArray,v=t=>c(t)||\"function\"==typeof(null==t?void 0:t[Symbol.iterator]),a=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${a}(?:([^\\\\s\"'>=/]+)(${a}*=${a}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,w=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=w(1),b=w(2),T=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),E=new WeakMap,C=r.createTreeWalker(r,129,null,!1);function P(t,i){if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,e=[];let l,r=2===i?\"\":\"\",u=f;for(let i=0;i\"===c[0]?(u=null!=l?l:f,v=-1):void 0===c[1]?v=-2:(v=u.lastIndex-c[2].length,d=c[1],u=void 0===c[3]?p:'\"'===c[3]?$:g):u===$||u===g?u=p:u===_||u===m?u=f:(u=p,l=void 0);const w=u===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=u===f?s+h:v>=0?(e.push(d),s.slice(0,v)+o+s.slice(v)+n+w):s+n+(-2===v?(e.push(void 0),i):w)}return[P(t,r+(t[s]||\"\")+(2===i?\"\":\"\")),e]};class N{constructor({strings:t,_$litType$:i},e){let h;this.parts=[];let r=0,d=0;const c=t.length-1,v=this.parts,[a,f]=V(t,i);if(this.el=N.createElement(a,e),C.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(h=C.nextNode())&&v.length0){h.textContent=s?s.emptyScript:\"\";for(let s=0;s2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=S(this,t,i,0),n=!d(t)||t!==this._$AH&&t!==T,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new R(i.insertBefore(u(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l};export{j as _$LH,x as html,T as noChange,A as nothing,D as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var l,o;const r=t;class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return i}}s.finalized=!0,s._$litElement$=!0,null===(l=globalThis.litElementHydrateSupport)||void 0===l||l.call(globalThis,{LitElement:s});const n=globalThis.litElementPolyfillSupport;null==n||n({LitElement:s});const h={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.3.2\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","// src/styles/component.styles.ts\nimport { css } from \"lit\";\nvar component_styles_default = css`\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n`;\n\nexport {\n component_styles_default\n};\n","import {\n component_styles_default\n} from \"./chunk.TUVJKY7S.js\";\n\n// src/components/details/details.styles.ts\nimport { css } from \"lit\";\nvar details_styles_default = css`\n ${component_styles_default}\n\n :host {\n display: block;\n }\n\n .details {\n border: solid 1px var(--sl-color-neutral-200);\n border-radius: var(--sl-border-radius-medium);\n background-color: var(--sl-color-neutral-0);\n overflow-anchor: none;\n }\n\n .details--disabled {\n opacity: 0.5;\n }\n\n .details__header {\n display: flex;\n align-items: center;\n border-radius: inherit;\n padding: var(--sl-spacing-medium);\n user-select: none;\n cursor: pointer;\n }\n\n .details__header::-webkit-details-marker {\n display: none;\n }\n\n .details__header:focus {\n outline: none;\n }\n\n .details__header:focus-visible {\n outline: var(--sl-focus-ring);\n outline-offset: calc(1px + var(--sl-focus-ring-offset));\n }\n\n .details--disabled .details__header {\n cursor: not-allowed;\n }\n\n .details--disabled .details__header:focus-visible {\n outline: none;\n box-shadow: none;\n }\n\n .details__summary {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n }\n\n .details__summary-icon {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n transition: var(--sl-transition-medium) rotate ease;\n }\n\n .details--open .details__summary-icon {\n rotate: 90deg;\n }\n\n .details--open.details--rtl .details__summary-icon {\n rotate: -90deg;\n }\n\n .details--open slot[name='expand-icon'],\n .details:not(.details--open) slot[name='collapse-icon'] {\n display: none;\n }\n\n .details__body {\n overflow: hidden;\n }\n\n .details__content {\n display: block;\n padding: var(--sl-spacing-medium);\n }\n`;\n\nexport {\n details_styles_default\n};\n","import {\n __spreadProps,\n __spreadValues\n} from \"./chunk.5F6CPPXO.js\";\n\n// src/utilities/animation-registry.ts\nvar defaultAnimationRegistry = /* @__PURE__ */ new Map();\nvar customAnimationRegistry = /* @__PURE__ */ new WeakMap();\nfunction ensureAnimation(animation) {\n return animation != null ? animation : { keyframes: [], options: { duration: 0 } };\n}\nfunction getLogicalAnimation(animation, dir) {\n if (dir.toLowerCase() === \"rtl\") {\n return {\n keyframes: animation.rtlKeyframes || animation.keyframes,\n options: animation.options\n };\n }\n return animation;\n}\nfunction setDefaultAnimation(animationName, animation) {\n defaultAnimationRegistry.set(animationName, ensureAnimation(animation));\n}\nfunction setAnimation(el, animationName, animation) {\n customAnimationRegistry.set(el, __spreadProps(__spreadValues({}, customAnimationRegistry.get(el)), { [animationName]: ensureAnimation(animation) }));\n}\nfunction getAnimation(el, animationName, options) {\n const customAnimation = customAnimationRegistry.get(el);\n if (customAnimation == null ? void 0 : customAnimation[animationName]) {\n return getLogicalAnimation(customAnimation[animationName], options.dir);\n }\n const defaultAnimation = defaultAnimationRegistry.get(animationName);\n if (defaultAnimation) {\n return getLogicalAnimation(defaultAnimation, options.dir);\n }\n return {\n keyframes: [],\n options: { duration: 0 }\n };\n}\n\nexport {\n setDefaultAnimation,\n setAnimation,\n getAnimation\n};\n","// src/internal/event.ts\nfunction waitForEvent(el, eventName) {\n return new Promise((resolve) => {\n function done(event) {\n if (event.target === el) {\n el.removeEventListener(eventName, done);\n resolve();\n }\n }\n el.addEventListener(eventName, done);\n });\n}\n\nexport {\n waitForEvent\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp(target, key, result);\n return result;\n};\n\nexport {\n __spreadValues,\n __spreadProps,\n __objRest,\n __decorateClass\n};\n","import {\n __spreadProps,\n __spreadValues\n} from \"./chunk.5F6CPPXO.js\";\n\n// src/internal/animate.ts\nfunction animateTo(el, keyframes, options) {\n return new Promise((resolve) => {\n if ((options == null ? void 0 : options.duration) === Infinity) {\n throw new Error(\"Promise-based animations must be finite.\");\n }\n const animation = el.animate(keyframes, __spreadProps(__spreadValues({}, options), {\n duration: prefersReducedMotion() ? 0 : options.duration\n }));\n animation.addEventListener(\"cancel\", resolve, { once: true });\n animation.addEventListener(\"finish\", resolve, { once: true });\n });\n}\nfunction parseDuration(delay) {\n delay = delay.toString().toLowerCase();\n if (delay.indexOf(\"ms\") > -1) {\n return parseFloat(delay);\n }\n if (delay.indexOf(\"s\") > -1) {\n return parseFloat(delay) * 1e3;\n }\n return parseFloat(delay);\n}\nfunction prefersReducedMotion() {\n const query = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n return query.matches;\n}\nfunction stopAnimations(el) {\n return Promise.all(\n el.getAnimations().map((animation) => {\n return new Promise((resolve) => {\n const handleAnimationEvent = requestAnimationFrame(resolve);\n animation.addEventListener(\"cancel\", () => handleAnimationEvent, { once: true });\n animation.addEventListener(\"finish\", () => handleAnimationEvent, { once: true });\n animation.cancel();\n });\n })\n );\n}\nfunction shimKeyframesHeightAuto(keyframes, calculatedHeight) {\n return keyframes.map((keyframe) => __spreadProps(__spreadValues({}, keyframe), {\n height: keyframe.height === \"auto\" ? `${calculatedHeight}px` : keyframe.height\n }));\n}\n\nexport {\n animateTo,\n parseDuration,\n prefersReducedMotion,\n stopAnimations,\n shimKeyframesHeightAuto\n};\n","const connectedElements = new Set();\nconst documentElementObserver = new MutationObserver(update);\nconst translations = new Map();\nlet documentDirection = document.documentElement.dir || 'ltr';\nlet documentLanguage = document.documentElement.lang || navigator.language;\nlet fallback;\ndocumentElementObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir', 'lang']\n});\nexport function registerTranslation(...translation) {\n translation.map(t => {\n const code = t.$code.toLowerCase();\n if (translations.has(code)) {\n translations.set(code, Object.assign(Object.assign({}, translations.get(code)), t));\n }\n else {\n translations.set(code, t);\n }\n if (!fallback) {\n fallback = t;\n }\n });\n update();\n}\nexport function update() {\n documentDirection = document.documentElement.dir || 'ltr';\n documentLanguage = document.documentElement.lang || navigator.language;\n [...connectedElements.keys()].map((el) => {\n if (typeof el.requestUpdate === 'function') {\n el.requestUpdate();\n }\n });\n}\nexport class LocalizeController {\n constructor(host) {\n this.host = host;\n this.host.addController(this);\n }\n hostConnected() {\n connectedElements.add(this.host);\n }\n hostDisconnected() {\n connectedElements.delete(this.host);\n }\n dir() {\n return `${this.host.dir || documentDirection}`.toLowerCase();\n }\n lang() {\n return `${this.host.lang || documentLanguage}`.toLowerCase();\n }\n getTranslationData(lang) {\n var _a, _b;\n const locale = new Intl.Locale(lang);\n const language = locale === null || locale === void 0 ? void 0 : locale.language.toLowerCase();\n const region = (_b = (_a = locale === null || locale === void 0 ? void 0 : locale.region) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : '';\n const primary = translations.get(`${language}-${region}`);\n const secondary = translations.get(language);\n return { locale, language, region, primary, secondary };\n }\n exists(key, options) {\n var _a;\n const { primary, secondary } = this.getTranslationData((_a = options.lang) !== null && _a !== void 0 ? _a : this.lang());\n options = Object.assign({ includeFallback: false }, options);\n if ((primary && primary[key]) ||\n (secondary && secondary[key]) ||\n (options.includeFallback && fallback && fallback[key])) {\n return true;\n }\n return false;\n }\n term(key, ...args) {\n const { primary, secondary } = this.getTranslationData(this.lang());\n let term;\n if (primary && primary[key]) {\n term = primary[key];\n }\n else if (secondary && secondary[key]) {\n term = secondary[key];\n }\n else if (fallback && fallback[key]) {\n term = fallback[key];\n }\n else {\n console.error(`No translation found for: ${String(key)}`);\n return String(key);\n }\n if (typeof term === 'function') {\n return term(...args);\n }\n return term;\n }\n date(dateToFormat, options) {\n dateToFormat = new Date(dateToFormat);\n return new Intl.DateTimeFormat(this.lang(), options).format(dateToFormat);\n }\n number(numberToFormat, options) {\n numberToFormat = Number(numberToFormat);\n return isNaN(numberToFormat) ? '' : new Intl.NumberFormat(this.lang(), options).format(numberToFormat);\n }\n relativeTime(value, unit, options) {\n return new Intl.RelativeTimeFormat(this.lang(), options).format(value, unit);\n }\n}\n","// src/utilities/localize.ts\nimport { LocalizeController as DefaultLocalizationController } from \"@shoelace-style/localize\";\nimport { registerTranslation } from \"@shoelace-style/localize\";\nvar LocalizeController = class extends DefaultLocalizationController {\n};\n\nexport {\n LocalizeController,\n registerTranslation\n};\n","// src/components/icon/library.system.ts\nvar icons = {\n caret: `\n \n \n \n `,\n check: `\n \n \n \n \n \n \n \n \n \n \n `,\n \"chevron-down\": `\n \n \n \n `,\n \"chevron-left\": `\n \n \n \n `,\n \"chevron-right\": `\n \n \n \n `,\n eye: `\n \n \n \n \n `,\n \"eye-slash\": `\n \n \n \n \n \n `,\n eyedropper: `\n \n \n \n `,\n \"grip-vertical\": `\n \n \n \n `,\n indeterminate: `\n \n \n \n \n \n \n \n \n \n `,\n \"person-fill\": `\n \n \n \n `,\n \"play-fill\": `\n \n \n \n `,\n \"pause-fill\": `\n \n \n \n `,\n radio: `\n \n \n \n \n \n \n \n `,\n \"star-fill\": `\n \n \n \n `,\n \"x-lg\": `\n \n \n \n `,\n \"x-circle-fill\": `\n \n \n \n `\n};\nvar systemLibrary = {\n name: \"system\",\n resolver: (name) => {\n if (name in icons) {\n return `data:image/svg+xml,${encodeURIComponent(icons[name])}`;\n }\n return \"\";\n }\n};\nvar library_system_default = systemLibrary;\n\nexport {\n library_system_default\n};\n","// src/utilities/base-path.ts\nvar basePath = \"\";\nfunction setBasePath(path) {\n basePath = path;\n}\nfunction getBasePath(subpath = \"\") {\n if (!basePath) {\n const scripts = [...document.getElementsByTagName(\"script\")];\n const configScript = scripts.find((script) => script.hasAttribute(\"data-shoelace\"));\n if (configScript) {\n setBasePath(configScript.getAttribute(\"data-shoelace\"));\n } else {\n const fallbackScript = scripts.find((s) => {\n return /shoelace(\\.min)?\\.js($|\\?)/.test(s.src) || /shoelace-autoloader(\\.min)?\\.js($|\\?)/.test(s.src);\n });\n let path = \"\";\n if (fallbackScript) {\n path = fallbackScript.getAttribute(\"src\");\n }\n setBasePath(path.split(\"/\").slice(0, -1).join(\"/\"));\n }\n }\n return basePath.replace(/\\/$/, \"\") + (subpath ? `/${subpath.replace(/^\\//, \"\")}` : ``);\n}\n\nexport {\n setBasePath,\n getBasePath\n};\n","import {\n getBasePath\n} from \"./chunk.3Y6SB6QS.js\";\n\n// src/components/icon/library.default.ts\nvar library = {\n name: \"default\",\n resolver: (name) => getBasePath(`assets/icons/${name}.svg`)\n};\nvar library_default_default = library;\n\nexport {\n library_default_default\n};\n","import {\n library_system_default\n} from \"./chunk.I33L3NO6.js\";\nimport {\n library_default_default\n} from \"./chunk.P7ZG6EMR.js\";\n\n// src/components/icon/library.ts\nvar registry = [library_default_default, library_system_default];\nvar watchedIcons = [];\nfunction watchIcon(icon) {\n watchedIcons.push(icon);\n}\nfunction unwatchIcon(icon) {\n watchedIcons = watchedIcons.filter((el) => el !== icon);\n}\nfunction getIconLibrary(name) {\n return registry.find((lib) => lib.name === name);\n}\nfunction registerIconLibrary(name, options) {\n unregisterIconLibrary(name);\n registry.push({\n name,\n resolver: options.resolver,\n mutator: options.mutator,\n spriteSheet: options.spriteSheet\n });\n watchedIcons.forEach((icon) => {\n if (icon.library === name) {\n icon.setIcon();\n }\n });\n}\nfunction unregisterIconLibrary(name) {\n registry = registry.filter((lib) => lib.name !== name);\n}\n\nexport {\n watchIcon,\n unwatchIcon,\n getIconLibrary,\n registerIconLibrary,\n unregisterIconLibrary\n};\n","import {\n component_styles_default\n} from \"./chunk.TUVJKY7S.js\";\n\n// src/components/icon/icon.styles.ts\nimport { css } from \"lit\";\nvar icon_styles_default = css`\n ${component_styles_default}\n\n :host {\n display: inline-block;\n width: 1em;\n height: 1em;\n box-sizing: content-box !important;\n }\n\n svg {\n display: block;\n height: 100%;\n width: 100%;\n }\n`;\n\nexport {\n icon_styles_default\n};\n","import {\n __spreadValues\n} from \"./chunk.5F6CPPXO.js\";\n\n// src/internal/watch.ts\nfunction watch(propertyName, options) {\n const resolvedOptions = __spreadValues({\n waitUntilFirstUpdate: false\n }, options);\n return (proto, decoratedFnName) => {\n const { update } = proto;\n const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];\n proto.update = function(changedProps) {\n watchedProperties.forEach((property) => {\n const key = property;\n if (changedProps.has(key)) {\n const oldValue = changedProps.get(key);\n const newValue = this[key];\n if (oldValue !== newValue) {\n if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {\n this[decoratedFnName](oldValue, newValue);\n }\n }\n }\n });\n update.call(this, changedProps);\n };\n };\n}\n\nexport {\n watch\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i=(i,e)=>\"method\"===e.kind&&e.descriptor&&!(\"value\"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i)}}:{kind:\"field\",key:Symbol(),placement:\"own\",descriptor:{},originalKey:e.key,initializer(){\"function\"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(n){n.createProperty(e.key,i)}},e=(i,e,n)=>{e.constructor.createProperty(n,i)};function n(n){return(t,o)=>void 0!==o?e(n,t,o):i(n,t)}export{n as property};\n//# sourceMappingURL=property.js.map\n","import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function i(i,n){return o({descriptor:o=>{const t={get(){var o,n;return null!==(n=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==n?n:null},enumerable:!0,configurable:!0};if(n){const n=\"symbol\"==typeof o?Symbol():\"__\"+o;t.get=function(){var o,t;return void 0===this[n]&&(this[n]=null!==(t=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(i))&&void 0!==t?t:null),this[n]}}return t}})}export{i as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,o)=>{Object.defineProperty(t,o,e)},t=(e,t)=>({kind:\"method\",placement:\"prototype\",key:t.key,descriptor:e}),o=({finisher:e,descriptor:t})=>(o,n)=>{var r;if(void 0===n){const n=null!==(r=o.originalKey)&&void 0!==r?r:o.key,i=null!=t?{kind:\"method\",placement:\"prototype\",key:n,descriptor:t(o.key)}:{...o,key:n};return null!=e&&(i.finisher=function(t){e(t,n)}),i}{const r=o.constructor;void 0!==t&&Object.defineProperty(o,n,t(n)),null==e||e(r,n)}};export{o as decorateProperty,e as legacyPrototypeMethod,t as standardPrototypeMethod};\n//# sourceMappingURL=base.js.map\n","import{decorateProperty as o}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var n;const e=null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE));function l(n){const{slot:l,selector:t}=null!=n?n:{};return o({descriptor:o=>({get(){var o;const r=\"slot\"+(l?`[name=${l}]`:\":not([name])\"),i=null===(o=this.renderRoot)||void 0===o?void 0:o.querySelector(r),s=null!=i?e(i,n):[];return t?s.filter((o=>o.matches(t))):s},enumerable:!0,configurable:!0})})}export{l as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n","import {\n __decorateClass,\n __spreadValues\n} from \"./chunk.5F6CPPXO.js\";\n\n// src/internal/shoelace-element.ts\nimport { LitElement } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nvar ShoelaceElement = class extends LitElement {\n constructor() {\n super();\n Object.entries(this.constructor.dependencies).forEach(([name, component]) => {\n this.constructor.define(name, component);\n });\n }\n emit(name, options) {\n const event = new CustomEvent(name, __spreadValues({\n bubbles: true,\n cancelable: false,\n composed: true,\n detail: {}\n }, options));\n this.dispatchEvent(event);\n return event;\n }\n /* eslint-enable */\n static define(name, elementConstructor = this, options = {}) {\n const currentlyRegisteredConstructor = customElements.get(name);\n if (!currentlyRegisteredConstructor) {\n customElements.define(name, class extends elementConstructor {\n }, options);\n return;\n }\n let newVersion = \" (unknown version)\";\n let existingVersion = newVersion;\n if (\"version\" in elementConstructor && elementConstructor.version) {\n newVersion = \" v\" + elementConstructor.version;\n }\n if (\"version\" in currentlyRegisteredConstructor && currentlyRegisteredConstructor.version) {\n existingVersion = \" v\" + currentlyRegisteredConstructor.version;\n }\n if (newVersion && existingVersion && newVersion === existingVersion) {\n return;\n }\n console.warn(\n `Attempted to register <${name}>${newVersion}, but <${name}>${existingVersion} has already been registered.`\n );\n }\n};\n/* eslint-disable */\n// @ts-expect-error This is auto-injected at build time.\nShoelaceElement.version = \"2.6.0\";\nShoelaceElement.dependencies = {};\n__decorateClass([\n property()\n], ShoelaceElement.prototype, \"dir\", 2);\n__decorateClass([\n property()\n], ShoelaceElement.prototype, \"lang\", 2);\n\nexport {\n ShoelaceElement\n};\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:l}=o,t=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,i={HTML:1,SVG:2},n=(o,l)=>void 0===l?void 0!==(null==o?void 0:o._$litType$):(null==o?void 0:o._$litType$)===l,d=o=>void 0!==(null==o?void 0:o._$litDirective$),v=o=>null==o?void 0:o._$litDirective$,e=o=>void 0===o.strings,c=()=>document.createComment(\"\"),r=(o,t,i)=>{var n;const d=o._$AA.parentNode,v=void 0===t?o._$AB:t._$AA;if(void 0===i){const t=d.insertBefore(c(),v),n=d.insertBefore(c(),v);i=new l(t,n,o,o.options)}else{const l=i._$AB.nextSibling,t=i._$AM,e=t!==o;if(e){let l;null===(n=i._$AQ)||void 0===n||n.call(i,o),i._$AM=o,void 0!==i._$AP&&(l=o._$AU)!==t._$AU&&i._$AP(l)}if(l!==v||e){let o=i._$AA;for(;o!==l;){const l=o.nextSibling;d.insertBefore(o,v),o=l}}}return i},u=(o,l,t=o)=>(o._$AI(l,t),o),f={},s=(o,l=f)=>o._$AH=l,m=o=>o._$AH,p=o=>{var l;null===(l=o._$AP)||void 0===l||l.call(o,!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},a=o=>{o._$AR()};export{i as TemplateResultType,a as clearPart,m as getCommittedValue,v as getDirectiveClass,r as insertPart,d as isDirectiveResult,t as isPrimitive,e as isSingleExpression,n as isTemplateResult,p as removePart,u as setChildPartValue,s as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import {\n getIconLibrary,\n unwatchIcon,\n watchIcon\n} from \"./chunk.QSGNZ7NT.js\";\nimport {\n icon_styles_default\n} from \"./chunk.LMJPQPQT.js\";\nimport {\n watch\n} from \"./chunk.CJDR7567.js\";\nimport {\n ShoelaceElement\n} from \"./chunk.7UUIUZXI.js\";\nimport {\n __decorateClass\n} from \"./chunk.5F6CPPXO.js\";\n\n// src/components/icon/icon.component.ts\nimport { html } from \"lit\";\nimport { isTemplateResult } from \"lit/directive-helpers.js\";\nimport { property, state } from \"lit/decorators.js\";\nvar CACHEABLE_ERROR = Symbol();\nvar RETRYABLE_ERROR = Symbol();\nvar parser;\nvar iconCache = /* @__PURE__ */ new Map();\nvar SlIcon = class extends ShoelaceElement {\n constructor() {\n super(...arguments);\n this.initialRender = false;\n this.svg = null;\n this.label = \"\";\n this.library = \"default\";\n }\n /** Given a URL, this function returns the resulting SVG element or an appropriate error symbol. */\n async resolveIcon(url, library) {\n var _a;\n let fileData;\n if (library == null ? void 0 : library.spriteSheet) {\n return html`\n \n `;\n }\n try {\n fileData = await fetch(url, { mode: \"cors\" });\n if (!fileData.ok)\n return fileData.status === 410 ? CACHEABLE_ERROR : RETRYABLE_ERROR;\n } catch (e) {\n return RETRYABLE_ERROR;\n }\n try {\n const div = document.createElement(\"div\");\n div.innerHTML = await fileData.text();\n const svg = div.firstElementChild;\n if (((_a = svg == null ? void 0 : svg.tagName) == null ? void 0 : _a.toLowerCase()) !== \"svg\")\n return CACHEABLE_ERROR;\n if (!parser)\n parser = new DOMParser();\n const doc = parser.parseFromString(svg.outerHTML, \"text/html\");\n const svgEl = doc.body.querySelector(\"svg\");\n if (!svgEl)\n return CACHEABLE_ERROR;\n svgEl.part.add(\"svg\");\n return document.adoptNode(svgEl);\n } catch (e) {\n return CACHEABLE_ERROR;\n }\n }\n connectedCallback() {\n super.connectedCallback();\n watchIcon(this);\n }\n firstUpdated() {\n this.initialRender = true;\n this.setIcon();\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n unwatchIcon(this);\n }\n getUrl() {\n const library = getIconLibrary(this.library);\n if (this.name && library) {\n return library.resolver(this.name);\n }\n return this.src;\n }\n handleLabelChange() {\n const hasLabel = typeof this.label === \"string\" && this.label.length > 0;\n if (hasLabel) {\n this.setAttribute(\"role\", \"img\");\n this.setAttribute(\"aria-label\", this.label);\n this.removeAttribute(\"aria-hidden\");\n } else {\n this.removeAttribute(\"role\");\n this.removeAttribute(\"aria-label\");\n this.setAttribute(\"aria-hidden\", \"true\");\n }\n }\n async setIcon() {\n var _a;\n const library = getIconLibrary(this.library);\n const url = this.getUrl();\n if (!url) {\n this.svg = null;\n return;\n }\n let iconResolver = iconCache.get(url);\n if (!iconResolver) {\n iconResolver = this.resolveIcon(url, library);\n iconCache.set(url, iconResolver);\n }\n if (!this.initialRender) {\n return;\n }\n const svg = await iconResolver;\n if (svg === RETRYABLE_ERROR) {\n iconCache.delete(url);\n }\n if (url !== this.getUrl()) {\n return;\n }\n if (isTemplateResult(svg)) {\n this.svg = svg;\n return;\n }\n switch (svg) {\n case RETRYABLE_ERROR:\n case CACHEABLE_ERROR:\n this.svg = null;\n this.emit(\"sl-error\");\n break;\n default:\n this.svg = svg.cloneNode(true);\n (_a = library == null ? void 0 : library.mutator) == null ? void 0 : _a.call(library, this.svg);\n this.emit(\"sl-load\");\n }\n }\n render() {\n return this.svg;\n }\n};\nSlIcon.styles = icon_styles_default;\n__decorateClass([\n state()\n], SlIcon.prototype, \"svg\", 2);\n__decorateClass([\n property({ reflect: true })\n], SlIcon.prototype, \"name\", 2);\n__decorateClass([\n property()\n], SlIcon.prototype, \"src\", 2);\n__decorateClass([\n property()\n], SlIcon.prototype, \"label\", 2);\n__decorateClass([\n property({ reflect: true })\n], SlIcon.prototype, \"library\", 2);\n__decorateClass([\n watch(\"label\")\n], SlIcon.prototype, \"handleLabelChange\", 1);\n__decorateClass([\n watch([\"name\", \"src\", \"library\"])\n], SlIcon.prototype, \"setIcon\", 1);\n\nexport {\n SlIcon\n};\n","import{property as r}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function t(t){return r({...t,state:!0})}export{t as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as i,Directive as s,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=i(class extends s{constructor(t){var i;if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||(null===(i=t.strings)||void 0===i?void 0:i.length)>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((i=>t[i])).join(\" \")+\" \"}update(i,[s]){var r,o;if(void 0===this.it){this.it=new Set,void 0!==i.strings&&(this.nt=new Set(i.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in s)s[t]&&!(null===(r=this.nt)||void 0===r?void 0:r.has(t))&&this.it.add(t);return this.render(s)}const e=i.element.classList;this.it.forEach((t=>{t in s||(e.remove(t),this.it.delete(t))}));for(const t in s){const i=!!s[t];i===this.it.has(t)||(null===(o=this.nt)||void 0===o?void 0:o.has(t))||(i?(e.add(t),this.it.add(t)):(e.remove(t),this.it.delete(t)))}return t}});export{o as classMap};\n//# sourceMappingURL=class-map.js.map\n","import {\n details_styles_default\n} from \"./chunk.WIJ5PGEU.js\";\nimport {\n getAnimation,\n setDefaultAnimation\n} from \"./chunk.LBC6JESY.js\";\nimport {\n waitForEvent\n} from \"./chunk.B4BZKR24.js\";\nimport {\n animateTo,\n shimKeyframesHeightAuto,\n stopAnimations\n} from \"./chunk.CEMITGOC.js\";\nimport {\n LocalizeController\n} from \"./chunk.2A3352EO.js\";\nimport {\n SlIcon\n} from \"./chunk.M34G3YZA.js\";\nimport {\n watch\n} from \"./chunk.CJDR7567.js\";\nimport {\n ShoelaceElement\n} from \"./chunk.7UUIUZXI.js\";\nimport {\n __decorateClass\n} from \"./chunk.5F6CPPXO.js\";\n\n// src/components/details/details.component.ts\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { html } from \"lit\";\nimport { property, query } from \"lit/decorators.js\";\nvar SlDetails = class extends ShoelaceElement {\n constructor() {\n super(...arguments);\n this.localize = new LocalizeController(this);\n this.open = false;\n this.disabled = false;\n }\n firstUpdated() {\n this.body.style.height = this.open ? \"auto\" : \"0\";\n if (this.open) {\n this.details.open = true;\n }\n this.detailsObserver = new MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName === \"open\") {\n if (this.details.open) {\n this.show();\n } else {\n this.hide();\n }\n }\n }\n });\n this.detailsObserver.observe(this.details, { attributes: true });\n }\n disconnectedCallback() {\n this.detailsObserver.disconnect();\n }\n handleSummaryClick(ev) {\n ev.preventDefault();\n if (!this.disabled) {\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n this.header.focus();\n }\n }\n handleSummaryKeyDown(event) {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n }\n if (event.key === \"ArrowUp\" || event.key === \"ArrowLeft\") {\n event.preventDefault();\n this.hide();\n }\n if (event.key === \"ArrowDown\" || event.key === \"ArrowRight\") {\n event.preventDefault();\n this.show();\n }\n }\n async handleOpenChange() {\n if (this.open) {\n this.details.open = true;\n const slShow = this.emit(\"sl-show\", { cancelable: true });\n if (slShow.defaultPrevented) {\n this.open = false;\n this.details.open = false;\n return;\n }\n await stopAnimations(this.body);\n const { keyframes, options } = getAnimation(this, \"details.show\", { dir: this.localize.dir() });\n await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);\n this.body.style.height = \"auto\";\n this.emit(\"sl-after-show\");\n } else {\n const slHide = this.emit(\"sl-hide\", { cancelable: true });\n if (slHide.defaultPrevented) {\n this.details.open = true;\n this.open = true;\n return;\n }\n await stopAnimations(this.body);\n const { keyframes, options } = getAnimation(this, \"details.hide\", { dir: this.localize.dir() });\n await animateTo(this.body, shimKeyframesHeightAuto(keyframes, this.body.scrollHeight), options);\n this.body.style.height = \"auto\";\n this.details.open = false;\n this.emit(\"sl-after-hide\");\n }\n }\n /** Shows the details. */\n async show() {\n if (this.open || this.disabled) {\n return void 0;\n }\n this.open = true;\n return waitForEvent(this, \"sl-after-show\");\n }\n /** Hides the details */\n async hide() {\n if (!this.open || this.disabled) {\n return void 0;\n }\n this.open = false;\n return waitForEvent(this, \"sl-after-hide\");\n }\n render() {\n const isRtl = this.localize.dir() === \"rtl\";\n return html`\n \n \n ${this.summary}\n\n \n \n \n \n \n \n \n \n \n\n
\n \n
\n \n `;\n }\n};\nSlDetails.styles = details_styles_default;\nSlDetails.dependencies = {\n \"sl-icon\": SlIcon\n};\n__decorateClass([\n query(\".details\")\n], SlDetails.prototype, \"details\", 2);\n__decorateClass([\n query(\".details__header\")\n], SlDetails.prototype, \"header\", 2);\n__decorateClass([\n query(\".details__body\")\n], SlDetails.prototype, \"body\", 2);\n__decorateClass([\n query(\".details__expand-icon-slot\")\n], SlDetails.prototype, \"expandIconSlot\", 2);\n__decorateClass([\n property({ type: Boolean, reflect: true })\n], SlDetails.prototype, \"open\", 2);\n__decorateClass([\n property()\n], SlDetails.prototype, \"summary\", 2);\n__decorateClass([\n property({ type: Boolean, reflect: true })\n], SlDetails.prototype, \"disabled\", 2);\n__decorateClass([\n watch(\"open\", { waitUntilFirstUpdate: true })\n], SlDetails.prototype, \"handleOpenChange\", 1);\nsetDefaultAnimation(\"details.show\", {\n keyframes: [\n { height: \"0\", opacity: \"0\" },\n { height: \"auto\", opacity: \"1\" }\n ],\n options: { duration: 250, easing: \"linear\" }\n});\nsetDefaultAnimation(\"details.hide\", {\n keyframes: [\n { height: \"auto\", opacity: \"1\" },\n { height: \"0\", opacity: \"0\" }\n ],\n options: { duration: 250, easing: \"linear\" }\n});\n\nexport {\n SlDetails\n};\n","/*\nTurbo 7.3.0\nCopyright © 2023 37signals LLC\n */\n(function () {\n if (window.Reflect === undefined ||\n window.customElements === undefined ||\n window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n const wrapperForTheName = {\n HTMLElement: function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n },\n };\n window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function(submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype)\n return;\n let prototype = window.Event.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 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 static get observedAttributes() {\n return [\"disabled\", \"complete\", \"loading\", \"src\"];\n }\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n return this.delegate.sourceURLReloaded();\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n }\n else if (name == \"complete\") {\n this.delegate.completeChanged();\n }\n else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n }\n else {\n this.delegate.disabledChanged();\n }\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n }\n else {\n this.removeAttribute(\"src\");\n }\n }\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n }\n else {\n this.removeAttribute(\"loading\");\n }\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n }\n else {\n this.removeAttribute(\"disabled\");\n }\n }\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n }\n else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n get complete() {\n return !this.delegate.isLoading;\n }\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n get isPreview() {\n var _a, _b;\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n}\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n default:\n return FrameLoadingStyle.eager;\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n }\n else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1];\n }\n}\nfunction getAction(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n }\n else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\n }\n}\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n }\n else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getMetaContent(\"csp-nonce\");\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail,\n });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n }\n else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n }\n else if (i == 14) {\n return \"4\";\n }\n else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n }\n else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n })\n .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\")\n return value;\n }\n return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n });\n}\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n}\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content;\n}\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n document.head.appendChild(element);\n }\n element.setAttribute(\"content\", content);\n return element;\n}\nfunction findClosestRecursively(element, selector) {\n var _a;\n if (element instanceof Element) {\n return (element.closest(selector) ||\n findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n case \"post\":\n return FetchMethod.post;\n case \"put\":\n return FetchMethod.put;\n case \"patch\":\n return FetchMethod.patch;\n case \"delete\":\n return FetchMethod.delete;\n }\n}\nclass FetchRequest {\n constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n this.abortController = new AbortController();\n this.resolveRequestPromise = (_value) => { };\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n await this.allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n }\n catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error;\n }\n }\n finally {\n this.delegate.requestFinished(this);\n }\n }\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target,\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n }\n else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n }\n else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse;\n }\n get fetchOptions() {\n var _a;\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isSafe ? 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 isSafe() {\n return this.method === FetchMethod.get;\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n async allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise,\n },\n target: this.target,\n });\n if (event.defaultPrevented)\n await requestInterception;\n }\n willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error },\n });\n return !event.defaultPrevented;\n }\n}\n\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\n\nclass StreamMessage {\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message));\n }\n else {\n return message;\n }\n }\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n element.replaceWith(streamElement);\n }\n return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart:\n return FormEnctype.multipart;\n case FormEnctype.plain:\n return FormEnctype.plain;\n default:\n return FormEnctype.urlEncoded;\n }\n}\nclass FormSubmission {\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message));\n }\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 get method() {\n var _a;\n const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n get action() {\n var _a;\n const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n return this.submitter.getAttribute(\"formaction\") || \"\";\n }\n else {\n return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n }\n get body() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n }\n else {\n return this.formData;\n }\n }\n get enctype() {\n var _a;\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n get isSafe() {\n return this.fetchRequest.isSafe;\n }\n get stringFormData() {\n return [...this.formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n var _a;\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n this.setSubmitsWith();\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this },\n });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n }\n else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(_request) {\n var _a;\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n this.resetSubmitterText();\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: Object.assign({ formSubmission: this }, this.result),\n });\n this.delegate.formSubmissionFinished(this);\n }\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith)\n return;\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n }\n else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText)\n return;\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n }\n else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect;\n }\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n }\n get submitsWith() {\n var _a;\n return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-turbo-submits-with\");\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name) {\n formData.append(name, value || \"\");\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n const searchParams = new URLSearchParams();\n for (const [name, value] of entries) {\n if (value instanceof File)\n continue;\n searchParams.append(name, value);\n }\n url.search = searchParams.toString();\n return url;\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get activeElement() {\n return this.element.ownerDocument.activeElement;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n if (element.closest(inertDisabledOrHidden) == null)\n return element;\n else\n continue;\n }\n return null;\n }\n get permanentElements() {\n return queryPermanentElementsAll(this.element);\n }\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = ((event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n });\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n for (const element of document.getElementsByName(target)) {\n if (element instanceof HTMLIFrameElement)\n return false;\n }\n return true;\n }\n else {\n return true;\n }\n}\n\nclass View {\n constructor(delegate, element) {\n this.resolveRenderPromise = (_value) => { };\n this.resolveInterceptionPromise = (_value) => { };\n this.delegate = delegate;\n this.element = element;\n }\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n }\n else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n }\n else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n get scrollRoot() {\n return window;\n }\n async render(renderer) {\n const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender)\n await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n }\n finally {\n delete this.renderer;\n this.resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n }\n else {\n this.invalidate(renderer.reloadReason);\n }\n }\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n }\n else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `Content missing`;\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = (event) => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n }\n else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = ((event) => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n });\n this.willVisit = ((_event) => {\n delete this.clickEvent;\n });\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\n\nclass LinkClickObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link)) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !((event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\nfunction doesNotTargetIFrame(anchor) {\n if (anchor.hasAttribute(\"target\")) {\n for (const element of document.getElementsByName(anchor.target)) {\n if (element instanceof HTMLIFrameElement)\n return false;\n }\n return true;\n }\n else {\n return true;\n }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n }\n willFollowLinkToLocation(link, location, originalEvent) {\n return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n link.hasAttribute(\"data-turbo-method\"));\n }\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n const type = \"hidden\";\n for (const [name, value] of location.searchParams) {\n form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n }\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n const method = link.getAttribute(\"data-turbo-method\");\n if (method)\n form.setAttribute(\"method\", method);\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame)\n form.setAttribute(\"data-turbo-frame\", turboFrame);\n const turboAction = getVisitAction(link);\n if (turboAction)\n form.setAttribute(\"data-turbo-action\", turboAction);\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm)\n form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream)\n form.setAttribute(\"data-turbo-stream\", \"\");\n this.delegate.submittedFormLinkToLocation(link, location, form);\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\n\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n this.activeElement = null;\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n get shouldRender() {\n return true;\n }\n get reloadReason() {\n return;\n }\n prepareToRender() {\n return;\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n enteringBardo(currentPermanentElement) {\n if (this.activeElement)\n return;\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.activeElement = this.currentSnapshot.activeElement;\n }\n }\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n this.activeElement.focus();\n this.activeElement = null;\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n}\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n var _a;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n const frameElement = newElement;\n const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\n\nclass ProgressBar {\n static get defaultCSS() {\n return unindent `\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n 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 show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n get cspNonce() {\n return getMetaContent(\"csp-nonce\");\n }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details = outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: [],\n };\n return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element);\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements];\n }\n else if (elements.length > 1) {\n return [...result, ...elements.slice(1)];\n }\n else {\n return result;\n }\n }, []);\n }\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n }\n else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\n\nclass PageSnapshot extends Snapshot {\n 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 constructor(element, headSnapshot) {\n super(element);\n this.headSnapshot = headSnapshot;\n }\n clone() {\n const clonedElement = this.element.cloneNode(true);\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions)\n option.selected = false;\n for (const option of source.selectedOptions)\n clone.options[option.index].selected = true;\n }\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n return new PageSnapshot(clonedElement, this.headSnapshot);\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _a;\n const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => { },\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.shouldCacheSnapshot = true;\n this.acceptsStreamResponse = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.followRedirect();\n if (!this.followedRedirect) {\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n }\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n changeHistory() {\n var _a;\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n }\n else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n }\n else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot)\n this.cacheSnapshot();\n if (this.view.renderPromise)\n await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n this.complete();\n }\n else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n }\n else {\n if (this.view.renderPromise)\n await this.view.renderPromise;\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _a;\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false,\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted() {\n this.startRequest();\n }\n requestPreventedHandlingResponse(_request, _response) { }\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected,\n });\n }\n else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected,\n });\n }\n else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false,\n });\n }\n requestFinished() {\n this.finishRequest();\n }\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n }\n else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n }\n else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n }\n else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise((resolve) => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar();\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n }\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n }\n else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode,\n },\n });\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitCompleted(_visit) { }\n pageInvalidated(reason) {\n this.reload(reason);\n }\n visitFailed(_visit) { }\n visitRendered(_visit) { }\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload(reason) {\n var _a;\n dispatch(\"turbo:reload\", { detail: reason });\n window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n }\n get navigator() {\n return this.session.navigator;\n }\n}\n\nclass CacheObserver {\n constructor() {\n this.selector = \"[data-turbo-temporary]\";\n this.deprecatedSelector = \"[data-turbo-cache=false]\";\n this.started = false;\n this.removeTemporaryElements = ((_event) => {\n for (const element of this.temporaryElements) {\n element.remove();\n }\n });\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n get temporaryElements() {\n return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation];\n }\n get temporaryElementsWithDeprecation() {\n const elements = document.querySelectorAll(this.deprecatedSelector);\n if (elements.length) {\n console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`);\n }\n return [...elements];\n }\n}\n\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldRedirect(element);\n }\n linkClickIntercepted(element, url, event) {\n const frame = this.findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n willSubmitForm(element, submitter) {\n return (element.closest(\"turbo-frame\") == null &&\n this.shouldSubmit(element, submitter) &&\n this.shouldRedirect(element, submitter));\n }\n formSubmitted(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n shouldSubmit(form, submitter) {\n var _a;\n const action = getAction(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n shouldRedirect(element, submitter) {\n const isNavigatable = element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n if (isNavigatable) {\n const frame = this.findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n }\n else {\n return false;\n }\n }\n findFrameElement(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n}\n\nclass History {\n constructor(delegate) {\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location, restorationIdentifier = uuid()) {\n const state = { turbo: { restorationIdentifier } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n assumeControlOfScrollRestoration() {\n var _a;\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n else {\n window.location.href = location.toString();\n }\n }\n }\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.isSafe;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n const { statusCode, redirected } = fetchResponse;\n const action = this.getActionForFormSubmission(formSubmission);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected },\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n }\n else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n return (action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n getActionForFormSubmission({ submitter, formElement }) {\n return getVisitAction(submitter, formElement) || \"advance\";\n }\n}\n\nvar PageStage;\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n }\n else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\n\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n }\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n return permanentElementMap;\n}\n\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set();\n this.started = false;\n this.inspectFetchResponse = ((event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n });\n this.receiveMessageEvent = (event) => {\n if (this.started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _a;\n const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _a;\n const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n documentElement.replaceChild(newElement, body);\n }\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\");\n }\n}\n\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n }\n else {\n document.documentElement.appendChild(newElement);\n }\n }\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\",\n };\n }\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\",\n };\n }\n }\n async prepareToRender() {\n await this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n await mergedHeadElements;\n await newStylesheetElements;\n }\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n document.head.appendChild(element);\n }\n await Promise.all(loadingElements);\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n isCurrentElementInElementList(element, elementList) {\n for (const [index, newElement] of elementList.entries()) {\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue;\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true;\n }\n }\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true;\n }\n }\n return false;\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\n\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1)\n this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n this.forceReloaded = false;\n }\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n }\n else {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n }\n return this.render(renderer);\n }\n renderError(snapshot, visit) {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot(snapshot = this.snapshot) {\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const { lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n}\n\nclass Preloader {\n constructor(delegate) {\n this.selector = \"a[data-turbo-preload]\";\n this.delegate = delegate;\n }\n get snapshotCache() {\n return this.delegate.navigator.view.snapshotCache;\n }\n start() {\n if (document.readyState === \"loading\") {\n return document.addEventListener(\"DOMContentLoaded\", () => {\n this.preloadOnLoadLinksForView(document.body);\n });\n }\n else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n this.preloadURL(link);\n }\n }\n async preloadURL(link) {\n const location = new URL(link.href);\n if (this.snapshotCache.has(location)) {\n return;\n }\n try {\n const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n const responseText = await response.text();\n const snapshot = PageSnapshot.fromHTMLString(responseText);\n this.snapshotCache.put(location, snapshot);\n }\n catch (_) {\n }\n }\n}\n\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.preloader = new Preloader(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this, window);\n this.formSubmitObserver = new FormSubmitObserver(this, document);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n this.frameRedirector = new FrameRedirector(this, document.documentElement);\n this.streamMessageRenderer = new StreamMessageRenderer();\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n this.formMode = \"on\";\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n if (frameElement instanceof FrameElement) {\n frameElement.src = location.toString();\n frameElement.loaded;\n }\n else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n setFormMode(mode) {\n this.formMode = mode;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n });\n }\n else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\",\n });\n }\n }\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n }\n submittedFormLinkToLocation() { }\n willFollowLinkToLocation(link, location, event) {\n return (this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event));\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n willSubmitForm(form, submitter) {\n const action = getAction(form, submitter);\n return (this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n viewWillCacheSnapshot() {\n var _a;\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const { defaultPrevented, detail: { render }, } = event;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: { url: location.href, originalEvent: event },\n cancelable: true,\n });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true,\n });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: Object.assign({ newBody }, options),\n cancelable: true,\n });\n }\n notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing },\n });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString(),\n }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true,\n });\n }\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false;\n }\n else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n }\n else {\n return submitterIsNavigatable && this.elementIsNavigatable(form);\n }\n }\n }\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n if (this.drive || withinFrame) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n }\n else {\n return true;\n }\n }\n else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n }\n else {\n return false;\n }\n }\n }\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\";\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n },\n },\n};\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n clear() {\n this.session.clearCache();\n }\n resetCacheControl() {\n this.setCacheControl(\"\");\n }\n exemptPageFromCache() {\n this.setCacheControl(\"no-cache\");\n }\n exemptPageFromPreview() {\n this.setCacheControl(\"no-preview\");\n }\n setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach((e) => e.remove());\n },\n replace() {\n this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach((targetElement) => {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n });\n },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n session.start();\n}\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\nfunction clearCache() {\n console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode,\n StreamActions: StreamActions\n});\n\nclass TurboFrameMissingError extends Error {\n}\n\nclass FrameController {\n constructor(element) {\n this.fetchResponseLoaded = (_fetchResponse) => { };\n this.currentFetchRequest = null;\n this.resolveVisitPromise = () => { };\n this.connected = false;\n this.hasBeenLoaded = false;\n this.ignoredAttributes = new Set();\n this.action = null;\n this.visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n delete this.previousFrameElement;\n };\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n connect() {\n if (!this.connected) {\n this.connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n sourceURLChanged() {\n if (this.isIgnoringChangesTo(\"src\"))\n return;\n if (this.element.isConnected) {\n this.complete = false;\n }\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n sourceURLReloaded() {\n const { src } = this.element;\n this.ignoringChangesToAttribute(\"complete\", () => {\n this.element.removeAttribute(\"complete\");\n });\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded;\n }\n completeChanged() {\n if (this.isIgnoringChangesTo(\"complete\"))\n return;\n this.loadSourceURL();\n }\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.appearanceObserver.stop();\n this.loadSourceURL();\n }\n }\n async loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.hasBeenLoaded = true;\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const document = parseHTMLDocument(html);\n const pageSnapshot = PageSnapshot.fromDocument(document);\n if (pageSnapshot.isVisitable) {\n await this.loadFrameResponse(fetchResponse, document);\n }\n else {\n await this.handleUnvisitableFrameResponse(fetchResponse);\n }\n }\n }\n finally {\n this.fetchResponseLoaded = () => { };\n }\n }\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, element);\n this.loadSourceURL();\n }\n willSubmitFormLinkToLocation(link) {\n return this.shouldInterceptNavigation(link);\n }\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.findFrameElement(link);\n if (frame)\n form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldInterceptNavigation(element);\n }\n linkClickIntercepted(element, location) {\n this.navigateFrame(element, location);\n }\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n }\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n prepareRequest(request) {\n var _a;\n request.headers[\"Turbo-Frame\"] = this.id;\n if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(_request, _response) {\n this.resolveVisitPromise();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n async requestFailedWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: Object.assign({ newFrame }, options),\n cancelable: true,\n });\n const { defaultPrevented, detail: { render }, } = event;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) { }\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n viewInvalidated() { }\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n async loadFrameResponse(fetchResponse, document) {\n const newFrameElement = await this.extractForeignFrameElement(document.body);\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n if (this.view.renderPromise)\n await this.view.renderPromise;\n this.changeHistory();\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n }\n else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n this.handleFrameMissingFromResponse(fetchResponse);\n }\n }\n async visit(url) {\n var _a;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return new Promise((resolve) => {\n this.resolveVisitPromise = () => {\n this.resolveVisitPromise = () => { };\n this.currentFetchRequest = null;\n resolve();\n };\n request.perform();\n });\n }\n navigateFrame(element, url, submitter) {\n const frame = this.findFrameElement(element, submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n this.withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n this.action = getVisitAction(submitter, element, frame);\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const { visitCachedSnapshot } = frame.delegate;\n frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n const response = { statusCode, redirected, responseHTML };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot,\n };\n if (this.action)\n options.action = this.action;\n session.visit(frame.src, options);\n }\n };\n }\n }\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n async handleUnvisitableFrameResponse(fetchResponse) {\n console.warn(`The response (${fetchResponse.statusCode}) from is performing a full page visit due to turbo-visit-control.`);\n await this.visitResponse(fetchResponse.response);\n }\n willHandleFrameMissingFromResponse(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n const response = fetchResponse.response;\n const visit = async (url, options = {}) => {\n if (url instanceof Response) {\n this.visitResponse(url);\n }\n else {\n session.visit(url, options);\n }\n };\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: { response, visit },\n cancelable: true,\n });\n return !event.defaultPrevented;\n }\n handleFrameMissingFromResponse(fetchResponse) {\n this.view.missing();\n this.throwFrameMissingError(fetchResponse);\n }\n throwFrameMissingError(fetchResponse) {\n const message = `The response (${fetchResponse.statusCode}) did not contain the expected and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n throw new TurboFrameMissingError(message);\n }\n async visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const { location, redirected, statusCode } = wrapped;\n return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n }\n findFrameElement(element, submitter) {\n var _a;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element;\n }\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n }\n catch (error) {\n console.error(error);\n return new FrameElement();\n }\n return null;\n }\n formActionIsVisitable(form, submitter) {\n const action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementIsNavigatable(element)) {\n return false;\n }\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false;\n }\n return true;\n }\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n set sourceURL(sourceURL) {\n this.ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n });\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n get complete() {\n return this.element.hasAttribute(\"complete\");\n }\n set complete(value) {\n this.ignoringChangesToAttribute(\"complete\", () => {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n }\n else {\n this.element.removeAttribute(\"complete\");\n }\n });\n }\n get isActive() {\n return this.element.isActive && this.connected;\n }\n get rootLocation() {\n var _a;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n isIgnoringChangesTo(attributeName) {\n return this.ignoredAttributes.has(attributeName);\n }\n ignoringChangesToAttribute(attributeName, callback) {\n this.ignoredAttributes.add(attributeName);\n callback();\n this.ignoredAttributes.delete(attributeName);\n }\n withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\n\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n async connectedCallback() {\n try {\n await this.render();\n }\n catch (error) {\n console.error(error);\n }\n finally {\n this.disconnect();\n }\n }\n async render() {\n var _a;\n return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n const event = this.beforeRenderEvent;\n if (this.dispatchEvent(event)) {\n await nextAnimationFrame();\n await event.detail.render(this);\n }\n })()));\n }\n disconnect() {\n try {\n this.remove();\n }\n catch (_a) { }\n }\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach((c) => c.remove());\n }\n get duplicateChildren() {\n var _a;\n const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n }\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction;\n }\n this.raise(\"unknown action\");\n }\n this.raise(\"action attribute is missing\");\n }\n get targetElements() {\n if (this.target) {\n return this.targetElementsById;\n }\n else if (this.targets) {\n return this.targetElementsByQuery;\n }\n else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n get templateContent() {\n return this.templateElement.content.cloneNode(true);\n }\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template;\n }\n else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n this.raise(\"first child element must be a