UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

33 lines (32 loc) 1.83 kB
import { nanoid } from "nanoid/non-secure"; import { setLastAction } from "../lastAction"; import { matchDynamicName } from "../matchers"; function getNavigateAction(actionState, navigationState, type = "NAVIGATE") { let actionStateRoute; for (; actionState && navigationState; ) { const stateRoute = navigationState.routes[navigationState.index]; actionStateRoute = actionState.routes[actionState.routes.length - 1]; const childState = actionStateRoute.state, nextNavigationState = stateRoute.state, dynamicMatch = matchDynamicName(actionStateRoute.name); if (actionStateRoute.name !== stateRoute.name || // !deepEqual(actionStateRoute.params, stateRoute.params) || !childState || !nextNavigationState || dynamicMatch && actionStateRoute.params?.[dynamicMatch.name] !== stateRoute.params?.[dynamicMatch.name]) break; actionState = childState, navigationState = nextNavigationState; } const rootPayload = { params: {} }; let payload = rootPayload, params = payload.params; for (; actionStateRoute; ) Object.assign(params, { ...actionStateRoute.params }), payload.screen = actionStateRoute.name, payload.params = { ...actionStateRoute.params }, actionStateRoute = actionStateRoute.state?.routes[actionStateRoute.state?.routes.length - 1], payload.params ??= {}, payload = payload.params, params = payload; return type === "PUSH" && (setLastAction(), type = "NAVIGATE", navigationState.type === "stack" && (rootPayload.key = `${rootPayload.name}-${nanoid()}`)), type === "REPLACE" && navigationState.type === "tab" && (type = "JUMP_TO"), { type, target: navigationState.key, payload: { key: rootPayload.key, name: rootPayload.screen, params: rootPayload.params } }; } export { getNavigateAction }; //# sourceMappingURL=getNavigateAction.js.map