{"version":3,"file":"rollup.cjs","sources":["rollup.js"],"sourcesContent":["function isEvent(value) {\n    function isLike(value) {\n        return !!value;\n    }\n    return (isLike(value) &&\n        (typeof value.type === \"string\" || typeof value.type === \"symbol\"));\n}\nfunction assertEvent(value, type) {\n    if (!isEvent(value)) {\n        throw new Error(\"Expected event\");\n    }\n    if (typeof type !== \"undefined\" && value.type !== type) {\n        throw new Error(`Expected event type ${String(type)}, got ${value.type.toString()}`);\n    }\n}\n\nfunction isParallelEvent(value) {\n    return isEvent(value) && value.parallel !== false;\n}\n\nclass AbortError extends Error {\n    constructor(message) {\n        super(`AbortError${message ? `: ${message}` : \"\"}`);\n        this.name = \"AbortError\";\n    }\n}\nfunction isAbortError(error) {\n    return error instanceof Error && error.name === \"AbortError\";\n}\nclass InvalidStateError extends Error {\n    constructor(message) {\n        super(`InvalidStateError${message ? `: ${message}` : \"\"}`);\n        this.name = \"InvalidStateError\";\n    }\n}\nfunction isInvalidStateError(error) {\n    return error instanceof Error && error.name === \"InvalidStateError\";\n}\n\nfunction isAbortSignal(value) {\n    function isAbortSignalLike(value) {\n        return typeof value === \"object\";\n    }\n    return (isAbortSignalLike(value) &&\n        typeof value.aborted === \"boolean\" &&\n        typeof value.addEventListener === \"function\");\n}\nfunction isSignalEvent(value) {\n    function isSignalEventLike(value) {\n        return value.hasOwnProperty(\"signal\");\n    }\n    return (isEvent(value) && isSignalEventLike(value) && isAbortSignal(value.signal));\n}\nfunction isSignalHandled(event, error) {\n    if (isSignalEvent(event) &&\n        event.signal.aborted &&\n        error instanceof Error &&\n        isAbortError(error)) {\n        return true;\n    }\n}\n\n/**\n * @experimental\n */\nconst EventTargetListeners$1 = Symbol.for(\"@opennetwork/environment/events/target/listeners\");\n/**\n * @experimental\n */\nconst EventTargetListenersIgnore = Symbol.for(\"@opennetwork/environment/events/target/listeners/ignore\");\n/**\n * @experimental\n */\nconst EventTargetListenersMatch = Symbol.for(\"@opennetwork/environment/events/target/listeners/match\");\n/**\n * @experimental\n */\nconst EventTargetListenersThis = Symbol.for(\"@opennetwork/environment/events/target/listeners/this\");\n\nconst EventDescriptorSymbol = Symbol.for(\"@opennetwork/environment/events/descriptor\");\n\nfunction matchEventCallback(type, callback, options) {\n    const optionsDescriptor = isOptionsDescriptor(options) ? options : undefined;\n    return (descriptor) => {\n        if (optionsDescriptor) {\n            return optionsDescriptor === descriptor;\n        }\n        return ((!callback || callback === descriptor.callback) &&\n            type === descriptor.type);\n    };\n    function isOptionsDescriptor(options) {\n        function isLike(options) {\n            return !!options;\n        }\n        return isLike(options) && options[EventDescriptorSymbol] === true;\n    }\n}\n\nfunction isFunctionEventCallback(fn) {\n    return typeof fn === \"function\";\n}\nconst EventTargetDescriptors = Symbol.for(\"@virtualstate/navigation/event-target/descriptors\");\nclass EventTargetListeners {\n    [EventTargetDescriptors] = [];\n    [EventTargetListenersIgnore] = new WeakSet();\n    get [EventTargetListeners$1]() {\n        return [...(this[EventTargetDescriptors] ?? [])];\n    }\n    [EventTargetListenersMatch](type) {\n        const external = this[EventTargetListeners$1];\n        const matched = [\n            ...new Set([...(external ?? []), ...(this[EventTargetDescriptors] ?? [])]),\n        ]\n            .filter((descriptor) => descriptor.type === type || descriptor.type === \"*\")\n            .filter((descriptor) => !this[EventTargetListenersIgnore]?.has(descriptor));\n        const listener = typeof type === \"string\" ? this[`on${type}`] : undefined;\n        if (typeof listener === \"function\" && isFunctionEventCallback(listener)) {\n            matched.push({\n                type,\n                callback: listener,\n                [EventDescriptorSymbol]: true,\n            });\n        }\n        return matched;\n    }\n    addEventListener(type, callback, options) {\n        const listener = {\n            ...options,\n            isListening: () => !!this[EventTargetDescriptors]?.find(matchEventCallback(type, callback)),\n            descriptor: {\n                [EventDescriptorSymbol]: true,\n                ...options,\n                type,\n                callback,\n            },\n            timestamp: Date.now(),\n        };\n        if (listener.isListening()) {\n            return;\n        }\n        this[EventTargetDescriptors]?.push(listener.descriptor);\n    }\n    removeEventListener(type, callback, options) {\n        if (!isFunctionEventCallback(callback)) {\n            return;\n        }\n        const externalListeners = this[EventTargetListeners$1] ?? this[EventTargetDescriptors] ?? [];\n        const externalIndex = externalListeners.findIndex(matchEventCallback(type, callback, options));\n        if (externalIndex === -1) {\n            return;\n        }\n        const index = this[EventTargetDescriptors]?.findIndex(matchEventCallback(type, callback, options)) ??\n            -1;\n        if (index !== -1) {\n            this[EventTargetDescriptors]?.splice(index, 1);\n        }\n        const descriptor = externalListeners[externalIndex];\n        if (descriptor) {\n            this[EventTargetListenersIgnore]?.add(descriptor);\n        }\n    }\n    hasEventListener(type, callback) {\n        if (callback && !isFunctionEventCallback(callback)) {\n            return false;\n        }\n        const foundIndex = this[EventTargetDescriptors]?.findIndex(matchEventCallback(type, callback)) ?? -1;\n        return foundIndex > -1;\n    }\n}\n\nclass AsyncEventTarget extends EventTargetListeners {\n    [EventTargetListenersThis];\n    constructor(thisValue = undefined) {\n        super();\n        this[EventTargetListenersThis] = thisValue;\n    }\n    async dispatchEvent(event) {\n        const listeners = this[EventTargetListenersMatch]?.(event.type) ?? [];\n        // Don't even dispatch an aborted event\n        if (isSignalEvent(event) && event.signal.aborted) {\n            throw new AbortError();\n        }\n        const parallel = isParallelEvent(event);\n        const promises = [];\n        for (let index = 0; index < listeners.length; index += 1) {\n            const descriptor = listeners[index];\n            const promise = (async () => {\n                // Remove the listener before invoking the callback\n                // This ensures that inside of the callback causes no more additional event triggers to this\n                // listener\n                if (descriptor.once) {\n                    // by passing the descriptor as the options, we get an internal redirect\n                    // that forces an instance level object equals, meaning\n                    // we will only remove _this_ descriptor!\n                    this.removeEventListener(descriptor.type, descriptor.callback, descriptor);\n                }\n                await descriptor.callback.call(this[EventTargetListenersThis] ?? this, event);\n            })();\n            if (!parallel) {\n                try {\n                    await promise;\n                }\n                catch (error) {\n                    if (!isSignalHandled(event, error)) {\n                        await Promise.reject(error);\n                    }\n                }\n                if (isSignalEvent(event) && event.signal.aborted) {\n                    // bye\n                    return;\n                }\n            }\n            else {\n                promises.push(promise);\n            }\n        }\n        if (promises.length) {\n            // Allows for all promises to settle finish so we can stay within the event, we then\n            // will utilise Promise.all which will reject with the first rejected promise\n            const results = await Promise.allSettled(promises);\n            const rejected = results.filter((result) => {\n                return result.status === \"rejected\";\n            });\n            if (rejected.length) {\n                let unhandled = rejected;\n                // If the event was aborted, then allow abort errors to occur, and handle these as handled errors\n                // The dispatcher does not care about this because they requested it\n                //\n                // There may be other unhandled errors that are more pressing to the task they are doing.\n                //\n                // The dispatcher can throw an abort error if they need to throw it up the chain\n                if (isSignalEvent(event) && event.signal.aborted) {\n                    unhandled = unhandled.filter((result) => !isSignalHandled(event, result.reason));\n                }\n                if (unhandled.length === 1) {\n                    await Promise.reject(unhandled[0].reason);\n                    throw unhandled[0].reason; // We shouldn't get here\n                }\n                else if (unhandled.length > 1) {\n                    throw new AggregateError(unhandled.map(({ reason }) => reason));\n                }\n            }\n        }\n    }\n}\n\nconst defaultEventTargetModule = {\n    EventTarget: AsyncEventTarget,\n    AsyncEventTarget,\n    SyncEventTarget: AsyncEventTarget,\n};\nlet eventTargetModule = defaultEventTargetModule;\n//\n// try {\n//     eventTargetModule = await import(\"@virtualstate/navigation/event-target\");\n//     console.log(\"Using @virtualstate/navigation/event-target\", eventTargetModule);\n// } catch {\n//     console.log(\"Using defaultEventTargetModule\");\n//     eventTargetModule = defaultEventTargetModule;\n// }\nconst EventTargetImplementation = eventTargetModule.EventTarget || eventTargetModule.SyncEventTarget || eventTargetModule.AsyncEventTarget;\nfunction assertEventTarget(target) {\n    if (typeof target !== \"function\") {\n        throw new Error(\"Could not load EventTarget implementation\");\n    }\n}\nclass EventTarget extends AsyncEventTarget {\n    constructor(...args) {\n        super();\n        if (EventTargetImplementation) {\n            assertEventTarget(EventTargetImplementation);\n            const { dispatchEvent } = new EventTargetImplementation(...args);\n            this.dispatchEvent = dispatchEvent;\n        }\n    }\n}\n\nfunction isInterceptEvent(value) {\n    function isInterceptEventLike(value) {\n        return isEvent(value);\n    }\n    return (isInterceptEventLike(value) && typeof value.intercept === \"function\");\n}\n\nclass NavigationEventTarget extends EventTarget {\n    addEventListener(type, listener, options) {\n        assertEventCallback(listener);\n        return super.addEventListener(type, listener, typeof options === \"boolean\" ? { once: options } : options);\n        function assertEventCallback(listener) {\n            if (typeof listener !== \"function\")\n                throw new Error(\"Please us the function variant of event listener\");\n        }\n    }\n    removeEventListener(type, listener, options) {\n        assertEventCallback(listener);\n        return super.removeEventListener(type, listener);\n        function assertEventCallback(listener) {\n            if (typeof listener !== \"function\")\n                throw new Error(\"Please us the function variant of event listener\");\n        }\n    }\n}\n\nconst isWebCryptoSupported = \"crypto\" in globalThis && typeof globalThis.crypto.randomUUID === \"function\";\nconst v4 = isWebCryptoSupported\n    ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n    : () => Array.from({ length: 5 }, () => `${Math.random()}`.replace(/^0\\./, \"\"))\n        .join(\"-\")\n        .replace(\".\", \"\");\n\n// To prevent cyclic imports, where a circular is used, instead use the prototype interface\n// and then copy over the \"private\" symbol\nconst NavigationGetState$1 = Symbol.for(\"@virtualstate/navigation/getState\");\nconst NavigationHistoryEntryNavigationType = Symbol.for(\"@virtualstate/navigation/entry/navigationType\");\nconst NavigationHistoryEntryKnownAs = Symbol.for(\"@virtualstate/navigation/entry/knownAs\");\nconst NavigationHistoryEntrySetState = Symbol.for(\"@virtualstate/navigation/entry/setState\");\nfunction isPrimitiveValue(state) {\n    return (typeof state === \"number\" ||\n        typeof state === \"boolean\" ||\n        typeof state === \"symbol\" ||\n        typeof state === \"bigint\" ||\n        typeof state === \"string\");\n}\nfunction isValue(state) {\n    return !!(state || isPrimitiveValue(state));\n}\nclass NavigationHistoryEntry extends NavigationEventTarget {\n    #index;\n    #state;\n    get index() {\n        return typeof this.#index === \"number\" ? this.#index : this.#index();\n    }\n    key;\n    id;\n    url;\n    sameDocument;\n    get [NavigationHistoryEntryNavigationType]() {\n        return this.#options.navigationType;\n    }\n    get [NavigationHistoryEntryKnownAs]() {\n        const set = new Set(this.#options[NavigationHistoryEntryKnownAs]);\n        set.add(this.id);\n        return set;\n    }\n    #options;\n    get [EventTargetListeners$1]() {\n        return [\n            ...(super[EventTargetListeners$1] ?? []),\n            ...(this.#options[EventTargetListeners$1] ?? []),\n        ];\n    }\n    constructor(init) {\n        super();\n        this.#options = init;\n        this.key = init.key || v4();\n        this.id = v4();\n        this.url = init.url ?? undefined;\n        this.#index = init.index;\n        this.sameDocument = init.sameDocument ?? true;\n        this.#state = init.state ?? undefined;\n    }\n    [NavigationGetState$1]() {\n        return this.#options?.getState?.(this);\n    }\n    getState() {\n        let state = this.#state;\n        if (!isValue(state)) {\n            const external = this[NavigationGetState$1]();\n            if (isValue(external)) {\n                state = this.#state = external;\n            }\n        }\n        /**\n         * https://github.com/WICG/app-history/blob/7c0332b30746b14863f717404402bc49e497a2b2/spec.bs#L1406\n         * Note that in general, unless the state value is a primitive, entry.getState() !== entry.getState(), since a fresh copy is returned each time.\n         */\n        if (typeof state === \"undefined\" ||\n            isPrimitiveValue(state)) {\n            return state;\n        }\n        if (typeof state === \"function\") {\n            console.warn(\"State passed to Navigation.navigate was a function, this may be unintentional\");\n            console.warn(\"Unless a state value is primitive, with a standard implementation of Navigation\");\n            console.warn(\"your state value will be serialized and deserialized before this point, meaning\");\n            console.warn(\"a function would not be usable.\");\n        }\n        return {\n            ...state,\n        };\n    }\n    [NavigationHistoryEntrySetState](state) {\n        this.#state = state;\n    }\n}\n\n/**\n * @param handleCatch rejected promises automatically to allow free usage\n */\nfunction deferred(handleCatch) {\n    let resolve = undefined, reject = undefined;\n    const promise = new Promise((resolveFn, rejectFn) => {\n        resolve = resolveFn;\n        reject = rejectFn;\n    });\n    ok$1(resolve);\n    ok$1(reject);\n    return {\n        resolve,\n        reject,\n        promise: handleCatch ? promise.catch(handleCatch) : promise,\n    };\n}\nfunction ok$1(value) {\n    if (!value) {\n        throw new Error(\"Value not provided\");\n    }\n}\n\nconst GlobalAbortController = typeof AbortController !== \"undefined\" ? AbortController : undefined;\n\nif (!GlobalAbortController) {\n    throw new Error(\"AbortController expected to be available or polyfilled\");\n}\nconst AbortController$1 = GlobalAbortController;\n\nfunction isPromise(value) {\n    return (like(value) &&\n        typeof value.then === \"function\");\n}\nfunction ok(value, message = \"Expected value\") {\n    if (!value) {\n        throw new Error(message);\n    }\n}\nfunction isPromiseRejectedResult(value) {\n    return value.status === \"rejected\";\n}\nfunction like(value) {\n    return !!value;\n}\n\nconst THIS_WILL_BE_REMOVED = \"This will be removed when the first major release of @virtualstate/navigation is published\";\nconst WARNINGS = {\n    EVENT_INTERCEPT_HANDLER: `You are using a non standard interface, please update your code to use event.intercept({ async handler() {} })\\n${THIS_WILL_BE_REMOVED}`\n};\nlet GLOBAL_IS_WARNINGS_IGNORED = false;\nlet GLOBAL_IS_WARNINGS_TRACED = true;\nfunction setIgnoreWarnings(ignore) {\n    GLOBAL_IS_WARNINGS_IGNORED = ignore;\n}\nfunction setTraceWarnings(ignore) {\n    GLOBAL_IS_WARNINGS_TRACED = ignore;\n}\nfunction logWarning(warning, ...message) {\n    if (GLOBAL_IS_WARNINGS_IGNORED) {\n        return;\n    }\n    try {\n        if (GLOBAL_IS_WARNINGS_TRACED) {\n            console.trace(WARNINGS[warning], ...message);\n        }\n        else {\n            console.warn(WARNINGS[warning], ...message);\n        }\n    }\n    catch {\n        // We don't want attempts to log causing issues\n        // maybe we don't have a console\n    }\n}\n\nconst Rollback = Symbol.for(\"@virtualstate/navigation/rollback\");\nconst Unset = Symbol.for(\"@virtualstate/navigation/unset\");\nconst NavigationTransitionParentEventTarget = Symbol.for(\"@virtualstate/navigation/transition/parentEventTarget\");\nconst NavigationTransitionFinishedDeferred = Symbol.for(\"@virtualstate/navigation/transition/deferred/finished\");\nconst NavigationTransitionCommittedDeferred = Symbol.for(\"@virtualstate/navigation/transition/deferred/committed\");\nconst NavigationTransitionNavigationType = Symbol.for(\"@virtualstate/navigation/transition/navigationType\");\nconst NavigationTransitionInitialEntries = Symbol.for(\"@virtualstate/navigation/transition/entries/initial\");\nconst NavigationTransitionFinishedEntries = Symbol.for(\"@virtualstate/navigation/transition/entries/finished\");\nconst NavigationTransitionInitialIndex = Symbol.for(\"@virtualstate/navigation/transition/index/initial\");\nconst NavigationTransitionFinishedIndex = Symbol.for(\"@virtualstate/navigation/transition/index/finished\");\nconst NavigationTransitionEntry = Symbol.for(\"@virtualstate/navigation/transition/entry\");\nconst NavigationTransitionIsCommitted = Symbol.for(\"@virtualstate/navigation/transition/isCommitted\");\nconst NavigationTransitionIsFinished = Symbol.for(\"@virtualstate/navigation/transition/isFinished\");\nconst NavigationTransitionIsRejected = Symbol.for(\"@virtualstate/navigation/transition/isRejected\");\nconst NavigationTransitionKnown = Symbol.for(\"@virtualstate/navigation/transition/known\");\nconst NavigationTransitionPromises = Symbol.for(\"@virtualstate/navigation/transition/promises\");\nconst NavigationIntercept = Symbol.for(\"@virtualstate/navigation/intercept\");\nconst NavigationTransitionIsOngoing = Symbol.for(\"@virtualstate/navigation/transition/isOngoing\");\nconst NavigationTransitionIsPending = Symbol.for(\"@virtualstate/navigation/transition/isPending\");\nconst NavigationTransitionIsAsync = Symbol.for(\"@virtualstate/navigation/transition/isAsync\");\nconst NavigationTransitionWait = Symbol.for(\"@virtualstate/navigation/transition/wait\");\nconst NavigationTransitionPromiseResolved = Symbol.for(\"@virtualstate/navigation/transition/promise/resolved\");\nconst NavigationTransitionRejected = Symbol.for(\"@virtualstate/navigation/transition/rejected\");\nconst NavigationTransitionBeforeCommit = Symbol.for(\"@virtualstate/navigation/transition/beforeCommit\");\nconst NavigationTransitionCommit = Symbol.for(\"@virtualstate/navigation/transition/commit\");\nconst NavigationTransitionFinish = Symbol.for(\"@virtualstate/navigation/transition/finish\");\nconst NavigationTransitionStart = Symbol.for(\"@virtualstate/navigation/transition/start\");\nconst NavigationTransitionStartDeadline = Symbol.for(\"@virtualstate/navigation/transition/start/deadline\");\nconst NavigationTransitionError = Symbol.for(\"@virtualstate/navigation/transition/error\");\nconst NavigationTransitionFinally = Symbol.for(\"@virtualstate/navigation/transition/finally\");\nconst NavigationTransitionAbort = Symbol.for(\"@virtualstate/navigation/transition/abort\");\nconst NavigationTransitionInterceptOptionsCommit = Symbol.for(\"@virtualstate/navigation/transition/intercept/options/commit\");\nconst NavigationTransitionCommitIsManual = Symbol.for(\"@virtualstate/navigation/transition/commit/isManual\");\nclass NavigationTransition extends EventTarget {\n    finished;\n    /**\n     * @experimental\n     */\n    committed;\n    from;\n    navigationType;\n    /**\n     * true if transition has an async intercept\n     */\n    [NavigationTransitionIsAsync] = false;\n    /**\n     * @experimental\n     */\n    [NavigationTransitionInterceptOptionsCommit];\n    #options;\n    [NavigationTransitionFinishedDeferred] = deferred();\n    [NavigationTransitionCommittedDeferred] = deferred();\n    get [NavigationTransitionIsPending]() {\n        return !!this.#promises.size;\n    }\n    get [NavigationTransitionNavigationType]() {\n        return this.#options[NavigationTransitionNavigationType];\n    }\n    get [NavigationTransitionInitialEntries]() {\n        return this.#options[NavigationTransitionInitialEntries];\n    }\n    get [NavigationTransitionInitialIndex]() {\n        return this.#options[NavigationTransitionInitialIndex];\n    }\n    get [NavigationTransitionCommitIsManual]() {\n        return !!(this[NavigationTransitionInterceptOptionsCommit]?.includes(\"after-transition\") ||\n            this[NavigationTransitionInterceptOptionsCommit]?.includes(\"manual\"));\n    }\n    [NavigationTransitionFinishedEntries];\n    [NavigationTransitionFinishedIndex];\n    [NavigationTransitionIsCommitted] = false;\n    [NavigationTransitionIsFinished] = false;\n    [NavigationTransitionIsRejected] = false;\n    [NavigationTransitionIsOngoing] = false;\n    [NavigationTransitionKnown] = new Set();\n    [NavigationTransitionEntry];\n    #promises = new Set();\n    #rolledBack = false;\n    #abortController = new AbortController$1();\n    get signal() {\n        return this.#abortController.signal;\n    }\n    get [NavigationTransitionPromises]() {\n        return this.#promises;\n    }\n    constructor(init) {\n        super();\n        this[NavigationTransitionInterceptOptionsCommit] = [];\n        this[NavigationTransitionFinishedDeferred] =\n            init[NavigationTransitionFinishedDeferred] ??\n                this[NavigationTransitionFinishedDeferred];\n        this[NavigationTransitionCommittedDeferred] =\n            init[NavigationTransitionCommittedDeferred] ??\n                this[NavigationTransitionCommittedDeferred];\n        this.#options = init;\n        const finished = (this.finished =\n            this[NavigationTransitionFinishedDeferred].promise);\n        const committed = (this.committed =\n            this[NavigationTransitionCommittedDeferred].promise);\n        // Auto catching abort\n        void finished.catch((error) => error);\n        void committed.catch((error) => error);\n        this.from = init.from;\n        this.navigationType = init.navigationType;\n        this[NavigationTransitionFinishedEntries] =\n            init[NavigationTransitionFinishedEntries];\n        this[NavigationTransitionFinishedIndex] =\n            init[NavigationTransitionFinishedIndex];\n        const known = init[NavigationTransitionKnown];\n        if (known) {\n            for (const entry of known) {\n                this[NavigationTransitionKnown].add(entry);\n            }\n        }\n        this[NavigationTransitionEntry] = init[NavigationTransitionEntry];\n        // Event listeners\n        {\n            // Events to promises\n            {\n                this.addEventListener(NavigationTransitionCommit, this.#onCommitPromise, { once: true });\n                this.addEventListener(NavigationTransitionFinish, this.#onFinishPromise, { once: true });\n            }\n            // Events to property setters\n            {\n                this.addEventListener(NavigationTransitionCommit, this.#onCommitSetProperty, { once: true });\n                this.addEventListener(NavigationTransitionFinish, this.#onFinishSetProperty, { once: true });\n            }\n            // Rejection + Abort\n            {\n                this.addEventListener(NavigationTransitionError, this.#onError, {\n                    once: true,\n                });\n                this.addEventListener(NavigationTransitionAbort, () => {\n                    if (!this[NavigationTransitionIsFinished]) {\n                        return this[NavigationTransitionRejected](new AbortError());\n                    }\n                });\n            }\n            // Proxy all events from this transition onto entry + the parent event target\n            //\n            // The parent could be another transition, or the Navigation, this allows us to\n            // \"bubble up\" events layer by layer\n            //\n            // In this implementation, this allows individual transitions to \"intercept\" navigate and break the child\n            // transition from happening\n            //\n            // TODO WARN this may not be desired behaviour vs standard spec'd Navigation\n            {\n                this.addEventListener(\"*\", this[NavigationTransitionEntry].dispatchEvent.bind(this[NavigationTransitionEntry]));\n                this.addEventListener(\"*\", init[NavigationTransitionParentEventTarget].dispatchEvent.bind(init[NavigationTransitionParentEventTarget]));\n            }\n        }\n    }\n    rollback = (options) => {\n        // console.log({ rolled: this.#rolledBack });\n        if (this.#rolledBack) {\n            // TODO\n            throw new InvalidStateError(\"Rollback invoked multiple times: Please raise an issue at https://github.com/virtualstate/navigation with the use case where you want to use a rollback multiple times, this may have been unexpected behaviour\");\n        }\n        this.#rolledBack = true;\n        return this.#options.rollback(options);\n    };\n    #onCommitSetProperty = () => {\n        this[NavigationTransitionIsCommitted] = true;\n    };\n    #onFinishSetProperty = () => {\n        this[NavigationTransitionIsFinished] = true;\n    };\n    #onFinishPromise = () => {\n        // console.log(\"onFinishPromise\")\n        this[NavigationTransitionFinishedDeferred].resolve(this[NavigationTransitionEntry]);\n    };\n    #onCommitPromise = () => {\n        if (this.signal.aborted) ;\n        else {\n            this[NavigationTransitionCommittedDeferred].resolve(this[NavigationTransitionEntry]);\n        }\n    };\n    #onError = (event) => {\n        return this[NavigationTransitionRejected](event.error);\n    };\n    [NavigationTransitionPromiseResolved] = (...promises) => {\n        for (const promise of promises) {\n            this.#promises.delete(promise);\n        }\n    };\n    [NavigationTransitionRejected] = async (reason) => {\n        if (this[NavigationTransitionIsRejected])\n            return;\n        this[NavigationTransitionIsRejected] = true;\n        this[NavigationTransitionAbort]();\n        const navigationType = this[NavigationTransitionNavigationType];\n        // console.log({ navigationType, reason, entry: this[NavigationTransitionEntry] });\n        if (typeof navigationType === \"string\" || navigationType === Rollback) {\n            // console.log(\"navigateerror\", { reason, z: isInvalidStateError(reason) });\n            await this.dispatchEvent({\n                type: \"navigateerror\",\n                error: reason,\n                get message() {\n                    if (reason instanceof Error) {\n                        return reason.message;\n                    }\n                    return `${reason}`;\n                },\n            });\n            // console.log(\"navigateerror finished\");\n            if (navigationType !== Rollback &&\n                !(isInvalidStateError(reason) || isAbortError(reason))) {\n                try {\n                    // console.log(\"Rollback\", navigationType);\n                    // console.warn(\"Rolling back immediately due to internal error\", error);\n                    await this.rollback()?.finished;\n                    // console.log(\"Rollback complete\", navigationType);\n                }\n                catch (error) {\n                    // console.error(\"Failed to rollback\", error);\n                    throw new InvalidStateError(\"Failed to rollback, please raise an issue at https://github.com/virtualstate/navigation/issues\");\n                }\n            }\n        }\n        this[NavigationTransitionCommittedDeferred].reject(reason);\n        this[NavigationTransitionFinishedDeferred].reject(reason);\n    };\n    [NavigationIntercept] = (options) => {\n        const transition = this;\n        const promise = parseOptions();\n        this[NavigationTransitionIsOngoing] = true;\n        if (!promise)\n            return;\n        this[NavigationTransitionIsAsync] = true;\n        const statusPromise = promise\n            .then(() => ({\n            status: \"fulfilled\",\n            value: undefined,\n        }))\n            .catch(async (reason) => {\n            await this[NavigationTransitionRejected](reason);\n            return {\n                status: \"rejected\",\n                reason,\n            };\n        });\n        this.#promises.add(statusPromise);\n        function parseOptions() {\n            if (!options)\n                return undefined;\n            if (isPromise(options)) {\n                logWarning(\"EVENT_INTERCEPT_HANDLER\");\n                return options;\n            }\n            if (typeof options === \"function\") {\n                logWarning(\"EVENT_INTERCEPT_HANDLER\");\n                return options();\n            }\n            const { handler, commit } = options;\n            if (commit && typeof commit === \"string\") {\n                transition[NavigationTransitionInterceptOptionsCommit].push(commit);\n            }\n            if (typeof handler !== \"function\") {\n                return;\n            }\n            return handler();\n        }\n    };\n    [NavigationTransitionWait] = async () => {\n        if (!this.#promises.size)\n            return this[NavigationTransitionEntry];\n        try {\n            const captured = [...this.#promises];\n            const results = await Promise.all(captured);\n            const rejected = results.filter((result) => result.status === \"rejected\");\n            // console.log({ rejected, results, captured });\n            if (rejected.length) {\n                // TODO handle differently when there are failures, e.g. we could move navigateerror to here\n                if (rejected.length === 1) {\n                    throw rejected[0].reason;\n                }\n                if (typeof AggregateError !== \"undefined\") {\n                    throw new AggregateError(rejected.map(({ reason }) => reason));\n                }\n                throw new Error();\n            }\n            this[NavigationTransitionPromiseResolved](...captured);\n            if (this[NavigationTransitionIsPending]) {\n                return this[NavigationTransitionWait]();\n            }\n            return this[NavigationTransitionEntry];\n        }\n        catch (error) {\n            await this.#onError(error);\n            throw await Promise.reject(error);\n        }\n        finally {\n            await this[NavigationTransitionFinish]();\n        }\n    };\n    [NavigationTransitionAbort]() {\n        if (this.#abortController.signal.aborted)\n            return;\n        this.#abortController.abort();\n        this.dispatchEvent({\n            type: NavigationTransitionAbort,\n            transition: this,\n            entry: this[NavigationTransitionEntry],\n        });\n    }\n    [NavigationTransitionFinish] = async () => {\n        if (this[NavigationTransitionIsFinished]) {\n            return;\n        }\n        await this.dispatchEvent({\n            type: NavigationTransitionFinish,\n            transition: this,\n            entry: this[NavigationTransitionEntry],\n            intercept: this[NavigationIntercept],\n        });\n    };\n}\n\nfunction getWindowBaseURL() {\n    try {\n        if (typeof window !== \"undefined\" && window.location) {\n            return window.location.href;\n        }\n    }\n    catch { }\n}\nfunction getBaseURL(url) {\n    const baseURL = getWindowBaseURL() ?? \"https://html.spec.whatwg.org/\";\n    return new URL(\n    // Deno wants this to be always a string\n    (url ?? \"\").toString(), baseURL);\n}\n\nfunction defer() {\n    let resolve = undefined, reject = undefined, settled = false, status = \"pending\";\n    const promise = new Promise((resolveFn, rejectFn) => {\n        resolve = (value) => {\n            status = \"fulfilled\";\n            settled = true;\n            resolveFn(value);\n        };\n        reject = (reason) => {\n            status = \"rejected\";\n            settled = true;\n            rejectFn(reason);\n        };\n    });\n    ok(resolve);\n    ok(reject);\n    return {\n        get settled() {\n            return settled;\n        },\n        get status() {\n            return status;\n        },\n        resolve,\n        reject,\n        promise,\n    };\n}\n\nclass NavigationCurrentEntryChangeEvent {\n    type;\n    from;\n    navigationType;\n    constructor(type, init) {\n        this.type = type;\n        if (!init) {\n            throw new TypeError(\"init required\");\n        }\n        if (!init.from) {\n            throw new TypeError(\"from required\");\n        }\n        this.from = init.from;\n        this.navigationType = init.navigationType ?? undefined;\n    }\n}\n\nclass NavigateEvent {\n    type;\n    canIntercept;\n    /**\n     * @deprecated\n     */\n    canTransition;\n    destination;\n    downloadRequest;\n    formData;\n    hashChange;\n    info;\n    signal;\n    userInitiated;\n    navigationType;\n    constructor(type, init) {\n        this.type = type;\n        if (!init) {\n            throw new TypeError(\"init required\");\n        }\n        if (!init.destination) {\n            throw new TypeError(\"destination required\");\n        }\n        if (!init.signal) {\n            throw new TypeError(\"signal required\");\n        }\n        this.canIntercept = init.canIntercept ?? false;\n        this.canTransition = init.canIntercept ?? false;\n        this.destination = init.destination;\n        this.downloadRequest = init.downloadRequest;\n        this.formData = init.formData;\n        this.hashChange = init.hashChange ?? false;\n        this.info = init.info;\n        this.signal = init.signal;\n        this.userInitiated = init.userInitiated ?? false;\n        this.navigationType = init.navigationType ?? \"push\";\n    }\n    commit() {\n        throw new Error(\"Not implemented\");\n    }\n    intercept(options) {\n        throw new Error(\"Not implemented\");\n    }\n    preventDefault() {\n        throw new Error(\"Not implemented\");\n    }\n    reportError(reason) {\n        throw new Error(\"Not implemented\");\n    }\n    scroll() {\n        throw new Error(\"Not implemented\");\n    }\n    /**\n     * @deprecated\n     */\n    transitionWhile(options) {\n        return this.intercept(options);\n    }\n}\n\nconst NavigationFormData = Symbol.for(\"@virtualstate/navigation/formData\");\nconst NavigationDownloadRequest = Symbol.for(\"@virtualstate/navigation/downloadRequest\");\nconst NavigationCanIntercept = Symbol.for(\"@virtualstate/navigation/canIntercept\");\nconst NavigationUserInitiated = Symbol.for(\"@virtualstate/navigation/userInitiated\");\nconst NavigationOriginalEvent = Symbol.for(\"@virtualstate/navigation/originalEvent\");\nfunction noop() {\n    return undefined;\n}\nfunction getEntryIndex(entries, entry) {\n    const knownIndex = entry.index;\n    if (knownIndex !== -1) {\n        return knownIndex;\n    }\n    // TODO find an entry if it has changed id\n    return -1;\n}\nfunction createNavigationTransition(context) {\n    const { commit: transitionCommit, currentIndex, options, known: initialKnown, currentEntry, transition, transition: { [NavigationTransitionInitialEntries]: previousEntries, [NavigationTransitionEntry]: entry, [NavigationIntercept]: intercept, }, reportError } = context;\n    let { transition: { [NavigationTransitionNavigationType]: navigationType }, } = context;\n    let resolvedEntries = [...previousEntries];\n    const known = new Set(initialKnown);\n    let destinationIndex = -1, nextIndex = currentIndex;\n    if (navigationType === Rollback) {\n        const { index } = options ?? { index: undefined };\n        if (typeof index !== \"number\")\n            throw new InvalidStateError(\"Expected index to be provided for rollback\");\n        destinationIndex = index;\n        nextIndex = index;\n    }\n    else if (navigationType === \"traverse\" || navigationType === \"reload\") {\n        destinationIndex = getEntryIndex(previousEntries, entry);\n        nextIndex = destinationIndex;\n    }\n    else if (navigationType === \"replace\") {\n        if (currentIndex === -1) {\n            navigationType = \"push\";\n            destinationIndex = currentIndex + 1;\n            nextIndex = destinationIndex;\n        }\n        else {\n            destinationIndex = currentIndex;\n            nextIndex = currentIndex;\n        }\n    }\n    else {\n        destinationIndex = currentIndex + 1;\n        nextIndex = destinationIndex;\n    }\n    if (typeof destinationIndex !== \"number\" || destinationIndex === -1) {\n        throw new InvalidStateError(\"Could not resolve next index\");\n    }\n    // console.log({ navigationType, entry, options });\n    if (!entry.url) {\n        console.trace({ navigationType, entry, options });\n        throw new InvalidStateError(\"Expected entry url\");\n    }\n    const destination = {\n        url: entry.url,\n        key: entry.key,\n        id: entry.id,\n        index: destinationIndex,\n        sameDocument: entry.sameDocument,\n        getState() {\n            return entry.getState();\n        },\n    };\n    let hashChange = false;\n    const currentUrlInstance = getBaseURL(currentEntry?.url);\n    const destinationUrlInstance = new URL(destination.url);\n    const currentHash = currentUrlInstance.hash;\n    const destinationHash = destinationUrlInstance.hash;\n    // console.log({ currentHash, destinationHash });\n    if (currentHash !== destinationHash) {\n        const currentUrlInstanceWithoutHash = new URL(currentUrlInstance.toString());\n        currentUrlInstanceWithoutHash.hash = \"\";\n        const destinationUrlInstanceWithoutHash = new URL(destinationUrlInstance.toString());\n        destinationUrlInstanceWithoutHash.hash = \"\";\n        hashChange =\n            currentUrlInstanceWithoutHash.toString() ===\n                destinationUrlInstanceWithoutHash.toString();\n        // console.log({ hashChange, currentUrlInstanceWithoutHash: currentUrlInstanceWithoutHash.toString(), before: destinationUrlInstanceWithoutHash.toString() })\n    }\n    let contextToCommit;\n    const { resolve: resolveCommit, promise: waitForCommit } = defer();\n    function commit() {\n        ok(contextToCommit, \"Expected contextToCommit\");\n        resolveCommit(transitionCommit(contextToCommit));\n    }\n    const abortController = new AbortController$1();\n    const event = new NavigateEvent(\"navigate\", {\n        signal: abortController.signal,\n        info: undefined,\n        ...options,\n        canIntercept: options?.[NavigationCanIntercept] ?? true,\n        formData: options?.[NavigationFormData] ?? undefined,\n        downloadRequest: options?.[NavigationDownloadRequest] ?? undefined,\n        hashChange,\n        navigationType: options?.navigationType ??\n            (typeof navigationType === \"string\" ? navigationType : \"replace\"),\n        userInitiated: options?.[NavigationUserInitiated] ?? false,\n        destination,\n    });\n    const originalEvent = options?.[NavigationOriginalEvent];\n    const preventDefault = transition[NavigationTransitionAbort].bind(transition);\n    if (originalEvent) {\n        const definedEvent = originalEvent;\n        event.intercept = function originalEventIntercept(options) {\n            definedEvent.preventDefault();\n            return intercept(options);\n        };\n        event.preventDefault = function originalEventPreventDefault() {\n            definedEvent.preventDefault();\n            return preventDefault();\n        };\n    }\n    else {\n        event.intercept = intercept;\n        event.preventDefault = preventDefault;\n    }\n    // Enforce that transitionWhile and intercept match\n    event.transitionWhile = event.intercept;\n    event.commit = commit;\n    if (reportError) {\n        event.reportError = reportError;\n    }\n    event.scroll = noop;\n    if (originalEvent) {\n        event.originalEvent = originalEvent;\n    }\n    const currentEntryChange = new NavigationCurrentEntryChangeEvent(\"currententrychange\", {\n        from: currentEntry,\n        navigationType: event.navigationType,\n    });\n    let updatedEntries = [], removedEntries = [], addedEntries = [];\n    const previousKeys = previousEntries.map(entry => entry.key);\n    if (navigationType === Rollback) {\n        const { entries } = options ?? { entries: undefined };\n        if (!entries)\n            throw new InvalidStateError(\"Expected entries to be provided for rollback\");\n        resolvedEntries = entries;\n        resolvedEntries.forEach((entry) => known.add(entry));\n        const keys = resolvedEntries.map(entry => entry.key);\n        removedEntries = previousEntries.filter(entry => !keys.includes(entry.key));\n        addedEntries = resolvedEntries.filter(entry => !previousKeys.includes(entry.key));\n    }\n    // Default next index is current entries length, aka\n    // console.log({ navigationType, givenNavigationType, index: this.#currentIndex, resolvedNextIndex });\n    else if (navigationType === \"replace\" ||\n        navigationType === \"traverse\" ||\n        navigationType === \"reload\") {\n        resolvedEntries[destination.index] = entry;\n        if (navigationType !== \"traverse\") {\n            updatedEntries.push(entry);\n        }\n        if (navigationType === \"replace\") {\n            resolvedEntries = resolvedEntries.slice(0, destination.index + 1);\n        }\n        const keys = resolvedEntries.map(entry => entry.key);\n        removedEntries = previousEntries.filter(entry => !keys.includes(entry.key));\n        if (previousKeys.includes(entry.id)) {\n            addedEntries = [entry];\n        }\n    }\n    else if (navigationType === \"push\") {\n        let removed = false;\n        // Trim forward, we have reset our stack\n        if (resolvedEntries[destination.index]) {\n            // const before = [...this.#entries];\n            resolvedEntries = resolvedEntries.slice(0, destination.index);\n            // console.log({ before, after: [...this.#entries]})\n            removed = true;\n        }\n        resolvedEntries.push(entry);\n        addedEntries = [entry];\n        if (removed) {\n            const keys = resolvedEntries.map(entry => entry.key);\n            removedEntries = previousEntries.filter(entry => !keys.includes(entry.key));\n        }\n    }\n    known.add(entry);\n    let entriesChange = undefined;\n    if (updatedEntries.length || addedEntries.length || removedEntries.length) {\n        entriesChange = {\n            updatedEntries,\n            addedEntries,\n            removedEntries\n        };\n    }\n    contextToCommit = {\n        entries: resolvedEntries,\n        index: nextIndex,\n        known,\n        entriesChange\n    };\n    return {\n        entries: resolvedEntries,\n        known,\n        index: nextIndex,\n        currentEntryChange,\n        destination,\n        navigate: event,\n        navigationType,\n        waitForCommit,\n        commit,\n        abortController\n    };\n}\n\nfunction createEvent(event) {\n    if (typeof CustomEvent !== \"undefined\" && typeof event.type === \"string\") {\n        if (event instanceof CustomEvent) {\n            return event;\n        }\n        const { type, detail, ...rest } = event;\n        const customEvent = new CustomEvent(type, {\n            detail: detail ?? rest,\n        });\n        Object.assign(customEvent, rest);\n        assertEvent(customEvent, event.type);\n        return customEvent;\n    }\n    return event;\n}\n\nconst NavigationSetOptions = Symbol.for(\"@virtualstate/navigation/setOptions\");\nconst NavigationSetEntries = Symbol.for(\"@virtualstate/navigation/setEntries\");\nconst NavigationSetCurrentIndex = Symbol.for(\"@virtualstate/navigation/setCurrentIndex\");\nconst NavigationSetCurrentKey = Symbol.for(\"@virtualstate/navigation/setCurrentKey\");\nconst NavigationGetState = Symbol.for(\"@virtualstate/navigation/getState\");\nconst NavigationSetState = Symbol.for(\"@virtualstate/navigation/setState\");\nconst NavigationDisposeState = Symbol.for(\"@virtualstate/navigation/disposeState\");\nfunction isNavigationNavigationType(value) {\n    return (value === \"reload\" ||\n        value === \"push\" ||\n        value === \"replace\" ||\n        value === \"traverse\");\n}\nclass Navigation extends NavigationEventTarget {\n    // Should be always 0 or 1\n    #transitionInProgressCount = 0;\n    // #activePromise?: Promise<void> = undefined;\n    #entries = [];\n    #known = new Set();\n    #currentIndex = -1;\n    #activeTransition;\n    #knownTransitions = new WeakSet();\n    #baseURL = \"\";\n    #initialEntry = undefined;\n    #options = undefined;\n    get canGoBack() {\n        return !!this.#entries[this.#currentIndex - 1];\n    }\n    get canGoForward() {\n        return !!this.#entries[this.#currentIndex + 1];\n    }\n    get currentEntry() {\n        if (this.#currentIndex === -1) {\n            if (!this.#initialEntry) {\n                this.#initialEntry = new NavigationHistoryEntry({\n                    getState: this[NavigationGetState],\n                    navigationType: \"push\",\n                    index: -1,\n                    sameDocument: false,\n                    url: this.#baseURL.toString()\n                });\n            }\n            return this.#initialEntry;\n        }\n        return this.#entries[this.#currentIndex];\n    }\n    get transition() {\n        const transition = this.#activeTransition;\n        // Never let an aborted transition leak, it doesn't need to be accessed any more\n        return transition?.signal.aborted ? undefined : transition;\n    }\n    constructor(options = {}) {\n        super();\n        this[NavigationSetOptions](options);\n    }\n    [NavigationSetOptions](options) {\n        this.#options = options;\n        this.#baseURL = getBaseURL(options?.baseURL);\n        this.#entries = [];\n        if (options.entries) {\n            this[NavigationSetEntries](options.entries);\n        }\n        if (options.currentKey) {\n            this[NavigationSetCurrentKey](options.currentKey);\n        }\n        else if (typeof options.currentIndex === \"number\") {\n            this[NavigationSetCurrentIndex](options.currentIndex);\n        }\n    }\n    /**\n     * Set the current entry key without any lifecycle eventing\n     *\n     * This would be more exact than providing an index\n     * @param key\n     */\n    [NavigationSetCurrentKey](key) {\n        const index = this.#entries.findIndex(entry => entry.key === key);\n        // If the key can't be found, becomes a no-op\n        if (index === -1)\n            return;\n        this.#currentIndex = index;\n    }\n    /**\n     * Set the current entry index without any lifecycle eventing\n     * @param index\n     */\n    [NavigationSetCurrentIndex](index) {\n        if (index <= -1)\n            return;\n        if (index >= this.#entries.length)\n            return;\n        this.#currentIndex = index;\n    }\n    /**\n     * Set the entries available without any lifecycle eventing\n     * @param entries\n     */\n    [NavigationSetEntries](entries) {\n        this.#entries = entries.map(({ key, url, navigationType, state, sameDocument }, index) => new NavigationHistoryEntry({\n            getState: this[NavigationGetState],\n            navigationType: isNavigationNavigationType(navigationType) ? navigationType : \"push\",\n            sameDocument: sameDocument ?? true,\n            index,\n            url,\n            key,\n            state\n        }));\n        if (this.#currentIndex === -1 && this.#entries.length) {\n            // Initialise, even if its not the one that was expected\n            this.#currentIndex = 0;\n        }\n    }\n    [NavigationGetState] = (entry) => {\n        return this.#options?.getState?.(entry) ?? undefined;\n    };\n    [NavigationSetState] = (entry) => {\n        return this.#options?.setState?.(entry);\n    };\n    [NavigationDisposeState] = (entry) => {\n        return this.#options?.disposeState?.(entry);\n    };\n    back(options) {\n        if (!this.canGoBack)\n            throw new InvalidStateError(\"Cannot go back\");\n        const entry = this.#entries[this.#currentIndex - 1];\n        return this.#pushEntry(\"traverse\", this.#cloneNavigationHistoryEntry(entry, {\n            ...options,\n            navigationType: \"traverse\",\n        }));\n    }\n    entries() {\n        return [...this.#entries];\n    }\n    forward(options) {\n        if (!this.canGoForward)\n            throw new InvalidStateError();\n        const entry = this.#entries[this.#currentIndex + 1];\n        return this.#pushEntry(\"traverse\", this.#cloneNavigationHistoryEntry(entry, {\n            ...options,\n            navigationType: \"traverse\",\n        }));\n    }\n    /**\n    /**\n     * @deprecated use traverseTo\n     */\n    goTo(key, options) {\n        return this.traverseTo(key, options);\n    }\n    traverseTo(key, options) {\n        const found = this.#entries.find((entry) => entry.key === key);\n        if (found) {\n            return this.#pushEntry(\"traverse\", this.#cloneNavigationHistoryEntry(found, {\n                ...options,\n                navigationType: \"traverse\",\n            }));\n        }\n        throw new InvalidStateError();\n    }\n    #isSameDocument = (url) => {\n        function isSameOrigins(a, b) {\n            return a.origin === b.origin;\n        }\n        const currentEntryUrl = this.currentEntry?.url;\n        if (!currentEntryUrl)\n            return true;\n        return isSameOrigins(new URL(currentEntryUrl), new URL(url));\n    };\n    navigate(url, options) {\n        let baseURL = this.#baseURL;\n        if (this.currentEntry?.url) {\n            // This allows use to use relative\n            baseURL = this.currentEntry?.url;\n        }\n        const nextUrl = new URL(url, baseURL).toString();\n        let navigationType = \"push\";\n        if (options?.history === \"auto\" || !options?.history) {\n            // https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate-convert-to-replace\n            if (nextUrl === this.currentEntry?.url) {\n                navigationType = \"replace\";\n            }\n        }\n        else if (options?.history === \"push\" || options?.history === \"replace\") {\n            navigationType = options?.history;\n        }\n        const entry = this.#createNavigationHistoryEntry({\n            getState: this[NavigationGetState],\n            url: nextUrl,\n            ...options,\n            sameDocument: this.#isSameDocument(nextUrl),\n            navigationType,\n        });\n        return this.#pushEntry(navigationType, entry, undefined, options);\n    }\n    #cloneNavigationHistoryEntry = (entry, options) => {\n        return this.#createNavigationHistoryEntry({\n            ...entry,\n            getState: this[NavigationGetState],\n            index: entry?.index ?? undefined,\n            state: options?.state ?? entry?.getState(),\n            navigationType: entry?.[NavigationHistoryEntryNavigationType] ??\n                (typeof options?.navigationType === \"string\"\n                    ? options.navigationType\n                    : \"replace\"),\n            ...options,\n            get [NavigationHistoryEntryKnownAs]() {\n                return entry?.[NavigationHistoryEntryKnownAs];\n            },\n            get [EventTargetListeners$1]() {\n                return entry?.[EventTargetListeners$1];\n            },\n        });\n    };\n    #createNavigationHistoryEntry = (options) => {\n        const key = options.key || (options.navigationType === \"replace\" ? this.currentEntry?.key : undefined);\n        const entry = new NavigationHistoryEntry({\n            ...options,\n            key,\n            index: options.index ??\n                (() => {\n                    return this.#entries.indexOf(entry);\n                }),\n        });\n        return entry;\n    };\n    #pushEntry = (navigationType, entry, transition, options) => {\n        /* c8 ignore start */\n        if (entry === this.currentEntry)\n            throw new InvalidStateError();\n        const existingPosition = this.#entries.findIndex((existing) => existing.id === entry.id);\n        if (existingPosition > -1) {\n            throw new InvalidStateError();\n        }\n        /* c8 ignore end */\n        return this.#commitTransition(navigationType, entry, transition, options);\n    };\n    #commitTransition = (givenNavigationType, entry, transition, options) => {\n        const nextTransition = transition ??\n            new NavigationTransition({\n                from: this.currentEntry,\n                navigationType: typeof givenNavigationType === \"string\"\n                    ? givenNavigationType\n                    : \"replace\",\n                rollback: (options) => {\n                    return this.#rollback(nextTransition, options);\n                },\n                [NavigationTransitionNavigationType]: givenNavigationType,\n                [NavigationTransitionInitialEntries]: [...this.#entries],\n                [NavigationTransitionInitialIndex]: this.#currentIndex,\n                [NavigationTransitionKnown]: [...this.#known],\n                [NavigationTransitionEntry]: entry,\n                [NavigationTransitionParentEventTarget]: this,\n            });\n        const { finished, committed } = nextTransition;\n        const handler = () => {\n            return this.#immediateTransition(givenNavigationType, entry, nextTransition, options);\n        };\n        this.#queueTransition(nextTransition);\n        void handler().catch((error) => void error);\n        // let nextPromise;\n        // if (!this.#transitionInProgressCount || !this.#activePromise) {\n        //   nextPromise = handler().catch((error) => void error);\n        // } else {\n        //   nextPromise = this.#activePromise.then(handler);\n        // }\n        //\n        // const promise = nextPromise\n        //     .catch(error => void error)\n        //     .then(() => {\n        //       if (this.#activePromise === promise) {\n        //         this.#activePromise = undefined;\n        //       }\n        //     })\n        //\n        // this.#activePromise = promise;\n        return { committed, finished };\n    };\n    #queueTransition = (transition) => {\n        // TODO consume errors that are not abort errors\n        // transition.finished.catch(error => void error);\n        this.#knownTransitions.add(transition);\n    };\n    #immediateTransition = (givenNavigationType, entry, transition, options) => {\n        try {\n            // This number can grow if navigation is\n            // called during a transition\n            //\n            // ... I had used transitionInProgressCount as a\n            // safeguard until I could see this flow firsthand\n            this.#transitionInProgressCount += 1;\n            return this.#transition(givenNavigationType, entry, transition, options);\n        }\n        finally {\n            this.#transitionInProgressCount -= 1;\n        }\n    };\n    #rollback = (rollbackTransition, options) => {\n        const previousEntries = rollbackTransition[NavigationTransitionInitialEntries];\n        const previousIndex = rollbackTransition[NavigationTransitionInitialIndex];\n        const previousCurrent = previousEntries[previousIndex];\n        // console.log(\"z\");\n        // console.log(\"Rollback!\", { previousCurrent, previousEntries, previousIndex });\n        const entry = previousCurrent\n            ? this.#cloneNavigationHistoryEntry(previousCurrent, options)\n            : undefined;\n        const nextOptions = {\n            ...options,\n            index: previousIndex,\n            known: new Set([...this.#known, ...previousEntries]),\n            navigationType: entry?.[NavigationHistoryEntryNavigationType] ?? \"replace\",\n            entries: previousEntries,\n        };\n        const resolvedNavigationType = entry ? Rollback : Unset;\n        const resolvedEntry = entry ??\n            this.#createNavigationHistoryEntry({\n                getState: this[NavigationGetState],\n                navigationType: \"replace\",\n                index: nextOptions.index,\n                sameDocument: true,\n                ...options,\n            });\n        return this.#pushEntry(resolvedNavigationType, resolvedEntry, undefined, nextOptions);\n    };\n    #transition = (givenNavigationType, entry, transition, options) => {\n        // console.log({ givenNavigationType, transition });\n        let navigationType = givenNavigationType;\n        const performance = getPerformance();\n        if (performance &&\n            entry.sameDocument &&\n            typeof navigationType === \"string\") {\n            performance?.mark?.(`same-document-navigation:${entry.id}`);\n        }\n        let currentEntryChangeEvent = false, committedCurrentEntryChange = false;\n        const { currentEntry } = this;\n        void this.#activeTransition?.finished?.catch((error) => error);\n        void this.#activeTransition?.[NavigationTransitionFinishedDeferred]?.promise?.catch((error) => error);\n        void this.#activeTransition?.[NavigationTransitionCommittedDeferred]?.promise?.catch((error) => error);\n        this.#activeTransition?.[NavigationTransitionAbort]();\n        this.#activeTransition = transition;\n        const startEventPromise = transition.dispatchEvent({\n            type: NavigationTransitionStart,\n            transition,\n            entry,\n        });\n        const syncCommit = ({ entries, index, known }) => {\n            if (transition.signal.aborted)\n                return;\n            this.#entries = entries;\n            if (known) {\n                this.#known = new Set([...this.#known, ...known]);\n            }\n            this.#currentIndex = index;\n            // Let's trigger external state here\n            // because it is the absolute point of\n            // committing to using an entry\n            //\n            // If the entry came from an external source\n            // then internal to getState the external source will be pulled from\n            // only if the entry doesn't hold the state in memory\n            //\n            // TLDR I believe this will be no issue doing here, even if we end up\n            // calling an external setState multiple times, it is better than\n            // loss of the state\n            this[NavigationSetState](this.currentEntry);\n        };\n        const asyncCommit = async (commit) => {\n            if (committedCurrentEntryChange) {\n                return;\n            }\n            const promises = [\n                transition.dispatchEvent(createEvent({\n                    type: NavigationTransitionBeforeCommit,\n                    transition,\n                    entry,\n                }))\n            ];\n            if (transition.signal.aborted) {\n                return;\n            }\n            committedCurrentEntryChange = true;\n            syncCommit(commit);\n            const { entriesChange } = commit;\n            promises.push(transition.dispatchEvent(createEvent({\n                type: NavigationTransitionCommit,\n                transition,\n                entry,\n            })));\n            if (entriesChange) {\n                promises.push(this.dispatchEvent(createEvent({\n                    type: \"entrieschange\",\n                    ...entriesChange\n                })));\n            }\n            await Promise.all(promises);\n        };\n        const unsetTransition = async () => {\n            await startEventPromise;\n            if (!(typeof options?.index === \"number\" && options.entries))\n                throw new InvalidStateError();\n            const previous = this.entries();\n            const previousKeys = previous.map(entry => entry.key);\n            const keys = options.entries.map(entry => entry.key);\n            const removedEntries = previous.filter(entry => !keys.includes(entry.key));\n            const addedEntries = options.entries.filter(entry => !previousKeys.includes(entry.key));\n            await asyncCommit({\n                entries: options.entries,\n                index: options.index,\n                known: options.known,\n                entriesChange: (removedEntries.length || addedEntries.length) ? {\n                    removedEntries,\n                    addedEntries,\n                    updatedEntries: []\n                } : undefined\n            });\n            await this.dispatchEvent(createEvent({\n                type: \"currententrychange\",\n            }));\n            currentEntryChangeEvent = true;\n            return entry;\n        };\n        const completeTransition = () => {\n            if (givenNavigationType === Unset) {\n                return unsetTransition();\n            }\n            const transitionResult = createNavigationTransition({\n                currentEntry,\n                currentIndex: this.#currentIndex,\n                options,\n                transition,\n                known: this.#known,\n                commit: asyncCommit,\n                reportError: transition[NavigationTransitionRejected]\n            });\n            const microtask = new Promise(queueMicrotask);\n            let promises = [];\n            const iterator = transitionSteps(transitionResult)[Symbol.iterator]();\n            const iterable = {\n                [Symbol.iterator]: () => ({ next: () => iterator.next() }),\n            };\n            async function syncTransition() {\n                for (const promise of iterable) {\n                    if (isPromise(promise)) {\n                        promises.push(Promise.allSettled([\n                            promise\n                        ]).then(([result]) => result));\n                    }\n                    if (transition[NavigationTransitionCommitIsManual] ||\n                        (currentEntryChangeEvent && transition[NavigationTransitionIsAsync])) {\n                        return asyncTransition().then(syncTransition);\n                    }\n                    if (transition.signal.aborted) {\n                        break;\n                    }\n                }\n                if (promises.length) {\n                    return asyncTransition();\n                }\n            }\n            async function asyncTransition() {\n                const captured = [...promises];\n                if (captured.length) {\n                    promises = [];\n                    const results = await Promise.all(captured);\n                    const rejected = results.filter(isPromiseRejectedResult);\n                    if (rejected.length === 1) {\n                        throw await Promise.reject(rejected[0]);\n                    }\n                    else if (rejected.length) {\n                        throw new AggregateError(rejected, rejected[0].reason?.message);\n                    }\n                }\n                else if (!transition[NavigationTransitionIsOngoing]) {\n                    await microtask;\n                }\n            }\n            // console.log(\"Returning\", { entry });\n            return syncTransition()\n                .then(() => transition[NavigationTransitionIsOngoing] ? undefined : microtask)\n                .then(() => entry);\n        };\n        const dispose = async () => this.#dispose();\n        function* transitionSteps(transitionResult) {\n            const microtask = new Promise(queueMicrotask);\n            const { currentEntryChange, navigate, waitForCommit, commit, abortController } = transitionResult;\n            const navigateAbort = abortController.abort.bind(abortController);\n            transition.signal.addEventListener(\"abort\", navigateAbort, {\n                once: true,\n            });\n            if (typeof navigationType === \"string\" || navigationType === Rollback) {\n                const promise = currentEntry?.dispatchEvent(createEvent({\n                    type: \"navigatefrom\",\n                    intercept: transition[NavigationIntercept],\n                    /**\n                     * @deprecated\n                     */\n                    transitionWhile: transition[NavigationIntercept],\n                }));\n                if (promise)\n                    yield promise;\n            }\n            if (typeof navigationType === \"string\") {\n                yield transition.dispatchEvent(navigate);\n            }\n            if (!transition[NavigationTransitionCommitIsManual]) {\n                commit();\n            }\n            yield waitForCommit;\n            if (entry.sameDocument) {\n                yield transition.dispatchEvent(currentEntryChange);\n            }\n            currentEntryChangeEvent = true;\n            if (typeof navigationType === \"string\") {\n                yield entry.dispatchEvent(createEvent({\n                    type: \"navigateto\",\n                    intercept: transition[NavigationIntercept],\n                    /**\n                     * @deprecated\n                     */\n                    transitionWhile: transition[NavigationIntercept],\n                }));\n            }\n            yield dispose();\n            if (!transition[NavigationTransitionPromises].size) {\n                yield microtask;\n            }\n            yield transition.dispatchEvent({\n                type: NavigationTransitionStartDeadline,\n                transition,\n                entry,\n            });\n            yield transition[NavigationTransitionWait]();\n            transition.signal.removeEventListener(\"abort\", navigateAbort);\n            yield transition[NavigationTransitionFinish]();\n            if (typeof navigationType === \"string\") {\n                yield transition.dispatchEvent(createEvent({\n                    type: \"finish\",\n                    intercept: transition[NavigationIntercept],\n                    /**\n                     * @deprecated\n                     */\n                    transitionWhile: transition[NavigationIntercept],\n                }));\n                yield transition.dispatchEvent(createEvent({\n                    type: \"navigatesuccess\",\n                    intercept: transition[NavigationIntercept],\n                    /**\n                     * @deprecated\n                     */\n                    transitionWhile: transition[NavigationIntercept],\n                }));\n            }\n        }\n        const maybeSyncTransition = () => {\n            try {\n                return completeTransition();\n            }\n            catch (error) {\n                return Promise.reject(error);\n            }\n        };\n        return Promise.allSettled([maybeSyncTransition()])\n            .then(async ([detail]) => {\n            if (detail.status === \"rejected\") {\n                await transition.dispatchEvent({\n                    type: NavigationTransitionError,\n                    error: detail.reason,\n                    transition,\n                    entry,\n                });\n            }\n            await dispose();\n            await transition.dispatchEvent({\n                type: NavigationTransitionFinally,\n                transition,\n                entry,\n            });\n            await transition[NavigationTransitionWait]();\n            if (this.#activeTransition === transition) {\n                this.#activeTransition = undefined;\n            }\n            if (entry.sameDocument && typeof navigationType === \"string\") {\n                performance.mark(`same-document-navigation-finish:${entry.id}`);\n                performance.measure(`same-document-navigation:${entry.url}`, `same-document-navigation:${entry.id}`, `same-document-navigation-finish:${entry.id}`);\n            }\n        })\n            .then(() => entry);\n    };\n    #dispose = async () => {\n        // console.log(JSON.stringify({ known: [...this.#known], entries: this.#entries }));\n        for (const known of this.#known) {\n            const index = this.#entries.findIndex((entry) => entry.id === known.id);\n            if (index !== -1) {\n                // Still in use\n                continue;\n            }\n            // No index, no longer known\n            this.#known.delete(known);\n            const event = createEvent({\n                type: \"dispose\",\n                entry: known,\n            });\n            this[NavigationDisposeState](known);\n            await known.dispatchEvent(event);\n            await this.dispatchEvent(event);\n        }\n        // console.log(JSON.stringify({ pruned: [...this.#known] }));\n    };\n    reload(options) {\n        const { currentEntry } = this;\n        if (!currentEntry)\n            throw new InvalidStateError();\n        const entry = this.#cloneNavigationHistoryEntry(currentEntry, options);\n        return this.#pushEntry(\"reload\", entry, undefined, options);\n    }\n    updateCurrentEntry(options) {\n        const { currentEntry } = this;\n        if (!currentEntry) {\n            throw new InvalidStateError(\"Expected current entry\");\n        }\n        // Instant change\n        currentEntry[NavigationHistoryEntrySetState](options.state);\n        this[NavigationSetState](currentEntry);\n        const currentEntryChange = new NavigationCurrentEntryChangeEvent(\"currententrychange\", {\n            from: currentEntry,\n            navigationType: undefined,\n        });\n        const entriesChange = createEvent({\n            type: \"entrieschange\",\n            addedEntries: [],\n            removedEntries: [],\n            updatedEntries: [\n                currentEntry\n            ]\n        });\n        return Promise.all([\n            this.dispatchEvent(currentEntryChange),\n            this.dispatchEvent(entriesChange)\n        ]);\n    }\n}\nfunction getPerformance() {\n    if (typeof performance !== \"undefined\") {\n        return performance;\n    }\n    /* c8 ignore start */\n    return {\n        now() {\n            return Date.now();\n        },\n        mark() { },\n        measure() { },\n    };\n    // const { performance: nodePerformance } = await import(\"perf_hooks\");\n    // return nodePerformance;\n    /* c8 ignore end */\n}\n\nconst AppLocationCheckChange = Symbol.for(\"@virtualstate/navigation/location/checkChange\");\nconst AppLocationAwaitFinished = Symbol.for(\"@virtualstate/navigation/location/awaitFinished\");\nconst AppLocationTransitionURL = Symbol.for(\"@virtualstate/navigation/location/transitionURL\");\nconst AppLocationUrl = Symbol.for(\"@virtualstate/navigation/location/url\");\nconst NAVIGATION_LOCATION_DEFAULT_URL = \"https://html.spec.whatwg.org/\";\n/**\n * @experimental\n */\nclass NavigationLocation {\n    #options;\n    #navigation;\n    constructor(options) {\n        this.#options = options;\n        this.#navigation = options.navigation;\n        const reset = () => {\n            this.#transitioningURL = undefined;\n            this.#baseURL = undefined;\n        };\n        this.#navigation.addEventListener(\"navigate\", () => {\n            const transition = this.#navigation.transition;\n            if (transition && isCommittedAvailable(transition)) {\n                transition[NavigationTransitionCommittedDeferred].promise.then(reset, reset);\n            }\n            function isCommittedAvailable(transition) {\n                return NavigationTransitionCommittedDeferred in transition;\n            }\n        });\n        this.#navigation.addEventListener(\"currententrychange\", reset);\n    }\n    #urls = new WeakMap();\n    #transitioningURL;\n    #baseURL;\n    get [AppLocationUrl]() {\n        if (this.#transitioningURL) {\n            return this.#transitioningURL;\n        }\n        const { currentEntry } = this.#navigation;\n        if (!currentEntry) {\n            this.#baseURL = getBaseURL(this.#options.baseURL);\n            return this.#baseURL;\n        }\n        const existing = this.#urls.get(currentEntry);\n        if (existing)\n            return existing;\n        const next = new URL(currentEntry.url ?? NAVIGATION_LOCATION_DEFAULT_URL);\n        this.#urls.set(currentEntry, next);\n        return next;\n    }\n    get hash() {\n        return this[AppLocationUrl].hash;\n    }\n    set hash(value) {\n        this.#setUrlValue(\"hash\", value);\n    }\n    get host() {\n        return this[AppLocationUrl].host;\n    }\n    set host(value) {\n        this.#setUrlValue(\"host\", value);\n    }\n    get hostname() {\n        return this[AppLocationUrl].hostname;\n    }\n    set hostname(value) {\n        this.#setUrlValue(\"hostname\", value);\n    }\n    get href() {\n        return this[AppLocationUrl].href;\n    }\n    set href(value) {\n        this.#setUrlValue(\"href\", value);\n    }\n    get origin() {\n        return this[AppLocationUrl].origin;\n    }\n    get pathname() {\n        return this[AppLocationUrl].pathname;\n    }\n    set pathname(value) {\n        this.#setUrlValue(\"pathname\", value);\n    }\n    get port() {\n        return this[AppLocationUrl].port;\n    }\n    set port(value) {\n        this.#setUrlValue(\"port\", value);\n    }\n    get protocol() {\n        return this[AppLocationUrl].protocol;\n    }\n    set protocol(value) {\n        this.#setUrlValue(\"protocol\", value);\n    }\n    get search() {\n        return this[AppLocationUrl].search;\n    }\n    set search(value) {\n        this.#setUrlValue(\"search\", value);\n    }\n    #setUrlValue = (key, value) => {\n        const currentUrlString = this[AppLocationUrl].toString();\n        let nextUrl;\n        if (key === \"href\") {\n            nextUrl = new URL(value, currentUrlString);\n        }\n        else {\n            nextUrl = new URL(currentUrlString);\n            nextUrl[key] = value;\n        }\n        const nextUrlString = nextUrl.toString();\n        if (currentUrlString === nextUrlString) {\n            return;\n        }\n        void this.#transitionURL(nextUrl, () => this.#navigation.navigate(nextUrlString));\n    };\n    replace(url) {\n        return this.#transitionURL(url, (url) => this.#navigation.navigate(url.toString(), {\n            history: \"replace\",\n        }));\n    }\n    reload() {\n        return this.#awaitFinished(this.#navigation.reload());\n    }\n    assign(url) {\n        return this.#transitionURL(url, (url) => this.#navigation.navigate(url.toString()));\n    }\n    [AppLocationTransitionURL](url, fn) {\n        return this.#transitionURL(url, fn);\n    }\n    #transitionURL = async (url, fn) => {\n        const instance = (this.#transitioningURL =\n            typeof url === \"string\"\n                ? new URL(url, this[AppLocationUrl].toString())\n                : url);\n        try {\n            await this.#awaitFinished(fn(instance));\n        }\n        finally {\n            if (this.#transitioningURL === instance) {\n                this.#transitioningURL = undefined;\n            }\n        }\n    };\n    [AppLocationAwaitFinished](result) {\n        return this.#awaitFinished(result);\n    }\n    #awaitFinished = async (result) => {\n        this.#baseURL = undefined;\n        if (!result)\n            return;\n        const { committed, finished } = result;\n        await Promise.all([\n            committed || Promise.resolve(undefined),\n            finished || Promise.resolve(undefined),\n        ]);\n    };\n    #triggerIfUrlChanged = () => {\n        const current = this[AppLocationUrl];\n        const currentUrl = current.toString();\n        const expectedUrl = this.#navigation.currentEntry?.url;\n        if (currentUrl !== expectedUrl) {\n            return this.#transitionURL(current, () => this.#navigation.navigate(currentUrl));\n        }\n    };\n    /**\n     * This is needed if you have changed searchParams using its mutating methods\n     *\n     * TODO replace get searchParams with an observable change to auto trigger this function\n     */\n    [AppLocationCheckChange]() {\n        return this.#triggerIfUrlChanged();\n    }\n}\n\nconst State = Symbol.for(\"@virtualstate/navigation/history/state\");\n/**\n * @experimental\n */\nclass NavigationHistory extends NavigationLocation {\n    #options;\n    #navigation;\n    constructor(options) {\n        super(options);\n        this.#options = options;\n        this.#navigation = options.navigation;\n    }\n    get length() {\n        return this.#navigation.entries().length;\n    }\n    scrollRestoration = \"manual\";\n    get state() {\n        const currentState = this.#navigation.currentEntry?.getState();\n        if (typeof currentState === \"string\" || typeof currentState === \"number\" || typeof currentState === \"boolean\") {\n            return currentState;\n        }\n        return this.#options[State] ?? undefined;\n    }\n    back() {\n        const entries = this.#navigation.entries();\n        const index = this.#navigation.currentEntry?.index ?? -1;\n        const back = entries[index - 1];\n        const url = back?.url;\n        if (!url)\n            throw new InvalidStateError(\"Cannot go back\");\n        return this[AppLocationTransitionURL](url, () => this.#navigation.back());\n    }\n    forward() {\n        const entries = this.#navigation.entries();\n        const index = this.#navigation.currentEntry?.index ?? -1;\n        const forward = entries[index + 1];\n        const url = forward?.url;\n        if (!url)\n            throw new InvalidStateError(\"Cannot go forward\");\n        return this[AppLocationTransitionURL](url, () => this.#navigation.forward());\n    }\n    go(delta) {\n        if (typeof delta !== \"number\" || delta === 0 || isNaN(delta)) {\n            return this[AppLocationAwaitFinished](this.#navigation.reload());\n        }\n        const entries = this.#navigation.entries();\n        const { currentEntry } = this.#navigation;\n        if (!currentEntry) {\n            throw new Error(`Could not go ${delta}`);\n        }\n        const nextIndex = currentEntry.index + delta;\n        const nextEntry = entries[nextIndex];\n        if (!nextEntry) {\n            throw new Error(`Could not go ${delta}`);\n        }\n        const nextEntryKey = nextEntry.key;\n        return this[AppLocationAwaitFinished](this.#navigation.traverseTo(nextEntryKey));\n    }\n    replaceState(data, unused, url) {\n        if (url) {\n            return this[AppLocationTransitionURL](url, (url) => this.#navigation.navigate(url.toString(), {\n                state: data,\n                history: \"replace\",\n            }));\n        }\n        else {\n            return this.#navigation.updateCurrentEntry({\n                state: data\n            });\n        }\n    }\n    pushState(data, unused, url) {\n        if (url) {\n            return this[AppLocationTransitionURL](url, (url) => this.#navigation.navigate(url.toString(), {\n                state: data,\n            }));\n        }\n        else {\n            return this.#navigation.updateCurrentEntry({\n                state: data,\n            });\n        }\n    }\n}\n/**\n * @experimental\n * @internal\n */\nclass NavigationSync extends NavigationHistory {\n}\n\nasync function transition(navigation) {\n    let transition = undefined;\n    let finalPromise;\n    while (navigation.transition && transition !== navigation.transition) {\n        transition = navigation.transition;\n        finalPromise = transition.finished;\n        await finalPromise.catch((error) => void error);\n    }\n    return finalPromise;\n}\n\nlet GLOBAL_SERIALIZER = JSON;\nfunction setSerializer(serializer) {\n    GLOBAL_SERIALIZER = serializer;\n}\nfunction stringify(value) {\n    return GLOBAL_SERIALIZER.stringify(value);\n}\nfunction parse(value) {\n    return GLOBAL_SERIALIZER.parse(value);\n}\n\nconst globalWindow = typeof window === \"undefined\" ? undefined : window;\n\nconst globalSelf = typeof self === \"undefined\" ? undefined : self;\n\nconst NavigationKey = \"__@virtualstate/navigation/key\";\nconst NavigationMeta = \"__@virtualstate/navigation/meta\";\nfunction getWindowHistory(givenWindow = globalWindow) {\n    if (typeof givenWindow === \"undefined\")\n        return undefined;\n    return givenWindow.history;\n}\nfunction isStateHistoryMeta(state) {\n    return like(state) && state[NavigationMeta] === true;\n}\nfunction isStateHistoryWithMeta(state) {\n    return like(state) && isStateHistoryMeta(state[NavigationKey]);\n}\nfunction disposeHistoryState(entry, persist) {\n    if (!persist)\n        return;\n    if (typeof sessionStorage === \"undefined\")\n        return;\n    sessionStorage.removeItem(entry.key);\n}\nfunction getEntries(navigation, limit = DEFAULT_POLYFILL_OPTIONS.limit) {\n    let entries = navigation.entries();\n    if (typeof limit === \"number\") {\n        entries = entries.slice(-limit);\n    }\n    return entries.map(({ id, key, url, sameDocument }) => ({\n        id,\n        key,\n        url,\n        sameDocument\n    }));\n}\nfunction getNavigationEntryMeta(navigation, entry, limit = DEFAULT_POLYFILL_OPTIONS.limit) {\n    return {\n        [NavigationMeta]: true,\n        currentIndex: entry.index,\n        key: entry.key,\n        entries: getEntries(navigation, limit),\n        state: entry.getState()\n    };\n}\nfunction getNavigationEntryWithMeta(navigation, entry, limit = DEFAULT_POLYFILL_OPTIONS.limit) {\n    return {\n        [NavigationKey]: getNavigationEntryMeta(navigation, entry, limit)\n    };\n}\nfunction setHistoryState(navigation, history, entry, persist, limit) {\n    setStateInSession();\n    function getSerializableState() {\n        return getNavigationEntryWithMeta(navigation, entry, limit);\n    }\n    function setStateInSession() {\n        if (typeof sessionStorage === \"undefined\")\n            return;\n        try {\n            const raw = stringify(getSerializableState());\n            sessionStorage.setItem(entry.key, raw);\n        }\n        catch { }\n    }\n}\nfunction getHistoryState(history, entry) {\n    return (getStateFromHistoryIfMatchingKey() ??\n        getStateFromSession());\n    function getStateFromHistoryDirectly() {\n        try {\n            return history.state;\n        }\n        catch {\n            return undefined;\n        }\n    }\n    function getBaseState() {\n        const value = (history.originalState ??\n            getStateFromHistoryDirectly());\n        return like(value) ? value : undefined;\n    }\n    function getStateFromHistoryIfMatchingKey() {\n        const state = getBaseState();\n        if (!isStateHistoryWithMeta(state))\n            return undefined;\n        if (state[NavigationKey].key !== entry.key)\n            return undefined;\n        return state[NavigationKey].state;\n    }\n    function getStateFromSession() {\n        if (typeof sessionStorage === \"undefined\")\n            return undefined;\n        try {\n            const raw = sessionStorage.getItem(entry.key);\n            if (!raw)\n                return undefined;\n            const state = parse(raw);\n            if (!like(state))\n                return undefined;\n            if (!isStateHistoryWithMeta(state))\n                return undefined;\n            return state[NavigationKey].state;\n        }\n        catch {\n            return undefined;\n        }\n    }\n}\nconst DEFAULT_POLYFILL_OPTIONS = Object.freeze({\n    persist: true,\n    persistState: true,\n    history: true,\n    limit: 50,\n    patch: true,\n    interceptEvents: true\n});\nfunction getPolyfill(options = DEFAULT_POLYFILL_OPTIONS) {\n    const { navigation } = getCompletePolyfill(options);\n    return navigation;\n}\nfunction isNavigationPolyfill(navigation) {\n    return (like(navigation) &&\n        typeof navigation[NavigationSetEntries] === \"function\" &&\n        typeof navigation[NavigationSetCurrentKey] === \"function\");\n}\nfunction getNavigationOnlyPolyfill(givenNavigation) {\n    // When using as a polyfill, we will auto initiate a single\n    // entry, but not cause an event for it\n    const entries = [\n        {\n            key: v4()\n        }\n    ];\n    const navigation = givenNavigation ?? new Navigation({\n        entries\n    });\n    const history = new NavigationHistory({\n        navigation\n    });\n    return {\n        navigation,\n        history,\n        apply() {\n            if (isNavigationPolyfill(givenNavigation) && !navigation.entries().length) {\n                givenNavigation[NavigationSetEntries](entries);\n            }\n        }\n    };\n}\nfunction interceptWindowClicks(navigation, window) {\n    function clickCallback(ev, aEl) {\n        // console.log(\"<-- clickCallback -->\");\n        // TODO opt into queueMicrotask before process\n        process();\n        function process() {\n            if (!isAppNavigation(ev))\n                return;\n            ok(ev);\n            const target = aEl.getAttribute(\"target\");\n            // See target detailed here\n            // https://github.com/WICG/navigation-api/blob/7b2d326b8eeb75680e568dadaa67e3bb54c9ca7f/README.md?plain=1#L1465\n            if (target) {\n                if (target === \"_blank\") {\n                    // Continue with default, new window\n                    return;\n                }\n                if (target !== window.name) {\n                    // Continue with default, not current window\n                    return;\n                }\n            }\n            const options = {\n                history: \"auto\",\n                [NavigationUserInitiated]: true,\n                [NavigationDownloadRequest]: aEl.download,\n                [NavigationOriginalEvent]: ev,\n            };\n            navigation.navigate(aEl.href, options);\n        }\n    }\n    function submitCallback(ev, form) {\n        // console.log(\"<-- submitCallback -->\");\n        // TODO opt into queueMicrotask before process\n        process();\n        function process() {\n            if (ev.defaultPrevented)\n                return;\n            const method = ev.submitter && 'formMethod' in ev.submitter && ev.submitter.formMethod\n                ? ev.submitter.formMethod\n                : form.method;\n            // XXX: safe to ignore dialog method?\n            if (method === 'dialog')\n                return;\n            const action = ev.submitter && 'formAction' in ev.submitter && ev.submitter.formAction\n                ? ev.submitter.formAction\n                : form.action;\n            const target = form.getAttribute(\"target\");\n            // See target detailed here\n            // https://github.com/WICG/navigation-api/blob/7b2d326b8eeb75680e568dadaa67e3bb54c9ca7f/README.md?plain=1#L1465\n            if (target) {\n                if (target === \"_blank\") {\n                    // Continue with default, new window\n                    return;\n                }\n                if (target !== window.name) {\n                    // Continue with default, not current window\n                    return;\n                }\n            }\n            let formData;\n            /* c8 ignore start */\n            try {\n                formData = new FormData(form);\n            }\n            catch {\n                // For runtimes where we polyfilled the window & then evented it\n                // ... for some reason\n                formData = new FormData(undefined);\n            }\n            /* c8 ignore end */\n            const params = method === 'get'\n                ? new URLSearchParams([...formData].map(([k, v]) => v instanceof File ? [k, v.name] : [k, v]))\n                : undefined;\n            const navFormData = method === 'post'\n                ? formData\n                : undefined;\n            // action is always a fully qualified url in browsers\n            const url = new URL(action, navigation.currentEntry.url);\n            if (params)\n                url.search = params.toString();\n            const unknownEvent = ev;\n            ok(unknownEvent);\n            const options = {\n                history: \"auto\",\n                [NavigationUserInitiated]: true,\n                [NavigationFormData]: navFormData,\n                [NavigationOriginalEvent]: unknownEvent,\n            };\n            navigation.navigate(url.href, options);\n        }\n    }\n    // console.log(\"click event added\")\n    window.addEventListener(\"click\", (ev) => {\n        // console.log(\"click event\", ev)\n        if (ev.target?.ownerDocument === window.document) {\n            const aEl = getAnchorFromEvent(ev); // XXX: not sure what <a> tags without href do\n            if (like(aEl)) {\n                clickCallback(ev, aEl);\n            }\n        }\n    });\n    window.addEventListener(\"submit\", (ev) => {\n        // console.log(\"submit event\")\n        if (ev.target?.ownerDocument === window.document) {\n            const form = getFormFromEvent(ev);\n            if (like(form)) {\n                submitCallback(ev, form);\n            }\n        }\n    });\n}\nfunction getAnchorFromEvent(event) {\n    return matchesAncestor(getComposedPathTarget(event), \"a[href]:not([data-navigation-ignore])\");\n}\nfunction getFormFromEvent(event) {\n    return matchesAncestor(getComposedPathTarget(event), \"form:not([data-navigation-ignore])\");\n}\nfunction getComposedPathTarget(event) {\n    if (!event.composedPath) {\n        return event.target;\n    }\n    const targets = event.composedPath();\n    return targets[0] ?? event.target;\n}\nfunction patchGlobalScope(window, history, navigation) {\n    patchGlobals();\n    patchPopState();\n    patchHistory();\n    function patchWindow(window) {\n        try {\n            Object.defineProperty(window, \"navigation\", {\n                value: navigation,\n            });\n        }\n        catch (e) { }\n        if (!window.history) {\n            try {\n                Object.defineProperty(window, \"history\", {\n                    value: history,\n                });\n            }\n            catch (e) { }\n        }\n    }\n    function patchGlobals() {\n        patchWindow(window);\n        // If we don't have the global window, don't also patch global scope\n        if (window !== globalWindow)\n            return;\n        if (globalSelf) {\n            try {\n                Object.defineProperty(globalSelf, \"navigation\", {\n                    value: navigation,\n                });\n            }\n            catch (e) { }\n        }\n        if (typeof globalThis !== \"undefined\") {\n            try {\n                Object.defineProperty(globalThis, \"navigation\", {\n                    value: navigation,\n                });\n            }\n            catch (e) { }\n        }\n    }\n    function patchHistory() {\n        if (history instanceof NavigationHistory) {\n            // It's our polyfill, but probably externally passed to getPolyfill\n            return;\n        }\n        const polyfillHistory = new NavigationHistory({\n            navigation\n        });\n        const pushState = polyfillHistory.pushState.bind(polyfillHistory);\n        const replaceState = polyfillHistory.replaceState.bind(polyfillHistory);\n        const go = polyfillHistory.go.bind(polyfillHistory);\n        const back = polyfillHistory.back.bind(polyfillHistory);\n        const forward = polyfillHistory.forward.bind(polyfillHistory);\n        const prototype = Object.getPrototypeOf(history);\n        const descriptor = {\n            pushState: {\n                ...Object.getOwnPropertyDescriptor(prototype, \"pushState\"),\n                value: pushState\n            },\n            replaceState: {\n                ...Object.getOwnPropertyDescriptor(prototype, \"replaceState\"),\n                value: replaceState\n            },\n            go: {\n                ...Object.getOwnPropertyDescriptor(prototype, \"go\"),\n                value: go\n            },\n            back: {\n                ...Object.getOwnPropertyDescriptor(prototype, \"back\"),\n                value: back\n            },\n            forward: {\n                ...Object.getOwnPropertyDescriptor(prototype, \"forward\"),\n                value: forward\n            }\n        };\n        Object.defineProperties(prototype, descriptor);\n        const stateDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(history), \"state\");\n        Object.defineProperty(history, \"state\", {\n            ...stateDescriptor,\n            get() {\n                // Derive history state only ever directly from navigation state\n                //\n                // Decouple from classic history.state\n                //\n                // If the original state is wanted, use history.originalState,\n                // which is done on a best effort basis and may be out of alignment from\n                // navigation.currentEntry.getState()\n                //\n                // This state will always be tied to the navigation, not the background\n                // browser's history stack, which could be offset from the applications\n                // expected state between moments of transition.\n                //\n                // The change of using navigation.currentEntry.getState()\n                // in place of history.state is significant, it's shifting to a model where\n                // there can be an entry only for one single operation and then replaced\n                //\n                // e.g.\n                //\n                // navigation.navigate(\"/1\", { state: { key: 1 }});\n                // navigation.navigate(\"/2\", { state: { key: 2 }});\n                // await navigation.transition?.finished;\n                //\n                // The above code, if ran, history.state might not keep up...\n                //\n                // ... In safari if we run replaceState too many times in 30 seconds\n                // then we will get an exception. So, inherently we know we\n                // cannot just freely make use of history.state as a deterministic like\n                // reference.\n                return polyfillHistory.state;\n            }\n        });\n        Object.defineProperty(history, \"originalState\", {\n            ...stateDescriptor\n        });\n    }\n    function patchPopState() {\n        if (!window.PopStateEvent)\n            return;\n        const popStateEventPrototype = window.PopStateEvent.prototype;\n        if (!popStateEventPrototype)\n            return;\n        const descriptor = Object.getOwnPropertyDescriptor(popStateEventPrototype, \"state\");\n        Object.defineProperty(popStateEventPrototype, \"state\", {\n            ...descriptor,\n            get() {\n                const original = descriptor.get.call(this);\n                if (!isStateHistoryWithMeta(original))\n                    return original;\n                return original[NavigationKey].state;\n            }\n        });\n        Object.defineProperty(popStateEventPrototype, \"originalState\", {\n            ...descriptor\n        });\n    }\n}\nfunction getCompletePolyfill(options = DEFAULT_POLYFILL_OPTIONS) {\n    const { persist: PERSIST_ENTRIES, persistState: PERSIST_ENTRIES_STATE, history: givenHistory, limit: patchLimit, patch: PATCH_HISTORY, interceptEvents: INTERCEPT_EVENTS, window: givenWindow = globalWindow, navigation: givenNavigation } = {\n        // These are super default options, if the object de\n        ...DEFAULT_POLYFILL_OPTIONS,\n        ...options\n    };\n    // console.log({\n    //   ...DEFAULT_POLYFILL_OPTIONS,\n    //   ...options\n    // })\n    const IS_PERSIST = PERSIST_ENTRIES || PERSIST_ENTRIES_STATE;\n    const window = givenWindow ?? globalWindow;\n    const history = options.history && typeof options.history !== \"boolean\" ?\n        options.history :\n        getWindowHistory(window);\n    if (!history) {\n        return getNavigationOnlyPolyfill();\n    }\n    // console.log(\"POLYFILL LOADING\");\n    ok(window, \"window required when using polyfill with history, this shouldn't be seen\");\n    const location = window.location;\n    // Use baseHistory so that we don't initialise entries we didn't intend to\n    // if we used a polyfill history\n    const historyInitialState = history?.state;\n    let initialMeta = {\n        [NavigationMeta]: true,\n        currentIndex: -1,\n        entries: [],\n        key: \"\",\n        state: undefined\n    };\n    if (isStateHistoryWithMeta(historyInitialState)) {\n        initialMeta = historyInitialState[NavigationKey];\n    }\n    let initialEntries = initialMeta.entries;\n    const HISTORY_INTEGRATION = !!((givenWindow || givenHistory) && history);\n    if (!initialEntries.length) {\n        let url = undefined;\n        if (location?.href) {\n            url = location.href;\n        }\n        let state = undefined;\n        if (!isStateHistoryWithMeta(historyInitialState) && !isStateHistoryMeta(historyInitialState)) {\n            // console.log(\"Using state history direct\", historyInitialState, history.state);\n            state = historyInitialState;\n        }\n        const key = v4();\n        initialEntries = [\n            {\n                key,\n                state,\n                url\n            }\n        ];\n        initialMeta.key = key;\n        initialMeta.currentIndex = 0;\n    }\n    // console.log(\"Initial Entries\", initialEntries)\n    const navigationOptions = {\n        entries: initialEntries,\n        currentIndex: initialMeta?.currentIndex,\n        currentKey: initialMeta?.key,\n        getState(entry) {\n            if (!HISTORY_INTEGRATION)\n                return;\n            return getHistoryState(history, entry);\n        },\n        setState(entry) {\n            // console.log({\n            //   setState: entry.getState(),\n            //   entry\n            // })\n            if (!HISTORY_INTEGRATION)\n                return;\n            if (!entry.sameDocument)\n                return;\n            setHistoryState(navigation, history, entry, IS_PERSIST, patchLimit);\n        },\n        disposeState(entry) {\n            if (!HISTORY_INTEGRATION)\n                return;\n            disposeHistoryState(entry, IS_PERSIST);\n        }\n    };\n    const navigation = givenNavigation ?? new Navigation(navigationOptions);\n    const pushState = history?.pushState.bind(history);\n    const replaceState = history?.replaceState.bind(history);\n    const historyGo = history?.go.bind(history);\n    // const back = history?.back.bind(history);\n    // const forward = history?.forward.bind(history);\n    // const origin = typeof location === \"undefined\" ? \"https://example.com\" : location.origin;\n    return {\n        navigation,\n        history,\n        apply() {\n            // console.log(\"APPLYING POLYFILL TO NAVIGATION\");\n            if (isNavigationPolyfill(navigation)) {\n                // Initialise navigation options\n                navigation[NavigationSetOptions](navigationOptions);\n            }\n            if (HISTORY_INTEGRATION) {\n                const ignorePopState = new Set();\n                const ignoreCurrentEntryChange = new Set();\n                navigation.addEventListener(\"navigate\", event => {\n                    if (event.destination.sameDocument) {\n                        if (navigation.transition instanceof NavigationTransition) {\n                            const { transition } = navigation;\n                            const { destination } = event;\n                            transition.addEventListener(NavigationTransitionBeforeCommit, () => {\n                                if (!transition[NavigationTransitionIsOngoing]) {\n                                    // TODO do we need to push state here too?\n                                    if (transition.navigationType === \"push\") {\n                                        location.href = destination.url;\n                                    }\n                                    else if (transition.navigationType === \"reload\") {\n                                        location.reload();\n                                    }\n                                    transition[NavigationTransitionAbort]();\n                                }\n                            }, { once: true });\n                        }\n                        return;\n                    }\n                    // If the destination is not the same document, we are navigating away\n                    event.intercept({\n                        // Set commit after transition... and never commit!\n                        commit: \"after-transition\",\n                        async handler() {\n                            // Let other tasks do something and abort if needed\n                            queueMicrotask(() => {\n                                if (event.signal.aborted)\n                                    return;\n                                submit();\n                            });\n                        }\n                    });\n                    function submit() {\n                        if (like(event.originalEvent)) {\n                            const anchor = getAnchorFromEvent(event.originalEvent);\n                            if (anchor) {\n                                return submitAnchor(anchor);\n                            }\n                            else {\n                                const form = getFormFromEvent(event.originalEvent);\n                                if (form) {\n                                    return submitForm(form);\n                                }\n                            }\n                        }\n                        // Assumption that navigation event means to navigate...\n                        location.href = event.destination.url;\n                    }\n                    function submitAnchor(element) {\n                        const cloned = element.cloneNode();\n                        cloned.setAttribute(\"data-navigation-ignore\", \"1\");\n                        cloned.click();\n                    }\n                    function submitForm(element) {\n                        const cloned = element.cloneNode();\n                        cloned.setAttribute(\"data-navigation-ignore\", \"1\");\n                        cloned.submit();\n                    }\n                });\n                navigation.addEventListener(\"currententrychange\", ({ navigationType, from }) => {\n                    // console.log(\"<-- currententrychange event listener -->\");\n                    const { currentEntry, transition } = navigation;\n                    if (!currentEntry)\n                        return;\n                    const { key, url } = currentEntry;\n                    if (ignoreCurrentEntryChange.delete(key) || !currentEntry?.sameDocument)\n                        return;\n                    const historyState = getNavigationEntryWithMeta(navigation, currentEntry, patchLimit);\n                    // console.log(\"currentEntry change\", historyState);\n                    switch (navigationType || \"replace\") {\n                        case \"push\":\n                            return pushState(historyState, \"\", url);\n                        case \"replace\":\n                            return replaceState(historyState, \"\", url);\n                        case \"traverse\":\n                            const delta = currentEntry.index - from.index;\n                            ignorePopState.add(key);\n                            return historyGo(delta);\n                        // TODO\n                    }\n                });\n                window.addEventListener(\"popstate\", (event) => {\n                    // console.log(\"<-- popstate event listener -->\");\n                    const { state, originalState } = event;\n                    const foundState = originalState ?? state;\n                    if (!isStateHistoryWithMeta(foundState))\n                        return;\n                    const { [NavigationKey]: { key } } = foundState;\n                    if (ignorePopState.delete(key))\n                        return;\n                    ignoreCurrentEntryChange.add(key);\n                    let committed;\n                    try {\n                        committed = navigation.traverseTo(key).committed;\n                    }\n                    catch (error) {\n                        if (error instanceof InvalidStateError && !PERSIST_ENTRIES) {\n                            // ignore the error\n                            return;\n                        }\n                        throw error;\n                    }\n                    if (PERSIST_ENTRIES || PERSIST_ENTRIES_STATE) {\n                        committed\n                            .then(entry => {\n                            const historyState = getNavigationEntryWithMeta(navigation, entry, patchLimit);\n                            replaceState(historyState, \"\", entry.url);\n                        })\n                            // Noop catch\n                            .catch(() => { });\n                    }\n                });\n                // window.addEventListener(\"hashchange\", (ev) => {\n                //   // TODO\n                // })\n            }\n            if (INTERCEPT_EVENTS) {\n                interceptWindowClicks(navigation, window);\n            }\n            if (PATCH_HISTORY) {\n                patchGlobalScope(window, history, navigation);\n            }\n            if (!history.state) {\n                // Initialise history state if not available\n                const historyState = getNavigationEntryWithMeta(navigation, navigation.currentEntry, patchLimit);\n                replaceState(historyState, \"\", navigation.currentEntry.url);\n            }\n        }\n    };\n}\nfunction isAppNavigation(evt) {\n    return evt.button === 0 &&\n        !evt.defaultPrevented &&\n        !evt.metaKey &&\n        !evt.altKey &&\n        !evt.ctrlKey &&\n        !evt.shiftKey;\n}\n/** Checks if this element or any of its parents matches a given `selector` */\nfunction matchesAncestor(givenElement, selector) {\n    let element = getDefaultElement();\n    // console.log({ element })\n    while (element) {\n        if (element.matches(selector)) {\n            ok(element);\n            return element;\n        }\n        element = element.parentElement ?? element.getRootNode()?.host;\n    }\n    return undefined;\n    function getDefaultElement() {\n        if (!givenElement)\n            return undefined;\n        if (givenElement.matches instanceof Function)\n            return givenElement;\n        return givenElement.parentElement;\n    }\n}\n\nif (typeof window !== \"undefined\" && window.navigation) {\n    const navigation = window.navigation;\n    assertNavigation(navigation);\n}\nfunction assertNavigation(value) {\n    if (!value) {\n        throw new Error(\"Expected Navigation\");\n    }\n}\n\nfunction applyPolyfill(options = DEFAULT_POLYFILL_OPTIONS) {\n    const { apply, navigation } = getCompletePolyfill(options);\n    apply();\n    return navigation;\n}\n\nexport { AppLocationAwaitFinished, AppLocationCheckChange, AppLocationTransitionURL, AppLocationUrl, EventTarget, NAVIGATION_LOCATION_DEFAULT_URL, Navigation, NavigationCanIntercept, NavigationCurrentEntryChangeEvent, NavigationDisposeState, NavigationFormData, NavigationGetState, NavigationHistory, NavigationLocation, NavigationSetCurrentIndex, NavigationSetCurrentKey, NavigationSetEntries, NavigationSetOptions, NavigationSetState, NavigationSync, NavigationTransitionFinally, NavigationUserInitiated, applyPolyfill, getCompletePolyfill, getPolyfill, isInterceptEvent, isNavigationNavigationType, setIgnoreWarnings, setSerializer, setTraceWarnings, transition };\n//# sourceMappingURL=rollup.js.map\n"],"names":[],"mappings":"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"}