UNPKG

one

Version:

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

1 lines • 6.46 kB
{"version":3,"file":"findRouteNode.js","names":[],"sources":["esm/router/findRouteNode.js"],"sourcesContent":["import { getReactNavigationRouteName } from \"../getReactNavigationConfig\";\nfunction findRouteNodeFromState(state, rootNode) {\n if (!state || !state.routes || !rootNode) {\n return null;\n }\n const currentRoute = state.routes[state.index ?? state.routes.length - 1];\n if (!currentRoute) {\n return null;\n }\n const matchingNode = findNodeByRouteName(rootNode, currentRoute.name);\n if (!matchingNode) {\n return null;\n }\n if (currentRoute.state && currentRoute.state.routes) {\n const nestedResult = findRouteNodeFromState(currentRoute.state, matchingNode);\n if (nestedResult) {\n return nestedResult;\n }\n }\n return matchingNode;\n}\nfunction findNodeByRouteName(node, routeName) {\n if (getReactNavigationRouteName(node) === routeName) {\n return node;\n }\n for (const child of node.children) {\n const found = findNodeByRouteName(child, routeName);\n if (found) {\n return found;\n }\n }\n return null;\n}\nfunction extractParamsFromState(state) {\n if (!state || !state.routes) {\n return {};\n }\n const params = {};\n const route = state.routes[state.index ?? state.routes.length - 1];\n if (route?.params) {\n Object.assign(params, route.params);\n }\n if (route?.state) {\n Object.assign(params, extractParamsFromState(route.state));\n }\n return params;\n}\nfunction extractSearchFromHref(href) {\n const searchIndex = href.indexOf(\"?\");\n if (searchIndex === -1) {\n return {};\n }\n const searchString = href.slice(searchIndex + 1);\n const params = {};\n const searchParams = new URLSearchParams(searchString);\n searchParams.forEach((value, key) => {\n const existing = params[key];\n if (existing === void 0) {\n params[key] = value;\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n params[key] = [existing, value];\n }\n });\n return params;\n}\nfunction extractPathnameFromHref(href) {\n const searchIndex = href.indexOf(\"?\");\n const hashIndex = href.indexOf(\"#\");\n let endIndex = href.length;\n if (searchIndex !== -1) endIndex = Math.min(endIndex, searchIndex);\n if (hashIndex !== -1) endIndex = Math.min(endIndex, hashIndex);\n return href.slice(0, endIndex);\n}\nfunction findAllRouteNodesFromState(state, rootNode) {\n if (!state || !state.routes || !rootNode) {\n return [];\n }\n const nodes = [];\n function collectNodes(currentState, parentNode) {\n if (!currentState || !currentState.routes || !parentNode) {\n return;\n }\n const currentRoute = currentState.routes[currentState.index ?? currentState.routes.length - 1];\n if (!currentRoute) {\n return;\n }\n const matchingNode = findNodeByRouteName(parentNode, currentRoute.name);\n if (!matchingNode) {\n if (process.env.NODE_ENV === \"development\") {\n console.log(\n \"[one] findAllRouteNodesFromState: could not find node for\",\n currentRoute.name,\n \"in\",\n parentNode.route\n );\n }\n return;\n }\n nodes.push(matchingNode);\n if (currentRoute.state && currentRoute.state.routes) {\n collectNodes(currentRoute.state, matchingNode);\n } else if (currentRoute.params?.screen) {\n const childRouteName = currentRoute.params.screen;\n const childNode = matchingNode.children.find((c) => c.route === childRouteName);\n if (childNode) {\n nodes.push(childNode);\n if (currentRoute.params.params && currentRoute.params.params.screen) {\n collectNodes(\n { routes: [{ name: childRouteName, params: currentRoute.params.params }] },\n childNode\n );\n }\n }\n }\n }\n collectNodes(state, rootNode);\n return nodes;\n}\nexport {\n extractParamsFromState,\n extractPathnameFromHref,\n extractSearchFromHref,\n findAllRouteNodesFromState,\n findRouteNodeFromState\n};\n//# sourceMappingURL=findRouteNode.js.map\n"],"mappings":"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"}