{"version":3,"mappings":"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","names":["FrameLoadingStyle","FrameElement","name","value","frameLoadingStyleFromString","style","drive","activateScriptElement","element","createdScriptElement","cspNonce","getCspNonce","copyElementAttributes","sourceElement","destinationElement","createDocumentFragment","template","html","dispatch","event","eventName","target","cancelEvent","nextRepaint","nextEventLoopTick","nextAnimationFrame","resolve","parseHTMLDocument","unindent","values","lines","interpolate","strings","match","indent","line","i","result","string","uuid","getAttribute","elements","attributeName","hasAttribute","markAsBusy","clearBusyState","waitForLoad","onComplete","timeoutInMilliseconds","getHistoryMethodForAction","action","isAction","getVisitAction","getMetaElement","getMetaContent","nonce","content","setMetaContent","findClosestRecursively","selector","elementIsFocusable","queryAutofocusableElement","elementOrDocumentFragment","around","before","reader","callback","doesNotTargetIFrame","findLinkFromClickTarget","link","linkTarget","debounce","timeoutId","args","fn","delay","submitter","\"disabled\"","config","#submitter","expandURL","locatable","getAnchor","anchorMatch","url","getAction$1","form","getExtension","getLastPathComponent","isPrefixedBy","prefix","addTrailingSlash","baseURL","locationIsVisitable","location","rootLocation","getLocationForLink","getRequestURL","anchor","toCacheKey","urlsAreEqual","left","right","getPathComponents","FetchResponse","response","recentRequests","maxSize","oldestValue","fetchWithTurboHeaders","modifiedHeaders","options","requestUID","fetchMethodFromString","method","FetchMethod","fetchEnctypeFromString","encoding","FetchEnctype","FetchRequest","body","buildResourceAndBody","requestBody","enctype","delegate","fetchBody","fetchMethod","#allowRequestToBeIntercepted","fetchOptions","error","#willDelegateErrorHandling","fetchResponse","isSafe","\"Accept\"","mimeType","requestInterception","#resolveRequestPromise","searchParams","entriesExcludingFiles","resource","mergeIntoURLSearchParams","entries","AppearanceObserver","StreamMessage","message","importStreamElements","fragment","streamElement","inertScriptElement","identity","key","LRUCache","size","#toCacheKey","entry","index","PREFETCH_DELAY","PrefetchCache","prefetchDelay","#prefetchTimeout","request","ttl","cacheTtl","#maxAges","maxAge","prefetchCache","FormSubmissionState","FormSubmission","getMethod","formElement","getAction","getFormAction","buildFormData","getEnctype","mustRedirect","confirmationMessage","initialized","requesting","stopping","stopped","token","getCookieValue","responseSucceededWithoutRedirect","input","formData","cookieName","cookie","formElementAction","formAction","Snapshot","queryPermanentElementsAll","getPermanentElementById","id","permanentElementMap","currentPermanentElement","newPermanentElement","snapshot","node","FormSubmitObserver","eventTarget","submissionDoesNotDismissDialog","submissionDoesNotTargetIFrame","View","x","y","renderer","shouldInvalidate","willRender","shouldRender","#resolveRenderPromise","renderInterception","#resolveInterceptionPromise","isPreview","reason","direction","FrameView","LinkInterceptor","LinkClickObserver","FormLinkClickObserver","originalEvent","turboFrame","turboAction","turboConfirm","Bardo","bardo","placeholder","createPlaceholderForPermanentElement","permanentElement","clone","Renderer","currentSnapshot","newSnapshot","#activeElement","FrameRenderer","destinationRange","currentElement","frameElement","newElement","sourceRange","renderElement","block","readScrollLogicalPosition","behavior","readScrollBehavior","activatedScriptElement","defaultValue","Idiomorph","noOp","defaults","elt","morph","normalizeElement","oldNode","newNode","normalizeParent","newContent","ctx","createMorphContext","morphedNodes","saveAndRestoreFocus","withHeadBlocking","morphChildren","morphOuterHTML","oldParent","activeElement","activeElementId","results","selectionEnd","selectionStart","newParent","newChild","insertionPoint","endPoint","bestMatch","findBestMatch","removeNodesBetween","morphNode","newChildId","movedChild","moveBeforeById","insertedNode","createNode","tempNode","removeNode","newEmptyChild","newClonedChild","softMatch","nextSibling","siblingSoftMatchCount","cursor","startPoint","isSoftMatch","isIdSetMatch","oldSet","newSet","oldElt","newElt","moveBefore","startInclusive","endExclusive","removeElementFromAncestorsIdMaps","parentNode","after","idSet","handleHeadElement","morphAttributes","ignoreValueOfActiveElement","type","oldAttributes","newAttributes","newAttribute","ignoreAttribute","oldAttribute","syncInputValue","oldElement","newValue","oldValue","syncBooleanAttribute","newLiveValue","ignoreUpdate","attr","updateType","possibleActiveElement","oldHead","newHead","promises","added","removed","preserved","nodesToAppend","srcToNewHeadNodes","newHeadChild","currentHeadElt","inNewContent","isReAppended","isPreserved","promise","_resolve","removedElement","createIdMaps","mergedConfig","mergeDefaults","morphStyle","createPantry","createActiveElementAndParents","finalConfig","pantry","activeElementAndParents","findIdElements","root","populateIdMapWithTree","persistentIds","current","idMap","oldIdElements","oldContent","newIdElements","createPersistentIds","duplicateIds","oldIdTagNameMap","tagName","generatedByIdiomorph","parseContent","SlicedParentNode","dummyParent","nodes","nodeList","referenceNode","parser","contentWithSvgsRemoved","htmlElement","morphElements","DefaultIdiomorphCallbacks","callbacks","shouldRefreshFrameWithMorphing","currentFrame","newFrame","areFramesCompatibleForRefreshing","closestFrameReloadableWithMorphing","#beforeNodeMorphed","beforeNodeMorphed","MorphingFrameRenderer","ProgressBar","HeadSnapshot","elementIsNoscript","elementWithoutNonce","details","outerHTML","elementType","elementIsTracked","matchedType","tracked","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","PageSnapshot","documentElement","head","headSnapshot","clonedElement","selectElements","clonedSelectElements","source","option","clonedPasswordInput","clonedNoscriptElement","ViewTransitioner","useViewTransition","#viewTransitionStarted","#lastOperation","render","defaultOptions","TimingMetric","VisitState","SystemStatusCode","Direction","Visit","restorationIdentifier","historyChanged","referrer","snapshotHTML","visitCachedSnapshot","updateHistory","shouldCacheSnapshot","acceptsStreamResponse","refresh","isSuccessful","statusCode","responseHTML","scrollPosition","metric","BrowserAdapter","session","visit","CacheObserver","FrameRedirector","#shouldRedirect","frame","#findFrameElement","#shouldSubmit","History","state","restorationData","additionalData","turbo","restorationIndex","LinkPrefetchObserver","#enable","#tryToPrefetchRequest","#cancelRequestIfObsolete","#tryToUsePrefetchedRequest","#isPrefetchable","#prefetchedLink","fetchRequest","#cacheTtl","#cancelPrefetchRequest","cached","turboFrameTarget","unfetchableLink","linkToTheSamePage","linkOptsOut","nonSafeLink","eventPrevented","turboPrefetchParent","turboMethod","isUJS","Navigator","formSubmission","visitOptions","#getActionForFormSubmission","#getDefaultAction","PageStage","PageObserver","readyState","ScrollObserver","position","StreamMessageRenderer","getPermanentElementMapForFragment","withAutofocusFromFragment","withPreservedFocus","permanentElementsInDocument","permanentElementInDocument","elementInStream","generatedID","elementWithAutofocus","firstAutofocusableElementInStreams","willAutofocusId","elementToAutofocus","activeElementBeforeRender","activeElementAfterRender","restoreFocusTo","elementToFocus","nodeListOfStreamElements","StreamObserver","#started","fetchResponseFromEvent","fetchResponseIsStream","ErrorRenderer","replaceableElement","PageRenderer","#setLanguage","lang","dir","mergedHeadElements","newStylesheetElements","loadingElements","newHeadElements","elementList","noscriptElement","MorphingPageRenderer","SnapshotCache","PageView","cachedSnapshot","Preloader","snapshotCache","#preloadAll","Cache","#setCacheControl","Session","adapter","isRecentRequest","requestId","isCurrentUrl","#pageRefreshDebouncePeriod","isUnsafe","isStream","frameTarget","extendURLWithDeprecatedProperties","defaultPrevented","renderMethod","ev","submitterIsNavigatable","container","withinFrame","deprecatedLocationPropertyDescriptors","sessionNavigator","start","registerAdapter","connectStreamSource","disconnectStreamSource","renderStreamMessage","setProgressBarDelay","setConfirmMethod","confirmMethod","setFormMode","mode","morphBodyElements","currentBody","newBody","morphTurboFrameElements","Turbo","TurboFrameMissingError","FrameController","#connected","#loadSourceURL","#currentFetchRequest","#isIgnoringChangesTo","#hasBeenLoaded","#shouldMorphFrame","src","#visit","document","#loadFrameResponse","#handleUnvisitableFrameResponse","#shouldInterceptNavigation","#navigateFrame","#resolveVisitPromise","newFrameElement","rendererClass","#willHandleFrameMissingFromResponse","#handleFrameMissingFromResponse","#withCurrentNavigationElement","pageSnapshot","#visitResponse","#throwFrameMissingError","wrapped","#getFrameElementById","activateElement","#formActionIsVisitable","#ignoringChangesToAttribute","sourceURL","#ignoredAttributes","currentURL","StreamActions","targetElement","scroll","StreamElement","c","existingChildren","newChildrenIds","actionFunction","#raise","StreamSourceElement","scriptElement","consumer","getConsumer","setConsumer","createConsumer","newConsumer","__vitePreload","subscribeTo","subscriptions","channel","mixin","walk","obj","camel","acc","TurboCableStreamSourceElement","snakeize","encodeMethodIntoRequestBody","isBodyInit","determineFetchMethod","formMethod","determineFormMethod","overrideMethod"],"ignoreList":[0,1,2,3,4,5],"sources":["../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js"],"sourcesContent":["/*!\nTurbo 8.0.23\nCopyright © 2026 37signals LLC\n */\nconst FrameLoadingStyle = {\n eager: \"eager\",\n lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n * \n * \n * Show all expanded messages in this frame.\n * \n *\n * \n * \n */\nclass FrameElement extends HTMLElement {\n static delegateConstructor = undefined\n\n loaded = Promise.resolve()\n\n static get observedAttributes() {\n return [\"disabled\", \"loading\", \"src\"]\n }\n\n constructor() {\n super();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n\n connectedCallback() {\n this.delegate.connect();\n }\n\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n\n reload() {\n return this.delegate.sourceURLReloaded()\n }\n\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else if (name == \"disabled\") {\n this.delegate.disabledChanged();\n }\n }\n\n /**\n * Gets the URL to lazily load source HTML from\n */\n get src() {\n return this.getAttribute(\"src\")\n }\n\n /**\n * Sets the URL to lazily load source HTML from\n */\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n\n /**\n * Gets the refresh mode for the frame.\n */\n get refresh() {\n return this.getAttribute(\"refresh\")\n }\n\n /**\n * Sets the refresh mode for the frame.\n */\n set refresh(value) {\n if (value) {\n this.setAttribute(\"refresh\", value);\n } else {\n this.removeAttribute(\"refresh\");\n }\n }\n\n get shouldReloadWithMorph() {\n return this.src && this.refresh === \"morph\"\n }\n\n /**\n * Determines if the element is loading\n */\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n }\n\n /**\n * Sets the value of if the element is loading\n */\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n\n /**\n * Gets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n get disabled() {\n return this.hasAttribute(\"disabled\")\n }\n\n /**\n * Sets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n\n /**\n * Gets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\")\n }\n\n /**\n * Sets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n\n /**\n * Determines if the element has finished loading\n */\n get complete() {\n return !this.delegate.isLoading\n }\n\n /**\n * Gets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isActive() {\n return this.ownerDocument === document && !this.isPreview\n }\n\n /**\n * Sets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isPreview() {\n return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n }\n}\n\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy\n default:\n return FrameLoadingStyle.eager\n }\n}\n\nconst drive = {\n enabled: true,\n progressBarDelay: 500,\n unvisitableExtensions: new Set(\n [\n \".7z\", \".aac\", \".apk\", \".avi\", \".bmp\", \".bz2\", \".css\", \".csv\", \".deb\", \".dmg\", \".doc\",\n \".docx\", \".exe\", \".gif\", \".gz\", \".heic\", \".heif\", \".ico\", \".iso\", \".jpeg\", \".jpg\",\n \".js\", \".json\", \".m4a\", \".mkv\", \".mov\", \".mp3\", \".mp4\", \".mpeg\", \".mpg\", \".msi\",\n \".ogg\", \".ogv\", \".pdf\", \".pkg\", \".png\", \".ppt\", \".pptx\", \".rar\", \".rtf\",\n \".svg\", \".tar\", \".tif\", \".tiff\", \".txt\", \".wav\", \".webm\", \".webp\", \".wma\", \".wmv\",\n \".xls\", \".xlsx\", \".xml\", \".zip\"\n ]\n )\n};\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element\n } else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getCspNonce();\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement\n }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\n\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail\n });\n\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n\n return event\n}\n\nfunction cancelEvent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n\nfunction nextRepaint() {\n if (document.visibilityState === \"hidden\") {\n return nextEventLoopTick()\n } else {\n return nextAnimationFrame()\n }\n}\n\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\")\n}\n\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value\n }, \"\")\n}\n\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\"\n } else if (i == 14) {\n return \"4\"\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16)\n } else {\n return Math.floor(Math.random() * 16).toString(16)\n }\n })\n .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value\n }\n\n return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName))\n}\n\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\n\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n })\n}\n\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n\n return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content\n}\n\nfunction getCspNonce() {\n const element = getMetaElement(\"csp-nonce\");\n\n if (element) {\n const { nonce, content } = element;\n return nonce == \"\" ? content : nonce\n }\n}\n\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n\n document.head.appendChild(element);\n }\n\n element.setAttribute(\"content\", content);\n\n return element\n}\n\nfunction findClosestRecursively(element, selector) {\n if (element instanceof Element) {\n return (\n element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n )\n }\n}\n\nfunction elementIsFocusable(element) {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n const before = reader();\n\n callback();\n\n await nextAnimationFrame();\n\n const after = reader();\n\n return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n if (name === \"_blank\") {\n return false\n } else if (name) {\n for (const element of document.getElementsByName(name)) {\n if (element instanceof HTMLIFrameElement) return false\n }\n\n return true\n } else {\n return true\n }\n}\n\nfunction findLinkFromClickTarget(target) {\n const link = findClosestRecursively(target, \"a[href], a[xlink\\\\:href]\");\n\n if (!link) return null\n if (link.href.startsWith(\"#\")) return null\n if (link.hasAttribute(\"download\")) return null\n\n const linkTarget = link.getAttribute(\"target\");\n if (linkTarget && linkTarget !== \"_self\") return null\n\n return link\n}\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n\n return (...args) => {\n const callback = () => fn.apply(this, args);\n clearTimeout(timeoutId);\n timeoutId = setTimeout(callback, delay);\n }\n}\n\nconst submitter = {\n \"aria-disabled\": {\n beforeSubmit: submitter => {\n submitter.setAttribute(\"aria-disabled\", \"true\");\n submitter.addEventListener(\"click\", cancelEvent);\n },\n\n afterSubmit: submitter => {\n submitter.removeAttribute(\"aria-disabled\");\n submitter.removeEventListener(\"click\", cancelEvent);\n }\n },\n\n \"disabled\": {\n beforeSubmit: submitter => submitter.disabled = true,\n afterSubmit: submitter => submitter.disabled = false\n }\n};\n\nclass Config {\n #submitter = null\n\n constructor(config) {\n Object.assign(this, config);\n }\n\n get submitter() {\n return this.#submitter\n }\n\n set submitter(value) {\n this.#submitter = submitter[value] || value;\n }\n}\n\nconst forms = new Config({\n mode: \"on\",\n submitter: \"disabled\"\n});\n\nconst config = {\n drive,\n forms\n};\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1)\n // eslint-disable-next-line no-cond-assign\n } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1]\n }\n}\n\nfunction getAction$1(form, submitter) {\n const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n return expandURL(action)\n}\n\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isPrefixedBy(baseURL, url) {\n const prefix = addTrailingSlash(url.origin + url.pathname);\n return addTrailingSlash(baseURL.href) === prefix || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location))\n}\n\nfunction getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0]\n}\n\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n\n get succeeded() {\n return this.response.ok\n }\n\n get failed() {\n return !this.succeeded\n }\n\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499\n }\n\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599\n }\n\n get redirected() {\n return this.response.redirected\n }\n\n get location() {\n return expandURL(this.response.url)\n }\n\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n }\n\n get statusCode() {\n return this.response.status\n }\n\n get contentType() {\n return this.header(\"Content-Type\")\n }\n\n get responseText() {\n return this.response.clone().text()\n }\n\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text()\n } else {\n return Promise.resolve(undefined)\n }\n }\n\n header(name) {\n return this.response.headers.get(name)\n }\n}\n\nclass LimitedSet extends Set {\n constructor(maxSize) {\n super();\n this.maxSize = maxSize;\n }\n\n add(value) {\n if (this.size >= this.maxSize) {\n const iterator = this.values();\n const oldestValue = iterator.next().value;\n this.delete(oldestValue);\n }\n super.add(value);\n }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n const modifiedHeaders = new Headers(options.headers || {});\n const requestUID = uuid();\n recentRequests.add(requestUID);\n modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n return window.fetch(url, {\n ...options,\n headers: modifiedHeaders\n })\n}\n\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get\n case \"post\":\n return FetchMethod.post\n case \"put\":\n return FetchMethod.put\n case \"patch\":\n return FetchMethod.patch\n case \"delete\":\n return FetchMethod.delete\n }\n}\n\nconst FetchMethod = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n patch: \"patch\",\n delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FetchEnctype.multipart:\n return FetchEnctype.multipart\n case FetchEnctype.plain:\n return FetchEnctype.plain\n default:\n return FetchEnctype.urlEncoded\n }\n}\n\nconst FetchEnctype = {\n urlEncoded: \"application/x-www-form-urlencoded\",\n multipart: \"multipart/form-data\",\n plain: \"text/plain\"\n};\n\nclass FetchRequest {\n abortController = new AbortController()\n #resolveRequestPromise = (_value) => {}\n\n constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n this.delegate = delegate;\n this.url = url;\n this.target = target;\n this.fetchOptions = {\n credentials: \"same-origin\",\n redirect: \"follow\",\n method: method.toUpperCase(),\n headers: { ...this.defaultHeaders },\n body: body,\n signal: this.abortSignal,\n referrer: this.delegate.referrer?.href\n };\n this.enctype = enctype;\n }\n\n get method() {\n return this.fetchOptions.method\n }\n\n set method(value) {\n const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n this.url.search = \"\";\n\n const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n this.url = url;\n this.fetchOptions.body = body;\n this.fetchOptions.method = fetchMethod.toUpperCase();\n }\n\n get headers() {\n return this.fetchOptions.headers\n }\n\n set headers(value) {\n this.fetchOptions.headers = value;\n }\n\n get body() {\n if (this.isSafe) {\n return this.url.searchParams\n } else {\n return this.fetchOptions.body\n }\n }\n\n set body(value) {\n this.fetchOptions.body = value;\n }\n\n get location() {\n return this.url\n }\n\n get params() {\n return this.url.searchParams\n }\n\n get entries() {\n return this.body ? Array.from(this.body.entries()) : []\n }\n\n cancel() {\n this.abortController.abort();\n }\n\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n\n if (event.detail.fetchRequest) {\n this.response = event.detail.fetchRequest.response;\n } else {\n this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n }\n\n const response = await this.response;\n return await this.receive(response)\n } catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.#willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error\n }\n } finally {\n this.delegate.requestFinished(this);\n }\n }\n\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse\n }\n\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n }\n }\n\n get isSafe() {\n return isSafe(this.method)\n }\n\n get abortSignal() {\n return this.abortController.signal\n }\n\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n\n async #allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.#resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.#resolveRequestPromise\n },\n target: this.target\n });\n this.url = event.detail.url;\n if (event.defaultPrevented) await requestInterception;\n\n return event\n }\n\n #willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error }\n });\n\n return !event.defaultPrevented\n }\n}\n\nfunction isSafe(fetchMethod) {\n return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n const searchParams =\n Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n if (isSafe(method)) {\n return [mergeIntoURLSearchParams(resource, searchParams), null]\n } else if (enctype == FetchEnctype.urlEncoded) {\n return [resource, searchParams]\n } else {\n return [resource, requestBody]\n }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n const entries = [];\n\n for (const [name, value] of requestBody) {\n if (value instanceof File) continue\n else entries.push([name, value]);\n }\n\n return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n url.search = searchParams.toString();\n\n return url\n}\n\nclass AppearanceObserver {\n started = false\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n\n intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry?.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n }\n}\n\nclass StreamMessage {\n static contentType = \"text/vnd.turbo-stream.html\"\n\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message))\n } else {\n return message\n }\n }\n\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\n\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n\n element.replaceWith(streamElement);\n }\n\n return fragment\n}\n\nconst identity = key => key;\n\nclass LRUCache {\n keys = []\n entries = {}\n #toCacheKey\n\n constructor(size, toCacheKey = identity) {\n this.size = size;\n this.#toCacheKey = toCacheKey;\n }\n\n has(key) {\n return this.#toCacheKey(key) in this.entries\n }\n\n get(key) {\n if (this.has(key)) {\n const entry = this.read(key);\n this.touch(key);\n return entry\n }\n }\n\n put(key, entry) {\n this.write(key, entry);\n this.touch(key);\n return entry\n }\n\n clear() {\n for (const key of Object.keys(this.entries)) {\n this.evict(key);\n }\n }\n\n // Private\n\n read(key) {\n return this.entries[this.#toCacheKey(key)]\n }\n\n write(key, entry) {\n this.entries[this.#toCacheKey(key)] = entry;\n }\n\n touch(key) {\n key = this.#toCacheKey(key);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n\n trim() {\n for (const key of this.keys.splice(this.size)) {\n this.evict(key);\n }\n }\n\n evict(key) {\n delete this.entries[key];\n }\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache extends LRUCache {\n #prefetchTimeout = null\n #maxAges = {}\n\n constructor(size = 1, prefetchDelay = PREFETCH_DELAY) {\n super(size, toCacheKey);\n this.prefetchDelay = prefetchDelay;\n }\n\n putLater(url, request, ttl) {\n this.#prefetchTimeout = setTimeout(() => {\n request.perform();\n this.put(url, request, ttl);\n this.#prefetchTimeout = null;\n }, this.prefetchDelay);\n }\n\n put(url, request, ttl = cacheTtl) {\n super.put(url, request);\n this.#maxAges[toCacheKey(url)] = new Date(new Date().getTime() + ttl);\n }\n\n clear() {\n super.clear();\n if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n }\n\n evict(key) {\n super.evict(key);\n delete this.#maxAges[key];\n }\n\n has(key) {\n if (super.has(key)) {\n const maxAge = this.#maxAges[toCacheKey(key)];\n\n return maxAge && maxAge > Date.now()\n } else {\n return false\n }\n }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n initialized: \"initialized\",\n requesting: \"requesting\",\n waiting: \"waiting\",\n receiving: \"receiving\",\n stopping: \"stopping\",\n stopped: \"stopped\"\n};\n\nclass FormSubmission {\n state = FormSubmissionState.initialized\n\n static confirmMethod(message) {\n return Promise.resolve(confirm(message))\n }\n\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n const method = getMethod(formElement, submitter);\n const action = getAction(getFormAction(formElement, submitter), method);\n const body = buildFormData(formElement, submitter);\n const enctype = getEnctype(formElement, submitter);\n\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n this.mustRedirect = mustRedirect;\n }\n\n get method() {\n return this.fetchRequest.method\n }\n\n set method(value) {\n this.fetchRequest.method = value;\n }\n\n get action() {\n return this.fetchRequest.url.toString()\n }\n\n set action(value) {\n this.fetchRequest.url = expandURL(value);\n }\n\n get body() {\n return this.fetchRequest.body\n }\n\n get enctype() {\n return this.fetchRequest.enctype\n }\n\n get isSafe() {\n return this.fetchRequest.isSafe\n }\n\n get location() {\n return this.fetchRequest.url\n }\n\n // The submission process\n\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n if (typeof confirmationMessage === \"string\") {\n const confirmMethod = typeof config.forms.confirm === \"function\" ?\n config.forms.confirm :\n FormSubmission.confirmMethod;\n\n const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return\n }\n }\n\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform()\n }\n }\n\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n this.state = FormSubmissionState.waiting;\n if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);\n this.setSubmitsWith();\n markAsBusy(this.formElement);\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this }\n });\n this.delegate.formSubmissionStarted(this);\n }\n\n requestPreventedHandlingResponse(request, response) {\n prefetchCache.clear();\n\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n return\n }\n\n prefetchCache.clear();\n\n if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n\n requestFinished(_request) {\n this.state = FormSubmissionState.stopped;\n if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);\n this.resetSubmitterText();\n clearBusyState(this.formElement);\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: { formSubmission: this, ...this.result }\n });\n this.delegate.formSubmissionFinished(this);\n }\n\n // Private\n\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return\n\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n\n resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return\n\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n\n requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect\n }\n\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n }\n\n get submitsWith() {\n return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n }\n}\n\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter?.getAttribute(\"name\");\n const value = submitter?.getAttribute(\"value\");\n\n if (name) {\n formData.append(name, value || \"\");\n }\n\n return formData\n}\n\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined\n }\n }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n if (submitter?.hasAttribute(\"formaction\")) {\n return submitter.getAttribute(\"formaction\") || \"\"\n } else {\n return formElement.getAttribute(\"action\") || formElementAction || \"\"\n }\n}\n\nfunction getAction(formAction, fetchMethod) {\n const action = expandURL(formAction);\n\n if (isSafe(fetchMethod)) {\n action.search = \"\";\n }\n\n return action\n}\n\nfunction getMethod(formElement, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n\n get activeElement() {\n return this.element.ownerDocument.activeElement\n }\n\n get children() {\n return [...this.element.children]\n }\n\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null\n }\n\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n }\n\n get isConnected() {\n return this.element.isConnected\n }\n\n get firstAutofocusableElement() {\n return queryAutofocusableElement(this.element)\n }\n\n get permanentElements() {\n return queryPermanentElementsAll(this.element)\n }\n\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id)\n }\n\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n\n return permanentElementMap\n }\n}\n\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n\n submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n }\n\n submitBubbled = (event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n\n if (\n form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n return doesNotTargetIFrame(target)\n}\n\nclass View {\n #resolveRenderPromise = (_value) => {}\n #resolveInterceptionPromise = (_value) => {}\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n // Scrolling\n\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.focusElement(element);\n this.scrollToElement(element);\n } else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n\n scrollToElement(element) {\n element.scrollIntoView();\n }\n\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n\n get scrollRoot() {\n return window\n }\n\n // Rendering\n\n async render(renderer) {\n const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n // A workaround to ignore tracked element mismatch reloads when performing\n // a promoted Visit from a frame navigation\n const shouldInvalidate = willRender;\n\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n\n const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender) await renderInterception;\n\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n } finally {\n delete this.renderer;\n this.#resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n } else if (shouldInvalidate) {\n this.invalidate(renderer.reloadReason);\n }\n }\n\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n\n markVisitDirection(direction) {\n this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n }\n\n unmarkVisitDirection() {\n this.element.removeAttribute(\"data-turbo-visit-direction\");\n }\n\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `Content missing`;\n }\n\n get snapshot() {\n return new Snapshot(this.element)\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n\n clickBubbled = (event) => {\n if (this.clickEventIsSignificant(event)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n }\n\n linkClicked = (event) => {\n if (this.clickEvent && this.clickEventIsSignificant(event)) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n }\n\n willVisit = (_event) => {\n delete this.clickEvent;\n }\n\n clickEventIsSignificant(event) {\n const target = event.composed ? event.target?.parentElement : event.target;\n const element = findLinkFromClickTarget(target) || target;\n\n return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n }\n}\n\nclass LinkClickObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n\n clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n }\n\n clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link.target)) {\n const location = getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n }\n\n clickEventIsSignificant(event) {\n return !(\n (event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n )\n }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n }\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return false\n }\n\n prefetchAndCacheRequestToLocation(link, location) {\n return\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, originalEvent) {\n return (\n this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n )\n }\n\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n\n const type = \"hidden\";\n for (const [name, value] of location.searchParams) {\n form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n }\n\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n const turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n this.delegate.submittedFormLinkToLocation(link, location, form);\n\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder?.replaceWith(permanentElement);\n }\n\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id)\n }\n\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n }\n}\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element\n}\n\nclass Renderer {\n #activeElement = null\n\n static renderElement(currentElement, newElement) {\n // Abstract method\n }\n\n constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = this.constructor.renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n\n get shouldRender() {\n return true\n }\n\n get shouldAutofocus() {\n return true\n }\n\n get reloadReason() {\n return\n }\n\n prepareToRender() {\n return\n }\n\n render() {\n // Abstract method\n }\n\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n\n focusFirstAutofocusableElement() {\n if (this.shouldAutofocus) {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (element) {\n element.focus();\n }\n }\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement) {\n if (this.#activeElement) return\n\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.#activeElement = this.currentSnapshot.activeElement;\n }\n }\n\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n this.#activeElement.focus();\n\n this.#activeElement = null;\n }\n }\n\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n }\n\n get currentElement() {\n return this.currentSnapshot.element\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n }\n\n get renderMethod() {\n return \"replace\"\n }\n}\n\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n\n const frameElement = newElement;\n const sourceRange = frameElement.ownerDocument?.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n\n get shouldRender() {\n return true\n }\n\n async render() {\n await nextRepaint();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextRepaint();\n this.focusFirstAutofocusableElement();\n await nextRepaint();\n this.activateScriptElements();\n }\n\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true\n }\n }\n return false\n }\n\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\")\n }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value\n } else {\n return defaultValue\n }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value\n } else {\n return defaultValue\n }\n}\n\n/**\n * @typedef {object} ConfigHead\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} [style]\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {function(Element): boolean} [shouldPreserve]\n * @property {function(Element): boolean} [shouldReAppend]\n * @property {function(Element): boolean} [shouldRemove]\n * @property {function(Element, {added: Node[], kept: Element[], removed: Element[]}): void} [afterHeadMorphed]\n */\n\n/**\n * @typedef {object} ConfigCallbacks\n *\n * @property {function(Node): boolean} [beforeNodeAdded]\n * @property {function(Node): void} [afterNodeAdded]\n * @property {function(Element, Node): boolean} [beforeNodeMorphed]\n * @property {function(Element, Node): void} [afterNodeMorphed]\n * @property {function(Element): boolean} [beforeNodeRemoved]\n * @property {function(Element): void} [afterNodeRemoved]\n * @property {function(string, Element, \"update\" | \"remove\"): boolean} [beforeAttributeUpdated]\n */\n\n/**\n * @typedef {object} Config\n *\n * @property {'outerHTML' | 'innerHTML'} [morphStyle]\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacks} [callbacks]\n * @property {ConfigHead} [head]\n */\n\n/**\n * @typedef {function} NoOp\n *\n * @returns {void}\n */\n\n/**\n * @typedef {object} ConfigHeadInternal\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} style\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {(function(Element): boolean) | NoOp} shouldPreserve\n * @property {(function(Element): boolean) | NoOp} shouldReAppend\n * @property {(function(Element): boolean) | NoOp} shouldRemove\n * @property {(function(Element, {added: Node[], kept: Element[], removed: Element[]}): void) | NoOp} afterHeadMorphed\n */\n\n/**\n * @typedef {object} ConfigCallbacksInternal\n *\n * @property {(function(Node): boolean) | NoOp} beforeNodeAdded\n * @property {(function(Node): void) | NoOp} afterNodeAdded\n * @property {(function(Node, Node): boolean) | NoOp} beforeNodeMorphed\n * @property {(function(Node, Node): void) | NoOp} afterNodeMorphed\n * @property {(function(Node): boolean) | NoOp} beforeNodeRemoved\n * @property {(function(Node): void) | NoOp} afterNodeRemoved\n * @property {(function(string, Element, \"update\" | \"remove\"): boolean) | NoOp} beforeAttributeUpdated\n */\n\n/**\n * @typedef {object} ConfigInternal\n *\n * @property {'outerHTML' | 'innerHTML'} morphStyle\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacksInternal} callbacks\n * @property {ConfigHeadInternal} head\n */\n\n/**\n * @typedef {Object} IdSets\n * @property {Set} persistentIds\n * @property {Map>} idMap\n */\n\n/**\n * @typedef {Function} Morph\n *\n * @param {Element | Document} oldNode\n * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n * @param {Config} [config]\n * @returns {undefined | Node[]}\n */\n\n// base IIFE to define idiomorph\n/**\n *\n * @type {{defaults: ConfigInternal, morph: Morph}}\n */\nvar Idiomorph = (function () {\n\n /**\n * @typedef {object} MorphContext\n *\n * @property {Element} target\n * @property {Element} newContent\n * @property {ConfigInternal} config\n * @property {ConfigInternal['morphStyle']} morphStyle\n * @property {ConfigInternal['ignoreActive']} ignoreActive\n * @property {ConfigInternal['ignoreActiveValue']} ignoreActiveValue\n * @property {ConfigInternal['restoreFocus']} restoreFocus\n * @property {Map>} idMap\n * @property {Set} persistentIds\n * @property {ConfigInternal['callbacks']} callbacks\n * @property {ConfigInternal['head']} head\n * @property {HTMLDivElement} pantry\n * @property {Element[]} activeElementAndParents\n */\n\n //=============================================================================\n // AND NOW IT BEGINS...\n //=============================================================================\n\n const noOp = () => {};\n /**\n * Default configuration values, updatable by users now\n * @type {ConfigInternal}\n */\n const defaults = {\n morphStyle: \"outerHTML\",\n callbacks: {\n beforeNodeAdded: noOp,\n afterNodeAdded: noOp,\n beforeNodeMorphed: noOp,\n afterNodeMorphed: noOp,\n beforeNodeRemoved: noOp,\n afterNodeRemoved: noOp,\n beforeAttributeUpdated: noOp,\n },\n head: {\n style: \"merge\",\n shouldPreserve: (elt) => elt.getAttribute(\"im-preserve\") === \"true\",\n shouldReAppend: (elt) => elt.getAttribute(\"im-re-append\") === \"true\",\n shouldRemove: noOp,\n afterHeadMorphed: noOp,\n },\n restoreFocus: true,\n };\n\n /**\n * Core idiomorph function for morphing one DOM tree to another\n *\n * @param {Element | Document} oldNode\n * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n * @param {Config} [config]\n * @returns {Promise | Node[]}\n */\n function morph(oldNode, newContent, config = {}) {\n oldNode = normalizeElement(oldNode);\n const newNode = normalizeParent(newContent);\n const ctx = createMorphContext(oldNode, newNode, config);\n\n const morphedNodes = saveAndRestoreFocus(ctx, () => {\n return withHeadBlocking(\n ctx,\n oldNode,\n newNode,\n /** @param {MorphContext} ctx */ (ctx) => {\n if (ctx.morphStyle === \"innerHTML\") {\n morphChildren(ctx, oldNode, newNode);\n return Array.from(oldNode.childNodes);\n } else {\n return morphOuterHTML(ctx, oldNode, newNode);\n }\n },\n );\n });\n\n ctx.pantry.remove();\n return morphedNodes;\n }\n\n /**\n * Morph just the outerHTML of the oldNode to the newContent\n * We have to be careful because the oldNode could have siblings which need to be untouched\n * @param {MorphContext} ctx\n * @param {Element} oldNode\n * @param {Element} newNode\n * @returns {Node[]}\n */\n function morphOuterHTML(ctx, oldNode, newNode) {\n const oldParent = normalizeParent(oldNode);\n morphChildren(\n ctx,\n oldParent,\n newNode,\n // these two optional params are the secret sauce\n oldNode, // start point for iteration\n oldNode.nextSibling, // end point for iteration\n );\n // this is safe even with siblings, because normalizeParent returns a SlicedParentNode if needed.\n return Array.from(oldParent.childNodes);\n }\n\n /**\n * @param {MorphContext} ctx\n * @param {Function} fn\n * @returns {Promise | Node[]}\n */\n function saveAndRestoreFocus(ctx, fn) {\n if (!ctx.config.restoreFocus) return fn();\n let activeElement =\n /** @type {HTMLInputElement|HTMLTextAreaElement|null} */ (\n document.activeElement\n );\n\n // don't bother if the active element is not an input or textarea\n if (\n !(\n activeElement instanceof HTMLInputElement ||\n activeElement instanceof HTMLTextAreaElement\n )\n ) {\n return fn();\n }\n\n const { id: activeElementId, selectionStart, selectionEnd } = activeElement;\n\n const results = fn();\n\n if (\n activeElementId &&\n activeElementId !== document.activeElement?.getAttribute(\"id\")\n ) {\n activeElement = ctx.target.querySelector(`[id=\"${activeElementId}\"]`);\n activeElement?.focus();\n }\n if (activeElement && !activeElement.selectionEnd && selectionEnd) {\n activeElement.setSelectionRange(selectionStart, selectionEnd);\n }\n\n return results;\n }\n\n const morphChildren = (function () {\n /**\n * This is the core algorithm for matching up children. The idea is to use id sets to try to match up\n * nodes as faithfully as possible. We greedily match, which allows us to keep the algorithm fast, but\n * by using id sets, we are able to better match up with content deeper in the DOM.\n *\n * Basic algorithm:\n * - for each node in the new content:\n * - search self and siblings for an id set match, falling back to a soft match\n * - if match found\n * - remove any nodes up to the match:\n * - pantry persistent nodes\n * - delete the rest\n * - morph the match\n * - elsif no match found, and node is persistent\n * - find its match by querying the old root (future) and pantry (past)\n * - move it and its children here\n * - morph it\n * - else\n * - create a new node from scratch as a last result\n *\n * @param {MorphContext} ctx the merge context\n * @param {Element} oldParent the old content that we are merging the new content into\n * @param {Element} newParent the parent element of the new content\n * @param {Node|null} [insertionPoint] the point in the DOM we start morphing at (defaults to first child)\n * @param {Node|null} [endPoint] the point in the DOM we stop morphing at (defaults to after last child)\n */\n function morphChildren(\n ctx,\n oldParent,\n newParent,\n insertionPoint = null,\n endPoint = null,\n ) {\n // normalize\n if (\n oldParent instanceof HTMLTemplateElement &&\n newParent instanceof HTMLTemplateElement\n ) {\n // @ts-ignore we can pretend the DocumentFragment is an Element\n oldParent = oldParent.content;\n // @ts-ignore ditto\n newParent = newParent.content;\n }\n insertionPoint ||= oldParent.firstChild;\n\n // run through all the new content\n for (const newChild of newParent.childNodes) {\n // once we reach the end of the old parent content skip to the end and insert the rest\n if (insertionPoint && insertionPoint != endPoint) {\n const bestMatch = findBestMatch(\n ctx,\n newChild,\n insertionPoint,\n endPoint,\n );\n if (bestMatch) {\n // if the node to morph is not at the insertion point then remove/move up to it\n if (bestMatch !== insertionPoint) {\n removeNodesBetween(ctx, insertionPoint, bestMatch);\n }\n morphNode(bestMatch, newChild, ctx);\n insertionPoint = bestMatch.nextSibling;\n continue;\n }\n }\n\n // if the matching node is elsewhere in the original content\n if (newChild instanceof Element) {\n // we can pretend the id is non-null because the next `.has` line will reject it if not\n const newChildId = /** @type {String} */ (\n newChild.getAttribute(\"id\")\n );\n if (ctx.persistentIds.has(newChildId)) {\n // move it and all its children here and morph\n const movedChild = moveBeforeById(\n oldParent,\n newChildId,\n insertionPoint,\n ctx,\n );\n morphNode(movedChild, newChild, ctx);\n insertionPoint = movedChild.nextSibling;\n continue;\n }\n }\n\n // last resort: insert the new node from scratch\n const insertedNode = createNode(\n oldParent,\n newChild,\n insertionPoint,\n ctx,\n );\n // could be null if beforeNodeAdded prevented insertion\n if (insertedNode) {\n insertionPoint = insertedNode.nextSibling;\n }\n }\n\n // remove any remaining old nodes that didn't match up with new content\n while (insertionPoint && insertionPoint != endPoint) {\n const tempNode = insertionPoint;\n insertionPoint = insertionPoint.nextSibling;\n removeNode(ctx, tempNode);\n }\n }\n\n /**\n * This performs the action of inserting a new node while handling situations where the node contains\n * elements with persistent ids and possible state info we can still preserve by moving in and then morphing\n *\n * @param {Element} oldParent\n * @param {Node} newChild\n * @param {Node|null} insertionPoint\n * @param {MorphContext} ctx\n * @returns {Node|null}\n */\n function createNode(oldParent, newChild, insertionPoint, ctx) {\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return null;\n if (ctx.idMap.has(newChild)) {\n // node has children with ids with possible state so create a dummy elt of same type and apply full morph algorithm\n const newEmptyChild = document.createElement(\n /** @type {Element} */ (newChild).tagName,\n );\n oldParent.insertBefore(newEmptyChild, insertionPoint);\n morphNode(newEmptyChild, newChild, ctx);\n ctx.callbacks.afterNodeAdded(newEmptyChild);\n return newEmptyChild;\n } else {\n // optimisation: no id state to preserve so we can just insert a clone of the newChild and its descendants\n const newClonedChild = document.importNode(newChild, true); // importNode to not mutate newParent\n oldParent.insertBefore(newClonedChild, insertionPoint);\n ctx.callbacks.afterNodeAdded(newClonedChild);\n return newClonedChild;\n }\n }\n\n //=============================================================================\n // Matching Functions\n //=============================================================================\n const findBestMatch = (function () {\n /**\n * Scans forward from the startPoint to the endPoint looking for a match\n * for the node. It looks for an id set match first, then a soft match.\n * We abort softmatching if we find two future soft matches, to reduce churn.\n * @param {Node} node\n * @param {MorphContext} ctx\n * @param {Node | null} startPoint\n * @param {Node | null} endPoint\n * @returns {Node | null}\n */\n function findBestMatch(ctx, node, startPoint, endPoint) {\n let softMatch = null;\n let nextSibling = node.nextSibling;\n let siblingSoftMatchCount = 0;\n\n let cursor = startPoint;\n while (cursor && cursor != endPoint) {\n // soft matching is a prerequisite for id set matching\n if (isSoftMatch(cursor, node)) {\n if (isIdSetMatch(ctx, cursor, node)) {\n return cursor; // found an id set match, we're done!\n }\n\n // we haven't yet saved a soft match fallback\n if (softMatch === null) {\n // the current soft match will hard match something else in the future, leave it\n if (!ctx.idMap.has(cursor)) {\n // save this as the fallback if we get through the loop without finding a hard match\n softMatch = cursor;\n }\n }\n }\n if (\n softMatch === null &&\n nextSibling &&\n isSoftMatch(cursor, nextSibling)\n ) {\n // The next new node has a soft match with this node, so\n // increment the count of future soft matches\n siblingSoftMatchCount++;\n nextSibling = nextSibling.nextSibling;\n\n // If there are two future soft matches, block soft matching for this node to allow\n // future siblings to soft match. This is to reduce churn in the DOM when an element\n // is prepended.\n if (siblingSoftMatchCount >= 2) {\n softMatch = undefined;\n }\n }\n\n // if the current node contains active element, stop looking for better future matches,\n // because if one is found, this node will be moved to the pantry, reparenting it and thus losing focus\n // @ts-ignore pretend cursor is Element rather than Node, we're just testing for array inclusion\n if (ctx.activeElementAndParents.includes(cursor)) break;\n\n cursor = cursor.nextSibling;\n }\n\n return softMatch || null;\n }\n\n /**\n *\n * @param {MorphContext} ctx\n * @param {Node} oldNode\n * @param {Node} newNode\n * @returns {boolean}\n */\n function isIdSetMatch(ctx, oldNode, newNode) {\n let oldSet = ctx.idMap.get(oldNode);\n let newSet = ctx.idMap.get(newNode);\n\n if (!newSet || !oldSet) return false;\n\n for (const id of oldSet) {\n // a potential match is an id in the new and old nodes that\n // has not already been merged into the DOM\n // But the newNode content we call this on has not been\n // merged yet and we don't allow duplicate IDs so it is simple\n if (newSet.has(id)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n *\n * @param {Node} oldNode\n * @param {Node} newNode\n * @returns {boolean}\n */\n function isSoftMatch(oldNode, newNode) {\n // ok to cast: if one is not element, `id` and `tagName` will be undefined and we'll just compare that.\n const oldElt = /** @type {Element} */ (oldNode);\n const newElt = /** @type {Element} */ (newNode);\n\n return (\n oldElt.nodeType === newElt.nodeType &&\n oldElt.tagName === newElt.tagName &&\n // If oldElt has an `id` with possible state and it doesn't match newElt.id then avoid morphing.\n // We'll still match an anonymous node with an IDed newElt, though, because if it got this far,\n // its not persistent, and new nodes can't have any hidden state.\n // We can't use .id because of form input shadowing, and we can't count on .getAttribute's presence because it could be a document-fragment\n (!oldElt.getAttribute?.(\"id\") ||\n oldElt.getAttribute?.(\"id\") === newElt.getAttribute?.(\"id\"))\n );\n }\n\n return findBestMatch;\n })();\n\n //=============================================================================\n // DOM Manipulation Functions\n //=============================================================================\n\n /**\n * Gets rid of an unwanted DOM node; strategy depends on nature of its reuse:\n * - Persistent nodes will be moved to the pantry for later reuse\n * - Other nodes will have their hooks called, and then are removed\n * @param {MorphContext} ctx\n * @param {Node} node\n */\n function removeNode(ctx, node) {\n // are we going to id set match this later?\n if (ctx.idMap.has(node)) {\n // skip callbacks and move to pantry\n moveBefore(ctx.pantry, node, null);\n } else {\n // remove for realsies\n if (ctx.callbacks.beforeNodeRemoved(node) === false) return;\n node.parentNode?.removeChild(node);\n ctx.callbacks.afterNodeRemoved(node);\n }\n }\n\n /**\n * Remove nodes between the start and end nodes\n * @param {MorphContext} ctx\n * @param {Node} startInclusive\n * @param {Node} endExclusive\n * @returns {Node|null}\n */\n function removeNodesBetween(ctx, startInclusive, endExclusive) {\n /** @type {Node | null} */\n let cursor = startInclusive;\n // remove nodes until the endExclusive node\n while (cursor && cursor !== endExclusive) {\n let tempNode = /** @type {Node} */ (cursor);\n cursor = cursor.nextSibling;\n removeNode(ctx, tempNode);\n }\n return cursor;\n }\n\n /**\n * Search for an element by id within the document and pantry, and move it using moveBefore.\n *\n * @param {Element} parentNode - The parent node to which the element will be moved.\n * @param {string} id - The ID of the element to be moved.\n * @param {Node | null} after - The reference node to insert the element before.\n * If `null`, the element is appended as the last child.\n * @param {MorphContext} ctx\n * @returns {Element} The found element\n */\n function moveBeforeById(parentNode, id, after, ctx) {\n const target =\n /** @type {Element} - will always be found */\n (\n // ctx.target.id unsafe because of form input shadowing\n // ctx.target could be a document fragment which doesn't have `getAttribute`\n (ctx.target.getAttribute?.(\"id\") === id && ctx.target) ||\n ctx.target.querySelector(`[id=\"${id}\"]`) ||\n ctx.pantry.querySelector(`[id=\"${id}\"]`)\n );\n removeElementFromAncestorsIdMaps(target, ctx);\n moveBefore(parentNode, target, after);\n return target;\n }\n\n /**\n * Removes an element from its ancestors' id maps. This is needed when an element is moved from the\n * \"future\" via `moveBeforeId`. Otherwise, its erstwhile ancestors could be mistakenly moved to the\n * pantry rather than being deleted, preventing their removal hooks from being called.\n *\n * @param {Element} element - element to remove from its ancestors' id maps\n * @param {MorphContext} ctx\n */\n function removeElementFromAncestorsIdMaps(element, ctx) {\n // we know id is non-null String, because this function is only called on elements with ids\n const id = /** @type {String} */ (element.getAttribute(\"id\"));\n /** @ts-ignore - safe to loop in this way **/\n while ((element = element.parentNode)) {\n let idSet = ctx.idMap.get(element);\n if (idSet) {\n idSet.delete(id);\n if (!idSet.size) {\n ctx.idMap.delete(element);\n }\n }\n }\n }\n\n /**\n * Moves an element before another element within the same parent.\n * Uses the proposed `moveBefore` API if available (and working), otherwise falls back to `insertBefore`.\n * This is essentialy a forward-compat wrapper.\n *\n * @param {Element} parentNode - The parent node containing the after element.\n * @param {Node} element - The element to be moved.\n * @param {Node | null} after - The reference node to insert `element` before.\n * If `null`, `element` is appended as the last child.\n */\n function moveBefore(parentNode, element, after) {\n // @ts-ignore - use proposed moveBefore feature\n if (parentNode.moveBefore) {\n try {\n // @ts-ignore - use proposed moveBefore feature\n parentNode.moveBefore(element, after);\n } catch (e) {\n // fall back to insertBefore as some browsers may fail on moveBefore when trying to move Dom disconnected nodes to pantry\n parentNode.insertBefore(element, after);\n }\n } else {\n parentNode.insertBefore(element, after);\n }\n }\n\n return morphChildren;\n })();\n\n //=============================================================================\n // Single Node Morphing Code\n //=============================================================================\n const morphNode = (function () {\n /**\n * @param {Node} oldNode root node to merge content into\n * @param {Node} newContent new content to merge\n * @param {MorphContext} ctx the merge context\n * @returns {Node | null} the element that ended up in the DOM\n */\n function morphNode(oldNode, newContent, ctx) {\n if (ctx.ignoreActive && oldNode === document.activeElement) {\n // don't morph focused element\n return null;\n }\n\n if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) {\n return oldNode;\n }\n\n if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (\n oldNode instanceof HTMLHeadElement &&\n ctx.head.style !== \"morph\"\n ) {\n // ok to cast: if newContent wasn't also a , it would've got caught in the `!isSoftMatch` branch above\n handleHeadElement(\n oldNode,\n /** @type {HTMLHeadElement} */ (newContent),\n ctx,\n );\n } else {\n morphAttributes(oldNode, newContent, ctx);\n if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n // @ts-ignore newContent can be a node here because .firstChild will be null\n morphChildren(ctx, oldNode, newContent);\n }\n }\n ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n return oldNode;\n }\n\n /**\n * syncs the oldNode to the newNode, copying over all attributes and\n * inner element state from the newNode to the oldNode\n *\n * @param {Node} oldNode the node to copy attributes & state to\n * @param {Node} newNode the node to copy attributes & state from\n * @param {MorphContext} ctx the merge context\n */\n function morphAttributes(oldNode, newNode, ctx) {\n let type = newNode.nodeType;\n\n // if is an element type, sync the attributes from the\n // new node into the new node\n if (type === 1 /* element type */) {\n const oldElt = /** @type {Element} */ (oldNode);\n const newElt = /** @type {Element} */ (newNode);\n\n const oldAttributes = oldElt.attributes;\n const newAttributes = newElt.attributes;\n for (const newAttribute of newAttributes) {\n if (ignoreAttribute(newAttribute.name, oldElt, \"update\", ctx)) {\n continue;\n }\n if (oldElt.getAttribute(newAttribute.name) !== newAttribute.value) {\n oldElt.setAttribute(newAttribute.name, newAttribute.value);\n }\n }\n // iterate backwards to avoid skipping over items when a delete occurs\n for (let i = oldAttributes.length - 1; 0 <= i; i--) {\n const oldAttribute = oldAttributes[i];\n\n // toAttributes is a live NamedNodeMap, so iteration+mutation is unsafe\n // e.g. custom element attribute callbacks can remove other attributes\n if (!oldAttribute) continue;\n\n if (!newElt.hasAttribute(oldAttribute.name)) {\n if (ignoreAttribute(oldAttribute.name, oldElt, \"remove\", ctx)) {\n continue;\n }\n oldElt.removeAttribute(oldAttribute.name);\n }\n }\n\n if (!ignoreValueOfActiveElement(oldElt, ctx)) {\n syncInputValue(oldElt, newElt, ctx);\n }\n }\n\n // sync text nodes\n if (type === 8 /* comment */ || type === 3 /* text */) {\n if (oldNode.nodeValue !== newNode.nodeValue) {\n oldNode.nodeValue = newNode.nodeValue;\n }\n }\n }\n\n /**\n * NB: many bothans died to bring us information:\n *\n * https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n * https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n *\n * @param {Element} oldElement the element to sync the input value to\n * @param {Element} newElement the element to sync the input value from\n * @param {MorphContext} ctx the merge context\n */\n function syncInputValue(oldElement, newElement, ctx) {\n if (\n oldElement instanceof HTMLInputElement &&\n newElement instanceof HTMLInputElement &&\n newElement.type !== \"file\"\n ) {\n let newValue = newElement.value;\n let oldValue = oldElement.value;\n\n // sync boolean attributes\n syncBooleanAttribute(oldElement, newElement, \"checked\", ctx);\n syncBooleanAttribute(oldElement, newElement, \"disabled\", ctx);\n\n if (!newElement.hasAttribute(\"value\")) {\n if (!ignoreAttribute(\"value\", oldElement, \"remove\", ctx)) {\n oldElement.value = \"\";\n oldElement.removeAttribute(\"value\");\n }\n } else if (oldValue !== newValue) {\n if (!ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n oldElement.setAttribute(\"value\", newValue);\n oldElement.value = newValue;\n }\n }\n // TODO: QUESTION(1cg): this used to only check `newElement` unlike the other branches -- why?\n // did I break something?\n } else if (\n oldElement instanceof HTMLOptionElement &&\n newElement instanceof HTMLOptionElement\n ) {\n syncBooleanAttribute(oldElement, newElement, \"selected\", ctx);\n } else if (\n oldElement instanceof HTMLTextAreaElement &&\n newElement instanceof HTMLTextAreaElement\n ) {\n let newValue = newElement.value;\n let oldValue = oldElement.value;\n if (ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n return;\n }\n if (newValue !== oldValue) {\n oldElement.value = newValue;\n }\n if (\n oldElement.firstChild &&\n oldElement.firstChild.nodeValue !== newValue\n ) {\n oldElement.firstChild.nodeValue = newValue;\n }\n }\n }\n\n /**\n * @param {Element} oldElement element to write the value to\n * @param {Element} newElement element to read the value from\n * @param {string} attributeName the attribute name\n * @param {MorphContext} ctx the merge context\n */\n function syncBooleanAttribute(oldElement, newElement, attributeName, ctx) {\n // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n const newLiveValue = newElement[attributeName],\n // @ts-ignore ditto\n oldLiveValue = oldElement[attributeName];\n if (newLiveValue !== oldLiveValue) {\n const ignoreUpdate = ignoreAttribute(\n attributeName,\n oldElement,\n \"update\",\n ctx,\n );\n if (!ignoreUpdate) {\n // update attribute's associated DOM property\n // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n oldElement[attributeName] = newElement[attributeName];\n }\n if (newLiveValue) {\n if (!ignoreUpdate) {\n // https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML\n // this is the correct way to set a boolean attribute to \"true\"\n oldElement.setAttribute(attributeName, \"\");\n }\n } else {\n if (!ignoreAttribute(attributeName, oldElement, \"remove\", ctx)) {\n oldElement.removeAttribute(attributeName);\n }\n }\n }\n }\n\n /**\n * @param {string} attr the attribute to be mutated\n * @param {Element} element the element that is going to be updated\n * @param {\"update\" | \"remove\"} updateType\n * @param {MorphContext} ctx the merge context\n * @returns {boolean} true if the attribute should be ignored, false otherwise\n */\n function ignoreAttribute(attr, element, updateType, ctx) {\n if (\n attr === \"value\" &&\n ctx.ignoreActiveValue &&\n element === document.activeElement\n ) {\n return true;\n }\n return (\n ctx.callbacks.beforeAttributeUpdated(attr, element, updateType) ===\n false\n );\n }\n\n /**\n * @param {Node} possibleActiveElement\n * @param {MorphContext} ctx\n * @returns {boolean}\n */\n function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n return (\n !!ctx.ignoreActiveValue &&\n possibleActiveElement === document.activeElement &&\n possibleActiveElement !== document.body\n );\n }\n\n return morphNode;\n })();\n\n //=============================================================================\n // Head Management Functions\n //=============================================================================\n /**\n * @param {MorphContext} ctx\n * @param {Element} oldNode\n * @param {Element} newNode\n * @param {function} callback\n * @returns {Node[] | Promise}\n */\n function withHeadBlocking(ctx, oldNode, newNode, callback) {\n if (ctx.head.block) {\n const oldHead = oldNode.querySelector(\"head\");\n const newHead = newNode.querySelector(\"head\");\n if (oldHead && newHead) {\n const promises = handleHeadElement(oldHead, newHead, ctx);\n // when head promises resolve, proceed ignoring the head tag\n return Promise.all(promises).then(() => {\n const newCtx = Object.assign(ctx, {\n head: {\n block: false,\n ignore: true,\n },\n });\n return callback(newCtx);\n });\n }\n }\n // just proceed if we not head blocking\n return callback(ctx);\n }\n\n /**\n * The HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n *\n * @param {Element} oldHead\n * @param {Element} newHead\n * @param {MorphContext} ctx\n * @returns {Promise[]}\n */\n function handleHeadElement(oldHead, newHead, ctx) {\n let added = [];\n let removed = [];\n let preserved = [];\n let nodesToAppend = [];\n\n // put all new head elements into a Map, by their outerHTML\n let srcToNewHeadNodes = new Map();\n for (const newHeadChild of newHead.children) {\n srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n }\n\n // for each elt in the current head\n for (const currentHeadElt of oldHead.children) {\n // If the current head element is in the map\n let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n if (inNewContent || isPreserved) {\n if (isReAppended) {\n // remove the current version and let the new version replace it and re-execute\n removed.push(currentHeadElt);\n } else {\n // this element already exists and should not be re-appended, so remove it from\n // the new content map, preserving it in the DOM\n srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n preserved.push(currentHeadElt);\n }\n } else {\n if (ctx.head.style === \"append\") {\n // we are appending and this existing element is not new content\n // so if and only if it is marked for re-append do we do anything\n if (isReAppended) {\n removed.push(currentHeadElt);\n nodesToAppend.push(currentHeadElt);\n }\n } else {\n // if this is a merge, we remove this content since it is not in the new head\n if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n removed.push(currentHeadElt);\n }\n }\n }\n }\n\n // Push the remaining new head elements in the Map into the\n // nodes to append to the head tag\n nodesToAppend.push(...srcToNewHeadNodes.values());\n\n let promises = [];\n for (const newNode of nodesToAppend) {\n // TODO: This could theoretically be null, based on type\n let newElt = /** @type {ChildNode} */ (\n document.createRange().createContextualFragment(newNode.outerHTML)\n .firstChild\n );\n if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n if (\n (\"href\" in newElt && newElt.href) ||\n (\"src\" in newElt && newElt.src)\n ) {\n /** @type {(result?: any) => void} */ let resolve;\n let promise = new Promise(function (_resolve) {\n resolve = _resolve;\n });\n newElt.addEventListener(\"load\", function () {\n resolve();\n });\n promises.push(promise);\n }\n oldHead.appendChild(newElt);\n ctx.callbacks.afterNodeAdded(newElt);\n added.push(newElt);\n }\n }\n\n // remove all removed elements, after we have appended the new elements to avoid\n // additional network requests for things like style sheets\n for (const removedElement of removed) {\n if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n oldHead.removeChild(removedElement);\n ctx.callbacks.afterNodeRemoved(removedElement);\n }\n }\n\n ctx.head.afterHeadMorphed(oldHead, {\n added: added,\n kept: preserved,\n removed: removed,\n });\n return promises;\n }\n\n //=============================================================================\n // Create Morph Context Functions\n //=============================================================================\n const createMorphContext = (function () {\n /**\n *\n * @param {Element} oldNode\n * @param {Element} newContent\n * @param {Config} config\n * @returns {MorphContext}\n */\n function createMorphContext(oldNode, newContent, config) {\n const { persistentIds, idMap } = createIdMaps(oldNode, newContent);\n\n const mergedConfig = mergeDefaults(config);\n const morphStyle = mergedConfig.morphStyle || \"outerHTML\";\n if (![\"innerHTML\", \"outerHTML\"].includes(morphStyle)) {\n throw `Do not understand how to morph style ${morphStyle}`;\n }\n\n return {\n target: oldNode,\n newContent: newContent,\n config: mergedConfig,\n morphStyle: morphStyle,\n ignoreActive: mergedConfig.ignoreActive,\n ignoreActiveValue: mergedConfig.ignoreActiveValue,\n restoreFocus: mergedConfig.restoreFocus,\n idMap: idMap,\n persistentIds: persistentIds,\n pantry: createPantry(),\n activeElementAndParents: createActiveElementAndParents(oldNode),\n callbacks: mergedConfig.callbacks,\n head: mergedConfig.head,\n };\n }\n\n /**\n * Deep merges the config object and the Idiomorph.defaults object to\n * produce a final configuration object\n * @param {Config} config\n * @returns {ConfigInternal}\n */\n function mergeDefaults(config) {\n let finalConfig = Object.assign({}, defaults);\n\n // copy top level stuff into final config\n Object.assign(finalConfig, config);\n\n // copy callbacks into final config (do this to deep merge the callbacks)\n finalConfig.callbacks = Object.assign(\n {},\n defaults.callbacks,\n config.callbacks,\n );\n\n // copy head config into final config (do this to deep merge the head)\n finalConfig.head = Object.assign({}, defaults.head, config.head);\n\n return finalConfig;\n }\n\n /**\n * @returns {HTMLDivElement}\n */\n function createPantry() {\n const pantry = document.createElement(\"div\");\n pantry.hidden = true;\n document.body.insertAdjacentElement(\"afterend\", pantry);\n return pantry;\n }\n\n /**\n * @param {Element} oldNode\n * @returns {Element[]}\n */\n function createActiveElementAndParents(oldNode) {\n /** @type {Element[]} */\n let activeElementAndParents = [];\n let elt = document.activeElement;\n if (elt?.tagName !== \"BODY\" && oldNode.contains(elt)) {\n while (elt) {\n activeElementAndParents.push(elt);\n if (elt === oldNode) break;\n elt = elt.parentElement;\n }\n }\n return activeElementAndParents;\n }\n\n /**\n * Returns all elements with an ID contained within the root element and its descendants\n *\n * @param {Element} root\n * @returns {Element[]}\n */\n function findIdElements(root) {\n let elements = Array.from(root.querySelectorAll(\"[id]\"));\n // root could be a document fragment which doesn't have `getAttribute`\n if (root.getAttribute?.(\"id\")) {\n elements.push(root);\n }\n return elements;\n }\n\n /**\n * A bottom-up algorithm that populates a map of Element -> IdSet.\n * The idSet for a given element is the set of all IDs contained within its subtree.\n * As an optimzation, we filter these IDs through the given list of persistent IDs,\n * because we don't need to bother considering IDed elements that won't be in the new content.\n *\n * @param {Map>} idMap\n * @param {Set} persistentIds\n * @param {Element} root\n * @param {Element[]} elements\n */\n function populateIdMapWithTree(idMap, persistentIds, root, elements) {\n for (const elt of elements) {\n // we can pretend id is non-null String, because the .has line will reject it immediately if not\n const id = /** @type {String} */ (elt.getAttribute(\"id\"));\n if (persistentIds.has(id)) {\n /** @type {Element|null} */\n let current = elt;\n // walk up the parent hierarchy of that element, adding the id\n // of element to the parent's id set\n while (current) {\n let idSet = idMap.get(current);\n // if the id set doesn't exist, create it and insert it in the map\n if (idSet == null) {\n idSet = new Set();\n idMap.set(current, idSet);\n }\n idSet.add(id);\n\n if (current === root) break;\n current = current.parentElement;\n }\n }\n }\n }\n\n /**\n * This function computes a map of nodes to all ids contained within that node (inclusive of the\n * node). This map can be used to ask if two nodes have intersecting sets of ids, which allows\n * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n * to contribute to a parent nodes matching.\n *\n * @param {Element} oldContent the old content that will be morphed\n * @param {Element} newContent the new content to morph to\n * @returns {IdSets}\n */\n function createIdMaps(oldContent, newContent) {\n const oldIdElements = findIdElements(oldContent);\n const newIdElements = findIdElements(newContent);\n\n const persistentIds = createPersistentIds(oldIdElements, newIdElements);\n\n /** @type {Map>} */\n let idMap = new Map();\n populateIdMapWithTree(idMap, persistentIds, oldContent, oldIdElements);\n\n /** @ts-ignore - if newContent is a duck-typed parent, pass its single child node as the root to halt upwards iteration */\n const newRoot = newContent.__idiomorphRoot || newContent;\n populateIdMapWithTree(idMap, persistentIds, newRoot, newIdElements);\n\n return { persistentIds, idMap };\n }\n\n /**\n * This function computes the set of ids that persist between the two contents excluding duplicates\n *\n * @param {Element[]} oldIdElements\n * @param {Element[]} newIdElements\n * @returns {Set}\n */\n function createPersistentIds(oldIdElements, newIdElements) {\n let duplicateIds = new Set();\n\n /** @type {Map} */\n let oldIdTagNameMap = new Map();\n for (const { id, tagName } of oldIdElements) {\n if (oldIdTagNameMap.has(id)) {\n duplicateIds.add(id);\n } else {\n oldIdTagNameMap.set(id, tagName);\n }\n }\n\n let persistentIds = new Set();\n for (const { id, tagName } of newIdElements) {\n if (persistentIds.has(id)) {\n duplicateIds.add(id);\n } else if (oldIdTagNameMap.get(id) === tagName) {\n persistentIds.add(id);\n }\n // skip if tag types mismatch because its not possible to morph one tag into another\n }\n\n for (const id of duplicateIds) {\n persistentIds.delete(id);\n }\n return persistentIds;\n }\n\n return createMorphContext;\n })();\n\n //=============================================================================\n // HTML Normalization Functions\n //=============================================================================\n const { normalizeElement, normalizeParent } = (function () {\n /** @type {WeakSet} */\n const generatedByIdiomorph = new WeakSet();\n\n /**\n *\n * @param {Element | Document} content\n * @returns {Element}\n */\n function normalizeElement(content) {\n if (content instanceof Document) {\n return content.documentElement;\n } else {\n return content;\n }\n }\n\n /**\n *\n * @param {null | string | Node | HTMLCollection | Node[] | Document & {generatedByIdiomorph:boolean}} newContent\n * @returns {Element}\n */\n function normalizeParent(newContent) {\n if (newContent == null) {\n return document.createElement(\"div\"); // dummy parent element\n } else if (typeof newContent === \"string\") {\n return normalizeParent(parseContent(newContent));\n } else if (\n generatedByIdiomorph.has(/** @type {Element} */ (newContent))\n ) {\n // the template tag created by idiomorph parsing can serve as a dummy parent\n return /** @type {Element} */ (newContent);\n } else if (newContent instanceof Node) {\n if (newContent.parentNode) {\n // we can't use the parent directly because newContent may have siblings\n // that we don't want in the morph, and reparenting might be expensive (TODO is it?),\n // so instead we create a fake parent node that only sees a slice of its children.\n /** @type {Element} */\n return /** @type {any} */ (new SlicedParentNode(newContent));\n } else {\n // a single node is added as a child to a dummy parent\n const dummyParent = document.createElement(\"div\");\n dummyParent.append(newContent);\n return dummyParent;\n }\n } else {\n // all nodes in the array or HTMLElement collection are consolidated under\n // a single dummy parent element\n const dummyParent = document.createElement(\"div\");\n for (const elt of [...newContent]) {\n dummyParent.append(elt);\n }\n return dummyParent;\n }\n }\n\n /**\n * A fake duck-typed parent element to wrap a single node, without actually reparenting it.\n * This is useful because the node may have siblings that we don't want in the morph, and it may also be moved\n * or replaced with one or more elements during the morph. This class effectively allows us a window into\n * a slice of a node's children.\n * \"If it walks like a duck, and quacks like a duck, then it must be a duck!\" -- James Whitcomb Riley (1849–1916)\n */\n class SlicedParentNode {\n /** @param {Node} node */\n constructor(node) {\n this.originalNode = node;\n this.realParentNode = /** @type {Element} */ (node.parentNode);\n this.previousSibling = node.previousSibling;\n this.nextSibling = node.nextSibling;\n }\n\n /** @returns {Node[]} */\n get childNodes() {\n // return slice of realParent's current childNodes, based on previousSibling and nextSibling\n const nodes = [];\n let cursor = this.previousSibling\n ? this.previousSibling.nextSibling\n : this.realParentNode.firstChild;\n while (cursor && cursor != this.nextSibling) {\n nodes.push(cursor);\n cursor = cursor.nextSibling;\n }\n return nodes;\n }\n\n /**\n * @param {string} selector\n * @returns {Element[]}\n */\n querySelectorAll(selector) {\n return this.childNodes.reduce((results, node) => {\n if (node instanceof Element) {\n if (node.matches(selector)) results.push(node);\n const nodeList = node.querySelectorAll(selector);\n for (let i = 0; i < nodeList.length; i++) {\n results.push(nodeList[i]);\n }\n }\n return results;\n }, /** @type {Element[]} */ ([]));\n }\n\n /**\n * @param {Node} node\n * @param {Node} referenceNode\n * @returns {Node}\n */\n insertBefore(node, referenceNode) {\n return this.realParentNode.insertBefore(node, referenceNode);\n }\n\n /**\n * @param {Node} node\n * @param {Node} referenceNode\n * @returns {Node}\n */\n moveBefore(node, referenceNode) {\n // @ts-ignore - use new moveBefore feature\n return this.realParentNode.moveBefore(node, referenceNode);\n }\n\n /**\n * for later use with populateIdMapWithTree to halt upwards iteration\n * @returns {Node}\n */\n get __idiomorphRoot() {\n return this.originalNode;\n }\n }\n\n /**\n *\n * @param {string} newContent\n * @returns {Node | null | DocumentFragment}\n */\n function parseContent(newContent) {\n let parser = new DOMParser();\n\n // remove svgs to avoid false-positive matches on head, etc.\n let contentWithSvgsRemoved = newContent.replace(\n /