UNPKG

one

Version:

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

216 lines (214 loc) 10.4 kB
"use strict"; 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: !0 }); }, __copyProps = (to, from, except, desc) => { if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__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: !0 }), mod); var common_exports = {}; __export(common_exports, { ViewSlot: () => ViewSlot, stateToAction: () => stateToAction, triggersToScreens: () => triggersToScreens }); module.exports = __toCommonJS(common_exports); var import_jsx_runtime = require("react/jsx-runtime"), import_href = require("../link/href.native.js"), import_sortRoutes = require("../router/sortRoutes.native.js"), import_Slot = require("./Slot.native.js"), import_useScreens = require("../router/useScreens.native.js"), ViewSlot = import_Slot.Slot; function resolveHrefWithSegments(href, routeInfo, segmentsWithoutGroups) { if (href.startsWith("./") || href.startsWith("../")) { var basePath = "/" + segmentsWithoutGroups.join("/"), baseDir = basePath.replace(/\/[^/]*$/, "") || "/", parts = (baseDir + "/" + href).split("/"), resolved = [], _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _iterator = parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) { var part = _step.value; part === "." || part === "" || (part === ".." ? resolved.pop() : resolved.push(part)); } } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } return "/" + resolved.join("/"); } return href; } function triggersToScreens(triggers, layoutRouteNode, linking, initialRouteName, parentTriggerMap, routeInfo, contextKey) { var configs = [], _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0; try { for (var _loop = function () { var trigger = _step.value, _linking_getStateFromPath, _linking_getStateFromPath1, _state_state; if (trigger.name in parentTriggerMap) { var parentTrigger = parentTriggerMap[trigger.name]; throw new Error(`Trigger ${JSON.stringify({ name: trigger.name, href: trigger.href })} has the same name as parent trigger ${JSON.stringify({ name: parentTrigger.name, href: parentTrigger.href })}. Triggers must have unique names.`); } if (trigger.type === "external") return configs.push(trigger), "continue"; var resolvedHref = (0, import_href.resolveHref)(trigger.href); if (resolvedHref.startsWith("../")) throw new Error("Trigger href cannot link to a parent directory"); var segmentsWithoutGroups = contextKey.split("/").filter(function (segment) { return !(segment.startsWith("(") && segment.endsWith(")")); }); resolvedHref = resolveHrefWithSegments(resolvedHref, routeInfo, segmentsWithoutGroups); var state = (_linking_getStateFromPath1 = linking.getStateFromPath) === null || _linking_getStateFromPath1 === void 0 || (_linking_getStateFromPath = _linking_getStateFromPath1.call(linking, resolvedHref, linking.config)) === null || _linking_getStateFromPath === void 0 ? void 0 : _linking_getStateFromPath.routes[0]; if (!state) return console.warn(`Unable to find screen for trigger ${JSON.stringify(trigger)}. Does this point to a valid screen?`), "continue"; var routeState = state; if (routeState.name === "+not-found") return process.env.NODE_ENV !== "production" && console.warn(`Tab trigger '${trigger.name}' has the href '${trigger.href}' which points to a +not-found route.`), "continue"; for (var targetStateName = layoutRouteNode.route || "__root"; state?.state && state.name !== targetStateName;) { var _state_state_index; state = state.state.routes[(_state_state_index = state.state.index) !== null && _state_state_index !== void 0 ? _state_state_index : state.state.routes.length - 1]; } var _state_state_index1; routeState = ((_state_state = state.state) === null || _state_state === void 0 ? void 0 : _state_state.routes[(_state_state_index1 = state.state.index) !== null && _state_state_index1 !== void 0 ? _state_state_index1 : state.state.routes.length - 1]) || state; var routeNode = layoutRouteNode.children.find(function (child) { return child.route === routeState?.name; }); if (!routeNode) return console.warn(`Unable to find routeNode for trigger ${JSON.stringify(trigger)}. This might be a bug in One router`), "continue"; var duplicateTrigger = trigger.type === "internal" && configs.find(function (config) { return config.type === "external" ? !1 : config.routeNode.route === routeNode.route; }); if (duplicateTrigger) { var duplicateTriggerText = `${JSON.stringify({ name: duplicateTrigger.name, href: duplicateTrigger.href })} and ${JSON.stringify({ name: trigger.name, href: trigger.href })}`; throw new Error(`A navigator cannot contain multiple trigger components that map to the same sub-segment. Consider adding a shared group and assigning a group to each trigger. Conflicting triggers: ${duplicateTriggerText}. Both triggers map to route ${routeNode.route}.`); } configs.push({ ...trigger, href: resolvedHref, routeNode, action: stateToAction(state, layoutRouteNode.route) }); }, _iterator = triggers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) _loop(); } catch (err) { _didIteratorError = !0, _iteratorError = err; } finally { try { !_iteratorNormalCompletion && _iterator.return != null && _iterator.return(); } finally { if (_didIteratorError) throw _iteratorError; } } var sortFn = (0, import_sortRoutes.sortRoutesWithInitial)(initialRouteName), sortedConfigs = configs.sort(function (a, b) { return a.type === "external" && b.type === "external" ? 0 : a.type === "external" ? 1 : b.type === "external" ? -1 : sortFn(a.routeNode, b.routeNode); }), children = [], triggerMap = { ...parentTriggerMap }, _iteratorNormalCompletion1 = !0, _didIteratorError1 = !1, _iteratorError1 = void 0; try { for (var _loop1 = function () { var [index, config] = _step1.value; if (triggerMap[config.name] = { ...config, index }, config.type === "internal") { var route = config.routeNode; children.push(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_useScreens.Screen, { getId: (0, import_useScreens.createGetIdForRoute)(route), name: route.route, options: function (args) { var _route_loadRoute, staticOptions = route.generated ? (_route_loadRoute = route.loadRoute()) === null || _route_loadRoute === void 0 ? void 0 : _route_loadRoute.getNavOptions : null, staticResult = typeof staticOptions == "function" ? staticOptions(args) : staticOptions, output = { ...staticResult }; return route.generated && (output.tabBarButton = function () { return null; }, output.drawerItemStyle = { height: 0, display: "none" }), output; }, getComponent: function () { return (0, import_useScreens.getQualifiedRouteComponent)(route); } }, route.route)); } }, _iterator1 = sortedConfigs.entries()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) _loop1(); } catch (err) { _didIteratorError1 = !0, _iteratorError1 = err; } finally { try { !_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return(); } finally { if (_didIteratorError1) throw _iteratorError1; } } return { children, triggerMap }; } function stateToAction(state, startAtRoute) { var rootPayload = {}, payload = rootPayload; startAtRoute = startAtRoute === "" ? "__root" : startAtRoute; for (var foundStartingPoint = startAtRoute === void 0 || !state?.state; state;) if (foundStartingPoint) { var _state_state, _state_state1; if (payload === rootPayload ? payload.name = state.name : payload.screen = state.name, payload.params = state.params ? { ...state.params } : {}, state = (_state_state1 = state.state) === null || _state_state1 === void 0 ? void 0 : _state_state1.routes[((_state_state = state.state) === null || _state_state === void 0 ? void 0 : _state_state.routes.length) - 1], state) { var _payload, _params; (_params = (_payload = payload).params) !== null && _params !== void 0 || (_payload.params = {}), payload = payload.params; } } else { var _state_state2, _state_state3; state.name === startAtRoute && (foundStartingPoint = !0); var nextState = (_state_state3 = state.state) === null || _state_state3 === void 0 ? void 0 : _state_state3.routes[((_state_state2 = state.state) === null || _state_state2 === void 0 ? void 0 : _state_state2.routes.length) - 1]; nextState && (state = nextState); } return { type: "JUMP_TO", payload: rootPayload }; } //# sourceMappingURL=common.native.js.map