Sign In

@tanstack/react-start-client

Package Overview
Dependencies
Maintainers
5
Versions
494
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tanstack/react-start-client - npm Package Compare versions

Comparing version
1.168.3
to
1.168.4
+1
-1
dist/esm/GenericHydrate.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"GenericHydrate.js","names":[],"sources":["../../src/GenericHydrate.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { reactUse, useHydrated, useLayoutEffect } from '@tanstack/react-router'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport {\n hydrateIdAttribute,\n hydrateWhenAttribute,\n} from '@tanstack/start-client-core/hydration/constants'\nimport {\n createResolvedGate,\n getFallbackHtml,\n getOrCreateGate,\n onGateResolve,\n releaseGate,\n runHydrationStrategyCleanup,\n saveFallbackHtml,\n waitForHydrationPrefetchStrategy,\n} from '@tanstack/start-client-core/hydration/runtime'\nimport { listenForDelegatedHydrationIntent } from '@tanstack/start-client-core/hydration'\nimport type {\n HydrationRuntimeContext,\n HydrationStrategy,\n HydrationWhen,\n} from '@tanstack/start-client-core/hydration'\nimport type { HydrationGateRecord } from '@tanstack/start-client-core/hydration/runtime'\nimport type { HydrateProps, InternalHydrateProps } from './Hydrate'\n\ntype Gate = HydrationGateRecord & { promise: Promise<void> }\ntype PrefetchController = {\n abortController: AbortController\n hydrationRequested: boolean\n hydrationListeners: Set<() => void>\n hydrationResolvePending: boolean\n started: boolean\n promise?: Promise<void>\n cleanup?: () => void\n}\n\nconst dynamicType = 'dynamic'\nconst dynamicHydrateStrategy = {\n _t: dynamicType,\n _d: () => true,\n} satisfies HydrationStrategy<typeof dynamicType, false>\n\nfunction shouldDeferHydration(strategy: HydrationStrategy) {\n return strategy._d ? strategy._d() : strategy._t !== 'load'\n}\n\nfunction useLatest<T>(value: T) {\n const ref = React.useRef(value)\n ref.current = value\n return ref\n}\n\nfunction useHydrationGate(props: InternalHydrateProps) {\n const hydrated = useHydrated()\n const reactId = React.useId()\n const id = props.h ? `${props.h}${reactId}` : reactId\n const when = props.when\n const isDynamicHydrate = typeof when === 'function'\n const dynamicHydrateStrategyRef = React.useRef<HydrationStrategy | undefined>(\n undefined,\n )\n if (isDynamicHydrate) {\n dynamicHydrateStrategyRef.current ??=\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined')\n ? dynamicHydrateStrategy\n : when()\n }\n const hydrateStrategy = isDynamicHydrate\n ? dynamicHydrateStrategyRef.current!\n : when\n const markerHydrateType: HydrationWhen = isDynamicHydrate\n ? dynamicType\n : hydrateStrategy._t!\n const [prefetchError, setPrefetchError] = React.useState<unknown>()\n const latestRef = useLatest({\n prefetch: props.prefetch,\n preload: props.p,\n })\n const gateRef = React.useRef<HydrationGateRecord | undefined>(undefined)\n const markerElementRef = React.useRef<HTMLDivElement | null>(null)\n const shouldPreserveServerHTMLRef = React.useRef<boolean | undefined>(\n undefined,\n )\n const shouldDeferInitialHydrationRef = React.useRef<boolean | undefined>(\n undefined,\n )\n const didPrefetchRef = React.useRef(false)\n const prefetchControllerRef = React.useRef<PrefetchController | undefined>(\n undefined,\n )\n\n prefetchControllerRef.current ??= {\n abortController: new AbortController(),\n hydrationRequested: false,\n hydrationListeners: new Set<() => void>(),\n hydrationResolvePending: false,\n started: false,\n }\n\n shouldPreserveServerHTMLRef.current ??=\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined') || !hydrated\n shouldDeferInitialHydrationRef.current ??=\n !hydrated && shouldDeferHydration(hydrateStrategy)\n\n if (!gateRef.current) {\n gateRef.current =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined')\n ? createResolvedGate(id, hydrateStrategy._t!)\n : getOrCreateGate(id, hydrateStrategy._t!)\n }\n\n gateRef.current.when = hydrateStrategy._t!\n\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n !(isServer ?? typeof window === 'undefined') &&\n hydrateStrategy._t !== 'never' &&\n (!shouldDeferInitialHydrationRef.current ||\n !shouldDeferHydration(hydrateStrategy))\n ) {\n gateRef.current.resolve()\n }\n\n const markerRef = React.useCallback(\n (element: HTMLDivElement | null) => {\n markerElementRef.current = element\n if (element) {\n if (\n hydrateStrategy._t === 'never' &&\n !shouldPreserveServerHTMLRef.current\n ) {\n element.replaceChildren()\n }\n saveFallbackHtml(id, element)\n }\n },\n [hydrateStrategy._t, id],\n )\n\n React.useEffect(() => {\n const gate = gateRef.current!\n return () => {\n const controller = prefetchControllerRef.current\n controller?.abortController.abort()\n controller?.cleanup?.()\n controller?.hydrationListeners.clear()\n releaseGate(gate)\n }\n }, [])\n\n React.useEffect(() => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined') ||\n !latestRef.current.prefetch\n ) {\n return\n }\n\n const controller = prefetchControllerRef.current!\n if (controller.started) return\n controller.started = true\n\n const onHydrate = (listener: () => void) => {\n if (controller.hydrationRequested) {\n listener()\n return () => {}\n }\n\n controller.hydrationListeners.add(listener)\n return () => {\n controller.hydrationListeners.delete(listener)\n }\n }\n\n const preload = () => latestRef.current.preload?.() ?? Promise.resolve()\n const prefetchInput = latestRef.current.prefetch\n\n if (typeof prefetchInput === 'function') {\n const promise = Promise.resolve()\n .then(() =>\n prefetchInput({\n element: markerElementRef.current,\n signal: controller.abortController.signal,\n preload,\n waitFor: (strategy) =>\n waitForHydrationPrefetchStrategy(strategy, {\n element: markerElementRef.current,\n signal: controller.abortController.signal,\n onHydrate,\n }),\n }),\n )\n .then(() => undefined)\n\n controller.promise = promise\n promise.catch((error) => {\n if (!controller.abortController.signal.aborted) {\n setPrefetchError(error)\n }\n })\n return\n }\n\n if (!latestRef.current.preload) return\n\n const prefetch = () => {\n if (didPrefetchRef.current) return\n didPrefetchRef.current = true\n void preload()\n }\n\n controller.cleanup = runHydrationStrategyCleanup(\n prefetchInput._s?.({\n element: markerElementRef.current,\n prefetch,\n }),\n )\n }, [hydrateStrategy, latestRef])\n\n useLayoutEffect(() => {\n const gate = gateRef.current!\n if (\n !shouldDeferInitialHydrationRef.current ||\n hydrateStrategy._t === 'never'\n ) {\n return\n }\n\n if (gate.resolved) {\n return\n }\n\n const cleanups: Array<() => void> = []\n let removeResolveListener = () => {}\n let disposed = false\n const resolveGate = gate.resolve\n\n const cleanup = () => {\n if (disposed) return\n disposed = true\n if (gate.resolve === requestHydration) {\n gate.resolve = resolveGate\n }\n removeResolveListener()\n cleanups.forEach((fn) => fn())\n }\n\n const addCleanup = (fn: void | (() => void)) => {\n if (!fn) return\n if (disposed || gate.resolved) {\n fn()\n return\n }\n cleanups.push(fn)\n }\n\n const requestHydration = () => {\n const controller = prefetchControllerRef.current!\n if (!controller.hydrationRequested) {\n controller.hydrationRequested = true\n controller.hydrationListeners.forEach((listener) => listener())\n controller.hydrationListeners.clear()\n }\n\n if (!controller.promise) {\n resolveGate()\n return\n }\n if (controller.hydrationResolvePending) return\n controller.hydrationResolvePending = true\n\n controller.promise.then(\n () => resolveGate(),\n (error) => {\n if (!controller.abortController.signal.aborted) {\n setPrefetchError(error)\n }\n },\n )\n }\n\n gate.resolve = requestHydration\n removeResolveListener = onGateResolve(gate, cleanup)\n\n const context: HydrationRuntimeContext = {\n element: markerElementRef.current,\n gate,\n }\n addCleanup(runHydrationStrategyCleanup(hydrateStrategy._s?.(context)))\n\n if (hydrateStrategy._t !== 'interaction') {\n addCleanup(\n runHydrationStrategyCleanup(\n markerElementRef.current\n ? listenForDelegatedHydrationIntent(\n markerElementRef.current,\n context,\n )\n : undefined,\n ),\n )\n }\n\n return cleanup\n }, [hydrateStrategy, latestRef])\n\n return {\n gate: gateRef.current,\n markerRef,\n markerElementRef,\n hydrateStrategy,\n markerHydrateType,\n prefetchError,\n shouldPreserveServerHTML: shouldPreserveServerHTMLRef.current,\n }\n}\n\nfunction HydrationGate(props: { gate: Gate; children: React.ReactNode }) {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n isServer ??\n typeof window === 'undefined'\n ) {\n return props.children as React.JSX.Element\n }\n\n if (props.gate.resolved) {\n return props.children as React.JSX.Element\n }\n\n if (!reactUse) {\n throw props.gate.promise\n }\n\n reactUse(props.gate.promise)\n\n return props.children as React.JSX.Element\n}\n\nfunction HydratedBoundary(props: {\n id: string\n onHydrated?: () => void\n onStrategyHydrated?: (id: string) => void\n children: React.ReactNode\n}) {\n const { id, onHydrated, onStrategyHydrated } = props\n const didHydrateRef = React.useRef(false)\n\n React.useEffect(() => {\n if (didHydrateRef.current) return\n didHydrateRef.current = true\n onHydrated?.()\n onStrategyHydrated?.(id)\n }, [id, onHydrated, onStrategyHydrated])\n\n return props.children as React.JSX.Element\n}\n\nexport function GenericHydrate(props: HydrateProps): React.JSX.Element {\n const internalProps = props as InternalHydrateProps\n const {\n gate,\n hydrateStrategy,\n markerHydrateType,\n markerElementRef,\n markerRef,\n prefetchError,\n shouldPreserveServerHTML,\n } = useHydrationGate(internalProps)\n if (prefetchError) throw prefetchError\n\n const fallback = shouldPreserveServerHTML\n ? (() => {\n const html = getFallbackHtml(gate.id)\n return html ? (\n <div\n style={{ display: 'contents' }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n ) : null\n })()\n : (props.fallback ?? null)\n const markerAttributes =\n markerHydrateType === dynamicType ? undefined : hydrateStrategy._a?.()\n\n const hydrateType = hydrateStrategy._t!\n\n if (hydrateType === 'never' && !shouldPreserveServerHTML) {\n return (\n <div\n ref={markerRef}\n {...{\n [hydrateIdAttribute]: gate.id,\n [hydrateWhenAttribute]: markerHydrateType,\n ...markerAttributes,\n }}\n >\n {props.fallback ?? null}\n </div>\n )\n }\n\n return (\n <div\n ref={markerRef}\n {...{\n [hydrateIdAttribute]: gate.id,\n [hydrateWhenAttribute]: markerHydrateType,\n ...markerAttributes,\n }}\n >\n <React.Suspense fallback={fallback}>\n <HydrationGate gate={gate}>\n <HydratedBoundary\n id={gate.id}\n onHydrated={props.onHydrated}\n onStrategyHydrated={(id) => {\n markerElementRef.current?.removeAttribute(hydrateWhenAttribute)\n hydrateStrategy._o?.(id)\n }}\n >\n {props.children}\n </HydratedBoundary>\n </HydrationGate>\n </React.Suspense>\n </div>\n )\n}\n"],"mappings":"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"}
{"version":3,"file":"GenericHydrate.js","names":[],"sources":["../../src/GenericHydrate.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { reactUse, useHydrated, useLayoutEffect } from '@tanstack/react-router'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport {\n hydrateIdAttribute,\n hydrateWhenAttribute,\n} from '@tanstack/start-client-core/hydration/constants'\nimport {\n createResolvedGate,\n getFallbackHtml,\n getOrCreateGate,\n onGateResolve,\n releaseGate,\n runHydrationStrategyCleanup,\n saveFallbackHtml,\n waitForHydrationPrefetchStrategy,\n} from '@tanstack/start-client-core/hydration/runtime'\nimport { listenForDelegatedHydrationIntent } from '@tanstack/start-client-core/hydration'\nimport type {\n HydrationRuntimeContext,\n HydrationStrategy,\n HydrationWhen,\n} from '@tanstack/start-client-core/hydration'\nimport type { HydrationGateRecord } from '@tanstack/start-client-core/hydration/runtime'\nimport type { HydrateProps, InternalHydrateProps } from './Hydrate'\n\ntype Gate = HydrationGateRecord & { promise: Promise<void> }\ntype PrefetchController = {\n abortController: AbortController\n hydrationRequested: boolean\n hydrationListeners: Set<() => void>\n hydrationResolvePending: boolean\n started: boolean\n promise?: Promise<void>\n cleanup?: () => void\n}\n\nconst dynamicType = 'dynamic'\nconst dynamicHydrateStrategy = {\n _t: dynamicType,\n _d: () => true,\n} satisfies HydrationStrategy<typeof dynamicType, false>\n\nfunction shouldDeferHydration(strategy: HydrationStrategy) {\n return strategy._d ? strategy._d() : strategy._t !== 'load'\n}\n\nfunction useLatest<T>(value: T) {\n const ref = React.useRef(value)\n ref.current = value\n return ref\n}\n\nfunction useHydrationGate(props: InternalHydrateProps) {\n const hydrated = useHydrated()\n const reactId = React.useId()\n const id = props.h ? `${props.h}${reactId}` : reactId\n const when = props.when\n const isDynamicHydrate = typeof when === 'function'\n const dynamicHydrateStrategyRef = React.useRef<HydrationStrategy | undefined>(\n undefined,\n )\n if (isDynamicHydrate) {\n dynamicHydrateStrategyRef.current ??=\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined')\n ? dynamicHydrateStrategy\n : when()\n }\n const hydrateStrategy = isDynamicHydrate\n ? dynamicHydrateStrategyRef.current!\n : when\n const markerHydrateType: HydrationWhen = isDynamicHydrate\n ? dynamicType\n : hydrateStrategy._t!\n const [prefetchError, setPrefetchError] = React.useState<unknown>()\n const latestRef = useLatest({\n prefetch: props.prefetch,\n preload: props.p,\n })\n const gateRef = React.useRef<HydrationGateRecord | undefined>(undefined)\n const markerElementRef = React.useRef<HTMLDivElement | null>(null)\n const shouldPreserveServerHTMLRef = React.useRef<boolean | undefined>(\n undefined,\n )\n const shouldDeferInitialHydrationRef = React.useRef<boolean | undefined>(\n undefined,\n )\n const didPrefetchRef = React.useRef(false)\n const prefetchControllerRef = React.useRef<PrefetchController | undefined>(\n undefined,\n )\n\n prefetchControllerRef.current ??= {\n abortController: new AbortController(),\n hydrationRequested: false,\n hydrationListeners: new Set<() => void>(),\n hydrationResolvePending: false,\n started: false,\n }\n\n shouldPreserveServerHTMLRef.current ??=\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined') || !hydrated\n shouldDeferInitialHydrationRef.current ??=\n !hydrated && shouldDeferHydration(hydrateStrategy)\n\n if (!gateRef.current) {\n gateRef.current =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined')\n ? createResolvedGate(id, hydrateStrategy._t!)\n : getOrCreateGate(id, hydrateStrategy._t!)\n }\n\n gateRef.current.when = hydrateStrategy._t!\n\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n !(isServer ?? typeof window === 'undefined') &&\n hydrateStrategy._t !== 'never' &&\n (!shouldDeferInitialHydrationRef.current ||\n !shouldDeferHydration(hydrateStrategy))\n ) {\n gateRef.current.resolve()\n }\n\n const markerRef = React.useCallback(\n (element: HTMLDivElement | null) => {\n markerElementRef.current = element\n if (element) {\n if (\n hydrateStrategy._t === 'never' &&\n !shouldPreserveServerHTMLRef.current\n ) {\n element.replaceChildren()\n }\n saveFallbackHtml(id, element)\n }\n },\n [hydrateStrategy._t, id],\n )\n\n React.useEffect(() => {\n const gate = gateRef.current!\n return () => {\n const controller = prefetchControllerRef.current\n controller?.abortController.abort()\n controller?.cleanup?.()\n controller?.hydrationListeners.clear()\n releaseGate(gate)\n }\n }, [])\n\n React.useEffect(() => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined') ||\n !latestRef.current.prefetch\n ) {\n return\n }\n\n const controller = prefetchControllerRef.current!\n if (controller.started) return\n controller.started = true\n\n const onHydrate = (listener: () => void) => {\n if (controller.hydrationRequested) {\n listener()\n return () => {}\n }\n\n controller.hydrationListeners.add(listener)\n return () => {\n controller.hydrationListeners.delete(listener)\n }\n }\n\n const preload = () => latestRef.current.preload?.() ?? Promise.resolve()\n const prefetchInput = latestRef.current.prefetch\n\n if (typeof prefetchInput === 'function') {\n const promise = Promise.resolve()\n .then(() =>\n prefetchInput({\n element: markerElementRef.current,\n signal: controller.abortController.signal,\n preload,\n waitFor: (strategy) =>\n waitForHydrationPrefetchStrategy(strategy, {\n element: markerElementRef.current,\n signal: controller.abortController.signal,\n onHydrate,\n }),\n }),\n )\n .then(() => undefined)\n\n controller.promise = promise\n promise.catch((error) => {\n if (!controller.abortController.signal.aborted) {\n setPrefetchError(error)\n }\n })\n return\n }\n\n if (!latestRef.current.preload) return\n\n const prefetch = () => {\n if (didPrefetchRef.current) return\n didPrefetchRef.current = true\n void preload()\n }\n\n controller.cleanup = runHydrationStrategyCleanup(\n prefetchInput._s?.({\n element: markerElementRef.current,\n prefetch,\n }),\n )\n }, [hydrateStrategy, latestRef])\n\n useLayoutEffect(() => {\n const gate = gateRef.current!\n if (\n !shouldDeferInitialHydrationRef.current ||\n hydrateStrategy._t === 'never'\n ) {\n return\n }\n\n if (gate.resolved) {\n return\n }\n\n const cleanups: Array<() => void> = []\n let removeResolveListener = () => {}\n let disposed = false\n const resolveGate = gate.resolve\n\n const cleanup = () => {\n if (disposed) return\n disposed = true\n if (gate.resolve === requestHydration) {\n gate.resolve = resolveGate\n }\n removeResolveListener()\n cleanups.forEach((fn) => fn())\n }\n\n const addCleanup = (fn: void | (() => void)) => {\n if (!fn) return\n if (disposed || gate.resolved) {\n fn()\n return\n }\n cleanups.push(fn)\n }\n\n const requestHydration = () => {\n const controller = prefetchControllerRef.current!\n if (!controller.hydrationRequested) {\n controller.hydrationRequested = true\n controller.hydrationListeners.forEach((listener) => listener())\n controller.hydrationListeners.clear()\n }\n\n if (!controller.promise) {\n resolveGate()\n return\n }\n if (controller.hydrationResolvePending) return\n controller.hydrationResolvePending = true\n\n controller.promise.then(\n () => resolveGate(),\n (error) => {\n if (!controller.abortController.signal.aborted) {\n setPrefetchError(error)\n }\n },\n )\n }\n\n gate.resolve = requestHydration\n removeResolveListener = onGateResolve(gate, cleanup)\n\n const context: HydrationRuntimeContext = {\n element: markerElementRef.current,\n gate,\n }\n addCleanup(runHydrationStrategyCleanup(hydrateStrategy._s?.(context)))\n\n if (hydrateStrategy._t !== 'interaction') {\n addCleanup(\n runHydrationStrategyCleanup(\n markerElementRef.current\n ? listenForDelegatedHydrationIntent(\n markerElementRef.current,\n context,\n )\n : undefined,\n ),\n )\n }\n\n return cleanup\n }, [hydrateStrategy, latestRef])\n\n return {\n gate: gateRef.current,\n markerRef,\n markerElementRef,\n hydrateStrategy,\n markerHydrateType,\n prefetchError,\n shouldPreserveServerHTML: shouldPreserveServerHTMLRef.current,\n }\n}\n\nfunction HydrationGate(props: { gate: Gate; children: React.ReactNode }) {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n isServer ??\n typeof window === 'undefined'\n ) {\n return props.children as React.JSX.Element\n }\n\n if (props.gate.resolved) {\n return props.children as React.JSX.Element\n }\n\n if (!reactUse) {\n throw props.gate.promise\n }\n\n reactUse(props.gate.promise)\n\n return props.children as React.JSX.Element\n}\n\nfunction HydratedBoundary(props: {\n id: string\n onHydrated?: () => void\n onStrategyHydrated?: (id: string) => void\n children: React.ReactNode\n}) {\n const { id, onHydrated, onStrategyHydrated } = props\n const didHydrateRef = React.useRef(false)\n\n React.useEffect(() => {\n if (didHydrateRef.current) return\n didHydrateRef.current = true\n onHydrated?.()\n onStrategyHydrated?.(id)\n }, [id, onHydrated, onStrategyHydrated])\n\n return props.children as React.JSX.Element\n}\n\nexport function GenericHydrate(props: HydrateProps): React.JSX.Element {\n const internalProps = props as InternalHydrateProps\n const {\n gate,\n hydrateStrategy,\n markerHydrateType,\n markerElementRef,\n markerRef,\n prefetchError,\n shouldPreserveServerHTML,\n } = useHydrationGate(internalProps)\n if (prefetchError) throw prefetchError\n\n const fallback = shouldPreserveServerHTML\n ? (() => {\n const html = getFallbackHtml(gate.id)\n return html ? (\n <div\n style={{ display: 'contents' }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n ) : null\n })()\n : (props.fallback ?? null)\n const markerAttributes =\n markerHydrateType === dynamicType ? undefined : hydrateStrategy._a?.()\n\n const hydrateType = hydrateStrategy._t!\n\n if (hydrateType === 'never' && !shouldPreserveServerHTML) {\n return (\n <div\n ref={markerRef}\n {...{\n [hydrateIdAttribute]: gate.id,\n [hydrateWhenAttribute]: markerHydrateType,\n ...markerAttributes,\n }}\n >\n {props.fallback ?? null}\n </div>\n )\n }\n\n return (\n <div\n ref={markerRef}\n {...{\n [hydrateIdAttribute]: gate.id,\n [hydrateWhenAttribute]: markerHydrateType,\n ...markerAttributes,\n }}\n >\n <React.Suspense fallback={fallback}>\n <HydrationGate gate={gate}>\n <HydratedBoundary\n id={gate.id}\n onHydrated={props.onHydrated}\n onStrategyHydrated={(id) => {\n markerElementRef.current?.removeAttribute(hydrateWhenAttribute)\n hydrateStrategy._o?.(id)\n }}\n >\n {props.children}\n </HydratedBoundary>\n </HydrationGate>\n </React.Suspense>\n </div>\n )\n}\n"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"Hydrate.js","names":[],"sources":["../../src/Hydrate.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { isServer } from '@tanstack/router-core/isServer'\nimport type {\n HydrationStrategy as CoreHydrationStrategy,\n HydrationPrefetchFunction,\n HydrationPrefetchStrategy,\n HydrationWhen,\n} from '@tanstack/start-client-core/hydration'\n\nexport type {\n HydrationInteractionEvent,\n HydrationInteractionEvents,\n HydrationPrefetchContext,\n HydrationPrefetchFunction,\n HydrationPrefetchStrategy,\n HydrationPrefetchWaitReason,\n HydrationWhen,\n} from '@tanstack/start-client-core/hydration'\n\nexport type ReactHydrationStrategy<\n TWhen extends HydrationWhen = HydrationWhen,\n TCanPrefetch extends boolean = boolean,\n> = CoreHydrationStrategy<TWhen, TCanPrefetch> & {\n _h: (this: ReactHydrationStrategy, props: HydrateProps) => React.JSX.Element\n}\n\nexport type HydrationStrategy<\n TWhen extends HydrationWhen = HydrationWhen,\n TCanPrefetch extends boolean = boolean,\n> = ReactHydrationStrategy<TWhen, TCanPrefetch>\n\nexport type HydrateWhen =\n | ReactHydrationStrategy\n | (() => ReactHydrationStrategy)\n\ntype HydrateCommonOptions = {\n when: HydrateWhen\n fallback?: React.ReactNode\n onHydrated?: () => void\n}\n\nexport type HydrateOptions =\n | (HydrateCommonOptions & {\n prefetch?: never\n split?: boolean\n })\n | (HydrateCommonOptions & {\n prefetch: HydrationPrefetchStrategy\n split?: true\n })\n | (HydrateCommonOptions & {\n prefetch: HydrationPrefetchFunction\n split?: boolean\n })\n\nexport type HydrateProps = HydrateOptions & {\n children: React.ReactNode\n}\n\nexport type InternalHydrateProps = HydrateProps & {\n h?: string\n p?: () => Promise<void>\n}\n\nconst dynamicType = 'dynamic'\nconst hydrateIdAttribute = 'data-ts-hydrate-id'\nconst hydrateWhenAttribute = 'data-ts-hydrate-when'\n\n/* @__NO_SIDE_EFFECTS__ */\nfunction ServerDynamicHydrate(props: HydrateProps): React.JSX.Element {\n const internalProps = props as InternalHydrateProps\n const reactId = React.useId()\n const id = internalProps.h ? `${internalProps.h}${reactId}` : reactId\n\n return (\n <div\n {...{\n [hydrateIdAttribute]: id,\n [hydrateWhenAttribute]: dynamicType,\n }}\n >\n <React.Suspense fallback={props.fallback ?? null}>\n {props.children}\n </React.Suspense>\n </div>\n )\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function Hydrate(props: HydrateProps): React.JSX.Element {\n if (typeof props.when === 'function') {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n isServer ??\n typeof window === 'undefined'\n ) {\n return <ServerDynamicHydrate {...props} />\n }\n\n return props.when()._h(props)\n }\n\n return props.when._h(props)\n}\n"],"mappings":";;;;;AAmEA,IAAM,cAAc;AACpB,IAAM,qBAAqB;AAC3B,IAAM,uBAAuB;;AAG7B,SAAS,qBAAqB,OAAwC;CACpE,MAAM,gBAAgB;CACtB,MAAM,UAAU,MAAM,OAAO;CAC7B,MAAM,KAAK,cAAc,IAAI,GAAG,cAAc,IAAI,YAAY;AAE9D,QACE,oBAAC,OAAD;GAEK,qBAAqB;GACrB,uBAAuB;YAG1B,oBAAC,MAAM,UAAP;GAAgB,UAAU,MAAM,YAAY;aACzC,MAAM;GACQ,CAAA;EACb,CAAA;;;AAKV,SAAgB,QAAQ,OAAwC;AAC9D,KAAI,OAAO,MAAM,SAAS,YAAY;AACpC,MAEE,YACA,OAAO,WAAW,YAElB,QAAO,oBAAC,sBAAD,EAAsB,GAAI,OAAS,CAAA;AAG5C,SAAO,MAAM,MAAM,CAAC,GAAG,MAAM;;AAG/B,QAAO,MAAM,KAAK,GAAG,MAAM"}
{"version":3,"file":"Hydrate.js","names":[],"sources":["../../src/Hydrate.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { isServer } from '@tanstack/router-core/isServer'\nimport type {\n HydrationStrategy as CoreHydrationStrategy,\n HydrationPrefetchFunction,\n HydrationPrefetchStrategy,\n HydrationWhen,\n} from '@tanstack/start-client-core/hydration'\n\nexport type {\n HydrationInteractionEvent,\n HydrationInteractionEvents,\n HydrationPrefetchContext,\n HydrationPrefetchFunction,\n HydrationPrefetchStrategy,\n HydrationPrefetchWaitReason,\n HydrationWhen,\n} from '@tanstack/start-client-core/hydration'\n\nexport type ReactHydrationStrategy<\n TWhen extends HydrationWhen = HydrationWhen,\n TCanPrefetch extends boolean = boolean,\n> = CoreHydrationStrategy<TWhen, TCanPrefetch> & {\n _h: (this: ReactHydrationStrategy, props: HydrateProps) => React.JSX.Element\n}\n\nexport type HydrationStrategy<\n TWhen extends HydrationWhen = HydrationWhen,\n TCanPrefetch extends boolean = boolean,\n> = ReactHydrationStrategy<TWhen, TCanPrefetch>\n\nexport type HydrateWhen =\n | ReactHydrationStrategy\n | (() => ReactHydrationStrategy)\n\ntype HydrateCommonOptions = {\n when: HydrateWhen\n fallback?: React.ReactNode\n onHydrated?: () => void\n}\n\nexport type HydrateOptions =\n | (HydrateCommonOptions & {\n prefetch?: never\n split?: boolean\n })\n | (HydrateCommonOptions & {\n prefetch: HydrationPrefetchStrategy\n split?: true\n })\n | (HydrateCommonOptions & {\n prefetch: HydrationPrefetchFunction\n split?: boolean\n })\n\nexport type HydrateProps = HydrateOptions & {\n children: React.ReactNode\n}\n\nexport type InternalHydrateProps = HydrateProps & {\n h?: string\n p?: () => Promise<void>\n}\n\nconst dynamicType = 'dynamic'\nconst hydrateIdAttribute = 'data-ts-hydrate-id'\nconst hydrateWhenAttribute = 'data-ts-hydrate-when'\n\n/* @__NO_SIDE_EFFECTS__ */\nfunction ServerDynamicHydrate(props: HydrateProps): React.JSX.Element {\n const internalProps = props as InternalHydrateProps\n const reactId = React.useId()\n const id = internalProps.h ? `${internalProps.h}${reactId}` : reactId\n\n return (\n <div\n {...{\n [hydrateIdAttribute]: id,\n [hydrateWhenAttribute]: dynamicType,\n }}\n >\n <React.Suspense fallback={props.fallback ?? null}>\n {props.children}\n </React.Suspense>\n </div>\n )\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function Hydrate(props: HydrateProps): React.JSX.Element {\n if (typeof props.when === 'function') {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n isServer ??\n typeof window === 'undefined'\n ) {\n return <ServerDynamicHydrate {...props} />\n }\n\n return props.when()._h(props)\n }\n\n return props.when._h(props)\n}\n"],"mappings":";;;;;AAmEA,IAAM,cAAc;AACpB,IAAM,qBAAqB;AAC3B,IAAM,uBAAuB;;AAG7B,SAAS,qBAAqB,OAAwC;CACpE,MAAM,gBAAgB;CACtB,MAAM,UAAU,MAAM,MAAM;CAC5B,MAAM,KAAK,cAAc,IAAI,GAAG,cAAc,IAAI,YAAY;CAE9D,OACE,oBAAC,OAAD;GAEK,qBAAqB;GACrB,uBAAuB;YAG1B,oBAAC,MAAM,UAAP;GAAgB,UAAU,MAAM,YAAY;aACzC,MAAM;EACO,CAAA;CACb,CAAA;AAET;;AAGA,SAAgB,QAAQ,OAAwC;CAC9D,IAAI,OAAO,MAAM,SAAS,YAAY;EACpC,IAEE,YACA,OAAO,WAAW,aAElB,OAAO,oBAAC,sBAAD,EAAsB,GAAI,MAAQ,CAAA;EAG3C,OAAO,MAAM,KAAK,EAAE,GAAG,KAAK;CAC9B;CAEA,OAAO,MAAM,KAAK,GAAG,KAAK;AAC5B"}

@@ -1,1 +0,1 @@

{"version":3,"file":"hydrateStart.js","names":[],"sources":["../../src/hydrateStart.ts"],"sourcesContent":["import { hydrateStart as coreHydrateStart } from '@tanstack/start-client-core/client'\nimport type { AnyRouter } from '@tanstack/router-core'\n\n/**\n * React-specific wrapper for hydrateStart that signals hydration completion\n */\nexport async function hydrateStart(): Promise<AnyRouter> {\n const router = await coreHydrateStart()\n // Signal that router hydration is complete so cleanup can happen if stream has ended\n window.$_TSR?.h()\n return router\n}\n"],"mappings":";;;;;AAMA,eAAsB,iBAAmC;CACvD,MAAM,SAAS,MAAM,cAAkB;AAEvC,QAAO,OAAO,GAAG;AACjB,QAAO"}
{"version":3,"file":"hydrateStart.js","names":[],"sources":["../../src/hydrateStart.ts"],"sourcesContent":["import { hydrateStart as coreHydrateStart } from '@tanstack/start-client-core/client'\nimport type { AnyRouter } from '@tanstack/router-core'\n\n/**\n * React-specific wrapper for hydrateStart that signals hydration completion\n */\nexport async function hydrateStart(): Promise<AnyRouter> {\n const router = await coreHydrateStart()\n // Signal that router hydration is complete so cleanup can happen if stream has ended\n window.$_TSR?.h()\n return router\n}\n"],"mappings":";;;;;AAMA,eAAsB,iBAAmC;CACvD,MAAM,SAAS,MAAM,aAAiB;CAEtC,OAAO,OAAO,EAAE;CAChB,OAAO;AACT"}

@@ -1,1 +0,1 @@

{"version":3,"file":"generic.js","names":[],"sources":["../../../src/hydration/generic.ts"],"sourcesContent":["'use client'\n\nimport {\n condition as coreCondition,\n interaction as coreInteraction,\n media as coreMedia,\n withHydrationRenderer,\n} from '@tanstack/start-client-core/hydration'\nimport { GenericHydrate } from '../GenericHydrate'\nimport type {\n HydrationCondition,\n HydrationInteractionEvents,\n HydrationPrefetchStrategy,\n} from '@tanstack/start-client-core/hydration'\nimport type { ReactHydrationStrategy } from '../Hydrate'\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function media(\n query: string,\n): ReactHydrationStrategy<'media', true> & HydrationPrefetchStrategy<'media'> {\n return /* @__PURE__ */ withHydrationRenderer(coreMedia(query), GenericHydrate)\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function condition(\n condition: HydrationCondition,\n): ReactHydrationStrategy<'condition', false> {\n return /* @__PURE__ */ withHydrationRenderer(\n coreCondition(condition),\n GenericHydrate,\n )\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function interaction(options?: {\n events?: HydrationInteractionEvents\n}): ReactHydrationStrategy<'interaction', true> &\n HydrationPrefetchStrategy<'interaction'> {\n return /* @__PURE__ */ withHydrationRenderer(\n coreInteraction(options),\n GenericHydrate,\n )\n}\n"],"mappings":";;;;;AAiBA,SAAgB,QACd,OAC4E;AAC5E,QAAuB,sCAAsB,MAAU,MAAM,EAAE,eAAe;;;AAIhF,SAAgB,YACd,aAC4C;AAC5C,QAAuB,sCACrB,UAAc,YAAU,EACxB,eACD;;;AAIH,SAAgB,cAAY,SAGe;AACzC,QAAuB,sCACrB,YAAgB,QAAQ,EACxB,eACD"}
{"version":3,"file":"generic.js","names":[],"sources":["../../../src/hydration/generic.ts"],"sourcesContent":["'use client'\n\nimport {\n condition as coreCondition,\n interaction as coreInteraction,\n media as coreMedia,\n withHydrationRenderer,\n} from '@tanstack/start-client-core/hydration'\nimport { GenericHydrate } from '../GenericHydrate'\nimport type {\n HydrationCondition,\n HydrationInteractionEvents,\n HydrationPrefetchStrategy,\n} from '@tanstack/start-client-core/hydration'\nimport type { ReactHydrationStrategy } from '../Hydrate'\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function media(\n query: string,\n): ReactHydrationStrategy<'media', true> & HydrationPrefetchStrategy<'media'> {\n return /* @__PURE__ */ withHydrationRenderer(coreMedia(query), GenericHydrate)\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function condition(\n condition: HydrationCondition,\n): ReactHydrationStrategy<'condition', false> {\n return /* @__PURE__ */ withHydrationRenderer(\n coreCondition(condition),\n GenericHydrate,\n )\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function interaction(options?: {\n events?: HydrationInteractionEvents\n}): ReactHydrationStrategy<'interaction', true> &\n HydrationPrefetchStrategy<'interaction'> {\n return /* @__PURE__ */ withHydrationRenderer(\n coreInteraction(options),\n GenericHydrate,\n )\n}\n"],"mappings":";;;;;AAiBA,SAAgB,QACd,OAC4E;CAC5E,OAAuB,sCAAsB,MAAU,KAAK,GAAG,cAAc;AAC/E;;AAGA,SAAgB,YACd,aAC4C;CAC5C,OAAuB,sCACrB,UAAc,WAAS,GACvB,cACF;AACF;;AAGA,SAAgB,cAAY,SAGe;CACzC,OAAuB,sCACrB,YAAgB,OAAO,GACvB,cACF;AACF"}

@@ -1,1 +0,1 @@

{"version":3,"file":"idle.js","names":[],"sources":["../../../src/hydration/idle.ts"],"sourcesContent":["'use client'\n\nimport {\n idle as coreIdle,\n withHydrationRenderer,\n} from '@tanstack/start-client-core/hydration'\nimport { GenericHydrate } from '../GenericHydrate'\nimport type {\n HydrationPrefetchStrategy,\n IdleHydrationOptions,\n} from '@tanstack/start-client-core/hydration'\nimport type { ReactHydrationStrategy } from '../Hydrate'\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function idle(\n options: IdleHydrationOptions = {},\n): ReactHydrationStrategy<'idle', true> & HydrationPrefetchStrategy<'idle'> {\n return /* @__PURE__ */ withHydrationRenderer(\n coreIdle(options),\n GenericHydrate,\n )\n}\n"],"mappings":";;;;;AAcA,SAAgB,OACd,UAAgC,EAAE,EACwC;AAC1E,QAAuB,sCACrB,KAAS,QAAQ,EACjB,eACD"}
{"version":3,"file":"idle.js","names":[],"sources":["../../../src/hydration/idle.ts"],"sourcesContent":["'use client'\n\nimport {\n idle as coreIdle,\n withHydrationRenderer,\n} from '@tanstack/start-client-core/hydration'\nimport { GenericHydrate } from '../GenericHydrate'\nimport type {\n HydrationPrefetchStrategy,\n IdleHydrationOptions,\n} from '@tanstack/start-client-core/hydration'\nimport type { ReactHydrationStrategy } from '../Hydrate'\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function idle(\n options: IdleHydrationOptions = {},\n): ReactHydrationStrategy<'idle', true> & HydrationPrefetchStrategy<'idle'> {\n return /* @__PURE__ */ withHydrationRenderer(\n coreIdle(options),\n GenericHydrate,\n )\n}\n"],"mappings":";;;;;AAcA,SAAgB,OACd,UAAgC,CAAC,GACyC;CAC1E,OAAuB,sCACrB,KAAS,OAAO,GAChB,cACF;AACF"}

@@ -1,1 +0,1 @@

{"version":3,"file":"load.js","names":[],"sources":["../../../src/hydration/load.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport {\n load as coreLoad,\n withHydrationRenderer,\n} from '@tanstack/start-client-core/hydration'\nimport type { HydrationPrefetchStrategy } from '@tanstack/start-client-core/hydration'\nimport type { HydrateProps, ReactHydrationStrategy } from '../Hydrate'\n\nfunction HydratedBoundary(props: {\n onHydrated?: () => void\n children: React.ReactNode\n}) {\n const { onHydrated, children } = props\n const didHydrateRef = React.useRef(false)\n\n React.useEffect(() => {\n if (didHydrateRef.current) return\n didHydrateRef.current = true\n onHydrated?.()\n }, [onHydrated])\n\n return children as React.JSX.Element\n}\n\nexport function LoadHydrate(props: HydrateProps): React.JSX.Element {\n return (\n <div>\n <React.Suspense fallback={props.fallback ?? null}>\n <HydratedBoundary onHydrated={props.onHydrated}>\n {props.children}\n </HydratedBoundary>\n </React.Suspense>\n </div>\n )\n}\n\nconst loadStrategy = /* @__PURE__ */ withHydrationRenderer(\n coreLoad(),\n LoadHydrate,\n) as ReactHydrationStrategy<'load', true> & HydrationPrefetchStrategy<'load'>\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function load(): ReactHydrationStrategy<'load', true> &\n HydrationPrefetchStrategy<'load'> {\n return loadStrategy\n}\n"],"mappings":";;;;;AAWA,SAAS,iBAAiB,OAGvB;CACD,MAAM,EAAE,YAAY,aAAa;CACjC,MAAM,gBAAgB,MAAM,OAAO,MAAM;AAEzC,OAAM,gBAAgB;AACpB,MAAI,cAAc,QAAS;AAC3B,gBAAc,UAAU;AACxB,gBAAc;IACb,CAAC,WAAW,CAAC;AAEhB,QAAO;;AAGT,SAAgB,YAAY,OAAwC;AAClE,QACE,oBAAC,OAAD,EAAA,UACE,oBAAC,MAAM,UAAP;EAAgB,UAAU,MAAM,YAAY;YAC1C,oBAAC,kBAAD;GAAkB,YAAY,MAAM;aACjC,MAAM;GACU,CAAA;EACJ,CAAA,EACb,CAAA;;AAIV,IAAM,eAA+B,sCACnC,MAAU,EACV,YACD;;AAGD,SAAgB,SACoB;AAClC,QAAO"}
{"version":3,"file":"load.js","names":[],"sources":["../../../src/hydration/load.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport {\n load as coreLoad,\n withHydrationRenderer,\n} from '@tanstack/start-client-core/hydration'\nimport type { HydrationPrefetchStrategy } from '@tanstack/start-client-core/hydration'\nimport type { HydrateProps, ReactHydrationStrategy } from '../Hydrate'\n\nfunction HydratedBoundary(props: {\n onHydrated?: () => void\n children: React.ReactNode\n}) {\n const { onHydrated, children } = props\n const didHydrateRef = React.useRef(false)\n\n React.useEffect(() => {\n if (didHydrateRef.current) return\n didHydrateRef.current = true\n onHydrated?.()\n }, [onHydrated])\n\n return children as React.JSX.Element\n}\n\nexport function LoadHydrate(props: HydrateProps): React.JSX.Element {\n return (\n <div>\n <React.Suspense fallback={props.fallback ?? null}>\n <HydratedBoundary onHydrated={props.onHydrated}>\n {props.children}\n </HydratedBoundary>\n </React.Suspense>\n </div>\n )\n}\n\nconst loadStrategy = /* @__PURE__ */ withHydrationRenderer(\n coreLoad(),\n LoadHydrate,\n) as ReactHydrationStrategy<'load', true> & HydrationPrefetchStrategy<'load'>\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function load(): ReactHydrationStrategy<'load', true> &\n HydrationPrefetchStrategy<'load'> {\n return loadStrategy\n}\n"],"mappings":";;;;;AAWA,SAAS,iBAAiB,OAGvB;CACD,MAAM,EAAE,YAAY,aAAa;CACjC,MAAM,gBAAgB,MAAM,OAAO,KAAK;CAExC,MAAM,gBAAgB;EACpB,IAAI,cAAc,SAAS;EAC3B,cAAc,UAAU;EACxB,aAAa;CACf,GAAG,CAAC,UAAU,CAAC;CAEf,OAAO;AACT;AAEA,SAAgB,YAAY,OAAwC;CAClE,OACE,oBAAC,OAAD,EAAA,UACE,oBAAC,MAAM,UAAP;EAAgB,UAAU,MAAM,YAAY;YAC1C,oBAAC,kBAAD;GAAkB,YAAY,MAAM;aACjC,MAAM;EACS,CAAA;CACJ,CAAA,EACb,CAAA;AAET;AAEA,IAAM,eAA+B,sCACnC,KAAS,GACT,WACF;;AAGA,SAAgB,SACoB;CAClC,OAAO;AACT"}

@@ -1,1 +0,1 @@

{"version":3,"file":"never.js","names":[],"sources":["../../../src/hydration/never.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { reactUse, useHydrated } from '@tanstack/react-router'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport {\n never as coreNever,\n withHydrationRenderer,\n} from '@tanstack/start-client-core/hydration'\nimport {\n hydrateIdAttribute,\n hydrateWhenAttribute,\n} from '@tanstack/start-client-core/hydration/constants'\nimport {\n getFallbackHtml,\n saveFallbackHtml,\n} from '@tanstack/start-client-core/hydration/runtime'\nimport type {\n HydrateProps,\n InternalHydrateProps,\n ReactHydrationStrategy,\n} from '../Hydrate'\n\nconst neverType = 'never'\nconst neverPromise = new Promise<void>(() => {})\n\nfunction NeverGate(props: { children: React.ReactNode }) {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n isServer ??\n typeof window === 'undefined'\n ) {\n return props.children as React.JSX.Element\n }\n\n if (!reactUse) {\n throw neverPromise\n }\n\n reactUse(neverPromise)\n\n return props.children as React.JSX.Element\n}\n\nexport function NeverHydrate(props: HydrateProps): React.JSX.Element {\n const internalProps = props as InternalHydrateProps\n const hydrated = useHydrated()\n const reactId = React.useId()\n const id = internalProps.h ? `${internalProps.h}${reactId}` : reactId\n const shouldPreserveServerHTMLRef = React.useRef<boolean | undefined>(\n undefined,\n )\n shouldPreserveServerHTMLRef.current ??=\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined') || !hydrated\n const markerRef = React.useCallback(\n (element: HTMLDivElement | null) => {\n if (!element) return\n if (!shouldPreserveServerHTMLRef.current) {\n element.replaceChildren()\n } else {\n saveFallbackHtml(id, element)\n }\n },\n [id],\n )\n const markerProps = {\n ref: markerRef,\n [hydrateIdAttribute]: id,\n [hydrateWhenAttribute]: neverType,\n }\n const fallback = (() => {\n const html = getFallbackHtml(id)\n return html ? (\n <div\n style={{ display: 'contents' }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n ) : (\n (props.fallback ?? null)\n )\n })()\n\n return (\n <div {...markerProps}>\n <React.Suspense fallback={fallback}>\n <NeverGate>{props.children}</NeverGate>\n </React.Suspense>\n </div>\n )\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function never(): ReactHydrationStrategy<'never', false> {\n return /* @__PURE__ */ withHydrationRenderer(coreNever(), NeverHydrate)\n}\n"],"mappings":";;;;;;;;;AAwBA,IAAM,YAAY;AAClB,IAAM,eAAe,IAAI,cAAoB,GAAG;AAEhD,SAAS,UAAU,OAAsC;AACvD,KAEE,YACA,OAAO,WAAW,YAElB,QAAO,MAAM;AAGf,KAAI,CAAC,SACH,OAAM;AAGR,UAAS,aAAa;AAEtB,QAAO,MAAM;;AAGf,SAAgB,aAAa,OAAwC;CACnE,MAAM,gBAAgB;CACtB,MAAM,WAAW,aAAa;CAC9B,MAAM,UAAU,MAAM,OAAO;CAC7B,MAAM,KAAK,cAAc,IAAI,GAAG,cAAc,IAAI,YAAY;CAC9D,MAAM,8BAA8B,MAAM,OACxC,KAAA,EACD;AACD,6BAA4B,aAEzB,YAAY,OAAO,WAAW,gBAAgB,CAAC;CAYlD,MAAM,cAAc;EAClB,KAZgB,MAAM,aACrB,YAAmC;AAClC,OAAI,CAAC,QAAS;AACd,OAAI,CAAC,4BAA4B,QAC/B,SAAQ,iBAAiB;OAEzB,kBAAiB,IAAI,QAAQ;KAGjC,CAAC,GAAG,CACL;GAGE,qBAAqB;GACrB,uBAAuB;EACzB;CACD,MAAM,kBAAkB;EACtB,MAAM,OAAO,gBAAgB,GAAG;AAChC,SAAO,OACL,oBAAC,OAAD;GACE,OAAO,EAAE,SAAS,YAAY;GAC9B,yBAAyB,EAAE,QAAQ,MAAM;GACzC,CAAA,GAED,MAAM,YAAY;KAEnB;AAEJ,QACE,oBAAC,OAAD;EAAK,GAAI;YACP,oBAAC,MAAM,UAAP;GAA0B;aACxB,oBAAC,WAAD,EAAA,UAAY,MAAM,UAAqB,CAAA;GACxB,CAAA;EACb,CAAA;;;AAKV,SAAgB,UAAgD;AAC9D,QAAuB,sCAAsB,OAAW,EAAE,aAAa"}
{"version":3,"file":"never.js","names":[],"sources":["../../../src/hydration/never.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { reactUse, useHydrated } from '@tanstack/react-router'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport {\n never as coreNever,\n withHydrationRenderer,\n} from '@tanstack/start-client-core/hydration'\nimport {\n hydrateIdAttribute,\n hydrateWhenAttribute,\n} from '@tanstack/start-client-core/hydration/constants'\nimport {\n getFallbackHtml,\n saveFallbackHtml,\n} from '@tanstack/start-client-core/hydration/runtime'\nimport type {\n HydrateProps,\n InternalHydrateProps,\n ReactHydrationStrategy,\n} from '../Hydrate'\n\nconst neverType = 'never'\nconst neverPromise = new Promise<void>(() => {})\n\nfunction NeverGate(props: { children: React.ReactNode }) {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n isServer ??\n typeof window === 'undefined'\n ) {\n return props.children as React.JSX.Element\n }\n\n if (!reactUse) {\n throw neverPromise\n }\n\n reactUse(neverPromise)\n\n return props.children as React.JSX.Element\n}\n\nexport function NeverHydrate(props: HydrateProps): React.JSX.Element {\n const internalProps = props as InternalHydrateProps\n const hydrated = useHydrated()\n const reactId = React.useId()\n const id = internalProps.h ? `${internalProps.h}${reactId}` : reactId\n const shouldPreserveServerHTMLRef = React.useRef<boolean | undefined>(\n undefined,\n )\n shouldPreserveServerHTMLRef.current ??=\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n (isServer ?? typeof window === 'undefined') || !hydrated\n const markerRef = React.useCallback(\n (element: HTMLDivElement | null) => {\n if (!element) return\n if (!shouldPreserveServerHTMLRef.current) {\n element.replaceChildren()\n } else {\n saveFallbackHtml(id, element)\n }\n },\n [id],\n )\n const markerProps = {\n ref: markerRef,\n [hydrateIdAttribute]: id,\n [hydrateWhenAttribute]: neverType,\n }\n const fallback = (() => {\n const html = getFallbackHtml(id)\n return html ? (\n <div\n style={{ display: 'contents' }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n ) : (\n (props.fallback ?? null)\n )\n })()\n\n return (\n <div {...markerProps}>\n <React.Suspense fallback={fallback}>\n <NeverGate>{props.children}</NeverGate>\n </React.Suspense>\n </div>\n )\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function never(): ReactHydrationStrategy<'never', false> {\n return /* @__PURE__ */ withHydrationRenderer(coreNever(), NeverHydrate)\n}\n"],"mappings":";;;;;;;;;AAwBA,IAAM,YAAY;AAClB,IAAM,eAAe,IAAI,cAAoB,CAAC,CAAC;AAE/C,SAAS,UAAU,OAAsC;CACvD,IAEE,YACA,OAAO,WAAW,aAElB,OAAO,MAAM;CAGf,IAAI,CAAC,UACH,MAAM;CAGR,SAAS,YAAY;CAErB,OAAO,MAAM;AACf;AAEA,SAAgB,aAAa,OAAwC;CACnE,MAAM,gBAAgB;CACtB,MAAM,WAAW,YAAY;CAC7B,MAAM,UAAU,MAAM,MAAM;CAC5B,MAAM,KAAK,cAAc,IAAI,GAAG,cAAc,IAAI,YAAY;CAC9D,MAAM,8BAA8B,MAAM,OACxC,KAAA,CACF;CACA,4BAA4B,aAEzB,YAAY,OAAO,WAAW,gBAAgB,CAAC;CAYlD,MAAM,cAAc;EAClB,KAZgB,MAAM,aACrB,YAAmC;GAClC,IAAI,CAAC,SAAS;GACd,IAAI,CAAC,4BAA4B,SAC/B,QAAQ,gBAAgB;QAExB,iBAAiB,IAAI,OAAO;EAEhC,GACA,CAAC,EAAE,CAGE;GACJ,qBAAqB;GACrB,uBAAuB;CAC1B;CACA,MAAM,kBAAkB;EACtB,MAAM,OAAO,gBAAgB,EAAE;EAC/B,OAAO,OACL,oBAAC,OAAD;GACE,OAAO,EAAE,SAAS,WAAW;GAC7B,yBAAyB,EAAE,QAAQ,KAAK;EACzC,CAAA,IAEA,MAAM,YAAY;CAEvB,GAAG;CAEH,OACE,oBAAC,OAAD;EAAK,GAAI;YACP,oBAAC,MAAM,UAAP;GAA0B;aACxB,oBAAC,WAAD,EAAA,UAAY,MAAM,SAAoB,CAAA;EACxB,CAAA;CACb,CAAA;AAET;;AAGA,SAAgB,UAAgD;CAC9D,OAAuB,sCAAsB,MAAU,GAAG,YAAY;AACxE"}

@@ -1,1 +0,1 @@

{"version":3,"file":"visible.js","names":[],"sources":["../../../src/hydration/visible.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { reactUse } from '@tanstack/react-router'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport type {\n HydrationPrefetchStrategy,\n VisibleHydrationOptions,\n} from '@tanstack/start-client-core/hydration'\nimport type {\n HydrateProps,\n InternalHydrateProps,\n ReactHydrationStrategy,\n} from '../Hydrate'\n\ntype VisibleGate = {\n p: Promise<void>\n r: boolean\n s: () => void\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nfunction HydrationBoundary(props: {\n g: VisibleGate\n o?: () => void\n children?: React.ReactNode\n}) {\n const { g, o } = props\n\n if (!g.r) {\n if (!reactUse) {\n throw g.p\n }\n\n reactUse(g.p)\n }\n\n React.useEffect(() => {\n o?.()\n }, [o])\n\n return props.children as React.JSX.Element\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function VisibleHydrate(\n this: ReactHydrationStrategy,\n props: HydrateProps,\n): React.JSX.Element {\n const strategy = this as ReactHydrationStrategy<'visible', true>\n const prefetchStrategy = props.prefetch\n const preload = (props as InternalHydrateProps).p\n const markerRef = React.useRef<HTMLDivElement | null>(null)\n const [gate] = React.useState<VisibleGate>(() => {\n let resolvePromise!: () => void\n const nextGate: VisibleGate = {\n p: new Promise<void>((resolve) => {\n resolvePromise = resolve\n }),\n r: false,\n s: () => {\n nextGate.r = true\n resolvePromise()\n },\n }\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n isServer ??\n typeof window === 'undefined'\n ) {\n nextGate.s()\n }\n\n return nextGate\n })\n\n React.useEffect(() => {\n if (!preload || typeof prefetchStrategy === 'function') {\n return\n }\n\n return prefetchStrategy?._s?.({\n element: markerRef.current,\n prefetch: preload,\n })\n }, [prefetchStrategy, preload])\n\n React.useEffect(() => {\n if (gate.r) return\n\n return strategy._s?.({\n element: markerRef.current,\n gate: gate as never,\n })\n }, [gate, strategy])\n\n return (\n <div ref={markerRef}>\n <React.Suspense fallback={props.fallback}>\n <HydrationBoundary g={gate} o={props.onHydrated}>\n {props.children}\n </HydrationBoundary>\n </React.Suspense>\n </div>\n )\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function visible(\n options?: VisibleHydrationOptions,\n): ReactHydrationStrategy<'visible', true> &\n HydrationPrefetchStrategy<'visible'> {\n const rootMargin = options?.rootMargin ?? '600px'\n const threshold = options?.threshold ?? 0\n\n return {\n _s: ({ element, gate, prefetch }) => {\n const callback = prefetch || (gate as never as VisibleGate).s\n\n if (!element) {\n callback()\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0]!.isIntersecting) return\n observer.disconnect()\n callback()\n },\n { rootMargin, threshold },\n )\n observer.observe(element)\n return () => observer.disconnect()\n },\n _h: VisibleHydrate,\n }\n}\n"],"mappings":";;;;;;;AAuBA,SAAS,kBAAkB,OAIxB;CACD,MAAM,EAAE,GAAG,MAAM;AAEjB,KAAI,CAAC,EAAE,GAAG;AACR,MAAI,CAAC,SACH,OAAM,EAAE;AAGV,WAAS,EAAE,EAAE;;AAGf,OAAM,gBAAgB;AACpB,OAAK;IACJ,CAAC,EAAE,CAAC;AAEP,QAAO,MAAM;;;AAIf,SAAgB,eAEd,OACmB;CACnB,MAAM,WAAW;CACjB,MAAM,mBAAmB,MAAM;CAC/B,MAAM,UAAW,MAA+B;CAChD,MAAM,YAAY,MAAM,OAA8B,KAAK;CAC3D,MAAM,CAAC,QAAQ,MAAM,eAA4B;EAC/C,IAAI;EACJ,MAAM,WAAwB;GAC5B,GAAG,IAAI,SAAe,YAAY;AAChC,qBAAiB;KACjB;GACF,GAAG;GACH,SAAS;AACP,aAAS,IAAI;AACb,oBAAgB;;GAEnB;AACD,MAEE,YACA,OAAO,WAAW,YAElB,UAAS,GAAG;AAGd,SAAO;GACP;AAEF,OAAM,gBAAgB;AACpB,MAAI,CAAC,WAAW,OAAO,qBAAqB,WAC1C;AAGF,SAAO,kBAAkB,KAAK;GAC5B,SAAS,UAAU;GACnB,UAAU;GACX,CAAC;IACD,CAAC,kBAAkB,QAAQ,CAAC;AAE/B,OAAM,gBAAgB;AACpB,MAAI,KAAK,EAAG;AAEZ,SAAO,SAAS,KAAK;GACnB,SAAS,UAAU;GACb;GACP,CAAC;IACD,CAAC,MAAM,SAAS,CAAC;AAEpB,QACE,oBAAC,OAAD;EAAK,KAAK;YACR,oBAAC,MAAM,UAAP;GAAgB,UAAU,MAAM;aAC9B,oBAAC,mBAAD;IAAmB,GAAG;IAAM,GAAG,MAAM;cAClC,MAAM;IACW,CAAA;GACL,CAAA;EACb,CAAA;;;AAKV,SAAgB,QACd,SAEqC;CACrC,MAAM,aAAa,SAAS,cAAc;CAC1C,MAAM,YAAY,SAAS,aAAa;AAExC,QAAO;EACL,KAAK,EAAE,SAAS,MAAM,eAAe;GACnC,MAAM,WAAW,YAAa,KAA8B;AAE5D,OAAI,CAAC,SAAS;AACZ,cAAU;AACV;;GAGF,MAAM,WAAW,IAAI,sBAClB,YAAY;AACX,QAAI,CAAC,QAAQ,GAAI,eAAgB;AACjC,aAAS,YAAY;AACrB,cAAU;MAEZ;IAAE;IAAY;IAAW,CAC1B;AACD,YAAS,QAAQ,QAAQ;AACzB,gBAAa,SAAS,YAAY;;EAEpC,IAAI;EACL"}
{"version":3,"file":"visible.js","names":[],"sources":["../../../src/hydration/visible.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\n\nimport { reactUse } from '@tanstack/react-router'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport type {\n HydrationPrefetchStrategy,\n VisibleHydrationOptions,\n} from '@tanstack/start-client-core/hydration'\nimport type {\n HydrateProps,\n InternalHydrateProps,\n ReactHydrationStrategy,\n} from '../Hydrate'\n\ntype VisibleGate = {\n p: Promise<void>\n r: boolean\n s: () => void\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nfunction HydrationBoundary(props: {\n g: VisibleGate\n o?: () => void\n children?: React.ReactNode\n}) {\n const { g, o } = props\n\n if (!g.r) {\n if (!reactUse) {\n throw g.p\n }\n\n reactUse(g.p)\n }\n\n React.useEffect(() => {\n o?.()\n }, [o])\n\n return props.children as React.JSX.Element\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function VisibleHydrate(\n this: ReactHydrationStrategy,\n props: HydrateProps,\n): React.JSX.Element {\n const strategy = this as ReactHydrationStrategy<'visible', true>\n const prefetchStrategy = props.prefetch\n const preload = (props as InternalHydrateProps).p\n const markerRef = React.useRef<HTMLDivElement | null>(null)\n const [gate] = React.useState<VisibleGate>(() => {\n let resolvePromise!: () => void\n const nextGate: VisibleGate = {\n p: new Promise<void>((resolve) => {\n resolvePromise = resolve\n }),\n r: false,\n s: () => {\n nextGate.r = true\n resolvePromise()\n },\n }\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n isServer ??\n typeof window === 'undefined'\n ) {\n nextGate.s()\n }\n\n return nextGate\n })\n\n React.useEffect(() => {\n if (!preload || typeof prefetchStrategy === 'function') {\n return\n }\n\n return prefetchStrategy?._s?.({\n element: markerRef.current,\n prefetch: preload,\n })\n }, [prefetchStrategy, preload])\n\n React.useEffect(() => {\n if (gate.r) return\n\n return strategy._s?.({\n element: markerRef.current,\n gate: gate as never,\n })\n }, [gate, strategy])\n\n return (\n <div ref={markerRef}>\n <React.Suspense fallback={props.fallback}>\n <HydrationBoundary g={gate} o={props.onHydrated}>\n {props.children}\n </HydrationBoundary>\n </React.Suspense>\n </div>\n )\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport function visible(\n options?: VisibleHydrationOptions,\n): ReactHydrationStrategy<'visible', true> &\n HydrationPrefetchStrategy<'visible'> {\n const rootMargin = options?.rootMargin ?? '600px'\n const threshold = options?.threshold ?? 0\n\n return {\n _s: ({ element, gate, prefetch }) => {\n const callback = prefetch || (gate as never as VisibleGate).s\n\n if (!element) {\n callback()\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0]!.isIntersecting) return\n observer.disconnect()\n callback()\n },\n { rootMargin, threshold },\n )\n observer.observe(element)\n return () => observer.disconnect()\n },\n _h: VisibleHydrate,\n }\n}\n"],"mappings":";;;;;;;AAuBA,SAAS,kBAAkB,OAIxB;CACD,MAAM,EAAE,GAAG,MAAM;CAEjB,IAAI,CAAC,EAAE,GAAG;EACR,IAAI,CAAC,UACH,MAAM,EAAE;EAGV,SAAS,EAAE,CAAC;CACd;CAEA,MAAM,gBAAgB;EACpB,IAAI;CACN,GAAG,CAAC,CAAC,CAAC;CAEN,OAAO,MAAM;AACf;;AAGA,SAAgB,eAEd,OACmB;CACnB,MAAM,WAAW;CACjB,MAAM,mBAAmB,MAAM;CAC/B,MAAM,UAAW,MAA+B;CAChD,MAAM,YAAY,MAAM,OAA8B,IAAI;CAC1D,MAAM,CAAC,QAAQ,MAAM,eAA4B;EAC/C,IAAI;EACJ,MAAM,WAAwB;GAC5B,GAAG,IAAI,SAAe,YAAY;IAChC,iBAAiB;GACnB,CAAC;GACD,GAAG;GACH,SAAS;IACP,SAAS,IAAI;IACb,eAAe;GACjB;EACF;EACA,IAEE,YACA,OAAO,WAAW,aAElB,SAAS,EAAE;EAGb,OAAO;CACT,CAAC;CAED,MAAM,gBAAgB;EACpB,IAAI,CAAC,WAAW,OAAO,qBAAqB,YAC1C;EAGF,OAAO,kBAAkB,KAAK;GAC5B,SAAS,UAAU;GACnB,UAAU;EACZ,CAAC;CACH,GAAG,CAAC,kBAAkB,OAAO,CAAC;CAE9B,MAAM,gBAAgB;EACpB,IAAI,KAAK,GAAG;EAEZ,OAAO,SAAS,KAAK;GACnB,SAAS,UAAU;GACb;EACR,CAAC;CACH,GAAG,CAAC,MAAM,QAAQ,CAAC;CAEnB,OACE,oBAAC,OAAD;EAAK,KAAK;YACR,oBAAC,MAAM,UAAP;GAAgB,UAAU,MAAM;aAC9B,oBAAC,mBAAD;IAAmB,GAAG;IAAM,GAAG,MAAM;cAClC,MAAM;GACU,CAAA;EACL,CAAA;CACb,CAAA;AAET;;AAGA,SAAgB,QACd,SAEqC;CACrC,MAAM,aAAa,SAAS,cAAc;CAC1C,MAAM,YAAY,SAAS,aAAa;CAExC,OAAO;EACL,KAAK,EAAE,SAAS,MAAM,eAAe;GACnC,MAAM,WAAW,YAAa,KAA8B;GAE5D,IAAI,CAAC,SAAS;IACZ,SAAS;IACT;GACF;GAEA,MAAM,WAAW,IAAI,sBAClB,YAAY;IACX,IAAI,CAAC,QAAQ,GAAI,gBAAgB;IACjC,SAAS,WAAW;IACpB,SAAS;GACX,GACA;IAAE;IAAY;GAAU,CAC1B;GACA,SAAS,QAAQ,OAAO;GACxB,aAAa,SAAS,WAAW;EACnC;EACA,IAAI;CACN;AACF"}

@@ -1,1 +0,1 @@

{"version":3,"file":"StartClient.js","names":[],"sources":["../../src/StartClient.tsx"],"sourcesContent":["import { Await, RouterProvider } from '@tanstack/react-router'\n\nimport { hydrateStart } from './hydrateStart'\n\nimport type { AnyRouter } from '@tanstack/router-core'\n\nlet hydrationPromise: Promise<AnyRouter> | undefined\nexport function StartClient() {\n if (!hydrationPromise) {\n hydrationPromise = hydrateStart()\n }\n\n return (\n <Await\n promise={hydrationPromise}\n children={(router) => <RouterProvider router={router} />}\n />\n )\n}\n"],"mappings":";;;;AAMA,IAAI;AACJ,SAAgB,cAAc;AAC5B,KAAI,CAAC,iBACH,oBAAmB,cAAc;AAGnC,QACE,oBAAC,OAAD;EACE,SAAS;EACT,WAAW,WAAW,oBAAC,gBAAD,EAAwB,QAAU,CAAA;EACxD,CAAA"}
{"version":3,"file":"StartClient.js","names":[],"sources":["../../src/StartClient.tsx"],"sourcesContent":["import { Await, RouterProvider } from '@tanstack/react-router'\n\nimport { hydrateStart } from './hydrateStart'\n\nimport type { AnyRouter } from '@tanstack/router-core'\n\nlet hydrationPromise: Promise<AnyRouter> | undefined\nexport function StartClient() {\n if (!hydrationPromise) {\n hydrationPromise = hydrateStart()\n }\n\n return (\n <Await\n promise={hydrationPromise}\n children={(router) => <RouterProvider router={router} />}\n />\n )\n}\n"],"mappings":";;;;AAMA,IAAI;AACJ,SAAgB,cAAc;CAC5B,IAAI,CAAC,kBACH,mBAAmB,aAAa;CAGlC,OACE,oBAAC,OAAD;EACE,SAAS;EACT,WAAW,WAAW,oBAAC,gBAAD,EAAwB,OAAS,CAAA;CACxD,CAAA;AAEL"}
{
"name": "@tanstack/react-start-client",
"version": "1.168.3",
"version": "1.168.4",
"description": "Modern and scalable routing for React applications",

@@ -54,3 +54,3 @@ "author": "Tanner Linsley",

"@tanstack/router-core": "1.171.6",
"@tanstack/start-client-core": "1.170.3"
"@tanstack/start-client-core": "1.170.4"
},

@@ -57,0 +57,0 @@ "devDependencies": {