@react-motion-router/core 2.0.0-beta.sha-112968d → 2.0.0-beta.sha-c19f37e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/SharedElementSceneContext.ts","../src/SharedElement.tsx","../src/common/constants.ts","../src/common/utils.ts","../src/common/events.ts","../src/ScreenTransitionLayerContext.tsx","../src/ScreenTransitionProvider.tsx","../src/RouterContext.ts","../src/RoutePropContext.ts","../src/SharedElementScene.ts","../src/ScreenBase.tsx","../src/common/types.ts","../../web-animations-extension/build/index.js","../src/SharedElementTransitionLayer.tsx","../src/ScreenTransitionLayer.tsx","../src/RouterBase.tsx","../src/MetaData.ts","../src/NavigationBase.ts","../src/common/hooks.ts","../src/common/test-utils.ts","../src/Anchor.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { SharedElementScene } from './SharedElementScene';\n\nexport const SharedElementSceneContext =\n createContext<SharedElementScene>(null!);","import { Component, createRef } from 'react';\nimport { SharedElementTransitionType, StyleKeyList } from './common/types';\nimport { SharedElementSceneContext } from './SharedElementSceneContext';\n\ninterface SharedElementConfig extends OptionalEffectTiming {\n type?: SharedElementTransitionType;\n transformOrigin?: React.CSSProperties['transformOrigin'];\n styles?: StyleKeyList;\n deepClone?: boolean;\n}\n\ninterface SharedElementProps {\n id: string;\n children: React.ReactElement;\n disabled?: boolean;\n config?: SharedElementConfig;\n}\n\nexport class SharedElement extends Component<\n SharedElementProps\n> {\n public readonly ref = createRef<HTMLDivElement>();\n public static readonly contextType = SharedElementSceneContext;\n public declare context: React.ContextType<typeof SharedElementSceneContext>;\n\n public componentDidMount(): void {\n this.scene.addNode(this);\n }\n\n public componentDidUpdate(prevProps: SharedElementProps) {\n if (this.props.id !== prevProps.id) {\n this.scene.removeNode(prevProps.id.toString());\n this.scene.addNode(this);\n }\n }\n\n public componentWillUnmount(): void {\n this.scene.removeNode(this.id);\n }\n\n public get styles(): StyleKeyList {\n if (this.props.config?.styles) {\n return this.props.config.styles;\n }\n return [];\n }\n\n public get canTransition() {\n return !this.props.disabled\n && this.scene.canTransition;\n }\n\n public get scene() {\n return this.context;\n }\n\n public get id() {\n return `shared-element-${this.props.id.toString()}`;\n }\n\n public get transitionType(): SharedElementTransitionType {\n return this.props.config?.type ?? this.scene\n .previousScene\n ?.nodes\n .get(this.id)\n ?.transitionType ?? 'morph';\n }\n\n public getBoundingClientRect() {\n return this.ref\n .current\n ?.firstElementChild\n ?.getBoundingClientRect() ?? new DOMRect();\n }\n\n public clone() {\n if (!this.ref.current) return null;\n const deepClone = this.props.config?.deepClone ?? true;\n return this.ref\n .current\n .firstElementChild\n ?.cloneNode(deepClone) as HTMLElement;\n }\n\n public hide() {\n if (!this.ref.current) return;\n this.ref.current.style.visibility = 'hidden';\n }\n\n public unhide() {\n if (!this.ref.current) return;\n this.ref.current.style.visibility = 'visible';\n }\n\n public render() {\n return (\n <div\n ref={this.ref}\n id={this.id}\n style={{ display: 'contents' }}\n >\n {this.props.children}\n </div>\n );\n }\n}","export const MAX_Z_INDEX = 2147483647;\nexport const MAX_PROGRESS = 100;\nexport const MIN_PROGRESS = 0;\nexport const MIN_NORM_PROGRESS = 0;\nexport const MAX_NORM_PROGRESS = 1;\nexport const LAST_INDEX = -1;\nexport const FIRST_INDEX = 0;\nexport const SINGLE_ELEMENT_LENGTH = 1;\nexport const EMPTY_COLLECTION_LENGTH = 0;","import { cloneElement, lazy as ReactLazy } from 'react';\nimport {\n ClonedElementType,\n ElementPropType,\n LazyExoticComponent,\n MatchedRoute,\n PathPattern\n} from './types';\nimport { LAST_INDEX } from './constants';\n\nexport function resolveBaseURLFromPattern(pattern: string, pathname: string) {\n if (!pattern.endsWith('*')) pattern += '**'; // allows us to match nested routes\n const origin = window.location.origin;\n const baseURLMatch = new URLPattern(pattern, origin).exec(pathname, origin);\n if (!baseURLMatch) return null;\n\n const groups = Object.keys(baseURLMatch.pathname.groups)\n .filter((key) => !isNaN(Number(key)))\n .map((key) => baseURLMatch.pathname.groups[key])\n .filter((group) => group !== undefined);\n const nestedPathnameGroup = groups.at(LAST_INDEX) ?? '';\n // derive concrete baseURL\n return new URL(\n pathname.replace(nestedPathnameGroup, ''),\n window.location.origin\n );\n}\n\nexport function matchRoute(\n pathnamePattern: string,\n pathname: string,\n baseURLPattern: string = `${window.location.origin}/`,\n caseSensitive: boolean = true\n): MatchedRoute | null {\n if (!caseSensitive) {\n pathnamePattern = pathnamePattern.toLowerCase();\n pathname = pathname.toLowerCase();\n }\n\n const baseURL = resolveBaseURLFromPattern(baseURLPattern, pathname)?.href;\n if (!baseURL) return null;\n\n const match = new URLPattern({\n baseURL,\n pathname: pathnamePattern,\n }).exec({ pathname, baseURL });\n const params = match?.pathname.groups ?? {};\n if (match) {\n return {\n params,\n caseSensitive,\n };\n }\n return null;\n}\n\nexport function dispatchEvent<T>(\n event: CustomEvent<T> | Event,\n target: HTMLElement | EventTarget = window\n) {\n return new Promise<boolean>((resolve) => {\n queueMicrotask(() => resolve(\n target.dispatchEvent(event)\n ));\n });\n}\n\nexport function lazy<T extends React.ComponentType<any>>(\n factory: () => Promise<{ default: T }>\n): LazyExoticComponent<T> {\n const Component = ReactLazy(factory) as LazyExoticComponent<T>;\n Component.load = async () => {\n Component.module ??= await factory();\n return Component.module;\n };\n return Component;\n}\n\nexport function isNavigationSupported() {\n return Boolean(window.navigation);\n}\n\nexport function isURLPatternSupported() {\n // @ts-expect-error: Property 'UrlPattern' does not exist \n return Boolean(globalThis.URLPattern);\n}\n\nexport async function polyfillURLPattern() {\n const { URLPattern } = await import('urlpattern-polyfill');\n // @ts-expect-error: Property 'UrlPattern' does not exist \n globalThis.URLPattern = URLPattern;\n}\n\nexport async function polyfillNavigation() {\n const { applyPolyfill } = await import('@virtualstate/navigation');\n applyPolyfill({\n history: true,\n interceptEvents: true,\n patch: true,\n persist: true,\n persistState: true,\n });\n}\n\nexport async function PromiseAllSequential<T>(\n values: Iterable<T | PromiseLike<T>>\n): Promise<Awaited<T>[]> {\n const awaited = [];\n for (const value of values) {\n awaited.push(await value);\n }\n\n return awaited;\n}\n\nexport function toCamelCase(value: string) {\n return value.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n}\n\nexport function cloneAndInject<\n C extends React.CElement<any, any>,\n IP extends Partial<ElementPropType<C>>\n>(element: C, injectProps: IP) {\n return cloneElement(element, injectProps) as ClonedElementType<C, IP>;\n}\n\nexport function omit<T extends object, K extends readonly (keyof T)[]>(\n obj: T,\n keys: K\n): Omit<T, K[number]> {\n const copy = { ...obj };\n for (const k of keys) delete copy[k];\n return copy;\n}","import { SINGLE_ELEMENT_LENGTH } from './constants';\nimport { LoadNavigationTransition } from './types';\nimport { PromiseAllSequential } from './utils';\n\nexport class TransitionStartEvent extends Event {\n constructor() {\n super('transition-start');\n }\n}\n\nexport class TransitionCancelEvent extends Event {\n constructor() {\n super('transition-cancel');\n }\n}\n\nexport class TransitionEndEvent extends Event {\n constructor() {\n super('transition-end');\n }\n}\n\nexport class MotionProgressStartEvent extends Event {\n constructor() {\n super('motion-progress-start');\n }\n}\n\nexport class MotionProgressEndEvent extends Event {\n constructor() {\n super('motion-progress-end');\n }\n}\n\nexport class LoadEvent extends Event implements Omit<\n NavigateEvent,\n 'navigationType' | 'commit'\n> {\n #navigationType = 'load' as const;\n #userInitiated: boolean = false;\n #canIntercept: boolean = true;\n #hashChange: boolean = false;\n #formData: FormData | null = null;\n #downloadRequest: string | null = null;\n #destination: NavigationDestination;\n #signal: AbortSignal;\n #abortable = new AbortController();\n #intercepted = false;\n #thenables: Promise<void>[] = [];\n #transition: LoadNavigationTransition | null = null;\n public readonly hasUAVisualTransition = false;\n\n constructor() {\n super('navigate', { cancelable: false, bubbles: false, composed: false });\n const currentEntry = window.navigation.currentEntry;\n if (!currentEntry) throw new Error('Current entry is null');\n this.#destination = {\n getState() {\n return currentEntry.getState();\n },\n url: currentEntry.url ?? new URL(window.location.href).href,\n key: currentEntry.key,\n index: currentEntry.index,\n id: currentEntry.id,\n sameDocument: true,\n };\n\n this.#signal = this.#abortable.signal;\n window.navigation.addEventListener(\n 'navigate',\n this.#onNavigate,\n { signal: this.#signal }\n );\n }\n\n #onNavigate = (e: Event) => {\n if (e !== this) {\n this.#abortable.abort();\n } else if (!this.#thenables.length) {\n window.navigation.removeEventListener('navigate', this.#onNavigate);\n }\n };\n\n public intercept(options?: NavigationInterceptOptions | undefined): void {\n if (this.#intercepted) throw new DOMException('Failed to execute \\'intercept\\' on \\'NavigateEvent\\': intercept() may only be called while the navigate event is being dispatched.');\n let finish: Function | null = null;\n if (!this.#transition) {\n this.#transition = {\n finished: new Promise((resolve) => finish = resolve),\n from: window.navigation.currentEntry!,\n navigationType: 'load' as const,\n };\n }\n const thenable = options?.handler?.();\n if (thenable) this.#thenables.push(thenable);\n if (this.#thenables.length === SINGLE_ELEMENT_LENGTH) {\n PromiseAllSequential(this.#thenables).then(() => {\n this.#intercepted = true;\n window.removeEventListener('navigate', this.#onNavigate);\n finish?.();\n });\n }\n }\n\n public scroll(): void {\n throw new Error('Method not implemented.');\n }\n\n public get transition() {\n return this.#transition;\n }\n\n public get navigationType() {\n return this.#navigationType;\n }\n\n public get userInitiated() {\n return this.#userInitiated;\n }\n\n public get canIntercept() {\n return this.#canIntercept;\n }\n\n public get hashChange() {\n return this.#hashChange;\n }\n\n public get formData() {\n return this.#formData;\n }\n\n public get downloadRequest() {\n return this.#downloadRequest;\n }\n\n public get destination() {\n return this.#destination;\n }\n\n public get signal() {\n return this.#signal;\n }\n}","import { createContext } from 'react';\nimport { ScreenTransitionLayer } from './ScreenTransitionLayer';\n\nexport const ScreenTransitionLayerContext =\n createContext<ScreenTransitionLayer>(null!);\n","import { ScreenTransitionLayerContext } from './ScreenTransitionLayerContext';\nimport { AnimationEffectFactory } from './common/types';\nimport { NavigationBase } from './NavigationBase';\nimport { Component, ElementType, createRef } from 'react';\nimport { FIRST_INDEX } from './common/constants';\n\ninterface ScreenTransitionProviderProps {\n id: string;\n animation?: AnimationEffectFactory;\n children: React.ReactNode\n navigation: NavigationBase;\n renderAs: ElementType;\n focused: boolean;\n}\n\ninterface ScreenTransitionProviderState {\n zIndex: React.CSSProperties['zIndex'];\n}\n\nexport class ScreenTransitionProvider extends Component<\n ScreenTransitionProviderProps,\n ScreenTransitionProviderState\n> {\n public readonly ref = createRef<HTMLElement>();\n public static readonly contextType = ScreenTransitionLayerContext;\n public declare context: React.ContextType<\n typeof ScreenTransitionLayerContext\n >;\n public index = FIRST_INDEX;\n public exiting = false;\n\n public state: ScreenTransitionProviderState = {\n zIndex: 'unset',\n };\n\n private onAnimationEnd = () => {\n if (this.ref.current) {\n this.ref.current.style.willChange = 'auto';\n this.ref.current.style.pointerEvents = 'auto';\n }\n };\n\n private onAnimationStart = () => {\n if (this.ref.current) {\n this.ref.current.style.willChange = 'transform, opacity';\n this.ref.current.style.pointerEvents = 'none';\n }\n };\n\n public componentDidMount() {\n this.props\n .navigation\n .addEventListener('transition-start', this.onAnimationStart);\n this.props\n .navigation\n .addEventListener('transition-end', this.onAnimationEnd);\n this.props\n .navigation\n .addEventListener('transition-cancel', this.onAnimationEnd);\n }\n\n public componentWillUnmount() {\n this.props\n .navigation\n .removeEventListener('transition-start', this.onAnimationStart);\n this.props\n .navigation\n .removeEventListener('transition-end', this.onAnimationEnd);\n this.props\n .navigation\n .removeEventListener('transition-cancel', this.onAnimationEnd);\n }\n\n public get animationEffect() {\n const animationEffectFactory = this.props.animation;\n const { animation, direction, hasUAVisualTransition } = this.context;\n const { timeline, playbackRate } = animation;\n const { index, exiting, ref } = this;\n const screens = this.context.screens.map(screen => screen.current?.name);\n\n return animationEffectFactory?.({\n ref: ref.current,\n index,\n screens,\n exiting,\n timeline,\n direction,\n playbackRate,\n hasUAVisualTransition,\n }) ?? null;\n }\n\n public setZIndex(zIndex: React.CSSProperties['zIndex']) {\n return new Promise<void>(resolve => this.setState({ zIndex }, resolve));\n }\n\n public render() {\n const Element = this.props.renderAs;\n const inert = !this.props.focused ? '' : undefined;\n return (\n <Element\n id={this.props.id}\n className=\"screen-transition-provider\"\n ref={this.ref}\n {...{ inert }}\n style={{\n gridArea: '1 / 1',\n width: '100%',\n height: '100%',\n transformOrigin: 'center center',\n zIndex: this.state.zIndex,\n }}\n >\n {this.props.children}\n </Element>\n );\n }\n}","import { createContext } from 'react';\nimport { ScreenBase } from './ScreenBase';\nimport { RouterBase } from './RouterBase';\n\nexport const NestedRouterContext = createContext<{\n parentRouter: RouterBase,\n parentScreen: ScreenBase\n} | null>(null);\nexport const RouterContext = createContext<RouterBase>(null!);","import { createContext } from 'react';\nimport { RoutePropBase } from './common/types';\n\nexport const RoutePropContext = createContext<RoutePropBase>(null!);","import { SharedElement } from './SharedElement';\n\nexport class SharedElementScene {\n public readonly id: string;\n public readonly nodes = new Map<string, SharedElement>();\n public getScreenRect: () => DOMRect = () => new DOMRect();\n public keepAlive: boolean = false;\n public previousScene: SharedElementScene | null = null;\n public canTransition: boolean = true; // should be false if page animation already started\n\n constructor(id: string) {\n this.id = id;\n }\n\n public addNode(node: SharedElement | null) {\n if (!node) return;\n console.assert(!this.nodes.has(node.id), `Duplicate Shared Element ID: ${node.id} in ${this.id}`);\n this.nodes.set(node.id, node);\n }\n\n public removeNode(_id: string) {\n this.nodes.delete(_id);\n }\n\n public get xRatio() {\n const screenRect = this.getScreenRect();\n const xRatio = (screenRect.width / window.innerWidth).toFixed(2);\n return parseFloat(xRatio);\n }\n\n public get yRatio() {\n const screenRect = this.getScreenRect();\n const yRatio = (screenRect.height / window.innerHeight).toFixed(2);\n return parseFloat(yRatio);\n }\n\n public get x() {\n return this.getScreenRect().x;\n }\n\n public get y() {\n return this.getScreenRect().y;\n }\n\n public isEmpty() {\n return !this.nodes.size;\n }\n}","import {\n Component,\n ElementType,\n Suspense,\n cloneElement,\n createRef,\n isValidElement\n} from 'react';\nimport { ScreenTransitionProvider } from './ScreenTransitionProvider';\nimport {\n AnimationEffectFactory,\n LazyExoticComponent,\n PlainObject,\n RoutePropBase,\n isLazyExoticComponent,\n isNativeLazyExoticComponent\n} from './common/types';\nimport { NestedRouterContext, RouterContext } from './RouterContext';\nimport { RoutePropContext } from './RoutePropContext';\nimport { NavigationBase } from './NavigationBase';\nimport { SharedElementSceneContext } from './SharedElementSceneContext';\nimport { SharedElementScene } from './SharedElementScene';\n\nexport interface ScreenBaseComponentProps<\n R extends RoutePropBase = RoutePropBase,\n N extends NavigationBase = NavigationBase\n> {\n readonly route: R;\n readonly navigation: N;\n}\n\nexport type LifecycleProps<\n R extends RoutePropBase,\n N extends NavigationBase = NavigationBase\n> = ({\n signal: AbortSignal;\n preloading: false;\n } & ScreenBaseComponentProps<R, N>)\n | ({\n signal?: AbortSignal;\n preloading: true;\n } & Omit<ScreenBaseComponentProps<R, N>, 'route'>\n & {\n route: Omit<\n ScreenBaseComponentProps<R, N>['route'],\n 'setParams' | 'setConfig'\n >\n });\n\nexport interface ScreenBaseConfig<\n R extends RoutePropBase = RoutePropBase,\n N extends NavigationBase = NavigationBase\n> {\n readonly header?: {\n fallback?: React.ReactNode;\n component: React.JSXElementConstructor<any> | LazyExoticComponent<any>\n };\n readonly footer?: {\n fallback?: React.ReactNode;\n component: React.JSXElementConstructor<any> | LazyExoticComponent<any>\n };\n readonly animation?: AnimationEffectFactory;\n readonly onEnter?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n readonly onExit?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n readonly onEntered?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n readonly onExited?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n readonly onLoad?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n}\n\nexport interface ScreenBaseProps {\n path: string;\n component: React.JSXElementConstructor<any> | LazyExoticComponent<any>;\n fallback?: React.ReactNode;\n name?: string;\n defaultParams?: PlainObject;\n caseSensitive?: boolean;\n config?: ScreenBaseConfig;\n}\n\nexport interface ScreenBaseState<\n C extends ScreenBaseProps['config'] = ScreenBaseProps['config'],\n P extends PlainObject = PlainObject\n> {\n focused: boolean;\n config: C;\n params: P;\n elementType: ElementType;\n}\n\nexport abstract class ScreenBase<\n P extends ScreenBaseProps = ScreenBaseProps,\n S extends ScreenBaseState<P['config']> = ScreenBaseState<P['config']>,\n R extends RoutePropBase<P['config']> = RoutePropBase<P['config']>\n> extends Component<P, S> {\n public readonly sharedElementScene: SharedElementScene;\n #transitionProvider = createRef<ScreenTransitionProvider>();\n protected readonly ref = createRef<HTMLDivElement>();\n protected readonly nestedRouterData;\n public static readonly contextType = RouterContext;\n public declare context: React.ContextType<typeof RouterContext>;\n\n public state: S = {\n focused: false,\n config: {},\n params: {},\n elementType: 'div',\n } as S;\n\n constructor(props: P, context: React.ContextType<typeof RouterContext>) {\n super(props);\n\n this.sharedElementScene = new SharedElementScene(\n `${this.name}-shared-element-scene`\n );\n this.sharedElementScene.getScreenRect = () => {\n return this.ref.current?.getBoundingClientRect() || new DOMRect();\n };\n this.nestedRouterData = {\n parentScreen: this as ScreenBase,\n parentRouter: context,\n };\n }\n\n protected setParams(newParams: PlainObject) {\n this.setState(({ params }) => ({ params: { ...params, ...newParams } }));\n }\n\n protected setConfig(newConfig: R['config']) {\n this.setState(({ config }) => ({ config: { ...config, ...newConfig } }));\n }\n\n public get focused() {\n return this.state.focused;\n }\n\n public get name() {\n if (this.props.name)\n return this.props.name\n .toLowerCase()\n .replace(/[^\\w-]/g, '-') // Remove non-alphanumeric chars\n .replace(/-+/g, '-') // Replace multiple hyphens with a single one\n .replace(/^-|-$/g, ''); // Remove leading and trailing hyphens;\n else if (isLazyExoticComponent(this.props.component))\n return this.props.component.module?.default.name.toLowerCase();\n return this.props.component.name.toLowerCase();\n }\n\n public blur() {\n return new Promise<void>(resolve => {\n this.setState({ focused: false }, resolve);\n });\n }\n\n public focus() {\n return new Promise<void>(resolve => {\n this.setState({ focused: true }, resolve);\n });\n }\n\n public async load(signal: AbortSignal) {\n const Component = this.props.component;\n const HeaderComponent = this.props.config?.header?.component;\n const FooterComponent = this.props.config?.footer?.component;\n let result;\n\n if (isLazyExoticComponent(Component)) {\n result = await Component.load();\n } else {\n result = { default: Component };\n }\n\n if (isLazyExoticComponent(HeaderComponent))\n await HeaderComponent.load();\n if (isLazyExoticComponent(FooterComponent))\n await FooterComponent.load();\n\n const navigation = this.context.navigation;\n const route = this.routeProp;\n const preloading = false;\n await this.props\n .config\n ?.onLoad\n ?.({ navigation, route, signal, preloading });\n\n return result;\n }\n\n protected abstract get routeProp(): R;\n public abstract get config(): R['config'];\n public abstract get params(): R['params'];\n public abstract get resolvedPathname(): string;\n public abstract get id(): string;\n\n public async onExited(signal: AbortSignal): Promise<void> {\n await this.routeProp.config.onExited?.({\n route: this.routeProp,\n navigation: this.context.navigation,\n preloading: false,\n signal,\n });\n }\n\n public async onExit(signal: AbortSignal): Promise<void> {\n await this.routeProp.config.onExit?.({\n route: this.routeProp,\n navigation: this.context.navigation,\n preloading: false,\n signal,\n });\n }\n\n public async onEnter(signal: AbortSignal): Promise<void> {\n await this.routeProp.config.onEnter?.({\n route: this.routeProp,\n navigation: this.context.navigation,\n preloading: false,\n signal,\n });\n }\n\n public async onEntered(signal: AbortSignal): Promise<void> {\n await this.routeProp.config.onEntered?.({\n route: this.routeProp,\n navigation: this.context.navigation,\n preloading: false,\n signal,\n });\n }\n\n public get path() {\n return this.props.path;\n }\n\n public get transitionProvider() {\n return this.#transitionProvider;\n }\n\n public render() {\n const navigation = this.context.navigation;\n const routeProp = this.routeProp;\n const Component = this.props.component;\n const HeaderComponent = routeProp.config.header?.component;\n const FooterComponent = routeProp.config.footer?.component;\n\n return (\n <ScreenTransitionProvider\n ref={this.#transitionProvider}\n renderAs={this.state.elementType}\n id={`${this.context.id}-${this.name}-transition-provider`}\n animation={routeProp.config.animation}\n navigation={navigation}\n focused={this.state.focused}\n >\n <div\n id={`${this.context.id}-${this.name}`}\n ref={this.ref}\n className=\"screen\"\n style={{\n height: '100%',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n pointerEvents: 'inherit',\n }}\n >\n <SharedElementSceneContext.Provider value={this.sharedElementScene}>\n <RoutePropContext.Provider value={routeProp}>\n <NestedRouterContext.Provider value={this.nestedRouterData}>\n <Suspense fallback={(\n <ComponentWithRouteProps\n component={routeProp.config.header?.fallback}\n route={routeProp}\n navigation={navigation}\n />\n )}>\n <ComponentWithRouteProps\n component={HeaderComponent}\n route={routeProp}\n navigation={navigation}\n />\n </Suspense>\n <Suspense fallback={(\n <ComponentWithRouteProps\n component={this.props.fallback}\n route={routeProp}\n navigation={navigation}\n />\n )}>\n <ComponentWithRouteProps\n component={Component}\n route={routeProp}\n navigation={navigation}\n />\n </Suspense>\n <Suspense\n fallback={(\n <ComponentWithRouteProps\n component={routeProp.config.footer?.fallback}\n route={routeProp}\n navigation={navigation}\n />\n )}>\n <ComponentWithRouteProps\n component={FooterComponent}\n route={routeProp}\n navigation={navigation}\n />\n </Suspense>\n </NestedRouterContext.Provider>\n </RoutePropContext.Provider>\n </SharedElementSceneContext.Provider>\n </div>\n </ScreenTransitionProvider>\n );\n }\n}\n\ninterface ComponentWithRoutePropsProps extends ScreenBaseComponentProps<\n RoutePropBase,\n NavigationBase\n> {\n component: React.JSXElementConstructor<any>\n | LazyExoticComponent<any> | React.ReactNode;\n}\nfunction ComponentWithRouteProps(\n { component, route, navigation }: ComponentWithRoutePropsProps\n) {\n if (isLazyExoticComponent(component) && component.module?.default) {\n component = component.module.default;\n }\n const Component = component ?? null;\n if (\n typeof Component === 'function'\n || isNativeLazyExoticComponent(Component)\n ) {\n return (\n <Component\n navigation={navigation}\n route={route}\n />\n );\n } else if (isValidElement(Component)) {\n return cloneElement<any>(Component, {\n navigation,\n route,\n });\n }\n return <>{Component}</>;\n}","import { isValidElement } from 'react';\nimport { ScreenBase, ScreenBaseProps } from '../ScreenBase';\nimport {\n MotionProgressEndEvent,\n MotionProgressStartEvent,\n TransitionCancelEvent,\n TransitionEndEvent,\n TransitionStartEvent\n} from './events';\nimport { SharedElement } from '../SharedElement';\nimport { StandardPropertiesHyphen } from 'csstype';\n\nexport type ScreenChild<E extends ScreenBase = ScreenBase> = E extends ScreenBase<infer P> ? React.CElement<P, E> : never;\n\nexport interface AnimationEffectFactoryProps<R extends HTMLElement = HTMLElement> {\n ref: R | null;\n index: number;\n screens: string[];\n exiting: boolean;\n timeline: AnimationTimeline | null;\n playbackRate: number;\n direction: PlaybackDirection;\n hasUAVisualTransition: boolean;\n}\n\nexport type AnimationEffectFactory<R extends HTMLElement = HTMLElement> = (props: AnimationEffectFactoryProps<R>) => AnimationEffect;\n\nexport type MetaType = [string, string];\nexport type MetaKey = `${string}=${string}`;\n\nexport interface LazyExoticComponent<T extends React.ComponentType<any>> extends React.LazyExoticComponent<T> {\n load: () => Promise<{ default: T }>;\n module?: { default: T };\n}\n\nexport type ScreenState<P extends ScreenBaseProps = ScreenBaseProps> = Map<string, Pick<RoutePropBase<P['config'], PlainObject>, 'config' | 'params'>>;\n\nexport interface RoutePropBase<C extends ScreenBaseProps['config'] = {}, P extends PlainObject = PlainObject> {\n path: string;\n resolvedPathname?: string;\n config: NonNullable<C>;\n focused: boolean;\n params: P;\n setParams(params: Partial<P>): void;\n setConfig(config: Partial<NonNullable<C>>): void;\n}\n\nexport function isValidScreenChild<S extends ScreenBase>(value: any): value is ScreenChild<S> {\n if (!isValidElement(value)) return false;\n return Object.getPrototypeOf(value.type) === ScreenBase;\n}\n\nexport type PlainObject<T = any> = { [key: string]: T };\n\nexport interface RouterBaseEventMap extends HTMLElementEventMap {\n 'transition-start': TransitionStartEvent;\n 'transition-cancel': TransitionCancelEvent;\n 'transition-end': TransitionEndEvent;\n 'motion-progress-start': MotionProgressStartEvent;\n 'motion-progress-end': MotionProgressEndEvent;\n}\n\nexport type RouterHTMLElement<E extends RouterBaseEventMap, T extends HTMLElement = HTMLDivElement> = T & {\n addEventListener<K extends keyof E>(type: K, listener: (this: T, ev: E[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener<K extends keyof E>(type: K, listener: (this: T, ev: E[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\nexport type CustomElementType = `${string}-${string}`;\n\nexport interface MatchedRoute {\n params: PlainObject<string | undefined>;\n caseSensitive: boolean;\n}\n\nexport interface PathPattern {\n pattern: string;\n caseSensitive: boolean;\n}\n\nexport type AnimationDirection = 'normal' | 'reverse';\n\nenum SharedElementTransitionTypeEnum {\n 'morph',\n 'fade-through',\n 'fade',\n 'cross-fade'\n}\n\nexport type SharedElementTransitionType = keyof typeof SharedElementTransitionTypeEnum;\n\nexport interface SharedElementNode {\n id: string;\n instance: SharedElement;\n}\n\nexport type SharedElementNodeMap = Map<string, SharedElementNode>;\n\nexport type StyleKeyList = (keyof StandardPropertiesHyphen | string)[];\n\nexport function isNativeLazyExoticComponent(value: any): value is React.LazyExoticComponent<any> {\n return typeof value === 'object'\n && value !== null\n && value.$$typeof === Symbol.for('react.lazy');\n}\n\nexport function isLazyExoticComponent(value: any): value is LazyExoticComponent<any> {\n return isNativeLazyExoticComponent(value) && 'load' in value;\n}\n\nexport type StylableElement = Element & { style: CSSStyleDeclaration };\n\nexport function isStylableElement(element: any): element is StylableElement {\n return 'style' in element && element.style instanceof CSSStyleDeclaration;\n}\n\nexport interface LoadNavigationTransition extends Omit<NavigationTransition, 'navigationType'> {\n navigationType: 'load';\n}\n\ndeclare global {\n interface NavigateEvent extends Event {\n commit?(): void; // not in spec yet, see https://github.com/WICG/navigation-api/issues/66\n }\n}\n\nexport type ElementPropType<C> = C extends React.CElement<infer P, infer T> ? P & React.ClassAttributes<T> : never;\nexport type ClonedElementType<C, IP extends Partial<ElementPropType<C>>> = C extends React.CElement<infer P, infer T> ? React.CElement<P & Partial<IP>, T & React.Component<P & IP>> : never;","var Lt = Object.defineProperty;\nvar jt = (o, r, t) => r in o ? Lt(o, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[r] = t;\nvar V = (o, r, t) => (jt(o, typeof r != \"symbol\" ? r + \"\" : r, t), t), wt = (o, r, t) => {\n if (!r.has(o))\n throw TypeError(\"Cannot \" + t);\n};\nvar e = (o, r, t) => (wt(o, r, \"read from private field\"), t ? t.call(o) : r.get(o)), d = (o, r, t) => {\n if (r.has(o))\n throw TypeError(\"Cannot add the same private member more than once\");\n r instanceof WeakSet ? r.add(o) : r.set(o, t);\n}, l = (o, r, t, i) => (wt(o, r, \"write to private field\"), i ? i.call(o, t) : r.set(o, t), t);\nvar m = (o, r, t) => (wt(o, r, \"access private method\"), t);\nconst ot = {\n delay: 0,\n direction: \"normal\",\n duration: \"auto\",\n easing: \"linear\",\n endDelay: 0,\n fill: \"auto\",\n iterationStart: 0,\n iterations: 1\n}, St = 1e3, qt = window.Animation, ft = window.KeyframeEffect;\nfunction At(o) {\n return Array.isArray(o);\n}\nfunction Q(o) {\n return typeof o == \"object\" && o === null;\n}\nfunction u(o, r) {\n return Q(o) || typeof o == \"number\" ? o : (r || ([r] = Object.keys(o.type())), o.to(r).value);\n}\nfunction Ft(o, r = ot) {\n let { duration: t = \"auto\", iterations: i = 1, playbackRate: n = 1 } = r;\n if (Q(o))\n return o;\n if (typeof o == \"number\" || o.type().percent === void 0)\n throw new DOMException(\n \"CSSNumericValue must be a percentage for progress based animations.\",\n \"NotSupportedError\"\n );\n if (t === \"auto\")\n t = St;\n else if (t instanceof CSSNumericValue)\n t = t.to(\"ms\").value;\n else if (typeof t == \"string\")\n throw new TypeError(\"Unknown effect duration keyword.\");\n const { delay: s = 0, endDelay: a = 0 } = r, y = t / i * i / Math.abs(n), b = s + y + a;\n return st(\n o.to(\"percent\").value,\n [0, 100],\n [0, b]\n );\n}\nfunction bt(o) {\n if (Q(o) || typeof o == \"number\")\n return o;\n if (o.type().time !== void 0)\n throw new DOMException(\n \"CSSNumericValue must be a time value for time based animations.\",\n \"NotSupportedError\"\n );\n return o.to(\"ms\").value;\n}\nfunction It(o, r) {\n const t = r.length - 1, i = Math.floor(o * t), n = r[i], s = r[Math.min(i + 1, t)], a = o * t - i;\n return n + a * (s - n);\n}\nfunction Bt(o, r, t) {\n let i = 0, n = 0;\n for (const [s, a] of Object.entries(o)) {\n const { min: c, max: y } = r, b = t[s] ?? 1, R = (a - c[s]) / (y[s] - c[s]) * b;\n i += R, n += b;\n }\n return i / n;\n}\nfunction st(o, r, t, i = {}) {\n let n;\n if (typeof o == \"number\" && At(r)) {\n const a = { x: r[0] }, c = { x: r[1] };\n r = { min: a, max: c }, o = { x: o };\n } else\n throw new TypeError(\"Input and input range must have the same dimensions.\");\n if (n = Bt(o, r, i), n = Xt(n, 0, 1), At(t))\n return It(n, t);\n const s = {};\n for (const a of Object.keys(t.min)) {\n const c = t.min[a], y = t.max[a], b = [c, y];\n s[a] = It(n, b);\n }\n return s;\n}\nfunction Qt({ mass: o = 1, stiffness: r = 10, damping: t = 10, velocity: i = 0, steps: n = 100 }) {\n const s = Math.sqrt(r / o), a = t / (2 * Math.sqrt(r * o)), c = a < 1 ? s * Math.sqrt(1 - a * a) : 0, y = a < 1 ? (a * s + -i) / c : -i + s;\n function b(g) {\n return a < 1 ? g = Math.exp(-g * a * s) * (1 * Math.cos(c * g) + y * Math.sin(c * g)) : g = (1 + y * g) * Math.exp(-g * s), 1 - g;\n }\n const M = (() => {\n const g = 1 / n;\n let w = 0;\n for (; ; ) {\n if (Math.abs(1 - b(w)) < 1e-3) {\n const C = w;\n let E = 1;\n for (; w += g, !(Math.abs(1 - b(w)) >= 1e-3); )\n if (E++, E === 16)\n return C;\n }\n w += g;\n }\n })() * 1e3, R = (() => {\n const g = [];\n for (let w = 0; w <= n; w++) {\n const C = w / n, E = b(C);\n g.push(E);\n }\n return `linear(${g.join(\", \")})`;\n })();\n return { duration: M, easing: R };\n}\nfunction Yt(o, r = 100) {\n const t = [];\n for (let i = 0; i <= r; i++) {\n const n = i / r, s = o(n);\n t.push(s);\n }\n return `linear(${t.join(\", \")})`;\n}\nfunction Xt(o, r, t) {\n return o < r ? r : t && o > t ? t : o;\n}\nfunction Dt(o) {\n let {\n duration: r = \"auto\",\n iterations: t = 1,\n playbackRate: i = 1,\n delay: n = 0,\n endDelay: s = 0,\n localTime: a = null,\n progress: c = null\n } = o;\n const y = new CSSUnitValue(100, \"percent\");\n if (r === \"auto\")\n r = St, n = 0, s = 0;\n else if (r instanceof CSSNumericValue)\n r = r.to(\"ms\").value;\n else if (typeof r == \"string\")\n throw TypeError(\"Unknown effect duration keyword.\");\n const b = r / t, M = b * t / Math.abs(i), R = n + M + s;\n r = new CSSUnitValue(b / R * 100, \"percent\");\n const g = CSS.percent(r.to(\"percent\").value * t / Math.abs(i));\n return a !== null && (c = u(a, \"percent\") / y.value), {\n ...o,\n progress: c,\n activeDuration: g,\n duration: r,\n iterations: t,\n delay: n,\n endDelay: s,\n endTime: y\n };\n}\nfunction Pt(o, r) {\n let { activeDuration: t = 0, localTime: i = null, endTime: n = 1 / 0, delay: s = 0 } = o;\n if (n = u(n), t = u(t), i = u(i), i == null || i === void 0)\n return \"idle\";\n const a = Math.max(Math.min(s, n), 0), c = Math.max(Math.min(s + t, n), 0);\n return i < a || r === \"backwards\" && i === a ? \"before\" : i > c || r === \"forwards\" && i === c ? \"after\" : \"active\";\n}\nfunction Wt(o, r) {\n let { localTime: t = null, delay: i = 0, activeDuration: n = 0, fill: s } = o;\n if (n = u(n), t = u(t), t == null || t === void 0)\n return null;\n switch (r) {\n case \"before\":\n return s === \"backwards\" || s === \"both\" ? Math.max(t - i, 0) : null;\n case \"active\":\n return t - i;\n case \"after\":\n return s === \"forwards\" || s === \"both\" ? Math.max(Math.min(t - i, n), 0) : null;\n default:\n return null;\n }\n}\nfunction Kt(o, r, t) {\n const { duration: i = 0, iterations: n = 1, iterationStart: s = 0 } = o;\n if (typeof i != \"number\")\n throw new TypeError(\"Duration cannot be unresolved\");\n let a = 0;\n return i === 0 ? r === \"before\" ? a = 0 : a = n : a = t / bt(i), a + s;\n}\nfunction $t(o, r, t, i) {\n const { iterations: n = 1, iterationStart: s = 0, activeDuration: a = 0 } = o;\n if (Q(t))\n return null;\n let c = 0;\n return t === 1 / 0 && (c = s % 1), c === 0 && (r === \"active\" || r === \"after\") && a === i && n !== 0 && (c = 1), c;\n}\nfunction xt(o, r) {\n const { iterations: t = 1 } = o, i = Wt(o, r);\n if (Q(i))\n return null;\n if (r === \"after\" && t === 1 / 0)\n return 1 / 0;\n const n = Kt(o, r, i);\n return $t(o, r, n, i) === 1 ? Math.floor(n) - 1 : Math.floor(n);\n}\nclass zt extends Event {\n constructor(t) {\n super(\"update\", { bubbles: !1, cancelable: !1, composed: !1 });\n V(this, \"currentTime\");\n this.currentTime = t;\n }\n}\nvar x, K;\nclass v extends EventTarget {\n constructor(t = { type: \"swipe\", axis: \"x\", rangeStart: 0, rangeEnd: window.screen.availWidth, source: document.body }) {\n super();\n d(this, x, void 0);\n d(this, K, void 0);\n t.source.addEventListener(t.type, this.onGesture.bind(this)), l(this, K, CSS.percent(0)), l(this, x, t);\n }\n onGesture(t) {\n const i = e(this, x).source.getBoundingClientRect();\n let n = 0;\n const s = {\n x: t.x - i.left,\n y: t.y - i.top\n };\n switch (e(this, x).type) {\n case \"swipe\": {\n const { rangeStart: a, rangeEnd: c } = e(this, x), y = e(this, x).axis;\n n = st(\n s[y],\n [u(a, \"px\"), u(c, \"px\")],\n [0, 100]\n );\n break;\n }\n case \"pan\": {\n const { rangeStart: a, rangeEnd: c } = e(this, x), { x: y, y: b } = s;\n n = st(\n { x: y, y: b },\n {\n min: { x: u(a.x, \"px\"), y: u(a.y, \"px\") },\n max: { x: u(c.x, \"px\"), y: u(c.y, \"px\") }\n },\n [0, 100],\n { x: 1, y: 1 }\n );\n break;\n }\n case \"pinch\": {\n const { rangeStart: a, rangeEnd: c } = e(this, x), { scale: y } = t;\n n = st(\n y,\n [u(a, \"\"), u(c, \"\")],\n // figure out which unit\n [0, 100]\n );\n break;\n }\n case \"rotate\": {\n const { rangeStart: a, rangeEnd: c } = e(this, x), { rotation: y } = t;\n n = st(\n y,\n [u(a, \"deg\"), u(c, \"deg\")],\n [0, 100]\n );\n }\n }\n l(this, K, CSS.percent(n)), this.dispatchEvent(new zt(e(this, K)));\n }\n addEventListener(t, i, n) {\n super.addEventListener(t, i, n);\n }\n removeEventListener(t, i, n) {\n super.removeEventListener(t, i, n);\n }\n get currentTime() {\n return e(this, K);\n }\n get phase() {\n return \"active\";\n }\n}\nx = new WeakMap(), K = new WeakMap();\nconst G = /* @__PURE__ */ new WeakMap();\nvar tt;\nclass mt extends ft {\n constructor(t, i = null) {\n super(t);\n d(this, tt, null);\n l(this, tt, i);\n }\n get parent() {\n return e(this, tt);\n }\n getTiming() {\n var i;\n const t = super.getTiming();\n if (((i = G.get(this)) == null ? void 0 : i.timeline) instanceof v) {\n if (t.duration === 1 / 0)\n throw TypeError(\"Effect duration cannot be Infinity for non-monotonic timelines.\");\n if (t.iterations === 1 / 0)\n throw TypeError(\"Effect iterations cannot be Infinity for non-monotonic timelines.\");\n }\n return t;\n }\n getComputedTiming() {\n var n;\n const t = super.getComputedTiming();\n if (((n = G.get(this)) == null ? void 0 : n.timeline) instanceof v) {\n if (t.duration === 1 / 0)\n throw TypeError(\"Effect duration cannot be Infinity for non-monotonic timelines.\");\n if (t.iterations === 1 / 0)\n throw TypeError(\"Effect iterations cannot be Infinity for non-monotonic timelines.\");\n return Dt(t);\n }\n return t;\n }\n updateTiming(t) {\n var s;\n const i = super.getTiming();\n t = {\n ...i,\n duration: i.duration instanceof CSSNumericValue ? i.duration.to(\"ms\").value : i.duration,\n ...t\n };\n let n = e(this, tt);\n for (; n; ) {\n const a = n.getTiming();\n t != null && t.delay && (t.delay += a.delay ?? 0), t != null && t.endDelay && (t.endDelay += a.endDelay ?? 0), t != null && t.iterationStart && (t.iterationStart += a.iterationStart ?? 0), t != null && t.iterations && (t.iterations *= a.iterations ?? 1), t != null && t.playbackRate && (t.playbackRate *= a.playbackRate ?? 1), a.duration && typeof a.duration != \"string\" && (t == null ? void 0 : t.duration) === \"auto\" && (t.duration = u(a.duration, \"ms\")), n = n.parent;\n }\n if (((s = G.get(this)) == null ? void 0 : s.timeline) instanceof v) {\n if ((t == null ? void 0 : t.duration) === 1 / 0)\n throw TypeError(\"Effect duration cannot be Infinity for non-monotonic timelines.\");\n if (t != null && t.iterations)\n throw TypeError(\"Effect iterations cannot be Infinity for non-monotonic timelines.\");\n }\n return super.updateTiming(t);\n }\n}\ntt = new WeakMap();\nvar U, $;\nconst at = class at {\n constructor(r) {\n d(this, U, []);\n d(this, $, null);\n l(this, U, r.map((t) => (t instanceof at ? l(t, $, this) : t instanceof ft && (t = new mt(t, this)), t)));\n }\n get parent() {\n return e(this, $);\n }\n get children() {\n const r = e(this, U);\n return {\n length: r.length,\n item(t) {\n return r.at(t) ?? null;\n }\n };\n }\n get firstChild() {\n return e(this, U).at(0) ?? null;\n }\n get lastChild() {\n return e(this, U).at(-1) ?? null;\n }\n clone() {\n return structuredClone(this);\n }\n append(...r) {\n r.forEach((t) => {\n e(this, U).includes(t) || (t instanceof at ? l(t, $, this) : t instanceof ft && (t = new mt(t, this)), e(this, U).push(t));\n });\n }\n prepend(...r) {\n r.forEach((t) => {\n e(this, U).includes(t) || (t instanceof at ? l(t, $, this) : t instanceof ft && (t = new mt(t, this)), e(this, U).unshift(t));\n });\n }\n};\nU = new WeakMap(), $ = new WeakMap();\nlet lt = at;\nclass Y {\n constructor() {\n V(this, \"promise\");\n V(this, \"state\");\n V(this, \"nativeResolve\");\n V(this, \"nativeReject\");\n this.state = \"pending\", this.nativeResolve = this.nativeReject = null, this.promise = new Promise((r, t) => {\n this.nativeResolve = r, this.nativeReject = t;\n });\n }\n resolve(r) {\n var t;\n this.state = \"resolved\", (t = this.nativeResolve) == null || t.call(this, r);\n }\n reject(r) {\n var t;\n this.state = \"rejected\", this.promise.catch(() => {\n }), (t = this.nativeReject) == null || t.call(this, r);\n }\n}\nvar z, dt, Ut;\nclass Ht extends lt {\n constructor(t, i = ot) {\n super(t);\n d(this, dt);\n d(this, z, void 0);\n l(this, z, {\n ...ot,\n ...i\n });\n }\n prepend(...t) {\n super.prepend(...t), t.forEach((i) => i.updateTiming());\n }\n append(...t) {\n super.append(...t), t.forEach((i) => i.updateTiming());\n }\n getTiming() {\n return e(this, z);\n }\n getComputedTiming() {\n var w, C;\n const t = this.getTiming(), i = { ...t }, { delay: n = 0 } = ((w = this.children.item(0)) == null ? void 0 : w.getComputedTiming()) ?? {}, { endDelay: s = 0, endTime: a = 0 } = ((C = this.children.item(this.children.length - 1)) == null ? void 0 : C.getComputedTiming()) ?? {};\n t.delay = t.delay ? t.delay + n : n, t.endDelay = t.endDelay ? t.endDelay + s : s, i.endTime = a;\n for (let E = 0; E < this.children.length; E++) {\n const A = this.children.item(E);\n if (!A)\n continue;\n let {\n duration: I = \"auto\",\n activeDuration: Mt = 0\n } = A.getComputedTiming();\n i.activeDuration = i.activeDuration ? u(i.activeDuration, \"ms\") + u(Mt, \"ms\") : Mt, t.duration = t.duration instanceof CSSNumericValue ? t.duration.to(\"ms\").value : t.duration, I = I instanceof CSSNumericValue ? I.to(\"ms\").value : I, typeof I != \"string\" && (t.duration === \"auto\" ? t.duration = u(I, \"ms\") : typeof t.duration != \"string\" && (t.duration = t.duration ? t.duration + I : I));\n }\n const { timeline: c, startTime: y, currentTime: b } = G.get(this) ?? {}, M = c instanceof v ? \"percent\" : \"ms\";\n let { duration: R = 0, iterations: g = 1 } = i;\n if (R === \"auto\" && (R = 0), typeof R == \"string\")\n throw new TypeError(\"Unknown effect duration keyword.\");\n return i.duration = R, i.activeDuration = bt(R) * g, i.startTime = y ?? void 0, i.localTime = b, i.currentIteration = xt(i, Pt(i, e(this, dt, Ut))), c instanceof v ? Dt(i) : (c instanceof DocumentTimeline && (i.progress = b && u(b, M) / u(a, M)), i);\n }\n updateTiming(t) {\n l(this, z, {\n ...e(this, z),\n ...t\n });\n for (let i = 0; i < this.children.length; i++) {\n const n = this.children.item(i);\n n == null || n.updateTiming();\n }\n }\n}\nz = new WeakMap(), dt = new WeakSet(), Ut = function() {\n const { playbackRate: t = 1 } = G.get(this) ?? {};\n return t < 0 ? \"backwards\" : \"forwards\";\n};\nvar f, D, et, T, k, N, h, p, S, B, j, it, O, ut, kt, H, rt, X, Z, pt, Ot, Tt, _t, yt, Gt, F, W, nt, ct, Rt, _, q, P, L, ht, gt, Et;\nconst Ct = class Ct extends EventTarget {\n constructor(t, i) {\n super();\n d(this, ut);\n d(this, H);\n d(this, X);\n d(this, pt);\n d(this, Tt);\n d(this, yt);\n d(this, F);\n d(this, ct);\n d(this, _);\n d(this, P);\n V(this, \"id\", \"\");\n V(this, \"oncancel\", null);\n V(this, \"onfinish\", null);\n V(this, \"onremove\", null);\n d(this, f, void 0);\n d(this, D, void 0);\n d(this, et, \"active\");\n d(this, T, {\n task: null,\n playbackRate: null\n });\n d(this, k, new Y());\n d(this, N, new Y());\n d(this, h, null);\n d(this, p, null);\n d(this, S, []);\n d(this, B, null);\n d(this, j, !1);\n d(this, it, 0);\n d(this, O, 1);\n d(this, nt, () => {\n m(this, F, W).call(this);\n });\n d(this, ht, () => {\n var s;\n if (e(this, N).state !== \"pending\" || this.playState !== \"finished\")\n return;\n e(this, N).resolve(this);\n const t = this.currentTime, i = (s = this.timeline) == null ? void 0 : s.currentTime, n = new AnimationPlaybackEvent(\n \"finish\",\n {\n get currentTime() {\n return t;\n },\n get timelineTime() {\n return i;\n }\n }\n );\n requestAnimationFrame(() => {\n var a;\n this.dispatchEvent(n), (a = this.onfinish) == null || a.call(this, n);\n });\n });\n d(this, gt, () => {\n var s, a;\n const t = this.currentTime, i = (s = this.timeline) == null ? void 0 : s.currentTime, n = new AnimationPlaybackEvent(\n \"cancel\",\n {\n get currentTime() {\n return t;\n },\n get timelineTime() {\n return i;\n }\n }\n );\n this.dispatchEvent(n), (a = this.oncancel) == null || a.call(this, n);\n });\n d(this, Et, () => {\n var i;\n const t = new Event(\"remove\");\n this.dispatchEvent(t), (i = this.onremove) == null || i.call(this, t);\n });\n e(this, k).resolve(this), l(this, D, t ?? null), l(this, f, i ?? document.timeline), e(this, D) && G.set(e(this, D), this), m(this, ct, Rt).call(this), i instanceof v && i.addEventListener(\"update\", e(this, nt));\n }\n reverse() {\n var c;\n const { endTime: t = 0 } = ((c = e(this, D)) == null ? void 0 : c.getComputedTiming()) ?? {}, i = e(this, T).playbackRate ?? e(this, O), n = u(this.currentTime), s = t === 1 / 0, a = i !== 0 && (i < 0 || n && n > 0 || !s);\n if (!e(this, f) || !a) {\n a && (e(this, T).playbackRate = -i);\n return;\n }\n if (e(this, f).currentTime === null)\n throw new DOMException(\n \"Cannot reverse an animation with no active timeline\",\n \"InvalidStateError\"\n );\n this.updatePlaybackRate(-i), this.play();\n }\n play() {\n const t = this.playState === \"paused\" && this.pending, i = this.currentTime;\n (e(this, T).playbackRate ?? this.playbackRate) === 0 && i === null && l(this, p, 0), i === null && l(this, j, !0), (this.playState === \"finished\" || t) && (l(this, h, null), l(this, p, null), l(this, j, !0)), e(this, p) && l(this, h, null), e(this, T).task && (e(this, T).task = null), !(e(this, h) !== null && e(this, p) === null && !t && e(this, T).playbackRate === null) && (m(this, F, W).call(this), m(this, H, rt).call(this), e(this, T).task = \"play\", m(this, _, q).call(this, !1));\n }\n pause() {\n this.playState !== \"paused\" && (this.currentTime === null && l(this, j, !0), e(this, T).task && (e(this, T).task = null), m(this, H, rt).call(this), e(this, T).task = \"pause\");\n }\n persist() {\n e(this, S).forEach((t) => t.persist()), l(this, et, \"persisted\");\n }\n finish() {\n var s;\n const { endTime: t = 0 } = ((s = this.effect) == null ? void 0 : s.getComputedTiming()) ?? {}, i = e(this, T).playbackRate ?? e(this, O);\n if (i === 0 || i > 0 && t === 1 / 0)\n throw new DOMException(\"InvalidStateError\");\n m(this, P, L).call(this);\n let n;\n if (i > 0 ? n = t : n = 0, m(this, ut, kt).call(this, n), this.startTime === null && e(this, f) !== null && e(this, f).currentTime !== null && n !== null) {\n const a = e(this, f) instanceof v ? \"percent\" : \"ms\";\n n = u(n, a);\n const c = u(e(this, f).currentTime, a);\n l(this, h, c - n / i);\n }\n e(this, T).task === \"pause\" && e(this, h) !== null && (l(this, p, null), m(this, X, Z).call(this), e(this, k).resolve(this)), e(this, T).task === \"play\" && e(this, h) !== null && (m(this, X, Z).call(this), e(this, k).resolve(this)), m(this, _, q).call(this, !0), e(this, S).forEach((a) => a.finish());\n }\n commitStyles() {\n e(this, S).forEach((t) => {\n t.effect instanceof mt && (t.effect.target === null || t.effect.pseudoElement !== null) || t.commitStyles();\n });\n }\n cancel() {\n this.playState !== \"idle\" && (m(this, P, L).call(this), e(this, k).reject(new DOMException(\"The user aborted a request\", \"AbortError\")), m(this, X, Z).call(this), l(this, k, new Y()), e(this, N).state === \"pending\" && e(this, N).reject(new DOMException(\"The user aborted a request\", \"AbortError\")), l(this, N, new Y()), e(this, S).forEach((t) => t.cancel())), l(this, h, null), l(this, p, null);\n }\n updatePlaybackRate(t) {\n var n;\n e(this, T).playbackRate = t;\n const i = this.playState;\n if (e(this, k).state !== \"pending\")\n switch (i) {\n case \"idle\":\n case \"paused\":\n m(this, P, L).call(this);\n break;\n case \"finished\": {\n const s = e(this, f) instanceof v ? \"percent\" : \"ms\", a = ((n = e(this, f)) == null ? void 0 : n.currentTime) ?? null;\n if (t === 0)\n l(this, h, u(a, s));\n else if (a !== null) {\n let c = null;\n c = (u(a, s) - (e(this, h) ?? 0)) * this.playbackRate, e(this, h) !== null && c !== null && l(this, h, (u(a, s) - c) / t);\n }\n m(this, P, L).call(this), m(this, _, q).call(this, !1), m(this, F, W).call(this);\n break;\n }\n default:\n this.play();\n }\n }\n addEventListener(t, i, n) {\n super.addEventListener(t, i, n);\n }\n removeEventListener(t, i, n) {\n super.removeEventListener(t, i, n);\n }\n set playbackRate(t) {\n l(this, O, t), e(this, S).forEach((i) => {\n i.playbackRate *= t;\n });\n }\n set startTime(t) {\n l(this, h, u(t)), e(this, S).forEach((i) => i.startTime = t);\n }\n set currentTime(t) {\n var s;\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\", n = u(((s = e(this, f)) == null ? void 0 : s.currentTime) ?? null, i);\n if (Q(t) && !Q(n))\n throw new TypeError(\"currentTime may not be changed from resolved to unresolved.\");\n l(this, j, !1), e(this, p) !== null || e(this, h) === null || n === null || this.playbackRate === 0 ? l(this, p, u(t, i)) : l(this, h, n - u(t, i) / this.playbackRate), (e(this, f) === null || n === null) && l(this, h, null), l(this, B, null), m(this, ut, kt).call(this, t), e(this, T).task === \"pause\" && (l(this, p, u(t, i)), m(this, P, L).call(this), l(this, h, null), m(this, X, Z).call(this), e(this, k).resolve(this)), m(this, _, q).call(this, !0);\n }\n set timeline(t) {\n var C, E;\n const i = this.timeline;\n if (i === t)\n return;\n e(this, f) instanceof v && e(this, f).removeEventListener(\"update\", e(this, nt));\n const n = this.playState, s = i instanceof v ? \"percent\" : \"ms\", a = u(this.currentTime, s), { progress: c = null, endTime: y = 0 } = ((C = e(this, D)) == null ? void 0 : C.getComputedTiming()) ?? {}, b = u(y, s), M = i instanceof v, R = t instanceof v, g = t instanceof DocumentTimeline, w = this.pending;\n if (R)\n l(this, f, t), t.addEventListener(\"update\", e(this, nt)), m(this, P, L).call(this), l(this, j, !0), l(this, h, null), l(this, p, null), (n === \"running\" || n === \"finished\") && ((!e(this, k) || e(this, k).state === \"resolved\") && m(this, H, rt).call(this), e(this, T).task = \"play\", e(this, S).forEach((A) => A.pause())), n === \"paused\" && c !== null && l(this, p, c * b), w && ((!e(this, k) || e(this, k).state === \"resolved\") && m(this, H, rt).call(this), n === \"paused\" ? e(this, T).task = \"pause\" : e(this, T).task = \"play\"), e(this, h) !== null && l(this, p, null), m(this, _, q).call(this, !1);\n else if (g) {\n if (l(this, f, t), M) {\n if (a !== null && c !== null) {\n const { endTime: A = 0 } = ((E = e(this, D)) == null ? void 0 : E.getComputedTiming()) ?? {}, I = u(A, \"ms\");\n this.currentTime = c * I;\n }\n switch (n) {\n case \"paused\":\n e(this, S).forEach((A) => A.pause());\n break;\n case \"running\":\n case \"finished\":\n e(this, S).forEach((A) => A.play());\n }\n }\n } else\n throw TypeError(\"Unsupported timeline: \" + t);\n }\n set effect(t) {\n if (t !== e(this, D)) {\n if (this.pending && m(this, X, Z).call(this), e(this, D) && G.delete(e(this, D)), t) {\n const i = G.get(t);\n i && (i.effect = null), G.set(t, this);\n }\n l(this, D, t), m(this, ct, Rt).call(this), m(this, _, q).call(this, !1);\n }\n }\n get ready() {\n return e(this, k).promise;\n }\n get finished() {\n return e(this, N).promise;\n }\n get playState() {\n var a;\n let { endTime: t = 0 } = ((a = this.effect) == null ? void 0 : a.getComputedTiming()) ?? {};\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\", n = u(this.startTime, i), s = u(this.currentTime, i);\n return t = u(t, i), s === null && n === null && e(this, T).task === null ? \"idle\" : e(this, T).task === \"pause\" || n === null && e(this, T).task !== \"play\" ? \"paused\" : s !== null && (e(this, O) > 0 && s >= t || e(this, O) < 0 && s <= 0) ? \"finished\" : \"running\";\n }\n get playbackRate() {\n return e(this, O);\n }\n get replaceState() {\n return e(this, et);\n }\n get pending() {\n return e(this, k).state === \"pending\";\n }\n get currentTime() {\n var s;\n const t = ((s = this.timeline) == null ? void 0 : s.currentTime) ?? null;\n if (e(this, p)) {\n if (typeof t == \"number\")\n return e(this, p);\n const a = e(this, f) instanceof v ? \"percent\" : \"ms\";\n return new CSSUnitValue(e(this, p), a);\n }\n if (t === null || e(this, h) === null)\n return null;\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\";\n let n = (u(t, i) - e(this, h)) * this.playbackRate;\n return n === -0 && (n = 0), typeof t == \"number\" ? n : new CSSUnitValue(n, i);\n }\n get startTime() {\n var n;\n if (e(this, h) === null)\n return null;\n if (typeof (((n = this.timeline) == null ? void 0 : n.currentTime) ?? null) == \"number\")\n return e(this, h);\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\";\n return new CSSUnitValue(e(this, h), i);\n }\n get timeline() {\n return e(this, f);\n }\n get effect() {\n return e(this, D);\n }\n};\nf = new WeakMap(), D = new WeakMap(), et = new WeakMap(), T = new WeakMap(), k = new WeakMap(), N = new WeakMap(), h = new WeakMap(), p = new WeakMap(), S = new WeakMap(), B = new WeakMap(), j = new WeakMap(), it = new WeakMap(), O = new WeakMap(), ut = new WeakSet(), kt = function(t) {\n var n;\n const i = u(((n = e(this, f)) == null ? void 0 : n.currentTime) ?? null);\n if (t === null && i !== null)\n throw new TypeError();\n t === null || i === null || (t = u(t), l(this, j, !1), e(this, p) !== null || e(this, h) === null || e(this, f) instanceof v && e(this, f).phase === \"inactive\" || e(this, O) === 0 ? l(this, p, t) : l(this, h, i - t / e(this, O)), e(this, f) instanceof v && e(this, f).phase === \"inactive\" && l(this, h, null), l(this, B, null));\n}, H = new WeakSet(), rt = function() {\n e(this, k).state !== \"pending\" && l(this, k, new Y()), cancelAnimationFrame(e(this, it)), l(this, it, requestAnimationFrame(() => {\n var i;\n (((i = e(this, f)) == null ? void 0 : i.currentTime) ?? null) !== null && (m(this, yt, Gt).call(this), e(this, T).task === \"play\" && (e(this, h) !== null || e(this, p) !== null) ? m(this, pt, Ot).call(this) : e(this, T).task === \"pause\" && m(this, Tt, _t).call(this), Promise.all(e(this, S).map((n) => n.finished)).then(e(this, ht)), Promise.all(e(this, S).map((n) => new Promise((s) => n.onremove = s))).then(e(this, Et)), Promise.all(e(this, S).map((n) => new Promise((s) => n.oncancel = s))).then(e(this, gt)).then(() => l(this, et, \"removed\")));\n }));\n}, X = new WeakSet(), Z = function() {\n cancelAnimationFrame(e(this, it)), e(this, T).task = null;\n}, pt = new WeakSet(), Ot = function() {\n var n;\n const t = ((n = this.timeline) == null ? void 0 : n.currentTime) ?? null;\n if (t === null)\n return;\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\";\n if (e(this, p) !== null)\n m(this, P, L).call(this), this.playbackRate === 0 ? l(this, h, u(t, i)) : (l(this, h, u(t, i) - e(this, p) / this.playbackRate), l(this, p, null));\n else if (e(this, h) !== null && e(this, T).playbackRate !== null) {\n const s = (u(t, i) - e(this, h)) * this.playbackRate;\n m(this, P, L).call(this);\n const a = this.playbackRate;\n a === 0 ? (l(this, p, null), l(this, h, u(t, i))) : l(this, h, u(t, i) - s / a);\n }\n e(this, k).state === \"pending\" && e(this, k).resolve(this), m(this, _, q).call(this, !1), m(this, F, W).call(this), e(this, T).task = null, this.timeline instanceof DocumentTimeline && e(this, S).forEach((s) => s.play());\n}, Tt = new WeakSet(), _t = function() {\n var s;\n const t = ((s = this.timeline) == null ? void 0 : s.currentTime) ?? null;\n if (t === null)\n return;\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\", n = t;\n e(this, h) !== null && e(this, p) === null && l(this, p, (u(n, i) - e(this, h)) * this.playbackRate), m(this, P, L).call(this), l(this, h, null), e(this, k).resolve(this), m(this, _, q).call(this, !1), m(this, F, W).call(this), e(this, T).task = null, e(this, S).forEach((a) => a.pause());\n}, yt = new WeakSet(), Gt = function() {\n if (e(this, j) && !(!e(this, f) || !e(this, f).currentTime) && !(this.playState === \"idle\" || this.playState === \"paused\" && e(this, p) !== null)) {\n if (e(this, f) instanceof v) {\n const t = e(this, T).playbackRate ?? this.playbackRate;\n l(this, h, t >= 0 ? 0 : 100);\n } else\n l(this, h, u(e(this, f).currentTime, \"ms\"));\n l(this, p, null);\n }\n}, F = new WeakSet(), W = function() {\n var a;\n const t = ((a = e(this, f)) == null ? void 0 : a.currentTime) ?? null;\n if (t === null)\n return;\n const i = e(this, D), n = e(this, f) instanceof v ? Ft(t, i == null ? void 0 : i.getTiming()) : bt(t);\n let s = null;\n if (e(this, h) !== null) {\n const y = u(t, \"percent\") === (this.playbackRate < 0 ? 0 : 100) ? this.playbackRate < 0 ? 1e-3 : -1e-3 : 0;\n s = (n - e(this, h)) * this.playbackRate, s += y;\n } else if (e(this, p) !== null)\n s = e(this, p);\n else\n return;\n e(this, S).forEach((c) => c.currentTime = s);\n}, nt = new WeakMap(), ct = new WeakSet(), Rt = function() {\n var n;\n const t = e(this, D), i = [];\n if (t instanceof lt)\n for (let s = 0; s < t.children.length; s++) {\n const a = new Ct(t.children.item(s));\n if (t instanceof Ht && s > 0) {\n const { endTime: c = null } = ((n = i[s - 1].effect) == null ? void 0 : n.getComputedTiming()) ?? {};\n a.startTime = u(c, \"ms\");\n }\n i.push(a);\n }\n else {\n const s = e(this, f) instanceof v ? document.timeline : e(this, f);\n i.push(new qt(t, s));\n }\n l(this, S, i);\n}, _ = new WeakSet(), q = function(t) {\n var c, y;\n const i = ((c = e(this, f)) == null ? void 0 : c.currentTime) ?? null, n = e(this, f) instanceof v ? \"percent\" : \"ms\", s = u(this.currentTime, n);\n if (s && e(this, h) !== null && !this.pending) {\n let { delay: b = 0, endDelay: M = 0, iterations: R = 1, duration: g = \"auto\" } = ((y = e(this, D)) == null ? void 0 : y.getTiming()) ?? {};\n const w = e(this, T).playbackRate ?? this.playbackRate;\n if (g === \"auto\")\n g = e(this, f) instanceof v ? St : 0;\n else if (g instanceof CSSNumericValue)\n g = g.to(\"ms\").value;\n else if (typeof g == \"string\")\n throw new TypeError(\"Unknown effect duration keyword.\");\n const C = b + g * R + M;\n let E = u(e(this, B), n);\n w > 0 && s >= C && e(this, B) !== null ? ((E === null || E < C) && (E = C), l(this, p, t ? s : E)) : w < 0 && s <= 0 ? ((E === null || E > 0) && (E = 0), l(this, p, t ? s : E)) : w !== 0 && (t && e(this, p) !== null && (i !== null ? l(this, h, u(i, n) - e(this, p) / w) : l(this, h, null)), l(this, p, null));\n }\n m(this, F, W).call(this), l(this, B, this.currentTime), this.playState === \"finished\" ? e(this, N).state === \"pending\" && e(this, ht).call(this) : e(this, N).state === \"resolved\" && l(this, N, new Y());\n}, P = new WeakSet(), L = function() {\n e(this, T).playbackRate && (this.playbackRate = e(this, T).playbackRate), e(this, T).playbackRate = null;\n}, ht = new WeakMap(), gt = new WeakMap(), Et = new WeakMap();\nlet Nt = Ct;\nvar J, vt, Vt;\nclass Zt extends lt {\n constructor(t, i = ot) {\n super(t);\n d(this, vt);\n d(this, J, void 0);\n l(this, J, {\n ...ot,\n ...i\n }), t.forEach((n) => n.updateTiming());\n }\n prepend(...t) {\n super.prepend(...t), t.forEach((i) => i.updateTiming());\n }\n append(...t) {\n super.append(...t), t.forEach((i) => i.updateTiming());\n }\n getTiming() {\n return e(this, J);\n }\n getComputedTiming() {\n const t = this.getTiming(), i = { ...t };\n for (let R = 0; R < this.children.length; R++) {\n const g = this.children.item(R);\n if (!g)\n continue;\n let {\n delay: w = 0,\n endDelay: C = 0,\n duration: E = \"auto\",\n activeDuration: A = 0,\n endTime: I = 0\n } = g.getComputedTiming();\n t.delay = t.delay ? Math.min(t.delay, w) : w, t.endDelay = t.endDelay ? Math.max(t.endDelay, C) : C, i.endTime = i.endTime ? Math.max(u(i.endTime, \"ms\"), u(I, \"ms\")) : I, i.activeDuration = i.activeDuration ? Math.max(u(i.activeDuration, \"ms\"), u(A, \"ms\")) : A, t.duration = t.duration instanceof CSSNumericValue ? t.duration.to(\"ms\").value : t.duration, E = E instanceof CSSNumericValue ? E.to(\"ms\").value : E, typeof E != \"string\" && (t.duration === \"auto\" ? t.duration = u(E, \"ms\") : typeof t.duration != \"string\" && (t.duration = t.duration ? Math.max(t.duration, E) : E));\n }\n const { timeline: n, startTime: s, currentTime: a } = G.get(this) ?? {}, c = n instanceof v ? \"percent\" : \"ms\";\n let { duration: y = 0, iterations: b = 1, endTime: M = 0 } = i;\n if (y === \"auto\" && (y = 0), typeof y == \"string\")\n throw new TypeError(\"Unknown effect duration keyword.\");\n return i.duration = y, i.activeDuration = bt(y) * b, i.startTime = s ?? void 0, i.localTime = a, i.currentIteration = xt(i, Pt(i, e(this, vt, Vt))), n instanceof v ? Dt(i) : (n instanceof DocumentTimeline && (i.progress = a && u(a, c) / u(M, c)), i);\n }\n updateTiming(t) {\n l(this, J, {\n ...e(this, J),\n ...t\n });\n for (let i = 0; i < this.children.length; i++) {\n const n = this.children.item(i);\n n == null || n.updateTiming();\n }\n }\n}\nJ = new WeakMap(), vt = new WeakSet(), Vt = function() {\n const { playbackRate: t = 1 } = G.get(this) ?? {};\n return t < 0 ? \"backwards\" : \"forwards\";\n};\nexport {\n Nt as Animation,\n v as GestureTimeline,\n zt as GestureTimelineUpdateEvent,\n lt as GroupEffect,\n mt as KeyframeEffect,\n Zt as ParallelEffect,\n Wt as calculateActiveTime,\n xt as calculateCurrentIterationIndex,\n Kt as calculateOverallProgress,\n $t as calculateSimpleIterationProgress,\n Xt as clamp,\n Dt as computedTimingToPercent,\n u as cssNumberishToNumber,\n Yt as easingToLinear,\n Pt as getPhase,\n st as interpolate,\n Ft as msFromPercent,\n bt as msFromTime,\n Qt as springToLinear\n};\n//# sourceMappingURL=index.js.map\n","import { StylableElement, StyleKeyList, isStylableElement } from './common/types';\nimport { Component, RefObject, createRef } from 'react';\nimport { NavigationBase } from './NavigationBase';\nimport { ScreenBase } from './ScreenBase';\nimport { ParallelEffect } from 'web-animations-extension';\nimport { SharedElement } from './SharedElement';\nimport { toCamelCase } from './common/utils';\n\ninterface SharedElementTransitionLayerProps {\n navigation: NavigationBase;\n direction: 'forwards' | 'backwards';\n}\n\ninterface SharedElementTransitionLayerState { }\n\nexport class SharedElementTransitionLayer extends Component<SharedElementTransitionLayerProps, SharedElementTransitionLayerState> {\n public readonly ref = createRef<HTMLDialogElement>();\n #outgoingScreen: RefObject<ScreenBase> | null = null;\n #incomingScreen: RefObject<ScreenBase> | null = null;\n\n public state: SharedElementTransitionLayerState = {\n transitioning: false,\n };\n\n public set outgoingScreen(outgoingScreen: RefObject<ScreenBase> | null) {\n this.#outgoingScreen = outgoingScreen;\n }\n\n public set incomingScreen(incomingScreen: RefObject<ScreenBase> | null) {\n this.#incomingScreen = incomingScreen;\n }\n\n public get outgoingScreen() {\n return this.#outgoingScreen;\n }\n\n public get incomingScreen() {\n return this.#incomingScreen;\n }\n\n public getKeyframeProperties(element: Element, styleList: StyleKeyList) {\n const computedStyles: Record<string, string> = {};\n const computedStyle = window.getComputedStyle(element);\n for (const key of styleList) {\n let transformedKey;\n if (key === 'offset')\n transformedKey = 'cssOffset';\n else if (key === 'float')\n transformedKey = 'cssFloat';\n else\n transformedKey = toCamelCase(key);\n computedStyles[transformedKey] = computedStyle.getPropertyValue(key);\n }\n return computedStyles;\n }\n\n public copyStyles(\n srcElement: Element | null | undefined,\n cloneElement: StylableElement,\n styleList: StyleKeyList\n ) {\n if (!isStylableElement(srcElement)) return;\n const computedStyles = window.getComputedStyle(srcElement);\n for (const key of styleList) {\n const value = computedStyles.getPropertyValue(key);\n const priority = computedStyles.getPropertyPriority(key);\n cloneElement.style.setProperty(key, value, priority);\n }\n }\n\n getAnimationEffect<T extends { instance: SharedElement, clone: HTMLElement, rect: DOMRect }>(start: T, end: T) {\n const keyframeEffects = new Array<KeyframeEffect>();\n const config: KeyframeEffectOptions = {\n fill: 'both' as const,\n duration: 'auto',\n easing: 'ease',\n };\n const transitionType = end.instance.transitionType;\n const startTransform = `translate(${start.rect.x}px, ${start.rect.y}px)`;\n const endTransform = `translate(${end.rect.x}px, ${end.rect.y}px)`;\n switch (transitionType) {\n case 'fade':\n keyframeEffects.push(\n new KeyframeEffect(\n start.clone,\n [\n { transform: startTransform, opacity: 1 },\n { transform: endTransform, opacity: 0 },\n ],\n config\n )\n );\n keyframeEffects.push(\n new KeyframeEffect(\n end.clone,\n [\n { transform: startTransform },\n { transform: endTransform },\n ],\n config\n )\n\n );\n break;\n case 'fade-through':\n keyframeEffects.push(\n new KeyframeEffect(\n start.clone,\n [\n { transform: startTransform, opacity: 1 },\n { opacity: 0, offset: 0.5 },\n { transform: endTransform, opacity: 0 },\n ],\n config\n )\n\n );\n keyframeEffects.push(\n new KeyframeEffect(\n end.clone,\n [\n { transform: startTransform, opacity: 0 },\n { opacity: 0, offset: 0.5 },\n { transform: endTransform, opacity: 1 },\n ],\n config\n )\n\n );\n break;\n case 'cross-fade':\n end.clone.style.mixBlendMode = 'plus-lighter';\n keyframeEffects.push(\n new KeyframeEffect(\n start.clone,\n [\n { transform: startTransform, opacity: 1 },\n { transform: endTransform, opacity: 0 },\n ],\n config\n )\n\n );\n keyframeEffects.push(\n new KeyframeEffect(\n end.clone,\n [\n { transform: startTransform },\n { transform: endTransform },\n ],\n config\n )\n\n );\n break;\n case 'morph': {\n const styleList = Array.from(new Set([...start.instance.styles, ...end.instance.styles]));\n keyframeEffects.push(\n new KeyframeEffect(\n end.clone,\n [\n {\n ...Object.fromEntries((start.instance.ref.current?.firstElementChild as HTMLElement).attributeStyleMap),\n transform: startTransform,\n width: `${start.rect.width}px`,\n height: `${start.rect.height}px`,\n },\n {\n ...Object.fromEntries((end.instance.ref.current?.firstElementChild as HTMLElement).attributeStyleMap),\n ...this.getKeyframeProperties(end.instance.ref.current?.firstElementChild as HTMLElement, styleList),\n transform: endTransform,\n width: `${end.rect.width}px`,\n height: `${end.rect.height}px`,\n },\n ],\n config\n )\n );\n break;\n }\n }\n return new ParallelEffect(keyframeEffects);\n }\n\n get animationEffect() {\n const currentScene = this.outgoingScreen?.current?.sharedElementScene;\n const nextScene = this.incomingScreen?.current?.sharedElementScene;\n if (!currentScene || !nextScene) return null;\n if (currentScene === nextScene) return null;\n currentScene.previousScene = null;\n nextScene.previousScene = currentScene;\n const parallelEffects = new Array<ParallelEffect>();\n for (const [id, end] of Array.from(nextScene.nodes.entries())) {\n const endRect = end.getBoundingClientRect();\n const start = currentScene.nodes.get(id);\n if (!start?.canTransition || !end.canTransition) continue;\n const startRect = start.getBoundingClientRect();\n const endClone = end.clone();\n const startClone = start.clone();\n if (!startClone || !endClone) continue;\n const styleList = Array.from(new Set([...start.styles, ...end.styles]));\n if (end.transitionType !== 'morph') {\n startClone.id = `${id}-start`;\n startClone.style.position = 'absolute';\n startClone.style.gridArea = '1 / 1';\n startClone.style.margin = '0';\n this.copyStyles(start.ref.current?.firstElementChild, startClone, styleList);\n this.copyStyles(end.ref.current?.firstElementChild, endClone, styleList);\n startClone.style.width = `${startRect.width}px`;\n startClone.style.height = `${startRect.height}px`;\n endClone.style.width = `${endRect.width}px`;\n endClone.style.height = `${endRect.height}px`;\n this.ref.current?.prepend(startClone);\n } else {\n this.copyStyles(start.ref.current?.firstElementChild, endClone, styleList);\n endClone.style.width = `${startRect.width}px`;\n endClone.style.height = `${startRect.height}px`;\n }\n\n endClone.id = `${id}${end.transitionType === 'morph' ? '' : '-end'}`;\n endClone.style.position = 'absolute';\n endClone.style.gridArea = '1 / 1';\n endClone.style.margin = '0';\n this.ref.current?.prepend(endClone);\n start.hide();\n end.hide();\n const onFinish = async () => {\n if (this.props.direction === 'forwards')\n end.unhide();\n else\n start.unhide();\n endClone.remove();\n startClone.remove();\n };\n this.props.navigation.addEventListener('transition-end', onFinish, { once: true });\n this.props.navigation.addEventListener('transition-cancel', onFinish, { once: true });\n\n parallelEffects.push(this.getAnimationEffect(\n { instance: start, clone: startClone, rect: startRect },\n { instance: end, clone: endClone, rect: endRect }\n ));\n }\n\n return new ParallelEffect(parallelEffects);\n }\n\n render() {\n return (\n <dialog className=\"shared-element-layer\" ref={this.ref} style={{\n maxWidth: 'unset',\n maxHeight: 'unset',\n width: '100vw',\n height: '100vh',\n contain: 'strict',\n padding: 0,\n border: 'none',\n backgroundColor: 'transparent',\n isolation: 'isolate',\n }}>\n <style>\n {`\n .shared-element-layer::backdrop {display: none}\n .shared-element-layer[open] {display:grid}\n `}\n </style>\n </dialog>\n );\n }\n}","import { Component, RefObject, createRef } from 'react';\nimport { TransitionCancelEvent, TransitionEndEvent, TransitionStartEvent } from './common/events';\nimport { SharedElementTransitionLayer } from './SharedElementTransitionLayer';\nimport { ParallelEffect, Animation } from 'web-animations-extension';\nimport { ScreenTransitionLayerContext } from './ScreenTransitionLayerContext';\nimport { ScreenChild } from './common/types';\nimport { NavigationBase } from './NavigationBase';\nimport { ScreenBase } from './ScreenBase';\n\ninterface ScreenTransitionLayerProps {\n id: string;\n children: ScreenChild | ScreenChild[];\n navigation: NavigationBase;\n hasUAVisualTransition: boolean;\n}\n\ninterface ScreenTransitionLayerState {\n gestureNavigating: boolean;\n}\n\nexport class ScreenTransitionLayer extends Component<ScreenTransitionLayerProps, ScreenTransitionLayerState> {\n public readonly sharedElementTransitionLayer = createRef<SharedElementTransitionLayer>();\n public readonly animation: Animation = new Animation();\n #direction: PlaybackDirection = 'normal';\n #screens: RefObject<ScreenBase>[] = [];\n\n public state: ScreenTransitionLayerState = {\n gestureNavigating: false,\n };\n\n private onTransitionCancel() {\n this.props.navigation.dispatchEvent(new TransitionCancelEvent());\n }\n\n private onTransitionStart() {\n this.props.navigation.dispatchEvent(new TransitionStartEvent());\n }\n\n private onTransitionEnd() {\n this.props.navigation.dispatchEvent(new TransitionEndEvent());\n }\n\n public get screens() {\n return this.#screens;\n }\n\n public set screens(screens: RefObject<ScreenBase>[]) {\n this.#screens = screens;\n }\n\n public set direction(direction: PlaybackDirection) {\n this.#direction = direction;\n this.animation.effect?.updateTiming({ direction });\n }\n\n public get direction() {\n return this.#direction;\n }\n\n public get hasUAVisualTransition() {\n return this.props.hasUAVisualTransition;\n }\n\n public transition() {\n const effect = new ParallelEffect(\n this.screens.map(screen => {\n return screen.current?.transitionProvider?.current?.animationEffect ?? null;\n }).filter((effect): effect is AnimationEffect => effect !== null)\n );\n\n const sharedElementEffect = this.sharedElementTransitionLayer.current?.animationEffect;\n const duration = effect.getComputedTiming().duration;\n if (sharedElementEffect) {\n sharedElementEffect.updateTiming({\n duration: duration instanceof CSSNumericValue ? duration.to('ms').value : duration,\n });\n effect.append(sharedElementEffect);\n this.sharedElementTransitionLayer.current?.ref.current?.showModal();\n }\n\n this.animation.effect = effect;\n\n this.animation.play();\n this.onTransitionStart();\n\n this.animation.oncancel = () => {\n this.sharedElementTransitionLayer.current?.ref.current?.close();\n this.onTransitionCancel();\n this.animation.effect = null;\n };\n this\n .animation\n .finished\n .then(() => {\n this.animation.commitStyles();\n this.onTransitionEnd();\n this.sharedElementTransitionLayer.current?.ref.current?.close();\n this.animation.effect = null;\n })\n .catch(() => {}); // catch AbortError\n\n return this.animation;\n }\n\n public render() {\n return (\n <ScreenTransitionLayerContext.Provider value={this}>\n <SharedElementTransitionLayer\n ref={this.sharedElementTransitionLayer}\n navigation={this.props.navigation}\n direction={this.animation.playbackRate > 0 ? 'forwards' : 'backwards'}\n />\n <div\n className={this.props.id}\n style={{\n width: '100%',\n height: '100%',\n display: 'grid',\n contain: 'layout',\n isolation: 'isolate',\n } as React.CSSProperties}\n >\n {this.props.children}\n </div>\n </ScreenTransitionLayerContext.Provider>\n );\n }\n}","import { NavigationBase } from './NavigationBase';\nimport { ScreenTransitionLayer } from './ScreenTransitionLayer';\nimport {\n ScreenChild,\n RouterBaseEventMap,\n RouterHTMLElement,\n isLazyExoticComponent,\n isValidScreenChild,\n PathPattern\n} from './common/types';\nimport { NestedRouterContext, RouterContext } from './RouterContext';\nimport {\n dispatchEvent,\n matchRoute,\n resolveBaseURLFromPattern\n} from './common/utils';\nimport { Component, createRef, Children } from 'react';\nimport { ScreenBase, ScreenBaseConfig } from './ScreenBase';\nimport { LoadEvent } from './common/events';\n\ntype ScreenType<T> = T extends ScreenChild<infer S> | ScreenChild<infer S>[]\n ? S\n : never;\n\nexport interface RouterBaseConfig {\n screenConfig?: ScreenBaseConfig;\n basePath?: string;\n}\n\nexport interface RouterBaseProps<S extends ScreenBase = ScreenBase> {\n id?: string;\n config?: RouterBaseConfig;\n children: ScreenChild<S> | ScreenChild<S>[];\n}\n\nexport type RouterBaseState = object;\n\nexport abstract class RouterBase<\n P extends RouterBaseProps = RouterBaseProps,\n S extends RouterBaseState = RouterBaseState,\n E extends RouterBaseEventMap = RouterBaseEventMap\n> extends Component<P, S> {\n protected readonly ref = createRef<RouterHTMLElement<E>>();\n protected screenTransitionLayer = createRef<ScreenTransitionLayer>();\n public abstract readonly navigation: NavigationBase;\n public readonly parent: RouterBase | null = null;\n #child: WeakRef<RouterBase> | null = null;\n private loadDispatched = false;\n private hasUAVisualTransition = false;\n public readonly parentScreen: ScreenBase | null = null;\n private static rootRouterRef: WeakRef<RouterBase> | null = null;\n public static readonly contextType = NestedRouterContext;\n public declare context: React.ContextType<typeof NestedRouterContext>;\n\n constructor(\n props: P,\n context: React.ContextType<typeof NestedRouterContext>\n ) {\n super(props);\n\n this.parentScreen = context?.parentScreen ?? null;\n this.parent = context?.parentRouter ?? null;\n }\n\n public componentDidMount() {\n if (this.parent)\n this.parent.child = this;\n else {\n const currentRootRouter = RouterBase.rootRouterRef?.deref();\n if (\n this !== currentRootRouter\n && currentRootRouter?.mounted\n )\n throw new Error('It looks like you have two navigators at the same level. Try simplifying your navigation structure by using a nested router instead.');\n \n else\n RouterBase.rootRouterRef = new WeakRef(this);\n\n window.navigation.addEventListener(\n 'navigate',\n this.handleNavigationDispatch\n );\n }\n\n if (!this.loadDispatched) {\n window.navigation.dispatchEvent(new LoadEvent());\n this.loadDispatched = true;\n }\n }\n\n public componentWillUnmount() {\n if (this.isRoot) {\n window.navigation.removeEventListener(\n 'navigate',\n this.handleNavigationDispatch\n );\n }\n }\n\n private handleNavigationDispatch = (e: NavigateEvent) => {\n const activeRouters = [...this.#activeRoutersIter()];\n // travel down router tree to find a router that can intercept\n const interceptor = activeRouters.findLast(\n router => router.canIntercept(e)\n );\n if (interceptor) {\n interceptor.intercept(e);\n this.hasUAVisualTransition = e.hasUAVisualTransition;\n }\n };\n\n *#activeRoutersIter(\n target: RouterBase | null = RouterBase.rootRouterRef?.deref() ?? null\n ) {\n let router: RouterBase | null = target;\n while (router) {\n yield router;\n router = router.child;\n }\n }\n\n public getRouterById(\n routerId: string,\n target?: RouterBase\n ): RouterBase | null {\n const activeRouters = [...this.#activeRoutersIter(target)];\n return activeRouters.find((router) => router.id === routerId) ?? null;\n }\n\n public dispatchEvent(event: Event) {\n const ref = this.ref.current ?? undefined;\n return dispatchEvent(event, ref);\n }\n\n public addEventListener<K extends keyof E>(\n type: K,\n listener: (\n this: RouterHTMLElement<E>,\n ev: E[K]\n ) => void,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n public addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n public addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): () => void {\n const ref = this.ref.current;\n if (!ref) return () => {};\n ref.addEventListener(type, listener, options);\n return () => ref.removeEventListener(type, listener, options);\n }\n\n public removeEventListener<K extends keyof E>(\n type: K,\n listener: (\n this: RouterHTMLElement<E>,\n ev: E[K]\n ) => void,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n public removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n public removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ) {\n return this.ref.current?.removeEventListener(type, listener, options);\n }\n\n protected screenChildFromPathname(pathname: string) {\n for (const child of Children.toArray(this.props.children)) {\n if (!isValidScreenChild<ScreenType<P['children']>>(child)) continue;\n const matchInfo = matchRoute(\n child.props.path,\n pathname,\n this.baseURLPattern.pathname,\n child.props.caseSensitive\n );\n if (matchInfo)\n return {\n child ,\n matchInfo,\n };\n }\n\n return null;\n }\n\n protected preloadScreen(screen: ScreenChild) {\n const config = screen.props.config;\n const preloadTasks = [];\n if (isLazyExoticComponent(screen.props.component))\n preloadTasks.push(screen.props.component.load());\n if (isLazyExoticComponent(config?.header?.component))\n preloadTasks.push(config?.header?.component.load());\n if (isLazyExoticComponent(config?.footer?.component))\n preloadTasks.push(config?.footer?.component.load());\n\n return Promise.all(preloadTasks).then(() => { return; });\n }\n\n public includesRoute(\n pathname: string,\n baseURLPattern: string = window.location.origin\n ) {\n return this.pathPatterns.some(({ pattern, caseSensitive }) => {\n return matchRoute(pattern, pathname, baseURLPattern, caseSensitive);\n });\n }\n\n public get id(): string {\n if (this.props.id) return this.props.id;\n const prefix = this.parent?.id;\n const id = this.parentScreen?.id ?? 'root';\n return [prefix, id].filter(Boolean).join('-');\n }\n\n public get isRoot() {\n return !this.parent;\n }\n\n public get baseURL() {\n const pathname = this.isRoot\n ? window.location.pathname\n : this.parentScreen!.resolvedPathname;\n const pattern = this.baseURLPattern.pathname;\n\n return resolveBaseURLFromPattern(pattern, pathname)!;\n }\n\n public get baseURLPattern() {\n let baseURL = window.location.origin + '/';\n let basePath = this.props.config?.basePath;\n if (!basePath) {\n if (this.isRoot) {\n basePath = '/';\n } else {\n basePath = '.';\n }\n }\n\n if (this.parent && this.parentScreen) {\n const {\n resolvedPathname = window.location.pathname,\n path,\n } = this.parentScreen;\n const parentBaseURL = this.parent.baseURL?.href;\n const pattern = new URLPattern({\n baseURL: parentBaseURL,\n pathname: path, \n });\n baseURL = resolveBaseURLFromPattern(\n pattern.pathname,\n resolvedPathname\n )!.href;\n }\n\n return new URLPattern({ baseURL, pathname: basePath });\n }\n\n public get pathPatterns() {\n return Children.map(this.props.children, (child) => {\n return {\n pattern: child.props.path,\n caseSensitive: Boolean(child.props.caseSensitive),\n };\n });\n }\n\n public get mounted() {\n return Boolean(this.ref.current);\n }\n\n public get child() {\n return this.#child?.deref() ?? null;\n }\n\n public set child(child: RouterBase | null) {\n const currentChildRouter = this.#child?.deref();\n if (\n currentChildRouter\n && child !== currentChildRouter\n && child?.parentScreen?.id === currentChildRouter.parentScreen?.id\n && currentChildRouter.mounted\n ) {\n throw new Error('It looks like you have two navigators at the same level. Try simplifying your navigation structure by using a nested router instead.');\n }\n if (child)\n this.#child = new WeakRef(child);\n else\n this.#child = null;\n }\n\n protected abstract canIntercept(navigateEvent: NavigateEvent): boolean;\n protected abstract shouldIntercept(navigateEvent: NavigateEvent): boolean;\n protected abstract intercept(navigateEvent: NavigateEvent): void;\n protected abstract get screens(): P['children'];\n\n public render() {\n if (!this.navigation) return;\n return (\n <div\n id={this.id}\n className=\"react-motion-router\"\n style={{ width: '100%', height: '100%' }}\n ref={this.ref}\n >\n <RouterContext.Provider value={this}>\n <ScreenTransitionLayer\n id={`${this.id}-transition-layer`}\n ref={this.screenTransitionLayer}\n navigation={this.navigation}\n hasUAVisualTransition={this.hasUAVisualTransition}\n >\n {this.screens}\n </ScreenTransitionLayer>\n </RouterContext.Provider>\n </div>\n );\n }\n}","import { MetaKey, MetaType } from './common/types';\n\nexport class MetaData {\n readonly #map = new Map<MetaKey, string | undefined>();\n private readonly mutationObserver: MutationObserver;\n\n constructor() {\n this.mutationObserver = new MutationObserver(\n this.observeMutations.bind(this)\n );\n const { head } = document;\n this.mutationObserver.observe(head, {\n childList: true,\n });\n\n Array.from(head.querySelectorAll('meta')).forEach(node => {\n this.mutationObserver.observe(node, {\n attributes: true,\n });\n });\n\n Array.from(\n head.querySelectorAll('meta')).forEach(this.metaDataFromNode.bind(this)\n );\n }\n\n public get(key: string | MetaType) {\n const metaKey = this.formatMetaKey(key);\n\n const metaContent = this.#map.get(metaKey);\n if (!metaContent) return undefined;\n\n let content: string | [string, string][];\n if (metaContent.includes(',') && metaContent.includes('=')) {\n content = metaContent\n .split(/,\\s*/)\n .map(keyVal => keyVal.split('=') as [string, string]);\n } else {\n content = metaContent;\n }\n\n return content;\n }\n\n public set(key: string | MetaType, content?: string | [string, string][]) {\n const metaKey = this.formatMetaKey(key);\n const metaContent = this.formatMetaContent(content);\n\n this.#map.set(metaKey, metaContent);\n if (typeof key === 'string')\n key = ['name', key];\n this.updateMetaElement(key, metaContent);\n }\n\n public has(key: string | MetaType) {\n const metaKey = this.formatMetaKey(key);\n\n return this.#map.has(metaKey);\n }\n\n public delete(key: string | MetaType) {\n const metaKey = this.formatMetaKey(key);\n\n this.#map.delete(metaKey);\n document.head.querySelector(`meta[${metaKey}]`)?.remove();\n }\n\n public clear() {\n document.head.querySelectorAll('meta').forEach(node => node.remove());\n }\n\n public entries() {\n return this.#map.entries();\n }\n\n public [Symbol.iterator]() {\n return this.entries();\n }\n\n public get size() {\n return this.#map.size;\n }\n \n private observeMutations(mutations: MutationRecord[]) {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n const node = mutation.target;\n\n this.metaDataFromNode(node as HTMLMetaElement);\n }\n\n if (mutation.type !== 'childList') return;\n\n mutation.removedNodes.forEach((node) => {\n if (node.nodeName === 'META') {\n const type = Array\n .from((node as HTMLMetaElement).attributes)\n .find(attribute => attribute.nodeName !== 'content');\n if (!type) return;\n if (!type.value) return;\n const metaType: MetaType = [type.nodeName, type.value];\n\n const key = this.formatMetaKey(metaType);\n if (this.#map.has(key)) {\n this.#map.delete(key);\n }\n }\n });\n mutation.addedNodes.forEach(node => {\n if (node.nodeName === 'META') {\n this.metaDataFromNode(node as HTMLMetaElement);\n }\n });\n }\n }\n\n private metaDataFromNode(node: HTMLMetaElement) {\n const type = Array\n .from(node.attributes)\n .find(attribute => attribute.nodeName !== 'content');\n const content = Array\n .from(node.attributes)\n .find(attribute => attribute.nodeName === 'content');\n if (!type) return;\n if (!type.value) return;\n const metaType: MetaType = [type.nodeName, type.value];\n\n const key = this.formatMetaKey(metaType);\n this.#map.set(key, content?.value);\n }\n\n private formatMetaKey(key: string | MetaType) {\n let metaKey: MetaKey;\n if (typeof key === 'string') {\n metaKey = `name=\"${key}\"` as MetaKey;\n } else {\n const [attribute, value] = key;\n metaKey = `${attribute}=\"${value}\"`;\n }\n\n return metaKey;\n }\n\n private formatMetaContent(content: string | [string, string][] | undefined) {\n if (!content) return undefined;\n\n let metaContent: string;\n if (typeof content === 'string') {\n metaContent = content;\n } else {\n metaContent = content\n .map(contentTuple => contentTuple.join('='))\n .join(', ');\n }\n\n return metaContent;\n }\n\n private updateMetaElement(key: MetaType, content?: string) {\n const meta =\n document.querySelector(`meta[${this.formatMetaKey(key)}]`)\n || document.createElement('meta');\n\n const [qualifiedName, value] = key;\n meta.setAttribute(qualifiedName, value);\n if (content) meta.setAttribute('content', content);\n else meta.removeAttribute('content');\n\n if (!meta.parentElement) {\n document.head.appendChild(meta);\n }\n }\n}","import { RouterHTMLElement, RouterBaseEventMap } from './common/types';\nimport { MetaData } from './MetaData';\n\nexport interface NavigationBaseConfig<\n E extends RouterBaseEventMap = RouterBaseEventMap\n> {\n addEventListener<K extends keyof E>(\n type: K,\n listener: (\n this: RouterHTMLElement<E>,\n ev: E[K]\n ) => void,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n removeEventListener<K extends keyof E>(\n type: K,\n listener: (\n this: RouterHTMLElement<E>,\n ev: E[K]\n ) => void,\n options?: boolean | EventListenerOptions | undefined\n ): void\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n dispatchEvent(event: Event): Promise<boolean>;\n parent: NavigationBase | null;\n routerId: string;\n baseURL: URL;\n baseURLPattern: URLPattern;\n getNavigatorById(routerId: string): NavigationBase | null;\n}\n\nexport abstract class NavigationBase<\n E extends RouterBaseEventMap = RouterBaseEventMap\n> {\n private static rootNavigatorRef: WeakRef<NavigationBase> | null = null;\n public readonly metaData = new MetaData();\n public readonly addEventListener;\n public readonly removeEventListener;\n public readonly dispatchEvent;\n public readonly parent;\n public readonly routerId;\n public readonly baseURL;\n public readonly baseURLPattern;\n public readonly getNavigatorById;\n\n constructor(config: NavigationBaseConfig<E>) {\n const rootNavigator = NavigationBase.rootNavigatorRef?.deref();\n if (!rootNavigator || !rootNavigator.isInDocument)\n NavigationBase.rootNavigatorRef = new WeakRef(this);\n this.addEventListener = config.addEventListener;\n this.removeEventListener = config.removeEventListener;\n this.dispatchEvent = config.dispatchEvent;\n this.parent = config.parent;\n this.routerId = config.routerId;\n this.baseURL = config.baseURL;\n this.baseURLPattern = config.baseURLPattern;\n this.getNavigatorById = config.getNavigatorById;\n }\n\n private get isInDocument() {\n return Boolean(document.getElementById(`${this.routerId}`));\n }\n}","import { useCallback, useContext, useDebugValue, useEffect, useRef, useSyncExternalStore } from 'react';\nimport { NavigationBase } from '../NavigationBase';\nimport { RouterContext } from '../RouterContext';\nimport { RoutePropContext } from '../RoutePropContext';\nimport { RouterBase } from '../RouterBase';\nimport { RoutePropBase } from './types';\nimport { ScreenTransitionLayerContext } from '../ScreenTransitionLayerContext';\n\nexport function useNavigationBase<T extends NavigationBase = NavigationBase>() {\n const router = useContext(RouterContext);\n if (router) {\n return router.navigation as T;\n } else {\n throw new Error('Router is null. You may be trying to call useNavigation outside a Router.');\n }\n}\n\nexport function useRouterBase<T extends RouterBase = RouterBase>() {\n return useContext(RouterContext) as T;\n}\n\nexport function useMotion() {\n useDebugValue('Motion');\n const router = useContext(RouterContext);\n const screenTransitionLayer = useContext(ScreenTransitionLayerContext);\n const animation = screenTransitionLayer\n .animation;\n \n const defaultProgress = 1;\n // use sync external store to get animation progress\n // on animation frame\n return useSyncExternalStore(\n (callback) => {\n const onTransitionStart = async () => {\n do {\n await new Promise<number>(resolve => {\n requestAnimationFrame(resolve);\n });\n callback();\n } while (animation.playState === 'running');\n };\n router.addEventListener('transition-start', onTransitionStart);\n\n return () => {\n router.removeEventListener('transition-start', onTransitionStart);\n };\n },\n () => {\n const { progress } = animation\n ?.effect\n ?.getComputedTiming() ?? {};\n return progress ?? defaultProgress;\n }\n );\n}\n\n\nexport function useRouteBase<R extends RoutePropBase>() {\n const routeProp = useContext(RoutePropContext);\n if (routeProp) {\n return routeProp as R;\n } else {\n throw new Error('Router is null. You may be trying to call useRoute outside a Router.');\n }\n}\n\nexport function useParamsBase<K extends string, S>(key: K, initialParams: S | (() => S)): [S, React.Dispatch<React.SetStateAction<S>>] {\n const route = useRouteBase();\n const initial = initialParams instanceof Function ? initialParams() : initialParams;\n\n const routeRef = useRef(route);\n useEffect(() => {\n routeRef.current = route;\n }, [route]);\n\n const setParam = useCallback((param: S | ((prevState: S) => S)) => {\n const { params, setParams } = routeRef.current;\n if (param instanceof Function)\n param = param(params[key] ?? initial);\n setParams({ [key]: param });\n }, [initial, key]);\n\n const param = route.params[key];\n\n return [param ?? initial, setParam] as const;\n}","import { useEffect, useRef, useSyncExternalStore } from 'react';\n\nconst RERENDER_EVENT_TYPE = '--rerender';\nexport function useRerender() {\n return useSyncExternalStore(\n (callback) => {\n globalThis.addEventListener(\n RERENDER_EVENT_TYPE,\n callback,\n { once: true }\n );\n return () => {\n globalThis.removeEventListener(RERENDER_EVENT_TYPE, callback);\n };\n },\n () => document.timeline.currentTime\n );\n}\n\nexport function useRerenderCallback<T extends () => unknown>(\n callback: T\n) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n useEffect(() => {\n const handler = callbackRef.current;\n globalThis.addEventListener(RERENDER_EVENT_TYPE, handler);\n\n return () => {\n globalThis.removeEventListener(RERENDER_EVENT_TYPE, handler);\n };\n });\n}\n\nexport function triggerRerender() {\n globalThis.dispatchEvent(new Event(RERENDER_EVENT_TYPE));\n}\n\nexport function createHistoryEntry(\n url: string,\n index: number\n): NavigationHistoryEntry {\n return Object.create(EventTarget.prototype, {\n id: {\n value: crypto.randomUUID(),\n writable: false,\n enumerable: true,\n configurable: false,\n },\n key: {\n value: crypto.randomUUID(),\n writable: false,\n enumerable: true,\n configurable: false,\n },\n index: {\n value: index,\n writable: false,\n enumerable: true,\n configurable: false,\n },\n url: {\n value: url,\n writable: false,\n enumerable: true,\n configurable: false,\n },\n sameDocument: {\n value: true,\n writable: false,\n enumerable: true,\n configurable: false,\n },\n ondispose: {\n value: null,\n writable: true,\n enumerable: true,\n configurable: true,\n },\n getState: {\n value() {\n return undefined;\n },\n writable: false,\n enumerable: true,\n configurable: false,\n },\n });\n}\n\nexport function assertNavigationAvailable() {\n if (!window.navigation) {\n throw new Error('window.navigation is not available in this environment');\n }\n}\n\nexport async function waitForNavigateSuccess() {\n await new Promise(resolve => {\n window.navigation.addEventListener(\n 'navigatesuccess',\n resolve,\n { once: true }\n );\n });\n}\n\nexport async function navTo(url: string) {\n const res = window.navigation.navigate(url);\n await res.finished;\n}\n\nexport async function traverseTo(key: string) {\n const res = window.navigation.traverseTo(key);\n await res.finished;\n}\n\nexport async function traverseToStart() {\n const firstEntry = window.navigation.entries()[0];\n const res = window.navigation.traverseTo(firstEntry.key);\n await res.finished;\n}\n\nexport async function seedHistory() {\n await navTo('/one');\n await navTo('/two');\n await navTo('/three');\n}\n\nconst interceptor = (event: NavigateEvent) => {\n event.intercept({\n handler() {\n return Promise.resolve();\n },\n });\n};\nexport async function installInterceptor() {\n window.navigation.addEventListener('navigate',interceptor);\n}\n\nexport async function uninstallInterceptor() {\n window.navigation.removeEventListener('navigate',interceptor);\n}","import React from 'react';\nimport {\n FIRST_INDEX,\n SINGLE_ELEMENT_LENGTH\n} from './common/constants';\nimport { omit } from './common/utils';\n\ninterface AnchorProps extends React.DetailedHTMLProps<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n HTMLAnchorElement\n> {\n href?: string;\n rel?: string;\n historyEntryKey?: string;\n navigateInfo?: unknown;\n navigateState?: unknown;\n reload?: boolean;\n replace?: boolean;\n traverse?: boolean;\n children?: React.ReactNode;\n}\n\ntype AnchorState = {\n href?: string | null;\n};\n\nexport class Anchor extends React.Component<\n AnchorProps,\n AnchorState\n> {\n constructor(props: AnchorProps) {\n super(props);\n\n this.state = {\n href: this.href,\n };\n }\n\n private readonly anchorRef = React.createRef<HTMLAnchorElement>();\n\n private static directionFromRel(rel: string | undefined) {\n return rel\n ?.split(' ')\n .findLast(dir => dir === 'next' || dir === 'prev')\n ?? 'prev';\n }\n\n private static findClosestEntryByHref(\n href: string,\n rel: string | undefined,\n entries: NavigationHistoryEntry[],\n index: number\n ) {\n if (\n !Array.isArray(entries)\n || index < FIRST_INDEX\n || index >= entries.length\n || entries.length === SINGLE_ELEMENT_LENGTH\n ) {\n return undefined;\n }\n\n let left = index - SINGLE_ELEMENT_LENGTH;\n let right = index + SINGLE_ELEMENT_LENGTH;\n const direction = Anchor.directionFromRel(rel);\n // if direction is next, prevent searching left\n if (direction === 'next') left = FIRST_INDEX;\n // if direction is prev, prevent searching right\n if (direction === 'prev') right = entries.length;\n\n while (left >= FIRST_INDEX || right < entries.length) {\n if (\n left >= FIRST_INDEX\n && entries[left]?.url === href\n ) return entries[left];\n if (\n right < entries.length\n && entries[right]?.url === href\n ) return entries[right];\n left--;\n right++;\n }\n\n return undefined;\n }\n\n private static findClosestEntry(\n rel: string | undefined,\n entries: NavigationHistoryEntry[],\n index: number\n ) {\n const direction = Anchor.directionFromRel(rel);\n \n switch (direction) {\n case 'prev':\n return entries[index - SINGLE_ELEMENT_LENGTH];\n case 'next':\n return entries[index + SINGLE_ELEMENT_LENGTH];\n }\n }\n\n public componentDidMount() {\n window.navigation?.addEventListener('navigatesuccess', this.onNavigate);\n }\n\n public componentWillUnmount() {\n window.navigation?.removeEventListener('navigatesuccess', this.onNavigate);\n }\n\n private readonly onNavigate = () => {\n const { href } = this;\n this.setState({ href });\n };\n\n private get href() {\n const { href, traverse, reload, historyEntryKey, rel } = this.props;\n if (href === undefined && traverse) {\n let entry: NavigationHistoryEntry | undefined;\n\n if (historyEntryKey) {\n entry = window.navigation\n ?.entries()\n .find(e => e.key === historyEntryKey);\n } else if (rel) {\n if (href)\n entry = Anchor.findClosestEntryByHref(\n href,\n rel,\n window.navigation.entries(),\n window.navigation.currentEntry?.index ?? FIRST_INDEX\n );\n else\n entry = Anchor.findClosestEntry(\n rel,\n window.navigation.entries(),\n window.navigation.currentEntry?.index ?? FIRST_INDEX\n );\n }\n\n return entry?.url;\n } else if (reload) {\n return '.';\n }\n return href;\n }\n\n private readonly handleClick = (\n event: React.PointerEvent<HTMLAnchorElement>\n ) => {\n this.props.onClick?.(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n const navigation = window.navigation;\n\n const {\n rel,\n historyEntryKey,\n reload,\n replace,\n traverse,\n navigateInfo: info,\n navigateState: state,\n } = this.props;\n\n const href = this.anchorRef.current?.href;\n\n // history entry key takes trumps all\n if (historyEntryKey) {\n navigation.traverseTo(historyEntryKey, { info });\n return;\n }\n\n if (traverse) {\n const entries = navigation.entries();\n let entry;\n // if traverse has href hint, use that to find closest entry\n if (href)\n entry = Anchor.findClosestEntryByHref(\n href,\n rel,\n entries,\n navigation.currentEntry?.index ?? FIRST_INDEX\n );\n else // if not, use sibling entry\n entry = Anchor.findClosestEntry(\n rel,\n entries,\n navigation.currentEntry?.index ?? FIRST_INDEX\n );\n\n // if we have an entry, then navigate\n if (entry) {\n navigation.traverseTo(entry.key, { info });\n // if not, fall through to replace/reload/push\n return;\n }\n }\n\n // only replace if we have a valid href\n if (replace && href) {\n navigation.navigate(href, { info, state, history: 'replace' });\n // if replace but no href, fall through to reload/push\n return;\n }\n \n if (reload) {\n navigation.reload({ info, state });\n return;\n }\n \n // default: push navigation if we have a valid href\n if (href) {\n navigation.navigate(href, { info, state });\n }\n };\n\n public render() {\n const {\n rel,\n children,\n } = this.props;\n const { href } = this.state;\n const props = omit(this.props, [\n 'historyEntryKey',\n 'navigateInfo',\n 'navigateState',\n 'reload',\n 'replace',\n 'traverse',\n ]);\n\n return (\n <a\n {...props}\n ref={this.anchorRef}\n href={href ?? undefined}\n rel={rel}\n onClick={this.handleClick}\n >\n {children}\n </a>\n );\n }\n}\n"],"names":["SharedElementSceneContext","createContext","SharedElement","Component","createRef","prevProps","deepClone","jsx","MAX_Z_INDEX","MAX_PROGRESS","MIN_PROGRESS","MIN_NORM_PROGRESS","MAX_NORM_PROGRESS","LAST_INDEX","FIRST_INDEX","SINGLE_ELEMENT_LENGTH","EMPTY_COLLECTION_LENGTH","resolveBaseURLFromPattern","pattern","pathname","origin","baseURLMatch","nestedPathnameGroup","key","group","matchRoute","pathnamePattern","baseURLPattern","caseSensitive","baseURL","match","params","dispatchEvent","event","target","resolve","lazy","factory","ReactLazy","isNavigationSupported","isURLPatternSupported","polyfillURLPattern","URLPattern","polyfillNavigation","applyPolyfill","PromiseAllSequential","values","awaited","value","toCamelCase","g","cloneAndInject","element","injectProps","cloneElement","omit","obj","keys","copy","k","TransitionStartEvent","TransitionCancelEvent","TransitionEndEvent","MotionProgressStartEvent","MotionProgressEndEvent","LoadEvent","#navigationType","#userInitiated","#canIntercept","#hashChange","#formData","#downloadRequest","#destination","#signal","#abortable","#intercepted","#thenables","#transition","currentEntry","#onNavigate","e","options","finish","thenable","ScreenTransitionLayerContext","ScreenTransitionProvider","animationEffectFactory","animation","direction","hasUAVisualTransition","timeline","playbackRate","index","exiting","ref","screens","screen","zIndex","Element","inert","NestedRouterContext","RouterContext","RoutePropContext","SharedElementScene","id","node","_id","xRatio","yRatio","ScreenBase","#transitionProvider","props","context","newParams","newConfig","config","isLazyExoticComponent","signal","HeaderComponent","FooterComponent","result","navigation","route","preloading","routeProp","jsxs","Suspense","ComponentWithRouteProps","component","isNativeLazyExoticComponent","isValidElement","Fragment","isValidScreenChild","isStylableElement","Lt","jt","o","r","t","V","wt","d","l","i","m","ot","St","qt","ft","At","Q","u","Ft","n","s","a","y","b","st","bt","It","Bt","c","R","Xt","Dt","M","Pt","Wt","Kt","$t","xt","zt","x","K","v","G","tt","mt","$","at","lt","Y","z","dt","Ut","Ht","w","C","E","A","I","Mt","f","D","et","T","N","h","p","S","B","j","it","O","ut","kt","H","rt","X","Z","pt","Ot","Tt","_t","yt","Gt","F","W","nt","ct","Rt","_","q","P","L","ht","gt","Et","Ct","Nt","J","vt","Vt","Zt","SharedElementTransitionLayer","#outgoingScreen","#incomingScreen","outgoingScreen","incomingScreen","styleList","computedStyles","computedStyle","transformedKey","srcElement","priority","start","end","keyframeEffects","transitionType","startTransform","endTransform","ParallelEffect","currentScene","nextScene","parallelEffects","endRect","startRect","endClone","startClone","onFinish","ScreenTransitionLayer","Animation","#direction","#screens","effect","sharedElementEffect","duration","RouterBase","#child","currentRootRouter","interceptor","#activeRoutersIter","router","routerId","type","listener","child","Children","matchInfo","preloadTasks","prefix","basePath","resolvedPathname","path","parentBaseURL","currentChildRouter","MetaData","#map","head","metaKey","metaContent","content","keyVal","mutations","mutation","attribute","metaType","contentTuple","meta","qualifiedName","NavigationBase","rootNavigator","useNavigationBase","useContext","useRouterBase","useMotion","useDebugValue","defaultProgress","useSyncExternalStore","callback","onTransitionStart","progress","useRouteBase","useParamsBase","initialParams","initial","routeRef","useRef","useEffect","setParam","useCallback","param","setParams","RERENDER_EVENT_TYPE","useRerender","useRerenderCallback","callbackRef","handler","triggerRerender","createHistoryEntry","url","assertNavigationAvailable","waitForNavigateSuccess","navTo","traverseTo","traverseToStart","firstEntry","seedHistory","installInterceptor","uninstallInterceptor","Anchor","React","rel","dir","href","entries","left","right","traverse","reload","historyEntryKey","entry","replace","info","state","children"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/SharedElementSceneContext.ts","../src/SharedElement.tsx","../src/ScreenTransitionLayerContext.tsx","../src/common/constants.ts","../src/ScreenTransitionProvider.tsx","../src/RouterContext.ts","../src/RoutePropContext.ts","../src/SharedElementScene.ts","../src/ScreenBase.tsx","../src/common/types.ts","../../web-animations-extension/build/index.js","../src/common/utils.ts","../src/SharedElementTransitionLayer.tsx","../src/ScreenTransitionLayer.tsx","../src/common/promise-wrapper.ts","../src/common/events.ts","../src/RouterBase.tsx","../src/MetaData.ts","../src/NavigationBase.ts","../src/common/hooks.ts","../src/common/test-utils.ts","../src/Anchor.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { SharedElementScene } from './SharedElementScene';\n\nexport const SharedElementSceneContext =\n createContext<SharedElementScene>(null!);","import { Component, createRef } from 'react';\nimport { SharedElementTransitionType, StyleKeyList } from './common/types';\nimport { SharedElementSceneContext } from './SharedElementSceneContext';\n\ninterface SharedElementConfig extends OptionalEffectTiming {\n type?: SharedElementTransitionType;\n transformOrigin?: React.CSSProperties['transformOrigin'];\n styles?: StyleKeyList;\n deepClone?: boolean;\n}\n\ninterface SharedElementProps {\n id: string;\n children: React.ReactElement;\n disabled?: boolean;\n config?: SharedElementConfig;\n}\n\nexport class SharedElement extends Component<\n SharedElementProps\n> {\n public readonly ref = createRef<HTMLDivElement>();\n public static readonly contextType = SharedElementSceneContext;\n public declare context: React.ContextType<typeof SharedElementSceneContext>;\n\n public componentDidMount(): void {\n this.scene.addNode(this);\n }\n\n public componentDidUpdate(prevProps: SharedElementProps) {\n if (this.props.id !== prevProps.id) {\n this.scene.removeNode(prevProps.id.toString());\n this.scene.addNode(this);\n }\n }\n\n public componentWillUnmount(): void {\n this.scene.removeNode(this.id);\n }\n\n public get styles(): StyleKeyList {\n if (this.props.config?.styles) {\n return this.props.config.styles;\n }\n return [];\n }\n\n public get canTransition() {\n return !this.props.disabled\n && this.scene.canTransition;\n }\n\n public get scene() {\n return this.context;\n }\n\n public get id() {\n return `shared-element-${this.props.id.toString()}`;\n }\n\n public get transitionType(): SharedElementTransitionType {\n return this.props.config?.type ?? this.scene\n .previousScene\n ?.nodes\n .get(this.id)\n ?.transitionType ?? 'morph';\n }\n\n public getBoundingClientRect() {\n return this.ref\n .current\n ?.firstElementChild\n ?.getBoundingClientRect() ?? new DOMRect();\n }\n\n public clone() {\n if (!this.ref.current) return null;\n const deepClone = this.props.config?.deepClone ?? true;\n return this.ref\n .current\n .firstElementChild\n ?.cloneNode(deepClone) as HTMLElement;\n }\n\n public hide() {\n if (!this.ref.current) return;\n this.ref.current.style.visibility = 'hidden';\n }\n\n public unhide() {\n if (!this.ref.current) return;\n this.ref.current.style.visibility = 'visible';\n }\n\n public render() {\n return (\n <div\n ref={this.ref}\n id={this.id}\n style={{ display: 'contents' }}\n >\n {this.props.children}\n </div>\n );\n }\n}","import { createContext } from 'react';\nimport { ScreenTransitionLayer } from './ScreenTransitionLayer';\n\nexport const ScreenTransitionLayerContext =\n createContext<ScreenTransitionLayer>(null!);\n","export const MAX_Z_INDEX = 2147483647;\nexport const MAX_PROGRESS = 100;\nexport const MIN_PROGRESS = 0;\nexport const MIN_NORM_PROGRESS = 0;\nexport const MAX_NORM_PROGRESS = 1;\nexport const LAST_INDEX = -1;\nexport const FIRST_INDEX = 0;\nexport const SINGLE_ELEMENT_LENGTH = 1;\nexport const EMPTY_COLLECTION_LENGTH = 0;","import { ScreenTransitionLayerContext } from './ScreenTransitionLayerContext';\nimport { AnimationEffectFactory } from './common/types';\nimport { NavigationBase } from './NavigationBase';\nimport { Component, ElementType, createRef } from 'react';\nimport { FIRST_INDEX } from './common/constants';\n\ninterface ScreenTransitionProviderProps {\n id: string;\n animation?: AnimationEffectFactory;\n children: React.ReactNode\n navigation: NavigationBase;\n renderAs: ElementType;\n focused: boolean;\n}\n\ninterface ScreenTransitionProviderState {\n zIndex: React.CSSProperties['zIndex'];\n}\n\nexport class ScreenTransitionProvider extends Component<\n ScreenTransitionProviderProps,\n ScreenTransitionProviderState\n> {\n public readonly ref = createRef<HTMLElement>();\n public static readonly contextType = ScreenTransitionLayerContext;\n public declare context: React.ContextType<\n typeof ScreenTransitionLayerContext\n >;\n public index = FIRST_INDEX;\n public exiting = false;\n\n public state: ScreenTransitionProviderState = {\n zIndex: 'unset',\n };\n\n private onroutertransitionend() {\n if (this.ref.current) {\n this.ref.current.style.willChange = 'auto';\n this.ref.current.style.pointerEvents = 'auto';\n }\n };\n\n private onroutertransitionstart() {\n if (this.ref.current) {\n this.ref.current.style.willChange = 'transform, opacity';\n this.ref.current.style.pointerEvents = 'none';\n }\n };\n\n public componentDidMount() {\n this.props\n .navigation\n .addEventListener('routertransitionstart', this);\n this.props\n .navigation\n .addEventListener('routertransitionend', this);\n this.props\n .navigation\n .addEventListener('routertransitioncancel', this);\n }\n\n public componentWillUnmount() {\n this.props\n .navigation\n .removeEventListener('routertransitionstart', this);\n this.props\n .navigation\n .removeEventListener('routertransitionend', this);\n this.props\n .navigation\n .removeEventListener('routertransitioncancel', this);\n }\n\n public get animationEffect() {\n const animationEffectFactory = this.props.animation;\n const { animation, direction, hasUAVisualTransition } = this.context;\n const { timeline, playbackRate } = animation;\n const { index, exiting, ref } = this;\n const screens = this.context.screens.map(screen => screen.current?.name);\n\n return animationEffectFactory?.({\n ref: ref.current,\n index,\n screens,\n exiting,\n timeline,\n direction,\n playbackRate,\n hasUAVisualTransition,\n }) ?? null;\n }\n\n public setZIndex(zIndex: React.CSSProperties['zIndex']) {\n return new Promise<void>(resolve => this.setState({ zIndex }, resolve));\n }\n\n public render() {\n const Element = this.props.renderAs;\n const inert = !this.props.focused ? '' : undefined;\n return (\n <Element\n id={this.props.id}\n className=\"screen-transition-provider\"\n ref={this.ref}\n {...{ inert }}\n style={{\n gridArea: '1 / 1',\n width: '100%',\n height: '100%',\n transformOrigin: 'center center',\n zIndex: this.state.zIndex,\n }}\n >\n {this.props.children}\n </Element>\n );\n }\n}","import { createContext } from 'react';\nimport { ScreenBase } from './ScreenBase';\nimport { RouterBase } from './RouterBase';\n\nexport const NestedRouterContext = createContext<{\n parentRouter: RouterBase,\n parentScreen: ScreenBase\n} | null>(null);\nexport const RouterContext = createContext<RouterBase>(null!);","import { createContext } from 'react';\nimport { RoutePropBase } from './common/types';\n\nexport const RoutePropContext = createContext<RoutePropBase>(null!);","import { SharedElement } from './SharedElement';\n\nexport class SharedElementScene {\n public readonly id: string;\n public readonly nodes = new Map<string, SharedElement>();\n public getScreenRect: () => DOMRect = () => new DOMRect();\n public keepAlive: boolean = false;\n public previousScene: SharedElementScene | null = null;\n public canTransition: boolean = true; // should be false if page animation already started\n\n constructor(id: string) {\n this.id = id;\n }\n\n public addNode(node: SharedElement | null) {\n if (!node) return;\n console.assert(!this.nodes.has(node.id), `Duplicate Shared Element ID: ${node.id} in ${this.id}`);\n this.nodes.set(node.id, node);\n }\n\n public removeNode(_id: string) {\n this.nodes.delete(_id);\n }\n\n public get xRatio() {\n const screenRect = this.getScreenRect();\n const xRatio = (screenRect.width / window.innerWidth).toFixed(2);\n return parseFloat(xRatio);\n }\n\n public get yRatio() {\n const screenRect = this.getScreenRect();\n const yRatio = (screenRect.height / window.innerHeight).toFixed(2);\n return parseFloat(yRatio);\n }\n\n public get x() {\n return this.getScreenRect().x;\n }\n\n public get y() {\n return this.getScreenRect().y;\n }\n\n public isEmpty() {\n return !this.nodes.size;\n }\n}","import {\n Component,\n ElementType,\n Suspense,\n cloneElement,\n createRef,\n isValidElement\n} from 'react';\nimport { ScreenTransitionProvider } from './ScreenTransitionProvider';\nimport {\n AnimationEffectFactory,\n LazyExoticComponent,\n PlainObject,\n RoutePropBase,\n isLazyExoticComponent,\n isNativeLazyExoticComponent\n} from './common/types';\nimport { NestedRouterContext, RouterContext } from './RouterContext';\nimport { RoutePropContext } from './RoutePropContext';\nimport { NavigationBase } from './NavigationBase';\nimport { SharedElementSceneContext } from './SharedElementSceneContext';\nimport { SharedElementScene } from './SharedElementScene';\n\nexport interface ScreenBaseComponentProps<\n R extends RoutePropBase = RoutePropBase,\n N extends NavigationBase = NavigationBase\n> {\n readonly route: R;\n readonly navigation: N;\n}\n\nexport type LifecycleProps<\n R extends RoutePropBase,\n N extends NavigationBase = NavigationBase\n> = ({\n signal: AbortSignal;\n preloading: false;\n } & ScreenBaseComponentProps<R, N>)\n | ({\n signal?: AbortSignal;\n preloading: true;\n } & Omit<ScreenBaseComponentProps<R, N>, 'route'>\n & {\n route: Omit<\n ScreenBaseComponentProps<R, N>['route'],\n 'setParams' | 'setConfig'\n >\n });\n\nexport interface ScreenBaseConfig<\n R extends RoutePropBase = RoutePropBase,\n N extends NavigationBase = NavigationBase\n> {\n readonly header?: {\n fallback?: React.ReactNode;\n component: React.JSXElementConstructor<any> | LazyExoticComponent<any>\n };\n readonly footer?: {\n fallback?: React.ReactNode;\n component: React.JSXElementConstructor<any> | LazyExoticComponent<any>\n };\n readonly animation?: AnimationEffectFactory;\n readonly onEnter?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n readonly onExit?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n readonly onEntered?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n readonly onExited?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n readonly onLoad?: (props: LifecycleProps<R, N>) => void | Promise<void>;\n}\n\nexport interface ScreenBaseProps {\n path: string;\n component: React.JSXElementConstructor<any> | LazyExoticComponent<any>;\n fallback?: React.ReactNode;\n name?: string;\n defaultParams?: PlainObject;\n caseSensitive?: boolean;\n config?: ScreenBaseConfig;\n}\n\nexport interface ScreenBaseState<\n C extends ScreenBaseProps['config'] = ScreenBaseProps['config'],\n P extends PlainObject = PlainObject\n> {\n focused: boolean;\n config: C;\n params: P;\n elementType: ElementType;\n}\n\nexport abstract class ScreenBase<\n P extends ScreenBaseProps = ScreenBaseProps,\n S extends ScreenBaseState<P['config']> = ScreenBaseState<P['config']>,\n R extends RoutePropBase<P['config']> = RoutePropBase<P['config']>\n> extends Component<P, S> {\n public readonly sharedElementScene: SharedElementScene;\n #transitionProvider = createRef<ScreenTransitionProvider>();\n protected readonly ref = createRef<HTMLDivElement>();\n protected readonly nestedRouterData;\n public static readonly contextType = RouterContext;\n public declare context: React.ContextType<typeof RouterContext>;\n\n public state: S = {\n focused: false,\n config: {},\n params: {},\n elementType: 'div',\n } as S;\n\n constructor(props: P, context: React.ContextType<typeof RouterContext>) {\n super(props);\n\n this.sharedElementScene = new SharedElementScene(\n `${this.name}-shared-element-scene`\n );\n this.sharedElementScene.getScreenRect = () => {\n return this.ref.current?.getBoundingClientRect() || new DOMRect();\n };\n this.nestedRouterData = {\n parentScreen: this as ScreenBase,\n parentRouter: context,\n };\n }\n\n protected setParams(newParams: PlainObject) {\n this.setState(({ params }) => ({ params: { ...params, ...newParams } }));\n }\n\n protected setConfig(newConfig: R['config']) {\n this.setState(({ config }) => ({ config: { ...config, ...newConfig } }));\n }\n\n public get focused() {\n return this.state.focused;\n }\n\n public get name() {\n if (this.props.name)\n return this.props.name\n .toLowerCase()\n .replace(/[^\\w-]/g, '-') // Remove non-alphanumeric chars\n .replace(/-+/g, '-') // Replace multiple hyphens with a single one\n .replace(/^-|-$/g, ''); // Remove leading and trailing hyphens;\n else if (isLazyExoticComponent(this.props.component))\n return this.props.component.module?.default.name.toLowerCase();\n return this.props.component.name.toLowerCase();\n }\n\n public blur() {\n return new Promise<void>(resolve => {\n this.setState({ focused: false }, resolve);\n });\n }\n\n public focus() {\n return new Promise<void>(resolve => {\n this.setState({ focused: true }, resolve);\n });\n }\n\n public async load(signal: AbortSignal) {\n const Component = this.props.component;\n const HeaderComponent = this.props.config?.header?.component;\n const FooterComponent = this.props.config?.footer?.component;\n let result;\n\n if (isLazyExoticComponent(Component)) {\n result = await Component.load();\n } else {\n result = { default: Component };\n }\n\n if (isLazyExoticComponent(HeaderComponent))\n await HeaderComponent.load();\n if (isLazyExoticComponent(FooterComponent))\n await FooterComponent.load();\n\n const navigation = this.context.navigation;\n const route = this.routeProp;\n const preloading = false;\n await this.props\n .config\n ?.onLoad\n ?.({ navigation, route, signal, preloading }); // TODO: prevent passing setConfig and setParams in lifecycle props\n\n return result;\n }\n\n protected abstract get routeProp(): R;\n public abstract get config(): R['config'];\n public abstract get params(): R['params'];\n public abstract get resolvedPathname(): string;\n public abstract get id(): string;\n\n public async onExited(signal: AbortSignal): Promise<void> {\n await this.routeProp.config.onExited?.({\n route: this.routeProp,\n navigation: this.context.navigation,\n preloading: false,\n signal,\n });\n }\n\n public async onExit(signal: AbortSignal): Promise<void> {\n await this.routeProp.config.onExit?.({\n route: this.routeProp,\n navigation: this.context.navigation,\n preloading: false,\n signal,\n });\n }\n\n public async onEnter(signal: AbortSignal): Promise<void> {\n await this.routeProp.config.onEnter?.({\n route: this.routeProp,\n navigation: this.context.navigation,\n preloading: false,\n signal,\n });\n }\n\n public async onEntered(signal: AbortSignal): Promise<void> {\n await this.routeProp.config.onEntered?.({\n route: this.routeProp,\n navigation: this.context.navigation,\n preloading: false,\n signal,\n });\n }\n\n public get path() {\n return this.props.path;\n }\n\n public get transitionProvider() {\n return this.#transitionProvider;\n }\n\n public render() {\n const navigation = this.context.navigation;\n const routeProp = this.routeProp;\n const Component = this.props.component;\n const HeaderComponent = routeProp.config.header?.component;\n const FooterComponent = routeProp.config.footer?.component;\n\n return (\n <ScreenTransitionProvider\n ref={this.#transitionProvider}\n renderAs={this.state.elementType}\n id={`${this.context.id}-${this.name}-transition-provider`}\n animation={routeProp.config.animation}\n navigation={navigation}\n focused={this.state.focused}\n >\n <div\n id={`${this.context.id}-${this.name}`}\n ref={this.ref}\n className=\"screen\"\n style={{\n height: '100%',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n pointerEvents: 'inherit',\n }}\n >\n <SharedElementSceneContext.Provider value={this.sharedElementScene}>\n <RoutePropContext.Provider value={routeProp}>\n <NestedRouterContext.Provider value={this.nestedRouterData}>\n <Suspense fallback={(\n <ComponentWithRouteProps\n component={routeProp.config.header?.fallback}\n route={routeProp}\n navigation={navigation}\n />\n )}>\n <ComponentWithRouteProps\n component={HeaderComponent}\n route={routeProp}\n navigation={navigation}\n />\n </Suspense>\n <Suspense fallback={(\n <ComponentWithRouteProps\n component={this.props.fallback}\n route={routeProp}\n navigation={navigation}\n />\n )}>\n <ComponentWithRouteProps\n component={Component}\n route={routeProp}\n navigation={navigation}\n />\n </Suspense>\n <Suspense\n fallback={(\n <ComponentWithRouteProps\n component={routeProp.config.footer?.fallback}\n route={routeProp}\n navigation={navigation}\n />\n )}>\n <ComponentWithRouteProps\n component={FooterComponent}\n route={routeProp}\n navigation={navigation}\n />\n </Suspense>\n </NestedRouterContext.Provider>\n </RoutePropContext.Provider>\n </SharedElementSceneContext.Provider>\n </div>\n </ScreenTransitionProvider>\n );\n }\n}\n\ninterface ComponentWithRoutePropsProps extends ScreenBaseComponentProps<\n RoutePropBase,\n NavigationBase\n> {\n component: React.JSXElementConstructor<any>\n | LazyExoticComponent<any> | React.ReactNode;\n}\nfunction ComponentWithRouteProps(\n { component, route, navigation }: ComponentWithRoutePropsProps\n) {\n if (isLazyExoticComponent(component) && component.module?.default) {\n component = component.module.default;\n }\n const Component = component ?? null;\n if (\n typeof Component === 'function'\n || isNativeLazyExoticComponent(Component)\n ) {\n return (\n <Component\n navigation={navigation}\n route={route}\n />\n );\n } else if (isValidElement(Component)) {\n return cloneElement<any>(Component, {\n navigation,\n route,\n });\n }\n return <>{Component}</>;\n}","import { isValidElement } from 'react';\nimport { ScreenBase, ScreenBaseProps } from '../ScreenBase';\nimport { SharedElement } from '../SharedElement';\nimport { StandardPropertiesHyphen } from 'csstype';\n\nexport type ScreenChild<E extends ScreenBase = ScreenBase> = E extends ScreenBase<infer P> ? React.CElement<P, E> : never;\n\nexport interface AnimationEffectFactoryProps<R extends HTMLElement = HTMLElement> {\n ref: R | null;\n index: number;\n screens: string[];\n exiting: boolean;\n timeline: AnimationTimeline | null;\n playbackRate: number;\n direction: PlaybackDirection;\n hasUAVisualTransition: boolean;\n}\n\nexport type AnimationEffectFactory<R extends HTMLElement = HTMLElement> = (props: AnimationEffectFactoryProps<R>) => AnimationEffect;\n\nexport type MetaType = [string, string];\nexport type MetaKey = `${string}=${string}`;\n\nexport interface LazyExoticComponent<T extends React.ComponentType<any>> extends React.LazyExoticComponent<T> {\n load: () => Promise<{ default: T }>;\n module?: { default: T };\n}\n\nexport type ScreenState<P extends ScreenBaseProps = ScreenBaseProps> = Map<string, Pick<RoutePropBase<P['config'], PlainObject>, 'config' | 'params'>>;\n\nexport interface RoutePropBase<C extends ScreenBaseProps['config'] = {}, P extends PlainObject = PlainObject> {\n path: string;\n resolvedPathname?: string;\n config: NonNullable<C>;\n focused: boolean;\n params: P;\n setParams(params: Partial<P>): void;\n setConfig(config: Partial<NonNullable<C>>): void;\n}\n\nexport function isValidScreenChild<S extends ScreenBase>(value: any): value is ScreenChild<S> {\n if (!isValidElement(value)) return false;\n return Object.getPrototypeOf(value.type) === ScreenBase;\n}\n\nexport type PlainObject<T = any> = { [key: string]: T };\n\n// TODO: remove hyphens\ndeclare global {\n interface HTMLElementEventMap {\n 'routertransitionstart': TransitionEvent;\n 'routertransitioncancel': TransitionEvent;\n 'routertransitionend': TransitionEvent;\n }\n}\n\nexport type EventHandler = {\n [K in keyof HTMLElementEventMap as `on${K}`]?:\n (e: HTMLElementEventMap[K]) => void;\n} & {\n handleEvent: (e: Event) => void;\n}\n\nexport type RouterBaseHTMLElement<\n T extends HTMLElement = HTMLDivElement\n> = T & {\n addEventListener<K extends keyof HTMLElementEventMap>(\n type: K,\n listener: (this: T, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n removeEventListener<K extends keyof HTMLElementEventMap>(\n type: K,\n listener: (this: T, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n}\n\nexport type CustomElementType = `${string}-${string}`;\n\nexport interface MatchedRoute {\n params: PlainObject<string | undefined>;\n caseSensitive: boolean;\n}\n\nexport interface PathPattern {\n pattern: string;\n caseSensitive: boolean;\n}\n\nexport type AnimationDirection = 'normal' | 'reverse';\n\nenum SharedElementTransitionTypeEnum {\n 'morph',\n 'fade-through',\n 'fade',\n 'cross-fade'\n}\n\nexport type SharedElementTransitionType = keyof typeof SharedElementTransitionTypeEnum;\n\nexport interface SharedElementNode {\n id: string;\n instance: SharedElement;\n}\n\nexport type SharedElementNodeMap = Map<string, SharedElementNode>;\n\nexport type StyleKeyList = (keyof StandardPropertiesHyphen | string)[];\n\nexport function isNativeLazyExoticComponent(value: any): value is React.LazyExoticComponent<any> {\n return typeof value === 'object'\n && value !== null\n && value.$$typeof === Symbol.for('react.lazy');\n}\n\nexport function isLazyExoticComponent(value: any): value is LazyExoticComponent<any> {\n return isNativeLazyExoticComponent(value) && 'load' in value;\n}\n\nexport type StylableElement = Element & { style: CSSStyleDeclaration };\n\nexport function isStylableElement(element: any): element is StylableElement {\n return 'style' in element && element.style instanceof CSSStyleDeclaration;\n}\n\nexport interface LoadNavigationTransition extends Omit<\n NavigationTransition,\n 'navigationType'\n> {\n navigationType: 'load' | 'preload';\n}\n\ndeclare global {\n interface NavigateEvent extends Event {\n commit?(): void; // not in spec yet, see https://github.com/WICG/navigation-api/issues/66\n }\n}\n\nexport type ElementPropType<C> = C extends React.CElement<infer P, infer T> ? P & React.ClassAttributes<T> : never;\nexport type ClonedElementType<C, IP extends Partial<ElementPropType<C>>> = C extends React.CElement<infer P, infer T> ? React.CElement<P & Partial<IP>, T & React.Component<P & IP>> : never;","var Lt = Object.defineProperty;\nvar jt = (o, r, t) => r in o ? Lt(o, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[r] = t;\nvar V = (o, r, t) => (jt(o, typeof r != \"symbol\" ? r + \"\" : r, t), t), wt = (o, r, t) => {\n if (!r.has(o))\n throw TypeError(\"Cannot \" + t);\n};\nvar e = (o, r, t) => (wt(o, r, \"read from private field\"), t ? t.call(o) : r.get(o)), d = (o, r, t) => {\n if (r.has(o))\n throw TypeError(\"Cannot add the same private member more than once\");\n r instanceof WeakSet ? r.add(o) : r.set(o, t);\n}, l = (o, r, t, i) => (wt(o, r, \"write to private field\"), i ? i.call(o, t) : r.set(o, t), t);\nvar m = (o, r, t) => (wt(o, r, \"access private method\"), t);\nconst ot = {\n delay: 0,\n direction: \"normal\",\n duration: \"auto\",\n easing: \"linear\",\n endDelay: 0,\n fill: \"auto\",\n iterationStart: 0,\n iterations: 1\n}, St = 1e3, qt = window.Animation, ft = window.KeyframeEffect;\nfunction At(o) {\n return Array.isArray(o);\n}\nfunction Q(o) {\n return typeof o == \"object\" && o === null;\n}\nfunction u(o, r) {\n return Q(o) || typeof o == \"number\" ? o : (r || ([r] = Object.keys(o.type())), o.to(r).value);\n}\nfunction Ft(o, r = ot) {\n let { duration: t = \"auto\", iterations: i = 1, playbackRate: n = 1 } = r;\n if (Q(o))\n return o;\n if (typeof o == \"number\" || o.type().percent === void 0)\n throw new DOMException(\n \"CSSNumericValue must be a percentage for progress based animations.\",\n \"NotSupportedError\"\n );\n if (t === \"auto\")\n t = St;\n else if (t instanceof CSSNumericValue)\n t = t.to(\"ms\").value;\n else if (typeof t == \"string\")\n throw new TypeError(\"Unknown effect duration keyword.\");\n const { delay: s = 0, endDelay: a = 0 } = r, y = t / i * i / Math.abs(n), b = s + y + a;\n return st(\n o.to(\"percent\").value,\n [0, 100],\n [0, b]\n );\n}\nfunction bt(o) {\n if (Q(o) || typeof o == \"number\")\n return o;\n if (o.type().time !== void 0)\n throw new DOMException(\n \"CSSNumericValue must be a time value for time based animations.\",\n \"NotSupportedError\"\n );\n return o.to(\"ms\").value;\n}\nfunction It(o, r) {\n const t = r.length - 1, i = Math.floor(o * t), n = r[i], s = r[Math.min(i + 1, t)], a = o * t - i;\n return n + a * (s - n);\n}\nfunction Bt(o, r, t) {\n let i = 0, n = 0;\n for (const [s, a] of Object.entries(o)) {\n const { min: c, max: y } = r, b = t[s] ?? 1, R = (a - c[s]) / (y[s] - c[s]) * b;\n i += R, n += b;\n }\n return i / n;\n}\nfunction st(o, r, t, i = {}) {\n let n;\n if (typeof o == \"number\" && At(r)) {\n const a = { x: r[0] }, c = { x: r[1] };\n r = { min: a, max: c }, o = { x: o };\n } else\n throw new TypeError(\"Input and input range must have the same dimensions.\");\n if (n = Bt(o, r, i), n = Xt(n, 0, 1), At(t))\n return It(n, t);\n const s = {};\n for (const a of Object.keys(t.min)) {\n const c = t.min[a], y = t.max[a], b = [c, y];\n s[a] = It(n, b);\n }\n return s;\n}\nfunction Qt({ mass: o = 1, stiffness: r = 10, damping: t = 10, velocity: i = 0, steps: n = 100 }) {\n const s = Math.sqrt(r / o), a = t / (2 * Math.sqrt(r * o)), c = a < 1 ? s * Math.sqrt(1 - a * a) : 0, y = a < 1 ? (a * s + -i) / c : -i + s;\n function b(g) {\n return a < 1 ? g = Math.exp(-g * a * s) * (1 * Math.cos(c * g) + y * Math.sin(c * g)) : g = (1 + y * g) * Math.exp(-g * s), 1 - g;\n }\n const M = (() => {\n const g = 1 / n;\n let w = 0;\n for (; ; ) {\n if (Math.abs(1 - b(w)) < 1e-3) {\n const C = w;\n let E = 1;\n for (; w += g, !(Math.abs(1 - b(w)) >= 1e-3); )\n if (E++, E === 16)\n return C;\n }\n w += g;\n }\n })() * 1e3, R = (() => {\n const g = [];\n for (let w = 0; w <= n; w++) {\n const C = w / n, E = b(C);\n g.push(E);\n }\n return `linear(${g.join(\", \")})`;\n })();\n return { duration: M, easing: R };\n}\nfunction Yt(o, r = 100) {\n const t = [];\n for (let i = 0; i <= r; i++) {\n const n = i / r, s = o(n);\n t.push(s);\n }\n return `linear(${t.join(\", \")})`;\n}\nfunction Xt(o, r, t) {\n return o < r ? r : t && o > t ? t : o;\n}\nfunction Dt(o) {\n let {\n duration: r = \"auto\",\n iterations: t = 1,\n playbackRate: i = 1,\n delay: n = 0,\n endDelay: s = 0,\n localTime: a = null,\n progress: c = null\n } = o;\n const y = new CSSUnitValue(100, \"percent\");\n if (r === \"auto\")\n r = St, n = 0, s = 0;\n else if (r instanceof CSSNumericValue)\n r = r.to(\"ms\").value;\n else if (typeof r == \"string\")\n throw TypeError(\"Unknown effect duration keyword.\");\n const b = r / t, M = b * t / Math.abs(i), R = n + M + s;\n r = new CSSUnitValue(b / R * 100, \"percent\");\n const g = CSS.percent(r.to(\"percent\").value * t / Math.abs(i));\n return a !== null && (c = u(a, \"percent\") / y.value), {\n ...o,\n progress: c,\n activeDuration: g,\n duration: r,\n iterations: t,\n delay: n,\n endDelay: s,\n endTime: y\n };\n}\nfunction Pt(o, r) {\n let { activeDuration: t = 0, localTime: i = null, endTime: n = 1 / 0, delay: s = 0 } = o;\n if (n = u(n), t = u(t), i = u(i), i == null || i === void 0)\n return \"idle\";\n const a = Math.max(Math.min(s, n), 0), c = Math.max(Math.min(s + t, n), 0);\n return i < a || r === \"backwards\" && i === a ? \"before\" : i > c || r === \"forwards\" && i === c ? \"after\" : \"active\";\n}\nfunction Wt(o, r) {\n let { localTime: t = null, delay: i = 0, activeDuration: n = 0, fill: s } = o;\n if (n = u(n), t = u(t), t == null || t === void 0)\n return null;\n switch (r) {\n case \"before\":\n return s === \"backwards\" || s === \"both\" ? Math.max(t - i, 0) : null;\n case \"active\":\n return t - i;\n case \"after\":\n return s === \"forwards\" || s === \"both\" ? Math.max(Math.min(t - i, n), 0) : null;\n default:\n return null;\n }\n}\nfunction Kt(o, r, t) {\n const { duration: i = 0, iterations: n = 1, iterationStart: s = 0 } = o;\n if (typeof i != \"number\")\n throw new TypeError(\"Duration cannot be unresolved\");\n let a = 0;\n return i === 0 ? r === \"before\" ? a = 0 : a = n : a = t / bt(i), a + s;\n}\nfunction $t(o, r, t, i) {\n const { iterations: n = 1, iterationStart: s = 0, activeDuration: a = 0 } = o;\n if (Q(t))\n return null;\n let c = 0;\n return t === 1 / 0 && (c = s % 1), c === 0 && (r === \"active\" || r === \"after\") && a === i && n !== 0 && (c = 1), c;\n}\nfunction xt(o, r) {\n const { iterations: t = 1 } = o, i = Wt(o, r);\n if (Q(i))\n return null;\n if (r === \"after\" && t === 1 / 0)\n return 1 / 0;\n const n = Kt(o, r, i);\n return $t(o, r, n, i) === 1 ? Math.floor(n) - 1 : Math.floor(n);\n}\nclass zt extends Event {\n constructor(t) {\n super(\"update\", { bubbles: !1, cancelable: !1, composed: !1 });\n V(this, \"currentTime\");\n this.currentTime = t;\n }\n}\nvar x, K;\nclass v extends EventTarget {\n constructor(t = { type: \"swipe\", axis: \"x\", rangeStart: 0, rangeEnd: window.screen.availWidth, source: document.body }) {\n super();\n d(this, x, void 0);\n d(this, K, void 0);\n t.source.addEventListener(t.type, this.onGesture.bind(this)), l(this, K, CSS.percent(0)), l(this, x, t);\n }\n onGesture(t) {\n const i = e(this, x).source.getBoundingClientRect();\n let n = 0;\n const s = {\n x: t.x - i.left,\n y: t.y - i.top\n };\n switch (e(this, x).type) {\n case \"swipe\": {\n const { rangeStart: a, rangeEnd: c } = e(this, x), y = e(this, x).axis;\n n = st(\n s[y],\n [u(a, \"px\"), u(c, \"px\")],\n [0, 100]\n );\n break;\n }\n case \"pan\": {\n const { rangeStart: a, rangeEnd: c } = e(this, x), { x: y, y: b } = s;\n n = st(\n { x: y, y: b },\n {\n min: { x: u(a.x, \"px\"), y: u(a.y, \"px\") },\n max: { x: u(c.x, \"px\"), y: u(c.y, \"px\") }\n },\n [0, 100],\n { x: 1, y: 1 }\n );\n break;\n }\n case \"pinch\": {\n const { rangeStart: a, rangeEnd: c } = e(this, x), { scale: y } = t;\n n = st(\n y,\n [u(a, \"\"), u(c, \"\")],\n // figure out which unit\n [0, 100]\n );\n break;\n }\n case \"rotate\": {\n const { rangeStart: a, rangeEnd: c } = e(this, x), { rotation: y } = t;\n n = st(\n y,\n [u(a, \"deg\"), u(c, \"deg\")],\n [0, 100]\n );\n }\n }\n l(this, K, CSS.percent(n)), this.dispatchEvent(new zt(e(this, K)));\n }\n addEventListener(t, i, n) {\n super.addEventListener(t, i, n);\n }\n removeEventListener(t, i, n) {\n super.removeEventListener(t, i, n);\n }\n get currentTime() {\n return e(this, K);\n }\n get phase() {\n return \"active\";\n }\n}\nx = new WeakMap(), K = new WeakMap();\nconst G = /* @__PURE__ */ new WeakMap();\nvar tt;\nclass mt extends ft {\n constructor(t, i = null) {\n super(t);\n d(this, tt, null);\n l(this, tt, i);\n }\n get parent() {\n return e(this, tt);\n }\n getTiming() {\n var i;\n const t = super.getTiming();\n if (((i = G.get(this)) == null ? void 0 : i.timeline) instanceof v) {\n if (t.duration === 1 / 0)\n throw TypeError(\"Effect duration cannot be Infinity for non-monotonic timelines.\");\n if (t.iterations === 1 / 0)\n throw TypeError(\"Effect iterations cannot be Infinity for non-monotonic timelines.\");\n }\n return t;\n }\n getComputedTiming() {\n var n;\n const t = super.getComputedTiming();\n if (((n = G.get(this)) == null ? void 0 : n.timeline) instanceof v) {\n if (t.duration === 1 / 0)\n throw TypeError(\"Effect duration cannot be Infinity for non-monotonic timelines.\");\n if (t.iterations === 1 / 0)\n throw TypeError(\"Effect iterations cannot be Infinity for non-monotonic timelines.\");\n return Dt(t);\n }\n return t;\n }\n updateTiming(t) {\n var s;\n const i = super.getTiming();\n t = {\n ...i,\n duration: i.duration instanceof CSSNumericValue ? i.duration.to(\"ms\").value : i.duration,\n ...t\n };\n let n = e(this, tt);\n for (; n; ) {\n const a = n.getTiming();\n t != null && t.delay && (t.delay += a.delay ?? 0), t != null && t.endDelay && (t.endDelay += a.endDelay ?? 0), t != null && t.iterationStart && (t.iterationStart += a.iterationStart ?? 0), t != null && t.iterations && (t.iterations *= a.iterations ?? 1), t != null && t.playbackRate && (t.playbackRate *= a.playbackRate ?? 1), a.duration && typeof a.duration != \"string\" && (t == null ? void 0 : t.duration) === \"auto\" && (t.duration = u(a.duration, \"ms\")), n = n.parent;\n }\n if (((s = G.get(this)) == null ? void 0 : s.timeline) instanceof v) {\n if ((t == null ? void 0 : t.duration) === 1 / 0)\n throw TypeError(\"Effect duration cannot be Infinity for non-monotonic timelines.\");\n if (t != null && t.iterations)\n throw TypeError(\"Effect iterations cannot be Infinity for non-monotonic timelines.\");\n }\n return super.updateTiming(t);\n }\n}\ntt = new WeakMap();\nvar U, $;\nconst at = class at {\n constructor(r) {\n d(this, U, []);\n d(this, $, null);\n l(this, U, r.map((t) => (t instanceof at ? l(t, $, this) : t instanceof ft && (t = new mt(t, this)), t)));\n }\n get parent() {\n return e(this, $);\n }\n get children() {\n const r = e(this, U);\n return {\n length: r.length,\n item(t) {\n return r.at(t) ?? null;\n }\n };\n }\n get firstChild() {\n return e(this, U).at(0) ?? null;\n }\n get lastChild() {\n return e(this, U).at(-1) ?? null;\n }\n clone() {\n return structuredClone(this);\n }\n append(...r) {\n r.forEach((t) => {\n e(this, U).includes(t) || (t instanceof at ? l(t, $, this) : t instanceof ft && (t = new mt(t, this)), e(this, U).push(t));\n });\n }\n prepend(...r) {\n r.forEach((t) => {\n e(this, U).includes(t) || (t instanceof at ? l(t, $, this) : t instanceof ft && (t = new mt(t, this)), e(this, U).unshift(t));\n });\n }\n};\nU = new WeakMap(), $ = new WeakMap();\nlet lt = at;\nclass Y {\n constructor() {\n V(this, \"promise\");\n V(this, \"state\");\n V(this, \"nativeResolve\");\n V(this, \"nativeReject\");\n this.state = \"pending\", this.nativeResolve = this.nativeReject = null, this.promise = new Promise((r, t) => {\n this.nativeResolve = r, this.nativeReject = t;\n });\n }\n resolve(r) {\n var t;\n this.state = \"resolved\", (t = this.nativeResolve) == null || t.call(this, r);\n }\n reject(r) {\n var t;\n this.state = \"rejected\", this.promise.catch(() => {\n }), (t = this.nativeReject) == null || t.call(this, r);\n }\n}\nvar z, dt, Ut;\nclass Ht extends lt {\n constructor(t, i = ot) {\n super(t);\n d(this, dt);\n d(this, z, void 0);\n l(this, z, {\n ...ot,\n ...i\n });\n }\n prepend(...t) {\n super.prepend(...t), t.forEach((i) => i.updateTiming());\n }\n append(...t) {\n super.append(...t), t.forEach((i) => i.updateTiming());\n }\n getTiming() {\n return e(this, z);\n }\n getComputedTiming() {\n var w, C;\n const t = this.getTiming(), i = { ...t }, { delay: n = 0 } = ((w = this.children.item(0)) == null ? void 0 : w.getComputedTiming()) ?? {}, { endDelay: s = 0, endTime: a = 0 } = ((C = this.children.item(this.children.length - 1)) == null ? void 0 : C.getComputedTiming()) ?? {};\n t.delay = t.delay ? t.delay + n : n, t.endDelay = t.endDelay ? t.endDelay + s : s, i.endTime = a;\n for (let E = 0; E < this.children.length; E++) {\n const A = this.children.item(E);\n if (!A)\n continue;\n let {\n duration: I = \"auto\",\n activeDuration: Mt = 0\n } = A.getComputedTiming();\n i.activeDuration = i.activeDuration ? u(i.activeDuration, \"ms\") + u(Mt, \"ms\") : Mt, t.duration = t.duration instanceof CSSNumericValue ? t.duration.to(\"ms\").value : t.duration, I = I instanceof CSSNumericValue ? I.to(\"ms\").value : I, typeof I != \"string\" && (t.duration === \"auto\" ? t.duration = u(I, \"ms\") : typeof t.duration != \"string\" && (t.duration = t.duration ? t.duration + I : I));\n }\n const { timeline: c, startTime: y, currentTime: b } = G.get(this) ?? {}, M = c instanceof v ? \"percent\" : \"ms\";\n let { duration: R = 0, iterations: g = 1 } = i;\n if (R === \"auto\" && (R = 0), typeof R == \"string\")\n throw new TypeError(\"Unknown effect duration keyword.\");\n return i.duration = R, i.activeDuration = bt(R) * g, i.startTime = y ?? void 0, i.localTime = b, i.currentIteration = xt(i, Pt(i, e(this, dt, Ut))), c instanceof v ? Dt(i) : (c instanceof DocumentTimeline && (i.progress = b && u(b, M) / u(a, M)), i);\n }\n updateTiming(t) {\n l(this, z, {\n ...e(this, z),\n ...t\n });\n for (let i = 0; i < this.children.length; i++) {\n const n = this.children.item(i);\n n == null || n.updateTiming();\n }\n }\n}\nz = new WeakMap(), dt = new WeakSet(), Ut = function() {\n const { playbackRate: t = 1 } = G.get(this) ?? {};\n return t < 0 ? \"backwards\" : \"forwards\";\n};\nvar f, D, et, T, k, N, h, p, S, B, j, it, O, ut, kt, H, rt, X, Z, pt, Ot, Tt, _t, yt, Gt, F, W, nt, ct, Rt, _, q, P, L, ht, gt, Et;\nconst Ct = class Ct extends EventTarget {\n constructor(t, i) {\n super();\n d(this, ut);\n d(this, H);\n d(this, X);\n d(this, pt);\n d(this, Tt);\n d(this, yt);\n d(this, F);\n d(this, ct);\n d(this, _);\n d(this, P);\n V(this, \"id\", \"\");\n V(this, \"oncancel\", null);\n V(this, \"onfinish\", null);\n V(this, \"onremove\", null);\n d(this, f, void 0);\n d(this, D, void 0);\n d(this, et, \"active\");\n d(this, T, {\n task: null,\n playbackRate: null\n });\n d(this, k, new Y());\n d(this, N, new Y());\n d(this, h, null);\n d(this, p, null);\n d(this, S, []);\n d(this, B, null);\n d(this, j, !1);\n d(this, it, 0);\n d(this, O, 1);\n d(this, nt, () => {\n m(this, F, W).call(this);\n });\n d(this, ht, () => {\n var s;\n if (e(this, N).state !== \"pending\" || this.playState !== \"finished\")\n return;\n e(this, N).resolve(this);\n const t = this.currentTime, i = (s = this.timeline) == null ? void 0 : s.currentTime, n = new AnimationPlaybackEvent(\n \"finish\",\n {\n get currentTime() {\n return t;\n },\n get timelineTime() {\n return i;\n }\n }\n );\n requestAnimationFrame(() => {\n var a;\n this.dispatchEvent(n), (a = this.onfinish) == null || a.call(this, n);\n });\n });\n d(this, gt, () => {\n var s, a;\n const t = this.currentTime, i = (s = this.timeline) == null ? void 0 : s.currentTime, n = new AnimationPlaybackEvent(\n \"cancel\",\n {\n get currentTime() {\n return t;\n },\n get timelineTime() {\n return i;\n }\n }\n );\n this.dispatchEvent(n), (a = this.oncancel) == null || a.call(this, n);\n });\n d(this, Et, () => {\n var i;\n const t = new Event(\"remove\");\n this.dispatchEvent(t), (i = this.onremove) == null || i.call(this, t);\n });\n e(this, k).resolve(this), l(this, D, t ?? null), l(this, f, i ?? document.timeline), e(this, D) && G.set(e(this, D), this), m(this, ct, Rt).call(this), i instanceof v && i.addEventListener(\"update\", e(this, nt));\n }\n reverse() {\n var c;\n const { endTime: t = 0 } = ((c = e(this, D)) == null ? void 0 : c.getComputedTiming()) ?? {}, i = e(this, T).playbackRate ?? e(this, O), n = u(this.currentTime), s = t === 1 / 0, a = i !== 0 && (i < 0 || n && n > 0 || !s);\n if (!e(this, f) || !a) {\n a && (e(this, T).playbackRate = -i);\n return;\n }\n if (e(this, f).currentTime === null)\n throw new DOMException(\n \"Cannot reverse an animation with no active timeline\",\n \"InvalidStateError\"\n );\n this.updatePlaybackRate(-i), this.play();\n }\n play() {\n const t = this.playState === \"paused\" && this.pending, i = this.currentTime;\n (e(this, T).playbackRate ?? this.playbackRate) === 0 && i === null && l(this, p, 0), i === null && l(this, j, !0), (this.playState === \"finished\" || t) && (l(this, h, null), l(this, p, null), l(this, j, !0)), e(this, p) && l(this, h, null), e(this, T).task && (e(this, T).task = null), !(e(this, h) !== null && e(this, p) === null && !t && e(this, T).playbackRate === null) && (m(this, F, W).call(this), m(this, H, rt).call(this), e(this, T).task = \"play\", m(this, _, q).call(this, !1));\n }\n pause() {\n this.playState !== \"paused\" && (this.currentTime === null && l(this, j, !0), e(this, T).task && (e(this, T).task = null), m(this, H, rt).call(this), e(this, T).task = \"pause\");\n }\n persist() {\n e(this, S).forEach((t) => t.persist()), l(this, et, \"persisted\");\n }\n finish() {\n var s;\n const { endTime: t = 0 } = ((s = this.effect) == null ? void 0 : s.getComputedTiming()) ?? {}, i = e(this, T).playbackRate ?? e(this, O);\n if (i === 0 || i > 0 && t === 1 / 0)\n throw new DOMException(\"InvalidStateError\");\n m(this, P, L).call(this);\n let n;\n if (i > 0 ? n = t : n = 0, m(this, ut, kt).call(this, n), this.startTime === null && e(this, f) !== null && e(this, f).currentTime !== null && n !== null) {\n const a = e(this, f) instanceof v ? \"percent\" : \"ms\";\n n = u(n, a);\n const c = u(e(this, f).currentTime, a);\n l(this, h, c - n / i);\n }\n e(this, T).task === \"pause\" && e(this, h) !== null && (l(this, p, null), m(this, X, Z).call(this), e(this, k).resolve(this)), e(this, T).task === \"play\" && e(this, h) !== null && (m(this, X, Z).call(this), e(this, k).resolve(this)), m(this, _, q).call(this, !0), e(this, S).forEach((a) => a.finish());\n }\n commitStyles() {\n e(this, S).forEach((t) => {\n t.effect instanceof mt && (t.effect.target === null || t.effect.pseudoElement !== null) || t.commitStyles();\n });\n }\n cancel() {\n this.playState !== \"idle\" && (m(this, P, L).call(this), e(this, k).reject(new DOMException(\"The user aborted a request\", \"AbortError\")), m(this, X, Z).call(this), l(this, k, new Y()), e(this, N).state === \"pending\" && e(this, N).reject(new DOMException(\"The user aborted a request\", \"AbortError\")), l(this, N, new Y()), e(this, S).forEach((t) => t.cancel())), l(this, h, null), l(this, p, null);\n }\n updatePlaybackRate(t) {\n var n;\n e(this, T).playbackRate = t;\n const i = this.playState;\n if (e(this, k).state !== \"pending\")\n switch (i) {\n case \"idle\":\n case \"paused\":\n m(this, P, L).call(this);\n break;\n case \"finished\": {\n const s = e(this, f) instanceof v ? \"percent\" : \"ms\", a = ((n = e(this, f)) == null ? void 0 : n.currentTime) ?? null;\n if (t === 0)\n l(this, h, u(a, s));\n else if (a !== null) {\n let c = null;\n c = (u(a, s) - (e(this, h) ?? 0)) * this.playbackRate, e(this, h) !== null && c !== null && l(this, h, (u(a, s) - c) / t);\n }\n m(this, P, L).call(this), m(this, _, q).call(this, !1), m(this, F, W).call(this);\n break;\n }\n default:\n this.play();\n }\n }\n addEventListener(t, i, n) {\n super.addEventListener(t, i, n);\n }\n removeEventListener(t, i, n) {\n super.removeEventListener(t, i, n);\n }\n set playbackRate(t) {\n l(this, O, t), e(this, S).forEach((i) => {\n i.playbackRate *= t;\n });\n }\n set startTime(t) {\n l(this, h, u(t)), e(this, S).forEach((i) => i.startTime = t);\n }\n set currentTime(t) {\n var s;\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\", n = u(((s = e(this, f)) == null ? void 0 : s.currentTime) ?? null, i);\n if (Q(t) && !Q(n))\n throw new TypeError(\"currentTime may not be changed from resolved to unresolved.\");\n l(this, j, !1), e(this, p) !== null || e(this, h) === null || n === null || this.playbackRate === 0 ? l(this, p, u(t, i)) : l(this, h, n - u(t, i) / this.playbackRate), (e(this, f) === null || n === null) && l(this, h, null), l(this, B, null), m(this, ut, kt).call(this, t), e(this, T).task === \"pause\" && (l(this, p, u(t, i)), m(this, P, L).call(this), l(this, h, null), m(this, X, Z).call(this), e(this, k).resolve(this)), m(this, _, q).call(this, !0);\n }\n set timeline(t) {\n var C, E;\n const i = this.timeline;\n if (i === t)\n return;\n e(this, f) instanceof v && e(this, f).removeEventListener(\"update\", e(this, nt));\n const n = this.playState, s = i instanceof v ? \"percent\" : \"ms\", a = u(this.currentTime, s), { progress: c = null, endTime: y = 0 } = ((C = e(this, D)) == null ? void 0 : C.getComputedTiming()) ?? {}, b = u(y, s), M = i instanceof v, R = t instanceof v, g = t instanceof DocumentTimeline, w = this.pending;\n if (R)\n l(this, f, t), t.addEventListener(\"update\", e(this, nt)), m(this, P, L).call(this), l(this, j, !0), l(this, h, null), l(this, p, null), (n === \"running\" || n === \"finished\") && ((!e(this, k) || e(this, k).state === \"resolved\") && m(this, H, rt).call(this), e(this, T).task = \"play\", e(this, S).forEach((A) => A.pause())), n === \"paused\" && c !== null && l(this, p, c * b), w && ((!e(this, k) || e(this, k).state === \"resolved\") && m(this, H, rt).call(this), n === \"paused\" ? e(this, T).task = \"pause\" : e(this, T).task = \"play\"), e(this, h) !== null && l(this, p, null), m(this, _, q).call(this, !1);\n else if (g) {\n if (l(this, f, t), M) {\n if (a !== null && c !== null) {\n const { endTime: A = 0 } = ((E = e(this, D)) == null ? void 0 : E.getComputedTiming()) ?? {}, I = u(A, \"ms\");\n this.currentTime = c * I;\n }\n switch (n) {\n case \"paused\":\n e(this, S).forEach((A) => A.pause());\n break;\n case \"running\":\n case \"finished\":\n e(this, S).forEach((A) => A.play());\n }\n }\n } else\n throw TypeError(\"Unsupported timeline: \" + t);\n }\n set effect(t) {\n if (t !== e(this, D)) {\n if (this.pending && m(this, X, Z).call(this), e(this, D) && G.delete(e(this, D)), t) {\n const i = G.get(t);\n i && (i.effect = null), G.set(t, this);\n }\n l(this, D, t), m(this, ct, Rt).call(this), m(this, _, q).call(this, !1);\n }\n }\n get ready() {\n return e(this, k).promise;\n }\n get finished() {\n return e(this, N).promise;\n }\n get playState() {\n var a;\n let { endTime: t = 0 } = ((a = this.effect) == null ? void 0 : a.getComputedTiming()) ?? {};\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\", n = u(this.startTime, i), s = u(this.currentTime, i);\n return t = u(t, i), s === null && n === null && e(this, T).task === null ? \"idle\" : e(this, T).task === \"pause\" || n === null && e(this, T).task !== \"play\" ? \"paused\" : s !== null && (e(this, O) > 0 && s >= t || e(this, O) < 0 && s <= 0) ? \"finished\" : \"running\";\n }\n get playbackRate() {\n return e(this, O);\n }\n get replaceState() {\n return e(this, et);\n }\n get pending() {\n return e(this, k).state === \"pending\";\n }\n get currentTime() {\n var s;\n const t = ((s = this.timeline) == null ? void 0 : s.currentTime) ?? null;\n if (e(this, p)) {\n if (typeof t == \"number\")\n return e(this, p);\n const a = e(this, f) instanceof v ? \"percent\" : \"ms\";\n return new CSSUnitValue(e(this, p), a);\n }\n if (t === null || e(this, h) === null)\n return null;\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\";\n let n = (u(t, i) - e(this, h)) * this.playbackRate;\n return n === -0 && (n = 0), typeof t == \"number\" ? n : new CSSUnitValue(n, i);\n }\n get startTime() {\n var n;\n if (e(this, h) === null)\n return null;\n if (typeof (((n = this.timeline) == null ? void 0 : n.currentTime) ?? null) == \"number\")\n return e(this, h);\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\";\n return new CSSUnitValue(e(this, h), i);\n }\n get timeline() {\n return e(this, f);\n }\n get effect() {\n return e(this, D);\n }\n};\nf = new WeakMap(), D = new WeakMap(), et = new WeakMap(), T = new WeakMap(), k = new WeakMap(), N = new WeakMap(), h = new WeakMap(), p = new WeakMap(), S = new WeakMap(), B = new WeakMap(), j = new WeakMap(), it = new WeakMap(), O = new WeakMap(), ut = new WeakSet(), kt = function(t) {\n var n;\n const i = u(((n = e(this, f)) == null ? void 0 : n.currentTime) ?? null);\n if (t === null && i !== null)\n throw new TypeError();\n t === null || i === null || (t = u(t), l(this, j, !1), e(this, p) !== null || e(this, h) === null || e(this, f) instanceof v && e(this, f).phase === \"inactive\" || e(this, O) === 0 ? l(this, p, t) : l(this, h, i - t / e(this, O)), e(this, f) instanceof v && e(this, f).phase === \"inactive\" && l(this, h, null), l(this, B, null));\n}, H = new WeakSet(), rt = function() {\n e(this, k).state !== \"pending\" && l(this, k, new Y()), cancelAnimationFrame(e(this, it)), l(this, it, requestAnimationFrame(() => {\n var i;\n (((i = e(this, f)) == null ? void 0 : i.currentTime) ?? null) !== null && (m(this, yt, Gt).call(this), e(this, T).task === \"play\" && (e(this, h) !== null || e(this, p) !== null) ? m(this, pt, Ot).call(this) : e(this, T).task === \"pause\" && m(this, Tt, _t).call(this), Promise.all(e(this, S).map((n) => n.finished)).then(e(this, ht)), Promise.all(e(this, S).map((n) => new Promise((s) => n.onremove = s))).then(e(this, Et)), Promise.all(e(this, S).map((n) => new Promise((s) => n.oncancel = s))).then(e(this, gt)).then(() => l(this, et, \"removed\")));\n }));\n}, X = new WeakSet(), Z = function() {\n cancelAnimationFrame(e(this, it)), e(this, T).task = null;\n}, pt = new WeakSet(), Ot = function() {\n var n;\n const t = ((n = this.timeline) == null ? void 0 : n.currentTime) ?? null;\n if (t === null)\n return;\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\";\n if (e(this, p) !== null)\n m(this, P, L).call(this), this.playbackRate === 0 ? l(this, h, u(t, i)) : (l(this, h, u(t, i) - e(this, p) / this.playbackRate), l(this, p, null));\n else if (e(this, h) !== null && e(this, T).playbackRate !== null) {\n const s = (u(t, i) - e(this, h)) * this.playbackRate;\n m(this, P, L).call(this);\n const a = this.playbackRate;\n a === 0 ? (l(this, p, null), l(this, h, u(t, i))) : l(this, h, u(t, i) - s / a);\n }\n e(this, k).state === \"pending\" && e(this, k).resolve(this), m(this, _, q).call(this, !1), m(this, F, W).call(this), e(this, T).task = null, this.timeline instanceof DocumentTimeline && e(this, S).forEach((s) => s.play());\n}, Tt = new WeakSet(), _t = function() {\n var s;\n const t = ((s = this.timeline) == null ? void 0 : s.currentTime) ?? null;\n if (t === null)\n return;\n const i = e(this, f) instanceof v ? \"percent\" : \"ms\", n = t;\n e(this, h) !== null && e(this, p) === null && l(this, p, (u(n, i) - e(this, h)) * this.playbackRate), m(this, P, L).call(this), l(this, h, null), e(this, k).resolve(this), m(this, _, q).call(this, !1), m(this, F, W).call(this), e(this, T).task = null, e(this, S).forEach((a) => a.pause());\n}, yt = new WeakSet(), Gt = function() {\n if (e(this, j) && !(!e(this, f) || !e(this, f).currentTime) && !(this.playState === \"idle\" || this.playState === \"paused\" && e(this, p) !== null)) {\n if (e(this, f) instanceof v) {\n const t = e(this, T).playbackRate ?? this.playbackRate;\n l(this, h, t >= 0 ? 0 : 100);\n } else\n l(this, h, u(e(this, f).currentTime, \"ms\"));\n l(this, p, null);\n }\n}, F = new WeakSet(), W = function() {\n var a;\n const t = ((a = e(this, f)) == null ? void 0 : a.currentTime) ?? null;\n if (t === null)\n return;\n const i = e(this, D), n = e(this, f) instanceof v ? Ft(t, i == null ? void 0 : i.getTiming()) : bt(t);\n let s = null;\n if (e(this, h) !== null) {\n const y = u(t, \"percent\") === (this.playbackRate < 0 ? 0 : 100) ? this.playbackRate < 0 ? 1e-3 : -1e-3 : 0;\n s = (n - e(this, h)) * this.playbackRate, s += y;\n } else if (e(this, p) !== null)\n s = e(this, p);\n else\n return;\n e(this, S).forEach((c) => c.currentTime = s);\n}, nt = new WeakMap(), ct = new WeakSet(), Rt = function() {\n var n;\n const t = e(this, D), i = [];\n if (t instanceof lt)\n for (let s = 0; s < t.children.length; s++) {\n const a = new Ct(t.children.item(s));\n if (t instanceof Ht && s > 0) {\n const { endTime: c = null } = ((n = i[s - 1].effect) == null ? void 0 : n.getComputedTiming()) ?? {};\n a.startTime = u(c, \"ms\");\n }\n i.push(a);\n }\n else {\n const s = e(this, f) instanceof v ? document.timeline : e(this, f);\n i.push(new qt(t, s));\n }\n l(this, S, i);\n}, _ = new WeakSet(), q = function(t) {\n var c, y;\n const i = ((c = e(this, f)) == null ? void 0 : c.currentTime) ?? null, n = e(this, f) instanceof v ? \"percent\" : \"ms\", s = u(this.currentTime, n);\n if (s && e(this, h) !== null && !this.pending) {\n let { delay: b = 0, endDelay: M = 0, iterations: R = 1, duration: g = \"auto\" } = ((y = e(this, D)) == null ? void 0 : y.getTiming()) ?? {};\n const w = e(this, T).playbackRate ?? this.playbackRate;\n if (g === \"auto\")\n g = e(this, f) instanceof v ? St : 0;\n else if (g instanceof CSSNumericValue)\n g = g.to(\"ms\").value;\n else if (typeof g == \"string\")\n throw new TypeError(\"Unknown effect duration keyword.\");\n const C = b + g * R + M;\n let E = u(e(this, B), n);\n w > 0 && s >= C && e(this, B) !== null ? ((E === null || E < C) && (E = C), l(this, p, t ? s : E)) : w < 0 && s <= 0 ? ((E === null || E > 0) && (E = 0), l(this, p, t ? s : E)) : w !== 0 && (t && e(this, p) !== null && (i !== null ? l(this, h, u(i, n) - e(this, p) / w) : l(this, h, null)), l(this, p, null));\n }\n m(this, F, W).call(this), l(this, B, this.currentTime), this.playState === \"finished\" ? e(this, N).state === \"pending\" && e(this, ht).call(this) : e(this, N).state === \"resolved\" && l(this, N, new Y());\n}, P = new WeakSet(), L = function() {\n e(this, T).playbackRate && (this.playbackRate = e(this, T).playbackRate), e(this, T).playbackRate = null;\n}, ht = new WeakMap(), gt = new WeakMap(), Et = new WeakMap();\nlet Nt = Ct;\nvar J, vt, Vt;\nclass Zt extends lt {\n constructor(t, i = ot) {\n super(t);\n d(this, vt);\n d(this, J, void 0);\n l(this, J, {\n ...ot,\n ...i\n }), t.forEach((n) => n.updateTiming());\n }\n prepend(...t) {\n super.prepend(...t), t.forEach((i) => i.updateTiming());\n }\n append(...t) {\n super.append(...t), t.forEach((i) => i.updateTiming());\n }\n getTiming() {\n return e(this, J);\n }\n getComputedTiming() {\n const t = this.getTiming(), i = { ...t };\n for (let R = 0; R < this.children.length; R++) {\n const g = this.children.item(R);\n if (!g)\n continue;\n let {\n delay: w = 0,\n endDelay: C = 0,\n duration: E = \"auto\",\n activeDuration: A = 0,\n endTime: I = 0\n } = g.getComputedTiming();\n t.delay = t.delay ? Math.min(t.delay, w) : w, t.endDelay = t.endDelay ? Math.max(t.endDelay, C) : C, i.endTime = i.endTime ? Math.max(u(i.endTime, \"ms\"), u(I, \"ms\")) : I, i.activeDuration = i.activeDuration ? Math.max(u(i.activeDuration, \"ms\"), u(A, \"ms\")) : A, t.duration = t.duration instanceof CSSNumericValue ? t.duration.to(\"ms\").value : t.duration, E = E instanceof CSSNumericValue ? E.to(\"ms\").value : E, typeof E != \"string\" && (t.duration === \"auto\" ? t.duration = u(E, \"ms\") : typeof t.duration != \"string\" && (t.duration = t.duration ? Math.max(t.duration, E) : E));\n }\n const { timeline: n, startTime: s, currentTime: a } = G.get(this) ?? {}, c = n instanceof v ? \"percent\" : \"ms\";\n let { duration: y = 0, iterations: b = 1, endTime: M = 0 } = i;\n if (y === \"auto\" && (y = 0), typeof y == \"string\")\n throw new TypeError(\"Unknown effect duration keyword.\");\n return i.duration = y, i.activeDuration = bt(y) * b, i.startTime = s ?? void 0, i.localTime = a, i.currentIteration = xt(i, Pt(i, e(this, vt, Vt))), n instanceof v ? Dt(i) : (n instanceof DocumentTimeline && (i.progress = a && u(a, c) / u(M, c)), i);\n }\n updateTiming(t) {\n l(this, J, {\n ...e(this, J),\n ...t\n });\n for (let i = 0; i < this.children.length; i++) {\n const n = this.children.item(i);\n n == null || n.updateTiming();\n }\n }\n}\nJ = new WeakMap(), vt = new WeakSet(), Vt = function() {\n const { playbackRate: t = 1 } = G.get(this) ?? {};\n return t < 0 ? \"backwards\" : \"forwards\";\n};\nexport {\n Nt as Animation,\n v as GestureTimeline,\n zt as GestureTimelineUpdateEvent,\n lt as GroupEffect,\n mt as KeyframeEffect,\n Zt as ParallelEffect,\n Wt as calculateActiveTime,\n xt as calculateCurrentIterationIndex,\n Kt as calculateOverallProgress,\n $t as calculateSimpleIterationProgress,\n Xt as clamp,\n Dt as computedTimingToPercent,\n u as cssNumberishToNumber,\n Yt as easingToLinear,\n Pt as getPhase,\n st as interpolate,\n Ft as msFromPercent,\n bt as msFromTime,\n Qt as springToLinear\n};\n//# sourceMappingURL=index.js.map\n","import { cloneElement, lazy as ReactLazy } from 'react';\nimport {\n ClonedElementType,\n ElementPropType,\n LazyExoticComponent,\n MatchedRoute,\n PathPattern\n} from './types';\nimport { LAST_INDEX } from './constants';\n\nexport function resolveBaseURLFromPattern(pattern: string, pathname: string) {\n if (!pattern.endsWith('*')) pattern += '**'; // allows us to match nested routes\n const origin = window.location.origin;\n const baseURLMatch = new URLPattern(pattern, origin).exec(pathname, origin);\n if (!baseURLMatch) return null;\n\n const groups = Object.keys(baseURLMatch.pathname.groups)\n .filter((key) => !isNaN(Number(key)))\n .map((key) => baseURLMatch.pathname.groups[key])\n .filter((group) => group !== undefined);\n const nestedPathnameGroup = groups.at(LAST_INDEX) ?? '';\n // derive concrete baseURL\n return new URL(\n pathname.replace(nestedPathnameGroup, ''),\n window.location.origin\n );\n}\n\nexport function matchRoute(\n pathnamePattern: string,\n pathname: string,\n baseURLPattern: string = `${window.location.origin}/`,\n caseSensitive: boolean = true\n): MatchedRoute | null {\n if (!caseSensitive) {\n pathnamePattern = pathnamePattern.toLowerCase();\n pathname = pathname.toLowerCase();\n }\n\n const baseURL = resolveBaseURLFromPattern(baseURLPattern, pathname)?.href;\n if (!baseURL) return null;\n\n const match = new URLPattern({\n baseURL,\n pathname: pathnamePattern,\n }).exec({ pathname, baseURL });\n const params = match?.pathname.groups ?? {};\n if (match) {\n return {\n params,\n caseSensitive,\n };\n }\n return null;\n}\n\nexport function dispatchEvent<T>(\n event: CustomEvent<T> | Event,\n target: HTMLElement | EventTarget = window\n) {\n return new Promise<boolean>((resolve) => {\n queueMicrotask(() => resolve(\n target.dispatchEvent(event)\n ));\n });\n}\n\nexport function lazy<T extends React.ComponentType<any>>(\n factory: () => Promise<{ default: T }>\n): LazyExoticComponent<T> {\n const Component = ReactLazy(factory) as LazyExoticComponent<T>;\n Component.load = async () => {\n Component.module ??= await factory();\n return Component.module;\n };\n return Component;\n}\n\nexport function isNavigationSupported() {\n return Boolean(window.navigation);\n}\n\nexport function isURLPatternSupported() {\n // @ts-expect-error: Property 'UrlPattern' does not exist \n return Boolean(globalThis.URLPattern);\n}\n\nexport async function polyfillURLPattern() {\n const { URLPattern } = await import('urlpattern-polyfill');\n // @ts-expect-error: Property 'UrlPattern' does not exist \n globalThis.URLPattern = URLPattern;\n}\n\nexport async function polyfillNavigation() {\n const { applyPolyfill } = await import('@virtualstate/navigation');\n applyPolyfill({\n history: true,\n interceptEvents: true,\n patch: true,\n persist: true,\n persistState: true,\n });\n}\n\nexport async function PromiseAllSequential<T>(\n values: Iterable<T | PromiseLike<T>>\n): Promise<Awaited<T>[]> {\n const awaited = [];\n for (const value of values) {\n awaited.push(await value);\n }\n\n return awaited;\n}\n\nexport function toCamelCase(value: string) {\n return value.replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n}\n\nexport function cloneAndInject<\n C extends React.CElement<any, any>,\n IP extends Partial<ElementPropType<C>>\n>(element: C, injectProps: IP) {\n return cloneElement(element, injectProps) as ClonedElementType<C, IP>;\n}\n\nexport function omit<T extends object, K extends readonly (keyof T)[]>(\n obj: T,\n keys: K\n): Omit<T, K[number]> {\n const copy = { ...obj };\n for (const k of keys) delete copy[k];\n return copy;\n}\n\nexport function historyEntryFromDestination(\n destination: NavigationDestination\n) {\n return Object.create(\n EventTarget.prototype,\n {\n id: {\n value: destination.id,\n enumerable: true,\n writable: false,\n configurable: false,\n },\n key: {\n value: destination.key,\n enumerable: true,\n writable: false,\n configurable: false,\n },\n url: {\n value: destination.url,\n enumerable: true,\n writable: false,\n configurable: false,\n },\n index: {\n value: destination.index,\n enumerable: true,\n writable: false,\n configurable: false,\n },\n sameDocument: {\n value: destination.sameDocument,\n enumerable: true,\n writable: false,\n configurable: false,\n },\n getState: {\n value: () => destination.getState(),\n enumerable: false,\n writable: false,\n configurable: false,\n },\n ondispose: {\n value: null,\n enumerable: true,\n writable: true,\n configurable: false,\n },\n }\n ) as NavigationHistoryEntry;\n}","import { StylableElement, StyleKeyList, isStylableElement } from './common/types';\nimport { Component, RefObject, createRef } from 'react';\nimport { NavigationBase } from './NavigationBase';\nimport { ScreenBase } from './ScreenBase';\nimport { ParallelEffect } from 'web-animations-extension';\nimport { SharedElement } from './SharedElement';\nimport { toCamelCase } from './common/utils';\n\ninterface SharedElementTransitionLayerProps {\n navigation: NavigationBase;\n direction: 'forwards' | 'backwards';\n}\n\ninterface SharedElementTransitionLayerState { }\n\nexport class SharedElementTransitionLayer extends Component<SharedElementTransitionLayerProps, SharedElementTransitionLayerState> {\n public readonly ref = createRef<HTMLDialogElement>();\n #outgoingScreen: RefObject<ScreenBase> | null = null;\n #incomingScreen: RefObject<ScreenBase> | null = null;\n\n public state: SharedElementTransitionLayerState = {\n transitioning: false,\n };\n\n public set outgoingScreen(outgoingScreen: RefObject<ScreenBase> | null) {\n this.#outgoingScreen = outgoingScreen;\n }\n\n public set incomingScreen(incomingScreen: RefObject<ScreenBase> | null) {\n this.#incomingScreen = incomingScreen;\n }\n\n public get outgoingScreen() {\n return this.#outgoingScreen;\n }\n\n public get incomingScreen() {\n return this.#incomingScreen;\n }\n\n public getKeyframeProperties(element: Element, styleList: StyleKeyList) {\n const computedStyles: Record<string, string> = {};\n const computedStyle = window.getComputedStyle(element);\n for (const key of styleList) {\n let transformedKey;\n if (key === 'offset')\n transformedKey = 'cssOffset';\n else if (key === 'float')\n transformedKey = 'cssFloat';\n else\n transformedKey = toCamelCase(key);\n computedStyles[transformedKey] = computedStyle.getPropertyValue(key);\n }\n return computedStyles;\n }\n\n public copyStyles(\n srcElement: Element | null | undefined,\n cloneElement: StylableElement,\n styleList: StyleKeyList\n ) {\n if (!isStylableElement(srcElement)) return;\n const computedStyles = window.getComputedStyle(srcElement);\n for (const key of styleList) {\n const value = computedStyles.getPropertyValue(key);\n const priority = computedStyles.getPropertyPriority(key);\n cloneElement.style.setProperty(key, value, priority);\n }\n }\n\n getAnimationEffect<T extends { instance: SharedElement, clone: HTMLElement, rect: DOMRect }>(start: T, end: T) {\n const keyframeEffects = new Array<KeyframeEffect>();\n const config: KeyframeEffectOptions = {\n fill: 'both' as const,\n duration: 'auto',\n easing: 'ease',\n };\n const transitionType = end.instance.transitionType;\n const startTransform = `translate(${start.rect.x}px, ${start.rect.y}px)`;\n const endTransform = `translate(${end.rect.x}px, ${end.rect.y}px)`;\n switch (transitionType) {\n case 'fade':\n keyframeEffects.push(\n new KeyframeEffect(\n start.clone,\n [\n { transform: startTransform, opacity: 1 },\n { transform: endTransform, opacity: 0 },\n ],\n config\n )\n );\n keyframeEffects.push(\n new KeyframeEffect(\n end.clone,\n [\n { transform: startTransform },\n { transform: endTransform },\n ],\n config\n )\n\n );\n break;\n case 'fade-through':\n keyframeEffects.push(\n new KeyframeEffect(\n start.clone,\n [\n { transform: startTransform, opacity: 1 },\n { opacity: 0, offset: 0.5 },\n { transform: endTransform, opacity: 0 },\n ],\n config\n )\n\n );\n keyframeEffects.push(\n new KeyframeEffect(\n end.clone,\n [\n { transform: startTransform, opacity: 0 },\n { opacity: 0, offset: 0.5 },\n { transform: endTransform, opacity: 1 },\n ],\n config\n )\n\n );\n break;\n case 'cross-fade':\n end.clone.style.mixBlendMode = 'plus-lighter';\n keyframeEffects.push(\n new KeyframeEffect(\n start.clone,\n [\n { transform: startTransform, opacity: 1 },\n { transform: endTransform, opacity: 0 },\n ],\n config\n )\n\n );\n keyframeEffects.push(\n new KeyframeEffect(\n end.clone,\n [\n { transform: startTransform },\n { transform: endTransform },\n ],\n config\n )\n\n );\n break;\n case 'morph': {\n const styleList = Array.from(new Set([...start.instance.styles, ...end.instance.styles]));\n keyframeEffects.push(\n new KeyframeEffect(\n end.clone,\n [\n {\n ...Object.fromEntries((start.instance.ref.current?.firstElementChild as HTMLElement).attributeStyleMap),\n transform: startTransform,\n width: `${start.rect.width}px`,\n height: `${start.rect.height}px`,\n },\n {\n ...Object.fromEntries((end.instance.ref.current?.firstElementChild as HTMLElement).attributeStyleMap),\n ...this.getKeyframeProperties(end.instance.ref.current?.firstElementChild as HTMLElement, styleList),\n transform: endTransform,\n width: `${end.rect.width}px`,\n height: `${end.rect.height}px`,\n },\n ],\n config\n )\n );\n break;\n }\n }\n return new ParallelEffect(keyframeEffects);\n }\n\n get animationEffect() {\n const currentScene = this.outgoingScreen?.current?.sharedElementScene;\n const nextScene = this.incomingScreen?.current?.sharedElementScene;\n if (!currentScene || !nextScene) return null;\n if (currentScene === nextScene) return null;\n currentScene.previousScene = null;\n nextScene.previousScene = currentScene;\n const parallelEffects = new Array<ParallelEffect>();\n for (const [id, end] of Array.from(nextScene.nodes.entries())) {\n const endRect = end.getBoundingClientRect();\n const start = currentScene.nodes.get(id);\n if (!start?.canTransition || !end.canTransition) continue;\n const startRect = start.getBoundingClientRect();\n const endClone = end.clone();\n const startClone = start.clone();\n if (!startClone || !endClone) continue;\n const styleList = Array.from(new Set([...start.styles, ...end.styles]));\n if (end.transitionType !== 'morph') {\n startClone.id = `${id}-start`;\n startClone.style.position = 'absolute';\n startClone.style.gridArea = '1 / 1';\n startClone.style.margin = '0';\n this.copyStyles(start.ref.current?.firstElementChild, startClone, styleList);\n this.copyStyles(end.ref.current?.firstElementChild, endClone, styleList);\n startClone.style.width = `${startRect.width}px`;\n startClone.style.height = `${startRect.height}px`;\n endClone.style.width = `${endRect.width}px`;\n endClone.style.height = `${endRect.height}px`;\n this.ref.current?.prepend(startClone);\n } else {\n this.copyStyles(start.ref.current?.firstElementChild, endClone, styleList);\n endClone.style.width = `${startRect.width}px`;\n endClone.style.height = `${startRect.height}px`;\n }\n\n endClone.id = `${id}${end.transitionType === 'morph' ? '' : '-end'}`;\n endClone.style.position = 'absolute';\n endClone.style.gridArea = '1 / 1';\n endClone.style.margin = '0';\n this.ref.current?.prepend(endClone);\n start.hide();\n end.hide();\n const onFinish = async () => {\n if (this.props.direction === 'forwards')\n end.unhide();\n else\n start.unhide();\n endClone.remove();\n startClone.remove();\n };\n this.props.navigation.addEventListener('routertransitionend', onFinish, { once: true });\n this.props.navigation.addEventListener('routertransitioncancel', onFinish, { once: true });\n\n parallelEffects.push(this.getAnimationEffect(\n { instance: start, clone: startClone, rect: startRect },\n { instance: end, clone: endClone, rect: endRect }\n ));\n }\n\n return new ParallelEffect(parallelEffects);\n }\n\n render() {\n return (\n <dialog className=\"shared-element-layer\" ref={this.ref} style={{\n maxWidth: 'unset',\n maxHeight: 'unset',\n width: '100vw',\n height: '100vh',\n contain: 'strict',\n padding: 0,\n border: 'none',\n backgroundColor: 'transparent',\n isolation: 'isolate',\n }}>\n <style>\n {`\n .shared-element-layer::backdrop {display: none}\n .shared-element-layer[open] {display:grid}\n `}\n </style>\n </dialog>\n );\n }\n}","import { Component, RefObject, createRef } from 'react';\nimport { SharedElementTransitionLayer } from './SharedElementTransitionLayer';\nimport { ParallelEffect, Animation } from 'web-animations-extension';\nimport { ScreenTransitionLayerContext } from './ScreenTransitionLayerContext';\nimport { ScreenChild } from './common/types';\nimport { NavigationBase } from './NavigationBase';\nimport { ScreenBase } from './ScreenBase';\n\ninterface ScreenTransitionLayerProps {\n id: string;\n children: ScreenChild | ScreenChild[];\n navigation: NavigationBase;\n hasUAVisualTransition: boolean;\n}\n\ninterface ScreenTransitionLayerState {\n gestureNavigating: boolean;\n}\n\nexport class ScreenTransitionLayer extends Component<\n ScreenTransitionLayerProps,\n ScreenTransitionLayerState\n> {\n public readonly sharedElementTransitionLayer =\n createRef<SharedElementTransitionLayer>();\n public readonly animation: Animation = new Animation();\n #direction: PlaybackDirection = 'normal';\n #screens: RefObject<ScreenBase>[] = [];\n\n public state: ScreenTransitionLayerState = {\n gestureNavigating: false,\n };\n\n private onTransitionCancel() {\n this.props.navigation.dispatchEvent(\n new TransitionEvent('routertransitioncancel')\n );\n }\n\n private onTransitionStart() {\n this.props\n .navigation\n .dispatchEvent(new TransitionEvent('routertransitionstart'));\n }\n\n private onTransitionEnd() {\n this.props\n .navigation\n .dispatchEvent(new TransitionEvent('routertransitionend'));\n }\n\n public get screens() {\n return this.#screens;\n }\n\n public set screens(screens: RefObject<ScreenBase>[]) {\n this.#screens = screens;\n }\n\n public set direction(direction: PlaybackDirection) {\n this.#direction = direction;\n this.animation.effect?.updateTiming({ direction });\n }\n\n public get direction() {\n return this.#direction;\n }\n\n public get hasUAVisualTransition() {\n return this.props.hasUAVisualTransition;\n }\n\n public transition() {\n const effect = new ParallelEffect(\n this.screens.map(screen => {\n return screen.current\n ?.transitionProvider\n ?.current\n ?.animationEffect ?? null;\n }).filter((effect): effect is AnimationEffect => effect !== null)\n );\n\n const sharedElementEffect = this.sharedElementTransitionLayer\n .current\n ?.animationEffect;\n const duration = effect.getComputedTiming().duration;\n if (sharedElementEffect) {\n sharedElementEffect.updateTiming({\n duration: duration instanceof CSSNumericValue\n ? duration.to('ms').value\n : duration,\n });\n effect.append(sharedElementEffect);\n this.sharedElementTransitionLayer.current?.ref.current?.showModal();\n }\n\n this.animation.effect = effect;\n\n this.animation.play();\n this.onTransitionStart();\n\n this.animation.oncancel = () => {\n this.sharedElementTransitionLayer.current?.ref.current?.close();\n this.onTransitionCancel();\n this.animation.effect = null;\n };\n this\n .animation\n .finished\n .then(() => {\n this.animation.commitStyles();\n this.onTransitionEnd();\n this.sharedElementTransitionLayer.current?.ref.current?.close();\n this.animation.effect = null;\n })\n .catch(() => {}); // catch AbortError\n\n return this.animation;\n }\n\n public render() {\n return (\n <ScreenTransitionLayerContext.Provider value={this}>\n <SharedElementTransitionLayer\n ref={this.sharedElementTransitionLayer}\n navigation={this.props.navigation}\n direction={this.animation.playbackRate > 0 ? 'forwards' : 'backwards'}\n />\n <div\n className={this.props.id}\n style={{\n width: '100%',\n height: '100%',\n display: 'grid',\n contain: 'layout',\n isolation: 'isolate',\n } as React.CSSProperties}\n >\n {this.props.children}\n </div>\n </ScreenTransitionLayerContext.Provider>\n );\n }\n}","export class PromiseWrapper<T> {\n public promise: Promise<T>;\n public state: 'pending' | 'resolved' | 'rejected';\n #nativeResolve: ((value: T | PromiseLike<T>) => void) | null;\n #nativeReject: ((reason: unknown) => void) | null;\n constructor() {\n this.state = 'pending';\n this.#nativeResolve = this.#nativeReject = null;\n this.promise = new Promise((resolve, reject) => {\n this.#nativeResolve = resolve;\n this.#nativeReject = reject;\n });\n }\n\n public resolve(value: T) {\n this.state = 'resolved';\n this.#nativeResolve?.(value);\n }\n\n public reject(reason: unknown) {\n this.state = 'rejected';\n // Do not report unhandled promise rejections.\n this.promise.catch(() => {});\n this.#nativeReject?.(reason);\n }\n}","import { SINGLE_ELEMENT_LENGTH } from './constants';\nimport { PromiseWrapper } from './promise-wrapper';\nimport { LoadNavigationTransition } from './types';\nimport { PromiseAllSequential } from './utils';\n\nexport class LoadEvent extends Event implements Omit<\n NavigateEvent,\n 'navigationType' | 'commit'\n> {\n #navigationType: 'load' | 'preload';\n #userInitiated: boolean = false;\n #canIntercept: boolean = true;\n #hashChange: boolean = false;\n #formData: FormData | null = null;\n #downloadRequest: string | null = null;\n #destination: NavigationDestination;\n #signal: AbortSignal;\n #abortable = new AbortController();\n #intercepted = false;\n #thenables: Promise<void>[] = [];\n #transition: LoadNavigationTransition | null = null;\n #finished = new PromiseWrapper<void>();\n public readonly hasUAVisualTransition = false;\n\n constructor(\n navigationType: 'load' | 'preload',\n loadEventInitDict?: { destination?: NavigationDestination | null }\n ) {\n super('navigate', { cancelable: false, bubbles: false, composed: false });\n\n this.#navigationType = navigationType;\n const {\n destination = window.navigation.currentEntry,\n } = loadEventInitDict ?? {};\n if (!destination) throw new Error('Destination is null');\n this.#destination = {\n getState() {\n return destination.getState();\n },\n url: destination.url ?? new URL(window.location.href).href,\n key: destination.key,\n index: destination.index,\n id: destination.id,\n sameDocument: true,\n };\n\n this.#signal = this.#abortable.signal;\n window.navigation.addEventListener(\n 'navigate',\n this.#onNavigate,\n { signal: this.#signal }\n );\n }\n\n #onNavigate = (e: Event) => {\n if (e !== this) {\n this.#abortable.abort();\n } else if (!this.#thenables.length) {\n window.navigation.removeEventListener('navigate', this.#onNavigate);\n }\n };\n\n public intercept(options?: NavigationInterceptOptions | undefined): void {\n if (this.#intercepted) throw new DOMException('Failed to execute \\'intercept\\' on \\'NavigateEvent\\': intercept() may only be called while the navigate event is being dispatched.');\n \n const thenable = options?.handler?.();\n if (thenable) this.#thenables.push(thenable);\n if (this.#thenables.length === SINGLE_ELEMENT_LENGTH) {\n PromiseAllSequential(this.#thenables).then(() => {\n this.#intercepted = true;\n window.removeEventListener('navigate', this.#onNavigate);\n this.#finished.resolve();\n });\n }\n }\n\n public scroll(): void {\n throw new Error('Method not implemented.');\n }\n\n public get transition() {\n if (!this.#transition) {\n this.#transition = {\n finished: this.#finished.promise,\n from: window.navigation.currentEntry!,\n navigationType: this.#navigationType,\n };\n }\n return this.#transition;\n }\n\n public get navigationType() {\n return this.#navigationType;\n }\n\n public get userInitiated() {\n return this.#userInitiated;\n }\n\n public get canIntercept() {\n return this.#canIntercept;\n }\n\n public get hashChange() {\n return this.#hashChange;\n }\n\n public get formData() {\n return this.#formData;\n }\n\n public get downloadRequest() {\n return this.#downloadRequest;\n }\n\n public get destination() {\n return this.#destination;\n }\n\n public get signal() {\n return this.#signal;\n }\n}","import { NavigationBase } from './NavigationBase';\nimport { ScreenTransitionLayer } from './ScreenTransitionLayer';\nimport {\n ScreenChild,\n RouterBaseHTMLElement,\n isLazyExoticComponent,\n isValidScreenChild,\n EventHandler\n} from './common/types';\nimport { NestedRouterContext, RouterContext } from './RouterContext';\nimport {\n dispatchEvent,\n matchRoute,\n resolveBaseURLFromPattern\n} from './common/utils';\nimport { Component, createRef, Children } from 'react';\nimport { ScreenBase, ScreenBaseConfig } from './ScreenBase';\nimport { LoadEvent } from './common/events';\n\ntype ScreenType<T> = T extends ScreenChild<infer S> | ScreenChild<infer S>[]\n ? S\n : never;\n\nexport interface RouterBaseConfig {\n screenConfig?: ScreenBaseConfig;\n basePath?: string;\n}\n\nexport interface RouterBaseProps<S extends ScreenBase = ScreenBase> {\n id?: string;\n config?: RouterBaseConfig;\n children: ScreenChild<S> | ScreenChild<S>[];\n}\n\nexport type RouterBaseState = object;\n\nexport abstract class RouterBase<\n P extends RouterBaseProps = RouterBaseProps,\n S extends RouterBaseState = RouterBaseState,\n> extends Component<P, S> implements EventHandler {\n protected readonly ref = createRef<RouterBaseHTMLElement>();\n protected screenTransitionLayer = createRef<ScreenTransitionLayer>();\n public abstract readonly navigation: NavigationBase;\n public readonly parent: RouterBase | null = null;\n #child: WeakRef<RouterBase> | null = null;\n private loadDispatched = false;\n private hasUAVisualTransition = false;\n public readonly parentScreen: ScreenBase | null = null;\n private static rootRouterRef: WeakRef<RouterBase> | null = null;\n public static readonly contextType = NestedRouterContext;\n public declare context: React.ContextType<typeof NestedRouterContext>;\n\n constructor(\n props: P,\n context: React.ContextType<typeof NestedRouterContext>\n ) {\n super(props);\n\n this.parentScreen = context?.parentScreen ?? null;\n this.parent = context?.parentRouter ?? null;\n }\n\n private static get events() {\n return Object.getOwnPropertyNames(this.prototype)\n .filter(type => /^on/.test(type))\n .map(type => type.replace('on', ''));\n }\n\n public componentDidMount() {\n if (this.parent)\n this.parent.child = this;\n else {\n const currentRootRouter = RouterBase.rootRouterRef?.deref();\n if (\n this !== currentRootRouter\n && currentRootRouter?.mounted\n )\n throw new Error('It looks like you have two navigators at the same level. Try simplifying your navigation structure by using a nested router instead.');\n \n else\n RouterBase.rootRouterRef = new WeakRef(this);\n\n window.navigation.addEventListener(\n 'navigate',\n this\n );\n }\n\n this.#addEventListeners();\n\n if (!this.loadDispatched) {\n window.navigation.dispatchEvent(new LoadEvent('load'));\n this.loadDispatched = true;\n }\n }\n\n public componentWillUnmount() {\n this.#removeEventListeners();\n if (this.isRoot) {\n window.navigation.removeEventListener(\n 'navigate',\n this\n );\n }\n }\n\n public onnavigate(e: NavigateEvent) {\n const activeRouters = [...this.#activeRoutersIter()];\n // travel down router tree to find a router that can intercept\n const interceptor = activeRouters.findLast(\n router => router.canIntercept(e)\n );\n if (interceptor) {\n interceptor.intercept(e);\n this.hasUAVisualTransition = e.hasUAVisualTransition;\n }\n };\n\n #addEventListeners() {\n const Router = this.constructor as typeof RouterBase;\n Router.events.forEach(event => {\n this.ref.current?.addEventListener(event, this);\n });\n }\n\n #removeEventListeners() {\n const Router = this.constructor as typeof RouterBase;\n Router.events.forEach(event => {\n this.ref.current?.removeEventListener(event, this);\n });\n }\n\n *#activeRoutersIter(\n target: RouterBase | null = RouterBase.rootRouterRef?.deref() ?? null\n ) {\n let router: RouterBase | null = target;\n while (router) {\n yield router;\n router = router.child;\n }\n }\n\n public getRouterById(\n routerId: string,\n target?: RouterBase\n ): RouterBase | null {\n const activeRouters = [...this.#activeRoutersIter(target)];\n return activeRouters.find((router) => router.id === routerId) ?? null;\n }\n\n public dispatchEvent(event: Event) {\n const ref = this.ref.current ?? undefined;\n return dispatchEvent(event, ref);\n }\n\n public addEventListener<K extends keyof HTMLElementEventMap>(\n type: K,\n listener: (\n this: RouterBaseHTMLElement,\n ev: HTMLElementEventMap[K]\n ) => void,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n public addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n public addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): () => void {\n const ref = this.ref.current;\n if (!ref) return () => {};\n ref.addEventListener(type, listener, options);\n return () => ref.removeEventListener(type, listener, options);\n }\n\n public removeEventListener<K extends keyof HTMLElementEventMap>(\n type: K,\n listener: (\n this: RouterBaseHTMLElement,\n ev: HTMLElementEventMap[K]\n ) => void,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n public removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n public removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ) {\n return this.ref.current?.removeEventListener(type, listener, options);\n }\n\n public handleEvent(e: Event) {\n const key = `on${e.type}` as keyof this;\n\n const self = this as {\n [K in typeof key]?: (e: Event) => void;\n };\n\n self[key]?.(e);\n }\n\n protected screenChildFromPathname(pathname: string) {\n for (const child of Children.toArray(this.props.children)) {\n if (!isValidScreenChild<ScreenType<P['children']>>(child)) continue;\n const matchInfo = matchRoute(\n child.props.path,\n pathname,\n this.baseURLPattern.pathname,\n child.props.caseSensitive\n );\n if (matchInfo)\n return {\n child ,\n matchInfo,\n };\n }\n\n return null;\n }\n\n protected preloadScreen(screen: ScreenChild) {\n const config = screen.props.config;\n const preloadTasks = [];\n if (isLazyExoticComponent(screen.props.component))\n preloadTasks.push(screen.props.component.load());\n if (isLazyExoticComponent(config?.header?.component))\n preloadTasks.push(config?.header?.component.load());\n if (isLazyExoticComponent(config?.footer?.component))\n preloadTasks.push(config?.footer?.component.load());\n\n return Promise.all(preloadTasks).then(() => { return; });\n }\n\n public includesRoute(\n pathname: string,\n baseURLPattern: string = window.location.origin\n ) {\n return this.pathPatterns.some(({ pattern, caseSensitive }) => {\n return matchRoute(pattern, pathname, baseURLPattern, caseSensitive);\n });\n }\n\n public get id(): string {\n if (this.props.id) return this.props.id;\n const prefix = this.parent?.id;\n const id = this.parentScreen?.id ?? 'root';\n return [prefix, id].filter(Boolean).join('-');\n }\n\n public get isRoot() {\n return !this.parent;\n }\n\n public get baseURL() {\n const pathname = this.isRoot\n ? window.location.pathname\n : this.parentScreen!.resolvedPathname;\n const pattern = this.baseURLPattern.pathname;\n\n return resolveBaseURLFromPattern(pattern, pathname)!;\n }\n\n public get baseURLPattern() {\n let baseURL = window.location.origin + '/';\n let basePath = this.props.config?.basePath;\n if (!basePath) {\n if (this.isRoot) {\n basePath = '/';\n } else {\n basePath = '.';\n }\n }\n\n if (this.parent && this.parentScreen) {\n const {\n resolvedPathname = window.location.pathname,\n path,\n } = this.parentScreen;\n const parentBaseURL = this.parent.baseURL?.href;\n const pattern = new URLPattern({\n baseURL: parentBaseURL,\n pathname: path, \n });\n baseURL = resolveBaseURLFromPattern(\n pattern.pathname,\n resolvedPathname\n )!.href;\n }\n\n return new URLPattern({ baseURL, pathname: basePath });\n }\n\n public get pathPatterns() {\n return Children.map(this.props.children, (child) => {\n return {\n pattern: child.props.path,\n caseSensitive: Boolean(child.props.caseSensitive),\n };\n });\n }\n\n public get mounted() {\n return Boolean(this.ref.current);\n }\n\n public get child() {\n return this.#child?.deref() ?? null;\n }\n\n public set child(child: RouterBase | null) {\n const currentChildRouter = this.#child?.deref();\n if (\n currentChildRouter\n && child !== currentChildRouter\n && child?.parentScreen?.id === currentChildRouter.parentScreen?.id\n && currentChildRouter.mounted\n ) {\n throw new Error('It looks like you have two navigators at the same level. Try simplifying your navigation structure by using a nested router instead.');\n }\n if (child)\n this.#child = new WeakRef(child);\n else\n this.#child = null;\n }\n\n protected abstract canIntercept(navigateEvent: NavigateEvent): boolean;\n protected abstract shouldIntercept(navigateEvent: NavigateEvent): boolean;\n protected abstract intercept(navigateEvent: NavigateEvent): void;\n protected abstract get screens(): P['children'];\n\n public render() {\n if (!this.navigation) return;\n return (\n <div\n id={this.id}\n className=\"react-motion-router\"\n style={{ width: '100%', height: '100%' }}\n ref={this.ref}\n >\n <RouterContext.Provider value={this}>\n <ScreenTransitionLayer\n id={`${this.id}-transition-layer`}\n ref={this.screenTransitionLayer}\n navigation={this.navigation}\n hasUAVisualTransition={this.hasUAVisualTransition}\n >\n {this.screens}\n </ScreenTransitionLayer>\n </RouterContext.Provider>\n </div>\n );\n }\n}","import { MetaKey, MetaType } from './common/types';\n\nexport class MetaData {\n readonly #map = new Map<MetaKey, string | undefined>();\n private readonly mutationObserver: MutationObserver;\n\n constructor() {\n this.mutationObserver = new MutationObserver(\n this.observeMutations.bind(this)\n );\n const { head } = document;\n this.mutationObserver.observe(head, {\n childList: true,\n });\n\n Array.from(head.querySelectorAll('meta')).forEach(node => {\n this.mutationObserver.observe(node, {\n attributes: true,\n });\n });\n\n Array.from(\n head.querySelectorAll('meta')).forEach(this.metaDataFromNode.bind(this)\n );\n }\n\n public get(key: string | MetaType) {\n const metaKey = this.formatMetaKey(key);\n\n const metaContent = this.#map.get(metaKey);\n if (!metaContent) return undefined;\n\n let content: string | [string, string][];\n if (metaContent.includes(',') && metaContent.includes('=')) {\n content = metaContent\n .split(/,\\s*/)\n .map(keyVal => keyVal.split('=') as [string, string]);\n } else {\n content = metaContent;\n }\n\n return content;\n }\n\n public set(key: string | MetaType, content?: string | [string, string][]) {\n const metaKey = this.formatMetaKey(key);\n const metaContent = this.formatMetaContent(content);\n\n this.#map.set(metaKey, metaContent);\n if (typeof key === 'string')\n key = ['name', key];\n this.updateMetaElement(key, metaContent);\n }\n\n public has(key: string | MetaType) {\n const metaKey = this.formatMetaKey(key);\n\n return this.#map.has(metaKey);\n }\n\n public delete(key: string | MetaType) {\n const metaKey = this.formatMetaKey(key);\n\n this.#map.delete(metaKey);\n document.head.querySelector(`meta[${metaKey}]`)?.remove();\n }\n\n public clear() {\n document.head.querySelectorAll('meta').forEach(node => node.remove());\n }\n\n public entries() {\n return this.#map.entries();\n }\n\n public [Symbol.iterator]() {\n return this.entries();\n }\n\n public get size() {\n return this.#map.size;\n }\n \n private observeMutations(mutations: MutationRecord[]) {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n const node = mutation.target;\n\n this.metaDataFromNode(node as HTMLMetaElement);\n }\n\n if (mutation.type !== 'childList') return;\n\n mutation.removedNodes.forEach((node) => {\n if (node.nodeName === 'META') {\n const type = Array\n .from((node as HTMLMetaElement).attributes)\n .find(attribute => attribute.nodeName !== 'content');\n if (!type) return;\n if (!type.value) return;\n const metaType: MetaType = [type.nodeName, type.value];\n\n const key = this.formatMetaKey(metaType);\n if (this.#map.has(key)) {\n this.#map.delete(key);\n }\n }\n });\n mutation.addedNodes.forEach(node => {\n if (node.nodeName === 'META') {\n this.metaDataFromNode(node as HTMLMetaElement);\n }\n });\n }\n }\n\n private metaDataFromNode(node: HTMLMetaElement) {\n const type = Array\n .from(node.attributes)\n .find(attribute => attribute.nodeName !== 'content');\n const content = Array\n .from(node.attributes)\n .find(attribute => attribute.nodeName === 'content');\n if (!type) return;\n if (!type.value) return;\n const metaType: MetaType = [type.nodeName, type.value];\n\n const key = this.formatMetaKey(metaType);\n this.#map.set(key, content?.value);\n }\n\n private formatMetaKey(key: string | MetaType) {\n let metaKey: MetaKey;\n if (typeof key === 'string') {\n metaKey = `name=\"${key}\"` as MetaKey;\n } else {\n const [attribute, value] = key;\n metaKey = `${attribute}=\"${value}\"`;\n }\n\n return metaKey;\n }\n\n private formatMetaContent(content: string | [string, string][] | undefined) {\n if (!content) return undefined;\n\n let metaContent: string;\n if (typeof content === 'string') {\n metaContent = content;\n } else {\n metaContent = content\n .map(contentTuple => contentTuple.join('='))\n .join(', ');\n }\n\n return metaContent;\n }\n\n private updateMetaElement(key: MetaType, content?: string) {\n const meta =\n document.querySelector(`meta[${this.formatMetaKey(key)}]`)\n || document.createElement('meta');\n\n const [qualifiedName, value] = key;\n meta.setAttribute(qualifiedName, value);\n if (content) meta.setAttribute('content', content);\n else meta.removeAttribute('content');\n\n if (!meta.parentElement) {\n document.head.appendChild(meta);\n }\n }\n}","import { LAST_INDEX } from './common/constants';\nimport { LoadEvent } from './common/events';\nimport { RouterBaseHTMLElement } from './common/types';\nimport { historyEntryFromDestination } from './common/utils';\nimport { MetaData } from './MetaData';\n\nexport interface NavigationBaseConfig {\n addEventListener<K extends keyof HTMLElementEventMap>(\n type: K,\n listener: (\n this: RouterBaseHTMLElement,\n ev: HTMLElementEventMap[K]\n ) => void,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): () => void;\n removeEventListener<K extends keyof HTMLElementEventMap>(\n type: K,\n listener: (\n this: RouterBaseHTMLElement,\n ev: HTMLElementEventMap[K]\n ) => void,\n options?: boolean | EventListenerOptions | undefined\n ): void\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n dispatchEvent(event: Event): Promise<boolean>;\n parent: NavigationBase | null;\n routerId: string;\n baseURL: URL;\n baseURLPattern: URLPattern;\n getNavigatorById(routerId: string): NavigationBase | null;\n}\n\nexport abstract class NavigationBase {\n private static rootNavigatorRef: WeakRef<NavigationBase> | null = null;\n public readonly metaData = new MetaData();\n public readonly addEventListener;\n public readonly removeEventListener;\n public readonly dispatchEvent;\n public readonly parent;\n public readonly routerId;\n public readonly baseURL;\n public readonly baseURLPattern;\n public readonly getNavigatorById;\n\n constructor(config: NavigationBaseConfig) {\n const rootNavigator = NavigationBase.rootNavigatorRef?.deref();\n if (!rootNavigator || !rootNavigator.isInDocument)\n NavigationBase.rootNavigatorRef = new WeakRef(this);\n this.addEventListener = config.addEventListener;\n this.removeEventListener = config.removeEventListener;\n this.dispatchEvent = config.dispatchEvent;\n this.parent = config.parent;\n this.routerId = config.routerId;\n this.baseURL = config.baseURL;\n this.baseURLPattern = config.baseURLPattern;\n this.getNavigatorById = config.getNavigatorById;\n }\n\n protected preload(\n route: string,\n state?: unknown\n ): NavigationResult {\n const url = new URL(route, this.baseURL).href;\n const destination: NavigationDestination = {\n getState() {\n return state;\n },\n index: LAST_INDEX,\n sameDocument: true,\n url,\n id: null,\n key: null,\n };\n const loadEvent = new LoadEvent('preload', { destination });\n window.navigation.dispatchEvent(loadEvent);\n\n const entry = historyEntryFromDestination(destination);\n return {\n finished: loadEvent.transition.finished.then(() => entry),\n committed: Promise.resolve(entry),\n };\n }\n\n private get isInDocument() {\n return Boolean(document.getElementById(`${this.routerId}`));\n }\n}","import { useCallback, useContext, useDebugValue, useEffect, useRef, useSyncExternalStore } from 'react';\nimport { NavigationBase } from '../NavigationBase';\nimport { RouterContext } from '../RouterContext';\nimport { RoutePropContext } from '../RoutePropContext';\nimport { RouterBase } from '../RouterBase';\nimport { RoutePropBase } from './types';\nimport { ScreenTransitionLayerContext } from '../ScreenTransitionLayerContext';\n\nexport function useNavigationBase<T extends NavigationBase = NavigationBase>() {\n const router = useContext(RouterContext);\n if (router) {\n return router.navigation as T;\n } else {\n throw new Error('Router is null. You may be trying to call useNavigation outside a Router.');\n }\n}\n\nexport function useRouterBase<T extends RouterBase = RouterBase>() {\n return useContext(RouterContext) as T;\n}\n\nexport function useMotion() {\n useDebugValue('Motion');\n const router = useContext(RouterContext);\n const screenTransitionLayer = useContext(ScreenTransitionLayerContext);\n const animation = screenTransitionLayer\n .animation;\n \n const defaultProgress = 1;\n // use sync external store to get animation progress\n // on animation frame\n return useSyncExternalStore(\n (callback) => {\n const onTransitionStart = async () => {\n do {\n await new Promise<number>(resolve => {\n requestAnimationFrame(resolve);\n });\n callback();\n } while (animation.playState === 'running');\n };\n router.addEventListener('routertransitionstart', onTransitionStart);\n\n return () => {\n router.removeEventListener('routertransitionstart', onTransitionStart);\n };\n },\n () => {\n const { progress } = animation\n ?.effect\n ?.getComputedTiming() ?? {};\n return progress ?? defaultProgress;\n }\n );\n}\n\n\nexport function useRouteBase<R extends RoutePropBase>() {\n const routeProp = useContext(RoutePropContext);\n if (routeProp) {\n return routeProp as R;\n } else {\n throw new Error('Router is null. You may be trying to call useRoute outside a Router.');\n }\n}\n\nexport function useParamsBase<K extends string, S>(key: K, initialParams: S | (() => S)): [S, React.Dispatch<React.SetStateAction<S>>] {\n const route = useRouteBase();\n const initial = initialParams instanceof Function ? initialParams() : initialParams;\n\n const routeRef = useRef(route);\n useEffect(() => {\n routeRef.current = route;\n }, [route]);\n\n const setParam = useCallback((param: S | ((prevState: S) => S)) => {\n const { params, setParams } = routeRef.current;\n if (param instanceof Function)\n param = param(params[key] ?? initial);\n setParams({ [key]: param });\n }, [initial, key]);\n\n const param = route.params[key];\n\n return [param ?? initial, setParam] as const;\n}","import { useEffect, useRef, useSyncExternalStore } from 'react';\n\nconst RERENDER_EVENT_TYPE = '--rerender';\nexport function useRerender() {\n return useSyncExternalStore(\n (callback) => {\n globalThis.addEventListener(\n RERENDER_EVENT_TYPE,\n callback,\n { once: true }\n );\n return () => {\n globalThis.removeEventListener(RERENDER_EVENT_TYPE, callback);\n };\n },\n () => document.timeline.currentTime\n );\n}\n\nexport function useRerenderCallback<T extends () => unknown>(\n callback: T\n) {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n useEffect(() => {\n const handler = callbackRef.current;\n globalThis.addEventListener(RERENDER_EVENT_TYPE, handler);\n\n return () => {\n globalThis.removeEventListener(RERENDER_EVENT_TYPE, handler);\n };\n });\n}\n\nexport function triggerRerender() {\n globalThis.dispatchEvent(new Event(RERENDER_EVENT_TYPE));\n}\n\nexport function createHistoryEntry(\n url: string,\n index: number\n): NavigationHistoryEntry {\n return Object.create(EventTarget.prototype, {\n id: {\n value: crypto.randomUUID(),\n writable: false,\n enumerable: true,\n configurable: false,\n },\n key: {\n value: crypto.randomUUID(),\n writable: false,\n enumerable: true,\n configurable: false,\n },\n index: {\n value: index,\n writable: false,\n enumerable: true,\n configurable: false,\n },\n url: {\n value: url,\n writable: false,\n enumerable: true,\n configurable: false,\n },\n sameDocument: {\n value: true,\n writable: false,\n enumerable: true,\n configurable: false,\n },\n ondispose: {\n value: null,\n writable: true,\n enumerable: true,\n configurable: true,\n },\n getState: {\n value() {\n return undefined;\n },\n writable: false,\n enumerable: true,\n configurable: false,\n },\n });\n}\n\nexport function assertNavigationAvailable() {\n if (!window.navigation) {\n throw new Error('window.navigation is not available in this environment');\n }\n}\n\nexport async function waitForNavigateSuccess() {\n await new Promise(resolve => {\n window.navigation.addEventListener(\n 'navigatesuccess',\n resolve,\n { once: true }\n );\n });\n}\n\nexport async function navTo(url: string) {\n const res = window.navigation.navigate(url);\n await res.finished;\n}\n\nexport async function traverseTo(key: string) {\n const res = window.navigation.traverseTo(key);\n await res.finished;\n}\n\nexport async function traverseToStart() {\n const firstEntry = window.navigation.entries()[0];\n const res = window.navigation.traverseTo(firstEntry.key);\n await res.finished;\n}\n\nexport async function seedHistory() {\n await navTo('/one');\n await navTo('/two');\n await navTo('/three');\n}\n\nconst interceptor = (event: NavigateEvent) => {\n event.intercept({\n handler() {\n return Promise.resolve();\n },\n });\n};\nexport async function installInterceptor() {\n window.navigation.addEventListener('navigate', interceptor);\n}\n\nexport async function uninstallInterceptor() {\n window.navigation.removeEventListener('navigate', interceptor);\n}","import React, { RefObject, useRef } from 'react';\nimport {\n FIRST_INDEX,\n SINGLE_ELEMENT_LENGTH\n} from './common/constants';\nimport { omit } from './common/utils';\n\ntype AnchorState = {\n href?: string | null;\n};\n\ninterface AnchorBaseProps extends Omit<\n AnchorProps,\n 'ref'\n> {\n ref?: RefObject<AnchorBase | null>;\n}\n\nexport class AnchorBase extends React.Component<\n AnchorBaseProps,\n AnchorState\n> {\n constructor(props: AnchorBaseProps) {\n super(props);\n\n this.state = {\n href: this.href,\n };\n }\n\n public readonly anchorRef = React.createRef<HTMLAnchorElement>();\n\n private static directionFromRel(rel: string | undefined) {\n return rel\n ?.split(' ')\n .findLast(dir => dir === 'next' || dir === 'prev')\n ?? 'prev';\n }\n\n private static findClosestEntryByHref(\n href: string,\n rel: string | undefined,\n entries: NavigationHistoryEntry[],\n index: number\n ) {\n if (\n !Array.isArray(entries)\n || index < FIRST_INDEX\n || index >= entries.length\n || entries.length === SINGLE_ELEMENT_LENGTH\n ) {\n return undefined;\n }\n\n let left = index - SINGLE_ELEMENT_LENGTH;\n let right = index + SINGLE_ELEMENT_LENGTH;\n const direction = AnchorBase.directionFromRel(rel);\n // if direction is next, prevent searching left\n if (direction === 'next') left = FIRST_INDEX;\n // if direction is prev, prevent searching right\n if (direction === 'prev') right = entries.length;\n\n while (left >= FIRST_INDEX || right < entries.length) {\n if (\n left >= FIRST_INDEX\n && entries[left]?.url === href\n ) return entries[left];\n if (\n right < entries.length\n && entries[right]?.url === href\n ) return entries[right];\n left--;\n right++;\n }\n\n return undefined;\n }\n\n private static findClosestEntry(\n rel: string | undefined,\n entries: NavigationHistoryEntry[],\n index: number\n ) {\n const direction = AnchorBase.directionFromRel(rel);\n \n switch (direction) {\n case 'prev':\n return entries[index - SINGLE_ELEMENT_LENGTH];\n case 'next':\n return entries[index + SINGLE_ELEMENT_LENGTH];\n }\n }\n\n public componentDidMount() {\n window.navigation?.addEventListener('navigatesuccess', this.onNavigate);\n }\n\n public componentWillUnmount() {\n window.navigation?.removeEventListener('navigatesuccess', this.onNavigate);\n }\n\n private readonly onNavigate = () => {\n const { href } = this;\n this.setState({ href });\n };\n\n private get href() {\n const { href, traverse, reload, historyEntryKey, rel } = this.props;\n if (href === undefined && traverse) {\n let entry: NavigationHistoryEntry | undefined;\n\n if (historyEntryKey) {\n entry = window.navigation\n ?.entries()\n .find(e => e.key === historyEntryKey);\n } else if (rel) {\n if (href)\n entry = AnchorBase.findClosestEntryByHref(\n href,\n rel,\n window.navigation.entries(),\n window.navigation.currentEntry?.index ?? FIRST_INDEX\n );\n else\n entry = AnchorBase.findClosestEntry(\n rel,\n window.navigation.entries(),\n window.navigation.currentEntry?.index ?? FIRST_INDEX\n );\n }\n\n return entry?.url;\n } else if (reload) {\n return '.';\n }\n return href;\n }\n\n private get search() {\n if (this.props.search)\n // Adding leading '?' if it doesn't already exist\n if (this.props.search.startsWith('?'))\n return this.props.search;\n else\n return `?${this.props.search}`;\n return '';\n }\n\n private readonly handleClick = (\n event: React.PointerEvent<HTMLAnchorElement>\n ) => {\n this.props.onClick?.(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n const navigation = window.navigation;\n\n const {\n rel,\n historyEntryKey,\n reload,\n replace,\n traverse,\n navigateInfo: info,\n navigateState: state,\n } = this.props;\n\n const href = this.anchorRef.current?.href;\n\n // history entry key takes trumps all\n if (historyEntryKey) {\n navigation.traverseTo(historyEntryKey, { info });\n return;\n }\n\n if (traverse) {\n const entries = navigation.entries();\n let entry;\n // if traverse has href hint, use that to find closest entry\n if (href)\n entry = AnchorBase.findClosestEntryByHref(\n href,\n rel,\n entries,\n navigation.currentEntry?.index ?? FIRST_INDEX\n );\n else // if not, use sibling entry\n entry = AnchorBase.findClosestEntry(\n rel,\n entries,\n navigation.currentEntry?.index ?? FIRST_INDEX\n );\n\n // if we have an entry, then navigate\n if (entry) {\n navigation.traverseTo(entry.key, { info });\n // if not, fall through to replace/reload/push\n return;\n }\n }\n\n // only replace if we have a valid href\n if (replace && href) {\n navigation.navigate(href, { info, state, history: 'replace' });\n // if replace but no href, fall through to reload/push\n return;\n }\n \n if (reload) {\n navigation.reload({ info, state });\n return;\n }\n \n // default: push navigation if we have a valid href\n if (href) {\n navigation.navigate(href, { info, state });\n }\n };\n\n public render() {\n const {\n rel,\n children,\n } = this.props;\n const { href } = this.state;\n const { search } = this;\n const props = omit(this.props, [\n 'historyEntryKey',\n 'navigateInfo',\n 'navigateState',\n 'reload',\n 'replace',\n 'traverse',\n ]);\n\n return (\n <a\n {...props}\n ref={this.anchorRef}\n href={href ? `${href}${search}` : undefined}\n rel={rel}\n onClick={this.handleClick}\n >\n {children}\n </a>\n );\n }\n}\n\nexport interface AnchorProps extends React.DetailedHTMLProps<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n HTMLAnchorElement\n> {\n href?: string;\n rel?: 'next' | 'prev' | (string & {});\n historyEntryKey?: string;\n navigateInfo?: unknown;\n navigateState?: unknown;\n reload?: boolean;\n replace?: boolean;\n traverse?: boolean;\n children?: React.ReactNode;\n search?: string;\n}\n\nexport function Anchor({ ref: forwardedRef, ...props }: AnchorProps) {\n const ref = useRef<AnchorBase>(null);\n\n React.useImperativeHandle<\n HTMLAnchorElement | null, HTMLAnchorElement | null\n >(\n forwardedRef,\n () => ref.current?.anchorRef.current ?? null\n );\n\n return (\n <AnchorBase ref={ref} {...props} />\n );\n}"],"names":["SharedElementSceneContext","createContext","SharedElement","Component","createRef","prevProps","deepClone","jsx","ScreenTransitionLayerContext","MAX_Z_INDEX","MAX_PROGRESS","MIN_PROGRESS","MIN_NORM_PROGRESS","MAX_NORM_PROGRESS","LAST_INDEX","FIRST_INDEX","SINGLE_ELEMENT_LENGTH","EMPTY_COLLECTION_LENGTH","ScreenTransitionProvider","animationEffectFactory","animation","direction","hasUAVisualTransition","timeline","playbackRate","index","exiting","ref","screens","screen","zIndex","resolve","Element","inert","NestedRouterContext","RouterContext","RoutePropContext","SharedElementScene","id","node","_id","xRatio","yRatio","ScreenBase","#transitionProvider","props","context","newParams","params","newConfig","config","isLazyExoticComponent","signal","HeaderComponent","FooterComponent","result","navigation","route","preloading","routeProp","jsxs","Suspense","ComponentWithRouteProps","component","isNativeLazyExoticComponent","isValidElement","cloneElement","Fragment","isValidScreenChild","value","isStylableElement","element","Lt","jt","o","r","t","V","wt","e","d","l","i","m","ot","St","qt","ft","At","Q","u","Ft","n","s","a","y","b","st","bt","It","Bt","c","R","Xt","Dt","M","g","Pt","Wt","Kt","$t","xt","zt","x","K","v","G","tt","mt","U","$","at","lt","Y","z","dt","Ut","Ht","w","C","E","A","I","Mt","f","D","et","T","k","N","h","p","S","B","j","it","O","ut","kt","H","rt","X","Z","pt","Ot","Tt","_t","yt","Gt","F","W","nt","ct","Rt","_","q","P","L","ht","gt","Et","Ct","Nt","J","vt","Vt","Zt","resolveBaseURLFromPattern","pattern","pathname","origin","baseURLMatch","nestedPathnameGroup","key","group","matchRoute","pathnamePattern","baseURLPattern","caseSensitive","baseURL","match","dispatchEvent","event","target","lazy","factory","ReactLazy","isNavigationSupported","isURLPatternSupported","polyfillURLPattern","URLPattern","polyfillNavigation","applyPolyfill","PromiseAllSequential","values","awaited","toCamelCase","cloneAndInject","injectProps","omit","obj","keys","copy","historyEntryFromDestination","destination","SharedElementTransitionLayer","#outgoingScreen","#incomingScreen","outgoingScreen","incomingScreen","styleList","computedStyles","computedStyle","transformedKey","srcElement","priority","start","end","keyframeEffects","transitionType","startTransform","endTransform","ParallelEffect","currentScene","nextScene","parallelEffects","endRect","startRect","endClone","startClone","onFinish","ScreenTransitionLayer","Animation","#direction","#screens","effect","sharedElementEffect","duration","PromiseWrapper","#nativeResolve","#nativeReject","reject","reason","LoadEvent","#navigationType","#userInitiated","#canIntercept","#hashChange","#formData","#downloadRequest","#destination","#signal","#abortable","#intercepted","#thenables","#transition","#finished","navigationType","loadEventInitDict","#onNavigate","options","thenable","RouterBase","#child","type","currentRootRouter","#addEventListeners","#removeEventListeners","interceptor","#activeRoutersIter","router","routerId","listener","child","Children","matchInfo","preloadTasks","prefix","basePath","resolvedPathname","path","parentBaseURL","currentChildRouter","MetaData","#map","head","metaKey","metaContent","content","keyVal","mutations","mutation","attribute","metaType","contentTuple","meta","qualifiedName","NavigationBase","rootNavigator","state","url","loadEvent","entry","useNavigationBase","useContext","useRouterBase","useMotion","useDebugValue","defaultProgress","useSyncExternalStore","callback","onTransitionStart","progress","useRouteBase","useParamsBase","initialParams","initial","routeRef","useRef","useEffect","setParam","useCallback","param","setParams","RERENDER_EVENT_TYPE","useRerender","useRerenderCallback","callbackRef","handler","triggerRerender","createHistoryEntry","assertNavigationAvailable","waitForNavigateSuccess","navTo","traverseTo","traverseToStart","firstEntry","seedHistory","installInterceptor","uninstallInterceptor","AnchorBase","React","rel","dir","href","entries","left","right","traverse","reload","historyEntryKey","replace","info","children","search","Anchor","forwardedRef"],"mappings":"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"}