one
Version:
One is a new React Framework that makes Vite serve both native and web.
85 lines • 3.03 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
value: true
}), mod);
var getNavigateAction_exports = {};
__export(getNavigateAction_exports, {
getNavigateAction: () => getNavigateAction
});
module.exports = __toCommonJS(getNavigateAction_exports);
var import_non_secure = require("nanoid/non-secure");
var import_lastAction = require("../lastAction.cjs");
var import_matchers = require("../matchers.cjs");
function getNavigateAction(actionState, navigationState, type = "NAVIGATE") {
let actionStateRoute;
while (actionState && navigationState) {
const stateRoute = navigationState.routes[navigationState.index];
actionStateRoute = actionState.routes[actionState.routes.length - 1];
const childState = actionStateRoute.state;
const nextNavigationState = stateRoute.state;
const dynamicMatch = (0, import_matchers.matchDynamicName)(actionStateRoute.name);
const didActionAndCurrentStateDiverge = actionStateRoute.name !== stateRoute.name ||
// !deepEqual(actionStateRoute.params, stateRoute.params) ||
!childState || !nextNavigationState || dynamicMatch && actionStateRoute.params?.[dynamicMatch.name] !== stateRoute.params?.[dynamicMatch.name];
if (didActionAndCurrentStateDiverge) {
break;
}
actionState = childState;
navigationState = nextNavigationState;
}
const rootPayload = {
params: {}
};
let payload = rootPayload;
let params = payload.params;
while (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;
}
if (type === "PUSH") {
(0, import_lastAction.setLastAction)();
type = "NAVIGATE";
if (navigationState.type === "stack") {
rootPayload.key = `${rootPayload.name}-${(0, import_non_secure.nanoid)()}`;
}
}
if (type === "REPLACE" && navigationState.type === "tab") {
type = "JUMP_TO";
}
return {
type,
target: navigationState.key,
payload: {
key: rootPayload.key,
name: rootPayload.screen,
params: rootPayload.params
}
};
}