UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 4.24 kB
{"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"}