{"version":3,"file":"hooks.js","names":[],"sources":["esm/hooks.js"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\nimport { isNative } from \"./constants\";\nimport { router } from \"./router/imperative-api\";\nimport { RouteParamsContext, useRouteNode } from \"./router/Route\";\nimport { mergeDynamicParams } from \"./router/params\";\nimport {\n  getPathnameWithRecoveredDynamicSegment,\n  normalizeRoutePathname\n} from \"./router/path\";\nimport { RouteInfoContext } from \"./router/RouteInfoContext\";\nimport { navigationRef, useStoreRootState, useStoreRouteInfo } from \"./router/router\";\nimport { getServerContext } from \"./vite/one-server-only\";\nfunction useRootNavigationState() {\n  return useStoreRootState();\n}\nfunction useRouteInfo() {\n  const routeInfoFromContext = useContext(RouteInfoContext);\n  const routeInfoFromRootState = useStoreRouteInfo();\n  const routeNode = useRouteNode();\n  if (routeNode?.type === \"layout\") {\n    return routeInfoFromRootState;\n  }\n  return routeInfoFromContext || routeInfoFromRootState;\n}\nfunction useNavigationContainerRef() {\n  return navigationRef;\n}\nconst FrozeContext = createContext(false);\nfunction useRouter() {\n  return router;\n}\nfunction useUnstableGlobalHref() {\n  return useRouteInfo().unstable_globalHref;\n}\nfunction useSegments() {\n  return useRouteInfo().segments;\n}\nfunction usePathname() {\n  const routeInfoPathname = useRouteInfo().pathname;\n  if (import.meta.env.SSR) {\n    try {\n      const ctx = getServerContext();\n      if (ctx?.loaderProps?.path) {\n        return normalizeRoutePathname(ctx.loaderProps.path);\n      }\n    } catch {\n    }\n  }\n  return getPathnameWithRecoveredDynamicSegment(routeInfoPathname);\n}\nfunction useActiveParams() {\n  return useRouteInfo().params;\n}\nconst useLocalSearchParams = useParams;\nconst useGlobalSearchParams = useActiveParams;\nfunction useParams() {\n  const contextParams = React.useContext(RouteParamsContext) ?? {};\n  const routeNode = useRouteNode();\n  const routeInfoParams = useRouteInfo().params;\n  const params = React.useMemo(\n    () => isNative ? contextParams : mergeDynamicParams(contextParams, routeNode?.dynamic, routeInfoParams),\n    [contextParams, routeInfoParams, routeNode]\n  );\n  return React.useMemo(() => {\n    return Object.fromEntries(\n      Object.entries(params).filter(([_, value]) => value !== void 0).map(([key, value]) => {\n        if (Array.isArray(value)) {\n          return [\n            key,\n            value.map((v) => {\n              try {\n                return decodeURIComponent(v);\n              } catch {\n                return v;\n              }\n            })\n          ];\n        }\n        try {\n          return [key, decodeURIComponent(value)];\n        } catch {\n          return [key, value];\n        }\n      })\n    );\n  }, [params]);\n}\nclass ReadOnlyURLSearchParams extends URLSearchParams {\n  set(_name, _value) {\n    throw new Error(\"useSearchParams returns a read-only URLSearchParams object\");\n  }\n  append(_name, _value) {\n    throw new Error(\"useSearchParams returns a read-only URLSearchParams object\");\n  }\n  delete(_name, _value) {\n    throw new Error(\"useSearchParams returns a read-only URLSearchParams object\");\n  }\n}\nfunction useSearchParams({ global = false } = {}) {\n  const globalRef = React.useRef(global);\n  if (process.env.NODE_ENV !== \"production\") {\n    if (global !== globalRef.current) {\n      console.warn(\"useSearchParams: the 'global' option cannot change between renders\");\n    }\n  }\n  const params = global ? useActiveParams() : useParams();\n  return React.useMemo(() => {\n    const entries = Object.entries(params).flatMap(([key, value]) => {\n      if (value === void 0) return [];\n      return Array.isArray(value) ? value.map((v) => [key, String(v)]) : [[key, String(value)]];\n    });\n    return new ReadOnlyURLSearchParams(entries);\n  }, [params]);\n}\nexport {\n  FrozeContext,\n  useActiveParams,\n  useGlobalSearchParams,\n  useLocalSearchParams,\n  useNavigationContainerRef,\n  useParams,\n  usePathname,\n  useRootNavigationState,\n  useRouteInfo,\n  useRouter,\n  useSearchParams,\n  useSegments,\n  useUnstableGlobalHref\n};\n//# sourceMappingURL=hooks.js.map\n"],"mappings":"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"}