{"version":3,"file":"Route.js","names":[],"sources":["esm/router/Route.js"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\nimport { isNative } from \"../constants\";\nimport { findFocusedRoute } from \"../fork/findFocusedRoute\";\nimport { getResolvedLinking } from \"./linkingConfig\";\nimport { getContextKey } from \"./matchers\";\nimport { mergeDynamicParams } from \"./params\";\nimport { getPathWithRecoveredDynamicSegment } from \"./path\";\nimport { routeInfo } from \"./router\";\nimport { RouteInfoContextProvider } from \"./RouteInfoContext\";\nimport { jsx } from \"react/jsx-runtime\";\nconst RouteParamsContext = createContext({});\nconst CurrentRouteContext = React.createContext([]);\nconst SuspenseFallbackContext = createContext(void 0);\nif (process.env.NODE_ENV !== \"production\") {\n  CurrentRouteContext.displayName = \"RouteNode\";\n  SuspenseFallbackContext.displayName = \"SuspenseFallback\";\n}\nfunction useRouteNode() {\n  const nodes = useContext(CurrentRouteContext);\n  return nodes[nodes.length - 1] ?? null;\n}\nfunction useRouteNodes() {\n  return useContext(CurrentRouteContext);\n}\nfunction useContextKey() {\n  const node = useRouteNode();\n  if (node == null) {\n    throw new Error(\"No filename found. This is likely a bug in router.\");\n  }\n  return getContextKey(node.contextKey);\n}\nfunction getParamsFromCurrentUrl(route) {\n  const linking = getResolvedLinking();\n  if (!linking?.getStateFromPath) return void 0;\n  const path = getPathWithRecoveredDynamicSegment([\n    routeInfo?.unstable_globalHref,\n    route?.path\n  ]);\n  if (!path) return void 0;\n  const state = linking.getStateFromPath(path, linking.config);\n  if (!state) return void 0;\n  const focused = findFocusedRoute(state);\n  return focused?.params;\n}\nfunction Route({\n  children,\n  node,\n  route\n}) {\n  const parentParams = useContext(RouteParamsContext);\n  const parentRouteNodes = useContext(CurrentRouteContext);\n  const routeNodes = React.useMemo(\n    () => [...parentRouteNodes, node],\n    [node, parentRouteNodes]\n  );\n  const resolvedParams = React.useMemo(() => {\n    const rp = route?.params;\n    const ownParams = !isNative && node.dynamic?.length ? mergeDynamicParams(rp, node.dynamic, getParamsFromCurrentUrl(route)) : rp;\n    if (!parentParams) return ownParams;\n    if (!ownParams) return parentParams;\n    return { ...parentParams, ...ownParams };\n  }, [node, parentParams, route, routeInfo?.unstable_globalHref]);\n  return /* @__PURE__ */ jsx(RouteParamsContext.Provider, { value: resolvedParams, children: /* @__PURE__ */ jsx(CurrentRouteContext.Provider, { value: routeNodes, children: /* @__PURE__ */ jsx(RouteInfoContextProvider, { children }) }) });\n}\nexport {\n  Route,\n  RouteParamsContext,\n  SuspenseFallbackContext,\n  useContextKey,\n  useRouteNode,\n  useRouteNodes\n};\n//# sourceMappingURL=Route.js.map\n"],"mappings":";;;;;;;;;;;;AAUA,MAAM,qBAAqB,cAAc,CAAC,CAAC;AAC3C,MAAM,sBAAsB,MAAM,cAAc,CAAC,CAAC;AAClD,MAAM,0BAA0B,cAAc,KAAK,CAAC;AACpD,IAAI,QAAQ,IAAI,aAAa,cAAc;CACzC,oBAAoB,cAAc;CAClC,wBAAwB,cAAc;AACxC;AACA,SAAS,eAAe;CACtB,MAAM,QAAQ,WAAW,mBAAmB;CAC5C,OAAO,MAAM,MAAM,SAAS,MAAM;AACpC;AACA,SAAS,gBAAgB;CACvB,OAAO,WAAW,mBAAmB;AACvC;AACA,SAAS,gBAAgB;CACvB,MAAM,OAAO,aAAa;CAC1B,IAAI,QAAQ,MAAM;EAChB,MAAM,IAAI,MAAM,oDAAoD;CACtE;CACA,OAAO,cAAc,KAAK,UAAU;AACtC;AACA,SAAS,wBAAwB,OAAO;CACtC,MAAM,UAAU,mBAAmB;CACnC,IAAI,CAAC,SAAS,kBAAkB,OAAO,KAAK;CAC5C,MAAM,OAAO,mCAAmC,CAC9C,WAAW,qBACX,OAAO,IACT,CAAC;CACD,IAAI,CAAC,MAAM,OAAO,KAAK;CACvB,MAAM,QAAQ,QAAQ,iBAAiB,MAAM,QAAQ,MAAM;CAC3D,IAAI,CAAC,OAAO,OAAO,KAAK;CACxB,MAAM,UAAU,iBAAiB,KAAK;CACtC,OAAO,SAAS;AAClB;AACA,SAAS,MAAM,EACb,UACA,MACA,SACC;CACD,MAAM,eAAe,WAAW,kBAAkB;CAClD,MAAM,mBAAmB,WAAW,mBAAmB;CACvD,MAAM,aAAa,MAAM,cACjB,CAAC,GAAG,kBAAkB,IAAI,GAChC,CAAC,MAAM,gBAAgB,CACzB;CACA,MAAM,iBAAiB,MAAM,cAAc;EACzC,MAAM,KAAK,OAAO;EAClB,MAAM,YAAY,CAAC,YAAY,KAAK,SAAS,SAAS,mBAAmB,IAAI,KAAK,SAAS,wBAAwB,KAAK,CAAC,IAAI;EAC7H,IAAI,CAAC,cAAc,OAAO;EAC1B,IAAI,CAAC,WAAW,OAAO;EACvB,OAAO;GAAE,GAAG;GAAc,GAAG;EAAU;CACzC,GAAG;EAAC;EAAM;EAAc;EAAO,WAAW;CAAmB,CAAC;CAC9D,OAAuB,oBAAI,mBAAmB,UAAU;EAAE,OAAO;EAAgB,UAA0B,oBAAI,oBAAoB,UAAU;GAAE,OAAO;GAAY,UAA0B,oBAAI,0BAA0B,EAAE,SAAS,CAAC;EAAE,CAAC;CAAE,CAAC;AAC9O"}