one 2.9.0 → 2.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli/build.cjs +8 -10
- package/dist/cjs/cli/build.native.cjs +27 -29
- package/dist/cjs/cli/build.native.js +27 -29
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/buildPage.cjs +2 -11
- package/dist/cjs/cli/buildPage.native.cjs +11 -39
- package/dist/cjs/cli/buildPage.native.js +11 -39
- package/dist/cjs/cli/buildPage.native.js.map +1 -1
- package/dist/cjs/createApp.cjs +2 -5
- package/dist/cjs/platform/ui/Pager.cjs +2 -1
- package/dist/cjs/platform/ui/Pager.native.cjs +3 -0
- package/dist/cjs/platform/ui/Pager.native.js +3 -0
- package/dist/cjs/platform/ui/Pager.native.js.map +1 -1
- package/dist/cjs/router/router.cjs +2 -1
- package/dist/cjs/router/router.native.cjs +5 -2
- package/dist/cjs/router/router.native.js +5 -2
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/router/utils/getNativeStackReplaceAction.cjs +54 -0
- package/dist/cjs/router/utils/getNativeStackReplaceAction.native.cjs +58 -0
- package/dist/cjs/router/utils/getNativeStackReplaceAction.native.js +60 -0
- package/dist/cjs/router/utils/getNativeStackReplaceAction.native.js.map +1 -0
- package/dist/esm/cli/build.mjs +8 -10
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +27 -29
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/buildPage.mjs +2 -11
- package/dist/esm/cli/buildPage.mjs.map +1 -1
- package/dist/esm/cli/buildPage.native.js +11 -39
- package/dist/esm/cli/buildPage.native.js.map +1 -1
- package/dist/esm/createApp.mjs +2 -5
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/platform/ui/Pager.mjs +2 -1
- package/dist/esm/platform/ui/Pager.mjs.map +1 -1
- package/dist/esm/platform/ui/Pager.native.js +3 -0
- package/dist/esm/platform/ui/Pager.native.js.map +1 -1
- package/dist/esm/router/router.mjs +1 -1
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +5 -2
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/router/utils/getNativeStackReplaceAction.mjs +35 -0
- package/dist/esm/router/utils/getNativeStackReplaceAction.mjs.map +1 -0
- package/dist/esm/router/utils/getNativeStackReplaceAction.native.js +37 -0
- package/dist/esm/router/utils/getNativeStackReplaceAction.native.js.map +1 -0
- package/package.json +18 -17
- package/src/cli/build.ts +9 -11
- package/src/cli/buildPage.ts +11 -22
- package/src/cli/workerPool.test.ts +1 -1
- package/src/cli/workerPool.ts +1 -1
- package/src/createApp.tsx +4 -2
- package/src/layouts/stack-utils/StackScreen.tsx +15 -5
- package/src/platform/ui/Pager.native.tsx +3 -0
- package/src/platform/ui/Pager.tsx +1 -0
- package/src/platform/ui/pagerTypes.ts +6 -1
- package/src/router/router.ts +9 -2
- package/src/router/utils/getNativeStackReplaceAction.ts +55 -0
- package/src/types.ts +1 -1
- package/src/vite/types.ts +2 -2
- package/types/cli/build.d.ts.map +1 -1
- package/types/cli/buildPage.d.ts +1 -1
- package/types/cli/buildPage.d.ts.map +1 -1
- package/types/cli/workerPool.d.ts +1 -1
- package/types/cli/workerPool.d.ts.map +1 -1
- package/types/createApp.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackScreen.d.ts +4 -5
- package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
- package/types/platform/ui/Pager.d.ts.map +1 -1
- package/types/platform/ui/Pager.native.d.ts.map +1 -1
- package/types/platform/ui/pagerTypes.d.ts +6 -1
- package/types/platform/ui/pagerTypes.d.ts.map +1 -1
- package/types/router/router.d.ts.map +1 -1
- package/types/router/utils/getNativeStackReplaceAction.d.ts +12 -0
- package/types/router/utils/getNativeStackReplaceAction.d.ts.map +1 -0
- package/types/types.d.ts +1 -1
- package/types/types.d.ts.map +1 -1
- package/types/vite/types.d.ts +1 -1
- package/types/vite/types.d.ts.map +1 -1
|
@@ -61,40 +61,12 @@ async function buildPage(serverEntry, routerRoot, path, relativeId, params, foun
|
|
|
61
61
|
var loaderData = {};
|
|
62
62
|
try {
|
|
63
63
|
var _foundRoute_layouts;
|
|
64
|
-
var routeImports = [];
|
|
65
|
-
var routeRegistrations = [];
|
|
66
|
-
var routeIndex = 0;
|
|
67
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
68
|
-
try {
|
|
69
|
-
for (var _iterator = Object.entries(routePreloads)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
70
|
-
var [routeKey, bundlePath] = _step.value;
|
|
71
|
-
var varName = `_r${routeIndex++}`;
|
|
72
|
-
routeImports.push(`import * as ${varName} from "${bundlePath}"`);
|
|
73
|
-
routeRegistrations.push(`registerPreloadedRoute("${routeKey}", ${varName})`);
|
|
74
|
-
}
|
|
75
|
-
} catch (err) {
|
|
76
|
-
_didIteratorError = true;
|
|
77
|
-
_iteratorError = err;
|
|
78
|
-
} finally {
|
|
79
|
-
try {
|
|
80
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
81
|
-
_iterator.return();
|
|
82
|
-
}
|
|
83
|
-
} finally {
|
|
84
|
-
if (_didIteratorError) {
|
|
85
|
-
throw _iteratorError;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
var registrationCalls = routeRegistrations.map(function(call) {
|
|
90
|
-
return call.replace("registerPreloadedRoute(", "window.__oneRegisterPreloadedRoute(");
|
|
91
|
-
});
|
|
92
64
|
var preloadContent = [
|
|
93
|
-
...routeImports,
|
|
94
65
|
...preloads.map(function(preload) {
|
|
95
66
|
return `import "${preload}"`;
|
|
96
67
|
}),
|
|
97
|
-
|
|
68
|
+
`const routes = globalThis.__importMetaGlobbed`,
|
|
69
|
+
`await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`
|
|
98
70
|
].join("\n");
|
|
99
71
|
t0 = performance.now();
|
|
100
72
|
await FSExtra.writeFile(join(clientDir, urlPathToFilePath(preloadPath)), preloadContent);
|
|
@@ -194,10 +166,10 @@ prefetchCSS()
|
|
|
194
166
|
};
|
|
195
167
|
}
|
|
196
168
|
}));
|
|
197
|
-
var
|
|
169
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
198
170
|
try {
|
|
199
|
-
for (var
|
|
200
|
-
var result =
|
|
171
|
+
for (var _iterator = layoutResults[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
172
|
+
var result = _step.value;
|
|
201
173
|
matches.push({
|
|
202
174
|
routeId: result.contextKey,
|
|
203
175
|
pathname: path,
|
|
@@ -206,16 +178,16 @@ prefetchCSS()
|
|
|
206
178
|
});
|
|
207
179
|
}
|
|
208
180
|
} catch (err) {
|
|
209
|
-
|
|
210
|
-
|
|
181
|
+
_didIteratorError = true;
|
|
182
|
+
_iteratorError = err;
|
|
211
183
|
} finally {
|
|
212
184
|
try {
|
|
213
|
-
if (!
|
|
214
|
-
|
|
185
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
186
|
+
_iterator.return();
|
|
215
187
|
}
|
|
216
188
|
} finally {
|
|
217
|
-
if (
|
|
218
|
-
throw
|
|
189
|
+
if (_didIteratorError) {
|
|
190
|
+
throw _iteratorError;
|
|
219
191
|
}
|
|
220
192
|
}
|
|
221
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPage.native.js","names":[],"sources":["esm/cli/buildPage.native.js"],"sourcesContent":["import { join } from \"path\";\nimport FSExtra from \"fs-extra\";\nimport { normalizePath } from \"vite\";\nimport * as constants from \"../constants\";\nimport { NATIVE_LOADER_JS_POSTFIX_UNCACHED } from \"../constants\";\nimport { encodeReservedFilenameChars, getLoaderPath, getPreloadCSSPath, getPreloadPath } from \"../utils/cleanUrl\";\nimport { isResponse } from \"../utils/isResponse\";\nimport { toAbsolute, toAbsoluteUrl } from \"../utils/toAbsolute\";\nimport { getRouteExports } from \"./serverRouteModules\";\nvar { outputFile } = FSExtra;\nfunction urlPathToFilePath(urlPath) {\n var parts = urlPath.replace(/^\\//, \"\").split(\"/\");\n return join(...parts);\n}\nvar buildTiming = process.env.ONE_BUILD_TIMING === \"1\";\nvar timings = {};\nfunction recordTiming(label, ms) {\n var _timings, _label;\n if (!buildTiming) return;\n ((_timings = timings)[_label = label] || (_timings[_label] = [])).push(ms);\n}\nfunction printBuildTimings() {\n if (!buildTiming) return;\n console.info(\"\\n\\u{1F4CA} Build timing breakdown:\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(timings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [label, times] = _step.value;\n var total = times.reduce(function(a, b) {\n return a + b;\n }, 0);\n var avg = total / times.length;\n console.info(` ${label}: ${avg.toFixed(1)}ms avg, ${total.toFixed(0)}ms total (${times.length} calls)`);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nasync function buildPage(serverEntry, routerRoot, path, relativeId, params, foundRoute, clientManifestEntry, staticDir, clientDir, builtMiddlewares, serverJsPath, preloads, allCSS, layoutCSS, routePreloads, allCSSContents, criticalPreloads, deferredPreloads, useAfterLCP, useAfterLCPAggressive) {\n var t0 = performance.now();\n var render = await getRender(serverEntry);\n recordTiming(\"getRender\", performance.now() - t0);\n var htmlPath = encodeReservedFilenameChars(`${path.endsWith(\"/\") ? `${removeTrailingSlash(path)}/index` : path}.html`);\n var clientJsPath = clientManifestEntry ? normalizePath(join(clientDir, clientManifestEntry.file)) : \"\";\n var htmlOutPath = toAbsolute(join(staticDir, htmlPath));\n var preloadPath = getPreloadPath(path);\n var cssPreloadPath = getPreloadCSSPath(path);\n var loaderPath = \"\";\n var loaderData = {};\n try {\n var _foundRoute_layouts;\n var routeImports = [];\n var routeRegistrations = [];\n var routeIndex = 0;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(routePreloads)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [routeKey, bundlePath] = _step.value;\n var varName = `_r${routeIndex++}`;\n routeImports.push(`import * as ${varName} from \"${bundlePath}\"`);\n routeRegistrations.push(`registerPreloadedRoute(\"${routeKey}\", ${varName})`);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var registrationCalls = routeRegistrations.map(function(call) {\n return call.replace(\"registerPreloadedRoute(\", \"window.__oneRegisterPreloadedRoute(\");\n });\n var preloadContent = [\n // import all route modules\n ...routeImports,\n // static imports for cache warming (original behavior)\n ...preloads.map(function(preload) {\n return `import \"${preload}\"`;\n }),\n // register all route modules using window global\n ...registrationCalls\n ].join(\"\\n\");\n t0 = performance.now();\n await FSExtra.writeFile(join(clientDir, urlPathToFilePath(preloadPath)), preloadContent);\n recordTiming(\"writePreload\", performance.now() - t0);\n var uniqueCSS = [\n ...new Set(allCSS)\n ];\n var cssPreloadContent = `\nconst CSS_TIMEOUT = 1000\nconst cssUrls = ${JSON.stringify(uniqueCSS)}\n\n// Global cache for loaded CSS - avoids DOM queries and tracks across navigations\nconst loaded = (window.__oneLoadedCSS ||= new Set())\n\n// Prefetch CSS without applying - called on link hover\nexport function prefetchCSS() {\n cssUrls.forEach(href => {\n if (loaded.has(href)) return\n if (document.querySelector(\\`link[href=\"\\${href}\"]\\`)) return\n const link = document.createElement('link')\n link.rel = 'prefetch'\n link.as = 'style'\n link.href = href\n document.head.appendChild(link)\n })\n}\n\n// Inject CSS to apply styles - called on actual navigation\nexport function injectCSS() {\n return Promise.all(cssUrls.map(href => {\n // Skip if already loaded\n if (loaded.has(href)) return Promise.resolve()\n // Remove any prefetch link for this href\n const prefetchLink = document.querySelector(\\`link[rel=\"prefetch\"][href=\"\\${href}\"]\\`)\n if (prefetchLink) prefetchLink.remove()\n // Skip if stylesheet already exists in DOM\n if (document.querySelector(\\`link[rel=\"stylesheet\"][href=\"\\${href}\"]\\`)) {\n loaded.add(href)\n return Promise.resolve()\n }\n return new Promise(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n const timeoutId = setTimeout(() => {\n console.warn('[one] CSS load timeout:', href)\n loaded.add(href)\n resolve()\n }, CSS_TIMEOUT)\n link.onload = link.onerror = () => {\n clearTimeout(timeoutId)\n loaded.add(href)\n resolve()\n }\n document.head.appendChild(link)\n })\n }))\n}\n\n// For backwards compatibility, also prefetch on import\nprefetchCSS()\n`;\n t0 = performance.now();\n await FSExtra.writeFile(join(clientDir, urlPathToFilePath(cssPreloadPath)), cssPreloadContent);\n recordTiming(\"writeCSSPreload\", performance.now() - t0);\n t0 = performance.now();\n var exported = await getRouteExports(serverEntry, routerRoot, foundRoute.file);\n recordTiming(\"importServerModule\", performance.now() - t0);\n var loaderProps = {\n path,\n params\n };\n var matches = [];\n t0 = performance.now();\n if ((_foundRoute_layouts = foundRoute.layouts) === null || _foundRoute_layouts === void 0 ? void 0 : _foundRoute_layouts.length) {\n var layoutResults = await Promise.all(foundRoute.layouts.map(async function(layout) {\n try {\n var _layoutExported_loader;\n if (!layout.loaderServerPath) {\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n var layoutExported = await getRouteExports(serverEntry, routerRoot, layout.contextKey);\n var layoutLoaderData = await (layoutExported === null || layoutExported === void 0 ? void 0 : (_layoutExported_loader = layoutExported.loader) === null || _layoutExported_loader === void 0 ? void 0 : _layoutExported_loader.call(layoutExported, loaderProps));\n return {\n contextKey: layout.contextKey,\n loaderData: layoutLoaderData\n };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n console.warn(`[one] Warning: layout loader failed for ${layout.contextKey}:`, err);\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n }));\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = layoutResults[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var result = _step1.value;\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\n });\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n recordTiming(\"layoutLoaders\", performance.now() - t0);\n t0 = performance.now();\n var loaderRedirectInfo = null;\n if (exported.loader && foundRoute.type !== \"ssr\") {\n var _loaderData_constructor;\n try {\n var _ref;\n var _exported_loader;\n loaderData = (_ref = await ((_exported_loader = exported.loader) === null || _exported_loader === void 0 ? void 0 : _exported_loader.call(exported, loaderProps))) !== null && _ref !== void 0 ? _ref : null;\n } catch (err) {\n if (isResponse(err)) {\n loaderRedirectInfo = extractRedirectInfo(err);\n } else {\n throw err;\n }\n }\n if (!loaderRedirectInfo && loaderData && (isResponse(loaderData) || loaderData instanceof Response || (loaderData === null || loaderData === void 0 ? void 0 : (_loaderData_constructor = loaderData.constructor) === null || _loaderData_constructor === void 0 ? void 0 : _loaderData_constructor.name) === \"Response\")) {\n loaderRedirectInfo = extractRedirectInfo(loaderData);\n loaderData = {};\n }\n if (clientJsPath) {\n var loaderPartialPath = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n var uncachedNativePath = loaderPartialPath.replace(constants.LOADER_JS_POSTFIX, NATIVE_LOADER_JS_POSTFIX_UNCACHED);\n if (loaderRedirectInfo) {\n var redirectData = JSON.stringify({\n __oneRedirect: loaderRedirectInfo.path,\n __oneRedirectStatus: loaderRedirectInfo.status\n });\n await outputFile(loaderPartialPath, `export function loader(){return ${redirectData}}`);\n var nativeCjs = `exports.loader = function(){return ${redirectData}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = getLoaderPath(path);\n loaderData = {};\n } else {\n var data = JSON.stringify(loaderData);\n await outputFile(loaderPartialPath, `export function loader(){return ${data}}`);\n var nativeCjs1 = `exports.loader = function(){return ${data}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs1);\n await outputFile(uncachedNativePath, nativeCjs1);\n loaderPath = getLoaderPath(path);\n }\n }\n }\n if (!exported.loader && foundRoute.type === \"spa\") {\n var loaderPartialPath1 = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n await outputFile(loaderPartialPath1, \"export function loader() { return undefined }\");\n loaderPath = getLoaderPath(path);\n }\n recordTiming(\"pageLoader\", performance.now() - t0);\n matches.push({\n routeId: foundRoute.file,\n pathname: path,\n params: params || {},\n loaderData\n });\n if (foundRoute.type !== \"ssr\") {\n var _globalThis___vxrnresetState, _globalThis;\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n if (foundRoute.type === \"ssg\") {\n var renderPreloads = useAfterLCPAggressive ? [] : criticalPreloads || preloads;\n var renderDeferredPreloads = useAfterLCPAggressive ? [] : deferredPreloads;\n t0 = performance.now();\n var html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n loaderData,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"ssg\",\n routePreloads,\n matches\n });\n recordTiming(\"ssrRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(html, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else if (foundRoute.type === \"spa\") {\n var _foundRoute_layouts1;\n var needsSpaShell = (_foundRoute_layouts1 = foundRoute.layouts) === null || _foundRoute_layouts1 === void 0 ? void 0 : _foundRoute_layouts1.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (needsSpaShell) {\n var _globalThis___vxrnresetState1, _globalThis1;\n (_globalThis___vxrnresetState1 = (_globalThis1 = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState1 === void 0 ? void 0 : _globalThis___vxrnresetState1.call(_globalThis1);\n var renderPreloads1 = criticalPreloads || preloads;\n var renderDeferredPreloads1 = deferredPreloads || [];\n var layoutMatches = matches.slice(0, -1);\n t0 = performance.now();\n var html1 = await render({\n path,\n preloads: renderPreloads1,\n deferredPreloads: renderDeferredPreloads1,\n loaderProps,\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"spa-shell\",\n routePreloads,\n matches: layoutMatches\n });\n recordTiming(\"spaShellRender\", performance.now() - t0);\n if (useAfterLCP) {\n html1 = applyAfterLCPScriptLoad(html1, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html1);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else {\n let renderCSSTag2 = function(file, index) {\n var content = allCSSContents === null || allCSSContents === void 0 ? void 0 : allCSSContents[index];\n if (content) {\n return ` <style>${content}</style>`;\n }\n return ` <link rel=\"stylesheet\" href=${file} />`;\n };\n var renderCSSTag = renderCSSTag2;\n var layoutCSSSet = new Set(layoutCSS);\n var layoutCssOutput = allCSS.map(function(file, i) {\n return layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var pageCssOutput = allCSS.map(function(file, i) {\n return !layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var criticalScripts = (criticalPreloads || preloads).map(function(preload) {\n return ` <script type=\"module\" src=\"${preload}\"></script>`;\n }).join(\"\\n\");\n await outputFile(htmlOutPath, `<!DOCTYPE html><html><head>\n ${constants.getSpaHeaderElements({\n serverContext: {\n loaderProps,\n loaderData\n }\n })}\n ${layoutCssOutput}\n ${criticalScripts}\n ${pageCssOutput}\n </head><body></body></html>`);\n }\n }\n }\n } catch (err) {\n var errMsg = err instanceof Error ? `${err.message}\n${err.stack}` : `${err}`;\n console.error(`Error building static page at ${path} with id ${relativeId}:\n\n${errMsg}\n\nloaderData:\n\n${JSON.stringify(loaderData || null, null, 2)}\nparams:\n\n${JSON.stringify(params || null, null, 2)}`);\n console.error(err);\n throw err;\n }\n var middlewares = (foundRoute.middlewares || []).map(function(x) {\n return builtMiddlewares[x.contextKey];\n });\n var cleanPath = path === \"/\" ? path : removeTrailingSlash(path);\n return {\n type: foundRoute.type,\n css: allCSS,\n layoutCSS,\n cssContents: allCSSContents,\n routeFile: foundRoute.file,\n middlewares,\n cleanPath,\n preloadPath,\n cssPreloadPath,\n loaderPath,\n clientJsPath,\n serverJsPath: foundRoute.type === \"spa\" ? \"\" : serverJsPath,\n htmlPath,\n loaderData,\n params,\n path,\n preloads,\n criticalPreloads,\n deferredPreloads\n };\n}\nasync function getRender(serverEntry) {\n try {\n var _serverImport_default_default;\n var serverImport = await import(toAbsoluteUrl(serverEntry));\n var render = serverImport.default.render || ((_serverImport_default_default = serverImport.default.default) === null || _serverImport_default_default === void 0 ? void 0 : _serverImport_default_default.render);\n if (typeof render !== \"function\") {\n throw new Error(`didn't find render function in entry: ${serverEntry}`);\n }\n return render;\n } catch (err) {\n console.error(`\\u274C Error importing the root entry:`);\n console.error(` This error happened in the built file: ${serverEntry}`);\n console.error(err[\"stack\"]);\n throw err;\n }\n}\nfunction removeTrailingSlash(path) {\n return path.endsWith(\"/\") ? path.slice(0, path.length - 1) : path;\n}\nfunction extractRedirectInfo(response) {\n if (response.status >= 300 && response.status < 400) {\n var location = response.headers.get(\"location\");\n if (location) {\n try {\n var url = new URL(location);\n return {\n path: url.pathname + url.search + url.hash,\n status: response.status\n };\n } catch (unused) {\n return {\n path: location,\n status: response.status\n };\n }\n }\n }\n return null;\n}\nfunction applyAfterLCPScriptLoad(html, preloads) {\n html = html.replace(/<script\\s+type=\"module\"[^>]*async[^>]*><\\/script>/gi, \"\");\n var loaderScript = `\n<script>\n(function() {\n var scripts = ${JSON.stringify(preloads)};\n function loadScripts() {\n scripts.forEach(function(src) {\n var script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n document.head.appendChild(script);\n });\n }\n function waitIdle(n) {\n if (n <= 0) {\n requestAnimationFrame(function() {\n requestAnimationFrame(loadScripts);\n });\n return;\n }\n setTimeout(function() {\n setTimeout(function() {\n waitIdle(n - 1);\n }, 0);\n }, 0);\n }\n waitIdle(5);\n})();\n</script>`;\n html = html.replace(\"</head>\", `${loaderScript}</head>`);\n return html;\n}\nexport {\n buildPage,\n printBuildTimings\n};\n//# sourceMappingURL=buildPage.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildPage.native.js","names":[],"sources":["esm/cli/buildPage.native.js"],"sourcesContent":["import { join } from \"path\";\nimport FSExtra from \"fs-extra\";\nimport { normalizePath } from \"vite\";\nimport * as constants from \"../constants\";\nimport { NATIVE_LOADER_JS_POSTFIX_UNCACHED } from \"../constants\";\nimport { encodeReservedFilenameChars, getLoaderPath, getPreloadCSSPath, getPreloadPath } from \"../utils/cleanUrl\";\nimport { isResponse } from \"../utils/isResponse\";\nimport { toAbsolute, toAbsoluteUrl } from \"../utils/toAbsolute\";\nimport { getRouteExports } from \"./serverRouteModules\";\nvar { outputFile } = FSExtra;\nfunction urlPathToFilePath(urlPath) {\n var parts = urlPath.replace(/^\\//, \"\").split(\"/\");\n return join(...parts);\n}\nvar buildTiming = process.env.ONE_BUILD_TIMING === \"1\";\nvar timings = {};\nfunction recordTiming(label, ms) {\n var _timings, _label;\n if (!buildTiming) return;\n ((_timings = timings)[_label = label] || (_timings[_label] = [])).push(ms);\n}\nfunction printBuildTimings() {\n if (!buildTiming) return;\n console.info(\"\\n\\u{1F4CA} Build timing breakdown:\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(timings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [label, times] = _step.value;\n var total = times.reduce(function(a, b) {\n return a + b;\n }, 0);\n var avg = total / times.length;\n console.info(` ${label}: ${avg.toFixed(1)}ms avg, ${total.toFixed(0)}ms total (${times.length} calls)`);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nasync function buildPage(serverEntry, routerRoot, path, relativeId, params, foundRoute, clientManifestEntry, staticDir, clientDir, builtMiddlewares, serverJsPath, preloads, allCSS, layoutCSS, routePreloads, allCSSContents, criticalPreloads, deferredPreloads, useAfterLCP, useAfterLCPAggressive) {\n var t0 = performance.now();\n var render = await getRender(serverEntry);\n recordTiming(\"getRender\", performance.now() - t0);\n var htmlPath = encodeReservedFilenameChars(`${path.endsWith(\"/\") ? `${removeTrailingSlash(path)}/index` : path}.html`);\n var clientJsPath = clientManifestEntry ? normalizePath(join(clientDir, clientManifestEntry.file)) : \"\";\n var htmlOutPath = toAbsolute(join(staticDir, htmlPath));\n var preloadPath = getPreloadPath(path);\n var cssPreloadPath = getPreloadCSSPath(path);\n var loaderPath = \"\";\n var loaderData = {};\n try {\n var _foundRoute_layouts;\n var preloadContent = [\n // static imports for cache warming\n ...preloads.map(function(preload) {\n return `import \"${preload}\"`;\n }),\n `const routes = globalThis.__importMetaGlobbed`,\n `await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`\n ].join(\"\\n\");\n t0 = performance.now();\n await FSExtra.writeFile(join(clientDir, urlPathToFilePath(preloadPath)), preloadContent);\n recordTiming(\"writePreload\", performance.now() - t0);\n var uniqueCSS = [\n ...new Set(allCSS)\n ];\n var cssPreloadContent = `\nconst CSS_TIMEOUT = 1000\nconst cssUrls = ${JSON.stringify(uniqueCSS)}\n\n// Global cache for loaded CSS - avoids DOM queries and tracks across navigations\nconst loaded = (window.__oneLoadedCSS ||= new Set())\n\n// Prefetch CSS without applying - called on link hover\nexport function prefetchCSS() {\n cssUrls.forEach(href => {\n if (loaded.has(href)) return\n if (document.querySelector(\\`link[href=\"\\${href}\"]\\`)) return\n const link = document.createElement('link')\n link.rel = 'prefetch'\n link.as = 'style'\n link.href = href\n document.head.appendChild(link)\n })\n}\n\n// Inject CSS to apply styles - called on actual navigation\nexport function injectCSS() {\n return Promise.all(cssUrls.map(href => {\n // Skip if already loaded\n if (loaded.has(href)) return Promise.resolve()\n // Remove any prefetch link for this href\n const prefetchLink = document.querySelector(\\`link[rel=\"prefetch\"][href=\"\\${href}\"]\\`)\n if (prefetchLink) prefetchLink.remove()\n // Skip if stylesheet already exists in DOM\n if (document.querySelector(\\`link[rel=\"stylesheet\"][href=\"\\${href}\"]\\`)) {\n loaded.add(href)\n return Promise.resolve()\n }\n return new Promise(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n const timeoutId = setTimeout(() => {\n console.warn('[one] CSS load timeout:', href)\n loaded.add(href)\n resolve()\n }, CSS_TIMEOUT)\n link.onload = link.onerror = () => {\n clearTimeout(timeoutId)\n loaded.add(href)\n resolve()\n }\n document.head.appendChild(link)\n })\n }))\n}\n\n// For backwards compatibility, also prefetch on import\nprefetchCSS()\n`;\n t0 = performance.now();\n await FSExtra.writeFile(join(clientDir, urlPathToFilePath(cssPreloadPath)), cssPreloadContent);\n recordTiming(\"writeCSSPreload\", performance.now() - t0);\n t0 = performance.now();\n var exported = await getRouteExports(serverEntry, routerRoot, foundRoute.file);\n recordTiming(\"importServerModule\", performance.now() - t0);\n var loaderProps = {\n path,\n params\n };\n var matches = [];\n t0 = performance.now();\n if ((_foundRoute_layouts = foundRoute.layouts) === null || _foundRoute_layouts === void 0 ? void 0 : _foundRoute_layouts.length) {\n var layoutResults = await Promise.all(foundRoute.layouts.map(async function(layout) {\n try {\n var _layoutExported_loader;\n if (!layout.loaderServerPath) {\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n var layoutExported = await getRouteExports(serverEntry, routerRoot, layout.contextKey);\n var layoutLoaderData = await (layoutExported === null || layoutExported === void 0 ? void 0 : (_layoutExported_loader = layoutExported.loader) === null || _layoutExported_loader === void 0 ? void 0 : _layoutExported_loader.call(layoutExported, loaderProps));\n return {\n contextKey: layout.contextKey,\n loaderData: layoutLoaderData\n };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n console.warn(`[one] Warning: layout loader failed for ${layout.contextKey}:`, err);\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n }));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = layoutResults[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var result = _step.value;\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\n });\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n recordTiming(\"layoutLoaders\", performance.now() - t0);\n t0 = performance.now();\n var loaderRedirectInfo = null;\n if (exported.loader && foundRoute.type !== \"ssr\") {\n var _loaderData_constructor;\n try {\n var _ref;\n var _exported_loader;\n loaderData = (_ref = await ((_exported_loader = exported.loader) === null || _exported_loader === void 0 ? void 0 : _exported_loader.call(exported, loaderProps))) !== null && _ref !== void 0 ? _ref : null;\n } catch (err) {\n if (isResponse(err)) {\n loaderRedirectInfo = extractRedirectInfo(err);\n } else {\n throw err;\n }\n }\n if (!loaderRedirectInfo && loaderData && (isResponse(loaderData) || loaderData instanceof Response || (loaderData === null || loaderData === void 0 ? void 0 : (_loaderData_constructor = loaderData.constructor) === null || _loaderData_constructor === void 0 ? void 0 : _loaderData_constructor.name) === \"Response\")) {\n loaderRedirectInfo = extractRedirectInfo(loaderData);\n loaderData = {};\n }\n if (clientJsPath) {\n var loaderPartialPath = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n var uncachedNativePath = loaderPartialPath.replace(constants.LOADER_JS_POSTFIX, NATIVE_LOADER_JS_POSTFIX_UNCACHED);\n if (loaderRedirectInfo) {\n var redirectData = JSON.stringify({\n __oneRedirect: loaderRedirectInfo.path,\n __oneRedirectStatus: loaderRedirectInfo.status\n });\n await outputFile(loaderPartialPath, `export function loader(){return ${redirectData}}`);\n var nativeCjs = `exports.loader = function(){return ${redirectData}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = getLoaderPath(path);\n loaderData = {};\n } else {\n var data = JSON.stringify(loaderData);\n await outputFile(loaderPartialPath, `export function loader(){return ${data}}`);\n var nativeCjs1 = `exports.loader = function(){return ${data}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs1);\n await outputFile(uncachedNativePath, nativeCjs1);\n loaderPath = getLoaderPath(path);\n }\n }\n }\n if (!exported.loader && foundRoute.type === \"spa\") {\n var loaderPartialPath1 = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n await outputFile(loaderPartialPath1, \"export function loader() { return undefined }\");\n loaderPath = getLoaderPath(path);\n }\n recordTiming(\"pageLoader\", performance.now() - t0);\n matches.push({\n routeId: foundRoute.file,\n pathname: path,\n params: params || {},\n loaderData\n });\n if (foundRoute.type !== \"ssr\") {\n var _globalThis___vxrnresetState, _globalThis;\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n if (foundRoute.type === \"ssg\") {\n var renderPreloads = useAfterLCPAggressive ? [] : criticalPreloads || preloads;\n var renderDeferredPreloads = useAfterLCPAggressive ? [] : deferredPreloads;\n t0 = performance.now();\n var html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n loaderData,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"ssg\",\n routePreloads,\n matches\n });\n recordTiming(\"ssrRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(html, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else if (foundRoute.type === \"spa\") {\n var _foundRoute_layouts1;\n var needsSpaShell = (_foundRoute_layouts1 = foundRoute.layouts) === null || _foundRoute_layouts1 === void 0 ? void 0 : _foundRoute_layouts1.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (needsSpaShell) {\n var _globalThis___vxrnresetState1, _globalThis1;\n (_globalThis___vxrnresetState1 = (_globalThis1 = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState1 === void 0 ? void 0 : _globalThis___vxrnresetState1.call(_globalThis1);\n var renderPreloads1 = criticalPreloads || preloads;\n var renderDeferredPreloads1 = deferredPreloads || [];\n var layoutMatches = matches.slice(0, -1);\n t0 = performance.now();\n var html1 = await render({\n path,\n preloads: renderPreloads1,\n deferredPreloads: renderDeferredPreloads1,\n loaderProps,\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"spa-shell\",\n routePreloads,\n matches: layoutMatches\n });\n recordTiming(\"spaShellRender\", performance.now() - t0);\n if (useAfterLCP) {\n html1 = applyAfterLCPScriptLoad(html1, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html1);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else {\n let renderCSSTag2 = function(file, index) {\n var content = allCSSContents === null || allCSSContents === void 0 ? void 0 : allCSSContents[index];\n if (content) {\n return ` <style>${content}</style>`;\n }\n return ` <link rel=\"stylesheet\" href=${file} />`;\n };\n var renderCSSTag = renderCSSTag2;\n var layoutCSSSet = new Set(layoutCSS);\n var layoutCssOutput = allCSS.map(function(file, i) {\n return layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var pageCssOutput = allCSS.map(function(file, i) {\n return !layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var criticalScripts = (criticalPreloads || preloads).map(function(preload) {\n return ` <script type=\"module\" src=\"${preload}\"></script>`;\n }).join(\"\\n\");\n await outputFile(htmlOutPath, `<!DOCTYPE html><html><head>\n ${constants.getSpaHeaderElements({\n serverContext: {\n loaderProps,\n loaderData\n }\n })}\n ${layoutCssOutput}\n ${criticalScripts}\n ${pageCssOutput}\n </head><body></body></html>`);\n }\n }\n }\n } catch (err) {\n var errMsg = err instanceof Error ? `${err.message}\n${err.stack}` : `${err}`;\n console.error(`Error building static page at ${path} with id ${relativeId}:\n\n${errMsg}\n\nloaderData:\n\n${JSON.stringify(loaderData || null, null, 2)}\nparams:\n\n${JSON.stringify(params || null, null, 2)}`);\n console.error(err);\n throw err;\n }\n var middlewares = (foundRoute.middlewares || []).map(function(x) {\n return builtMiddlewares[x.contextKey];\n });\n var cleanPath = path === \"/\" ? path : removeTrailingSlash(path);\n return {\n type: foundRoute.type,\n css: allCSS,\n layoutCSS,\n cssContents: allCSSContents,\n routeFile: foundRoute.file,\n middlewares,\n cleanPath,\n preloadPath,\n cssPreloadPath,\n loaderPath,\n clientJsPath,\n serverJsPath: foundRoute.type === \"spa\" ? \"\" : serverJsPath,\n htmlPath,\n loaderData,\n params,\n path,\n preloads,\n criticalPreloads,\n deferredPreloads\n };\n}\nasync function getRender(serverEntry) {\n try {\n var _serverImport_default_default;\n var serverImport = await import(toAbsoluteUrl(serverEntry));\n var render = serverImport.default.render || ((_serverImport_default_default = serverImport.default.default) === null || _serverImport_default_default === void 0 ? void 0 : _serverImport_default_default.render);\n if (typeof render !== \"function\") {\n throw new Error(`didn't find render function in entry: ${serverEntry}`);\n }\n return render;\n } catch (err) {\n console.error(`\\u274C Error importing the root entry:`);\n console.error(` This error happened in the built file: ${serverEntry}`);\n console.error(err[\"stack\"]);\n throw err;\n }\n}\nfunction removeTrailingSlash(path) {\n return path.endsWith(\"/\") ? path.slice(0, path.length - 1) : path;\n}\nfunction extractRedirectInfo(response) {\n if (response.status >= 300 && response.status < 400) {\n var location = response.headers.get(\"location\");\n if (location) {\n try {\n var url = new URL(location);\n return {\n path: url.pathname + url.search + url.hash,\n status: response.status\n };\n } catch (unused) {\n return {\n path: location,\n status: response.status\n };\n }\n }\n }\n return null;\n}\nfunction applyAfterLCPScriptLoad(html, preloads) {\n html = html.replace(/<script\\s+type=\"module\"[^>]*async[^>]*><\\/script>/gi, \"\");\n var loaderScript = `\n<script>\n(function() {\n var scripts = ${JSON.stringify(preloads)};\n function loadScripts() {\n scripts.forEach(function(src) {\n var script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n document.head.appendChild(script);\n });\n }\n function waitIdle(n) {\n if (n <= 0) {\n requestAnimationFrame(function() {\n requestAnimationFrame(loadScripts);\n });\n return;\n }\n setTimeout(function() {\n setTimeout(function() {\n waitIdle(n - 1);\n }, 0);\n }, 0);\n }\n waitIdle(5);\n})();\n</script>`;\n html = html.replace(\"</head>\", `${loaderScript}</head>`);\n return html;\n}\nexport {\n buildPage,\n printBuildTimings\n};\n//# sourceMappingURL=buildPage.js.map\n"],"mappings":"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"}
|
package/dist/esm/createApp.mjs
CHANGED
|
@@ -136,11 +136,8 @@ function createApp(options) {
|
|
|
136
136
|
initClientMatches(restoredMatches);
|
|
137
137
|
}
|
|
138
138
|
const setupComplete = options.getSetupPromise ? options.getSetupPromise() : Promise.resolve();
|
|
139
|
-
const preloadPromises = routePreloads ?
|
|
140
|
-
const mod = await
|
|
141
|
-
/* @vite-ignore */
|
|
142
|
-
bundlePath
|
|
143
|
-
);
|
|
139
|
+
const preloadPromises = routePreloads ? routePreloads.map(async (routeKey) => {
|
|
140
|
+
const mod = await options.routes[routeKey]();
|
|
144
141
|
registerPreloadedRoute(routeKey, mod);
|
|
145
142
|
return mod;
|
|
146
143
|
}) : [findRootLayout(options.routes, options.routerRoot)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createApp.js","names":[],"sources":["esm/createApp.js"],"sourcesContent":["import \"./setup\";\nimport { cloneElement } from \"react\";\nimport { resolveClientLoader } from \"./clientLoaderResolver\";\nimport { Root } from \"./Root\";\nimport { render } from \"./render\";\nimport { initClientMatches } from \"./router/router\";\nimport { registerPreloadedRoute } from \"./router/useViteRoutes\";\nimport { setupSkewProtection } from \"./skewProtection\";\nimport { handleSkewError, isChunkLoadError } from \"./utils/dynamicImport\";\nimport { findRootLayout } from \"./utils/findRootLayout\";\nimport { getServerHeadInsertions } from \"./useServerHeadInsertion\";\nimport { SERVER_CONTEXT_POST_RENDER_STRING } from \"./vite/constants\";\nimport { safeJsonStringify } from \"./utils/htmlEscape\";\nimport { getServerContext, setServerContext } from \"./vite/one-server-only\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nfunction createApp(options) {\n if (import.meta.env.SSR) {\n let cachedServerRender;\n let cachedRenderToStaticMarkup;\n let cachedRenderToString;\n let setupDone = false;\n return {\n options,\n render: async (props) => {\n const renderMode = props.mode === \"spa-shell\" ? \"spa\" : props.mode;\n const shouldRunSetup = props.mode !== \"ssg\" && props.mode !== \"spa-shell\";\n if (process.env.ONE_RENDER_MODE !== renderMode) {\n process.env.ONE_RENDER_MODE = renderMode;\n }\n if (shouldRunSetup && !setupDone && options.getSetupPromise) {\n await options.getSetupPromise();\n setupDone = true;\n }\n if (!cachedServerRender) {\n const sr = await import(\"./server-render\");\n cachedServerRender = sr;\n cachedRenderToStaticMarkup = sr.renderToStaticMarkup;\n cachedRenderToString = sr.renderToString;\n }\n const renderToStaticMarkup = cachedRenderToStaticMarkup;\n const renderToString = cachedRenderToString;\n const {\n loaderData,\n loaderProps,\n css,\n cssContents,\n mode,\n loaderServerData,\n routePreloads: routePreloads2,\n matches\n } = props;\n setServerContext({\n postRenderData: loaderServerData,\n loaderData,\n loaderProps,\n mode,\n css,\n cssContents,\n routePreloads: routePreloads2,\n matches\n });\n let renderId;\n const rootElement = /* @__PURE__ */ jsx(\n Root,\n {\n flags: options.flags,\n onRenderId: (id) => {\n renderId = id;\n },\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n ...props\n }\n );\n let html = await renderToString(rootElement, {\n preloads: props.preloads\n });\n if (renderId) {\n const insertions = getServerHeadInsertions(renderId);\n if (insertions?.length) {\n const extraHeadElements = insertions.map((insertion) => insertion()).filter(Boolean);\n if (extraHeadElements.length) {\n const extraHeadHTML = renderToStaticMarkup(\n /* @__PURE__ */ jsx(Fragment, { children: extraHeadElements.map((x, i) => cloneElement(x, { key: i })) })\n );\n if (extraHeadHTML) {\n html = html.replace(`</head>`, `${extraHeadHTML}</head>`);\n }\n }\n }\n }\n const postRenderData = getServerContext()?.postRenderData;\n if (postRenderData) {\n html = html.replace(\n safeJsonStringify(SERVER_CONTEXT_POST_RENDER_STRING),\n safeJsonStringify(postRenderData)\n );\n }\n return html;\n },\n // streaming SSR - returns ReadableStream, no post-processing\n renderStream: async (props) => {\n const renderMode = props.mode === \"spa-shell\" ? \"spa\" : props.mode;\n const shouldRunSetup = props.mode !== \"ssg\" && props.mode !== \"spa-shell\";\n if (process.env.ONE_RENDER_MODE !== renderMode) {\n process.env.ONE_RENDER_MODE = renderMode;\n }\n if (shouldRunSetup && !setupDone && options.getSetupPromise) {\n await options.getSetupPromise();\n setupDone = true;\n }\n if (!cachedServerRender) {\n const sr = await import(\"./server-render\");\n cachedServerRender = sr;\n cachedRenderToStaticMarkup = sr.renderToStaticMarkup;\n cachedRenderToString = sr.renderToString;\n }\n const {\n loaderData,\n loaderProps,\n css,\n cssContents,\n mode,\n loaderServerData,\n routePreloads: routePreloads2,\n matches\n } = props;\n setServerContext({\n postRenderData: loaderServerData,\n loaderData,\n loaderProps,\n mode,\n css,\n cssContents,\n routePreloads: routePreloads2,\n matches\n });\n const rootElement = /* @__PURE__ */ jsx(\n Root,\n {\n flags: options.flags,\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n ...props\n }\n );\n return cachedServerRender.renderToStream(rootElement, {\n preloads: props.preloads\n });\n }\n };\n }\n setupSkewProtection();\n const serverContext = getServerContext() || {};\n const routePreloads = serverContext.routePreloads;\n if (serverContext.matches) {\n const lastIndex = serverContext.matches.length - 1;\n const restoredMatches = serverContext.matches.map((m, index) => {\n if (index === lastIndex && m.loaderData === void 0 && serverContext.loaderData !== void 0) {\n return { ...m, loaderData: serverContext.loaderData };\n }\n return m;\n });\n initClientMatches(restoredMatches);\n }\n const setupComplete = options.getSetupPromise ? options.getSetupPromise() : Promise.resolve();\n const preloadPromises = routePreloads ? Object.entries(routePreloads).map(async ([routeKey, bundlePath]) => {\n const mod = await import(\n /* @vite-ignore */\n bundlePath\n );\n registerPreloadedRoute(routeKey, mod);\n return mod;\n }) : [findRootLayout(options.routes, options.routerRoot)];\n const one404Marker = window.__one404;\n if (one404Marker?.notFoundPath) {\n const currentState = window.history.state || {};\n window.history.replaceState(\n {\n ...currentState,\n __tempLocation: { pathname: one404Marker.notFoundPath, search: \"\" }\n },\n \"\"\n );\n }\n return setupComplete.then(() => Promise.all(preloadPromises)).then(() => {\n return resolveClientLoader(serverContext);\n }).then(() => {\n render(\n /* @__PURE__ */ jsx(\n Root,\n {\n isClient: true,\n flags: options.flags,\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n path: window.location.href\n }\n )\n );\n }).catch((err) => {\n console.error(`Error during client initialization:`, err);\n if (isChunkLoadError(err)) {\n handleSkewError();\n }\n });\n}\nexport {\n createApp\n};\n//# sourceMappingURL=createApp.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createApp.js","names":[],"sources":["esm/createApp.js"],"sourcesContent":["import \"./setup\";\nimport { cloneElement } from \"react\";\nimport { resolveClientLoader } from \"./clientLoaderResolver\";\nimport { Root } from \"./Root\";\nimport { render } from \"./render\";\nimport { initClientMatches } from \"./router/router\";\nimport { registerPreloadedRoute } from \"./router/useViteRoutes\";\nimport { setupSkewProtection } from \"./skewProtection\";\nimport { handleSkewError, isChunkLoadError } from \"./utils/dynamicImport\";\nimport { findRootLayout } from \"./utils/findRootLayout\";\nimport { getServerHeadInsertions } from \"./useServerHeadInsertion\";\nimport { SERVER_CONTEXT_POST_RENDER_STRING } from \"./vite/constants\";\nimport { safeJsonStringify } from \"./utils/htmlEscape\";\nimport { getServerContext, setServerContext } from \"./vite/one-server-only\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nfunction createApp(options) {\n if (import.meta.env.SSR) {\n let cachedServerRender;\n let cachedRenderToStaticMarkup;\n let cachedRenderToString;\n let setupDone = false;\n return {\n options,\n render: async (props) => {\n const renderMode = props.mode === \"spa-shell\" ? \"spa\" : props.mode;\n const shouldRunSetup = props.mode !== \"ssg\" && props.mode !== \"spa-shell\";\n if (process.env.ONE_RENDER_MODE !== renderMode) {\n process.env.ONE_RENDER_MODE = renderMode;\n }\n if (shouldRunSetup && !setupDone && options.getSetupPromise) {\n await options.getSetupPromise();\n setupDone = true;\n }\n if (!cachedServerRender) {\n const sr = await import(\"./server-render\");\n cachedServerRender = sr;\n cachedRenderToStaticMarkup = sr.renderToStaticMarkup;\n cachedRenderToString = sr.renderToString;\n }\n const renderToStaticMarkup = cachedRenderToStaticMarkup;\n const renderToString = cachedRenderToString;\n const {\n loaderData,\n loaderProps,\n css,\n cssContents,\n mode,\n loaderServerData,\n routePreloads: routePreloads2,\n matches\n } = props;\n setServerContext({\n postRenderData: loaderServerData,\n loaderData,\n loaderProps,\n mode,\n css,\n cssContents,\n routePreloads: routePreloads2,\n matches\n });\n let renderId;\n const rootElement = /* @__PURE__ */ jsx(\n Root,\n {\n flags: options.flags,\n onRenderId: (id) => {\n renderId = id;\n },\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n ...props\n }\n );\n let html = await renderToString(rootElement, {\n preloads: props.preloads\n });\n if (renderId) {\n const insertions = getServerHeadInsertions(renderId);\n if (insertions?.length) {\n const extraHeadElements = insertions.map((insertion) => insertion()).filter(Boolean);\n if (extraHeadElements.length) {\n const extraHeadHTML = renderToStaticMarkup(\n /* @__PURE__ */ jsx(Fragment, { children: extraHeadElements.map((x, i) => cloneElement(x, { key: i })) })\n );\n if (extraHeadHTML) {\n html = html.replace(`</head>`, `${extraHeadHTML}</head>`);\n }\n }\n }\n }\n const postRenderData = getServerContext()?.postRenderData;\n if (postRenderData) {\n html = html.replace(\n safeJsonStringify(SERVER_CONTEXT_POST_RENDER_STRING),\n safeJsonStringify(postRenderData)\n );\n }\n return html;\n },\n // streaming SSR - returns ReadableStream, no post-processing\n renderStream: async (props) => {\n const renderMode = props.mode === \"spa-shell\" ? \"spa\" : props.mode;\n const shouldRunSetup = props.mode !== \"ssg\" && props.mode !== \"spa-shell\";\n if (process.env.ONE_RENDER_MODE !== renderMode) {\n process.env.ONE_RENDER_MODE = renderMode;\n }\n if (shouldRunSetup && !setupDone && options.getSetupPromise) {\n await options.getSetupPromise();\n setupDone = true;\n }\n if (!cachedServerRender) {\n const sr = await import(\"./server-render\");\n cachedServerRender = sr;\n cachedRenderToStaticMarkup = sr.renderToStaticMarkup;\n cachedRenderToString = sr.renderToString;\n }\n const {\n loaderData,\n loaderProps,\n css,\n cssContents,\n mode,\n loaderServerData,\n routePreloads: routePreloads2,\n matches\n } = props;\n setServerContext({\n postRenderData: loaderServerData,\n loaderData,\n loaderProps,\n mode,\n css,\n cssContents,\n routePreloads: routePreloads2,\n matches\n });\n const rootElement = /* @__PURE__ */ jsx(\n Root,\n {\n flags: options.flags,\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n ...props\n }\n );\n return cachedServerRender.renderToStream(rootElement, {\n preloads: props.preloads\n });\n }\n };\n }\n setupSkewProtection();\n const serverContext = getServerContext() || {};\n const routePreloads = serverContext.routePreloads;\n if (serverContext.matches) {\n const lastIndex = serverContext.matches.length - 1;\n const restoredMatches = serverContext.matches.map((m, index) => {\n if (index === lastIndex && m.loaderData === void 0 && serverContext.loaderData !== void 0) {\n return { ...m, loaderData: serverContext.loaderData };\n }\n return m;\n });\n initClientMatches(restoredMatches);\n }\n const setupComplete = options.getSetupPromise ? options.getSetupPromise() : Promise.resolve();\n const preloadPromises = routePreloads ? routePreloads.map(async (routeKey) => {\n const mod = await options.routes[routeKey]();\n registerPreloadedRoute(routeKey, mod);\n return mod;\n }) : [findRootLayout(options.routes, options.routerRoot)];\n const one404Marker = window.__one404;\n if (one404Marker?.notFoundPath) {\n const currentState = window.history.state || {};\n window.history.replaceState(\n {\n ...currentState,\n __tempLocation: { pathname: one404Marker.notFoundPath, search: \"\" }\n },\n \"\"\n );\n }\n return setupComplete.then(() => Promise.all(preloadPromises)).then(() => {\n return resolveClientLoader(serverContext);\n }).then(() => {\n render(\n /* @__PURE__ */ jsx(\n Root,\n {\n isClient: true,\n flags: options.flags,\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n path: window.location.href\n }\n )\n );\n }).catch((err) => {\n console.error(`Error during client initialization:`, err);\n if (isChunkLoadError(err)) {\n handleSkewError();\n }\n });\n}\nexport {\n createApp\n};\n//# sourceMappingURL=createApp.js.map\n"],"mappings":"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"}
|
|
@@ -95,7 +95,8 @@ const Pager = forwardRef(function Pager2({ children, initialPage = 0, scrollEnab
|
|
|
95
95
|
useImperativeHandle(ref, () => ({
|
|
96
96
|
setPage: (index) => goTo(index, true),
|
|
97
97
|
setPageWithoutAnimation: (index) => goTo(index, false),
|
|
98
|
-
setScrollEnabled: setEnabled
|
|
98
|
+
setScrollEnabled: setEnabled,
|
|
99
|
+
getNativeScrollRef: () => container.current
|
|
99
100
|
}));
|
|
100
101
|
useEffect(() => setEnabled(scrollEnabled), [scrollEnabled]);
|
|
101
102
|
useLayoutEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pager.js","names":[],"sources":["esm/platform/ui/Pager.js"],"sourcesContent":["import {\n Children,\n isValidElement,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState\n} from \"react\";\nimport { validatePage, validatePager } from \"./pagerTypes\";\nimport { domStyle } from \"../web/DomView\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction event(nativeEvent) {\n return { nativeEvent };\n}\nconst Pager = forwardRef(function Pager2({\n children,\n initialPage = 0,\n scrollEnabled = true,\n orientation = \"horizontal\",\n layoutDirection = \"ltr\",\n pageMargin = 0,\n onPageScroll,\n onPageSelected,\n onPageScrollStateChanged,\n keyboardDismissMode = \"none\",\n style,\n testID,\n ...props\n}, ref) {\n validatePager({\n ...props,\n initialPage,\n orientation,\n layoutDirection,\n pageMargin,\n keyboardDismissMode\n });\n const container = useRef(null);\n const callbacks = useRef({ onPageScroll, onPageSelected, onPageScrollStateChanged });\n callbacks.current = { onPageScroll, onPageSelected, onPageScrollStateChanged };\n const pointer = useRef(null);\n const selected = useRef(initialPage);\n const initialized = useRef(false);\n const state = useRef(\"idle\");\n const [enabled, setEnabled] = useState(scrollEnabled);\n const vertical = orientation === \"vertical\";\n const count = Children.count(children);\n const dimensions = useRef({\n vertical,\n rtl: layoutDirection === \"rtl\",\n pageMargin,\n count\n });\n dimensions.current = { vertical, rtl: layoutDirection === \"rtl\", pageMargin, count };\n function setState(next) {\n if (state.current === next) return;\n state.current = next;\n callbacks.current.onPageScrollStateChanged?.(event({ pageScrollState: next }));\n }\n function scroll() {\n const node = container.current;\n if (!node || !count) return;\n const stride = (vertical ? node.clientHeight : node.clientWidth) + pageMargin;\n if (!stride) return;\n const value = Math.max(\n 0,\n Math.min(\n count - 1,\n (vertical ? node.scrollTop : Math.abs(node.scrollLeft)) / stride\n )\n );\n callbacks.current.onPageScroll?.(\n event({ position: Math.floor(value), offset: value - Math.floor(value) })\n );\n }\n function settle() {\n const node = container.current;\n if (!node || !count) return;\n const stride = (vertical ? node.clientHeight : node.clientWidth) + pageMargin;\n if (!stride) return;\n const page = Math.max(\n 0,\n Math.min(\n count - 1,\n Math.round((vertical ? node.scrollTop : Math.abs(node.scrollLeft)) / stride)\n )\n );\n if (page !== selected.current || !initialized.current) {\n selected.current = page;\n callbacks.current.onPageSelected?.(event({ position: page }));\n }\n initialized.current = true;\n callbacks.current.onPageScroll?.(event({ position: page, offset: 0 }));\n setState(\"idle\");\n }\n function goTo(index, animated) {\n validatePage(index);\n const node = container.current;\n const d = dimensions.current;\n if (!node || index >= d.count) return;\n const offset = index * ((d.vertical ? node.clientHeight : node.clientWidth) + d.pageMargin);\n if (animated && index !== selected.current) setState(\"settling\");\n node.scrollTo({\n left: d.vertical ? 0 : offset * (d.rtl ? -1 : 1),\n top: d.vertical ? offset : 0,\n behavior: animated ? \"smooth\" : \"instant\"\n });\n if (!animated) settle();\n }\n useImperativeHandle(ref, () => ({\n setPage: (index) => goTo(index, true),\n setPageWithoutAnimation: (index) => goTo(index, false),\n setScrollEnabled: setEnabled\n }));\n useEffect(() => setEnabled(scrollEnabled), [scrollEnabled]);\n useLayoutEffect(() => {\n const node = container.current;\n if (!node) return;\n const resize = new ResizeObserver(\n () => goTo(Math.min(selected.current, Math.max(0, count - 1)), false)\n );\n resize.observe(node);\n goTo(Math.min(selected.current, Math.max(0, count - 1)), false);\n node.addEventListener(\"scrollend\", settle);\n return () => {\n resize.disconnect();\n node.removeEventListener(\"scrollend\", settle);\n };\n }, [count, orientation, layoutDirection, pageMargin]);\n const css = {\n ...domStyle(style),\n display: \"flex\",\n position: \"relative\",\n flexDirection: vertical ? \"column\" : \"row\",\n direction: layoutDirection,\n overflowX: enabled && !vertical ? \"auto\" : \"hidden\",\n overflowY: enabled && vertical ? \"auto\" : \"hidden\",\n scrollSnapType: `${vertical ? \"y\" : \"x\"} mandatory`,\n gap: pageMargin,\n scrollbarWidth: \"none\",\n overscrollBehavior: \"contain\"\n };\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: container,\n style: css,\n \"data-testid\": testID,\n onScroll: scroll,\n onPointerDown: (e) => {\n const node = container.current;\n if (!enabled || !node) return;\n pointer.current = {\n x: e.clientX,\n y: e.clientY,\n offset: vertical ? node.scrollTop : node.scrollLeft\n };\n },\n onPointerMove: (e) => {\n const start = pointer.current;\n if (!start || !enabled || state.current === \"dragging\") return;\n const distance = vertical ? Math.abs(e.clientY - start.y) : Math.abs(e.clientX - start.x);\n if (distance < 8) return;\n setState(\"dragging\");\n if (keyboardDismissMode === \"on-drag\" && document.activeElement instanceof HTMLElement)\n document.activeElement.blur();\n },\n onPointerUp: () => {\n const start = pointer.current;\n const node = container.current;\n pointer.current = null;\n if (state.current !== \"dragging\" || !node) return;\n if ((vertical ? node.scrollTop : node.scrollLeft) === start?.offset) settle();\n else setState(\"settling\");\n },\n onPointerCancel: () => {\n pointer.current = null;\n if (state.current === \"dragging\") setState(\"settling\");\n },\n onWheel: () => {\n if (enabled) setState(\"dragging\");\n },\n children: Children.map(children, (child, index) => {\n if (!isValidElement(child))\n throw new Error(\"Pager children must be React Native views\");\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n flex: \"0 0 100%\",\n display: \"flex\",\n flexDirection: \"column\",\n width: vertical ? \"100%\" : void 0,\n height: vertical ? void 0 : \"100%\",\n scrollSnapAlign: \"start\",\n position: \"relative\",\n overflow: \"hidden\"\n },\n children: child\n },\n index\n );\n })\n }\n );\n});\nexport {\n Pager\n};\n//# sourceMappingURL=Pager.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pager.js","names":[],"sources":["esm/platform/ui/Pager.js"],"sourcesContent":["import {\n Children,\n isValidElement,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState\n} from \"react\";\nimport { validatePage, validatePager } from \"./pagerTypes\";\nimport { domStyle } from \"../web/DomView\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction event(nativeEvent) {\n return { nativeEvent };\n}\nconst Pager = forwardRef(function Pager2({\n children,\n initialPage = 0,\n scrollEnabled = true,\n orientation = \"horizontal\",\n layoutDirection = \"ltr\",\n pageMargin = 0,\n onPageScroll,\n onPageSelected,\n onPageScrollStateChanged,\n keyboardDismissMode = \"none\",\n style,\n testID,\n ...props\n}, ref) {\n validatePager({\n ...props,\n initialPage,\n orientation,\n layoutDirection,\n pageMargin,\n keyboardDismissMode\n });\n const container = useRef(null);\n const callbacks = useRef({ onPageScroll, onPageSelected, onPageScrollStateChanged });\n callbacks.current = { onPageScroll, onPageSelected, onPageScrollStateChanged };\n const pointer = useRef(null);\n const selected = useRef(initialPage);\n const initialized = useRef(false);\n const state = useRef(\"idle\");\n const [enabled, setEnabled] = useState(scrollEnabled);\n const vertical = orientation === \"vertical\";\n const count = Children.count(children);\n const dimensions = useRef({\n vertical,\n rtl: layoutDirection === \"rtl\",\n pageMargin,\n count\n });\n dimensions.current = { vertical, rtl: layoutDirection === \"rtl\", pageMargin, count };\n function setState(next) {\n if (state.current === next) return;\n state.current = next;\n callbacks.current.onPageScrollStateChanged?.(event({ pageScrollState: next }));\n }\n function scroll() {\n const node = container.current;\n if (!node || !count) return;\n const stride = (vertical ? node.clientHeight : node.clientWidth) + pageMargin;\n if (!stride) return;\n const value = Math.max(\n 0,\n Math.min(\n count - 1,\n (vertical ? node.scrollTop : Math.abs(node.scrollLeft)) / stride\n )\n );\n callbacks.current.onPageScroll?.(\n event({ position: Math.floor(value), offset: value - Math.floor(value) })\n );\n }\n function settle() {\n const node = container.current;\n if (!node || !count) return;\n const stride = (vertical ? node.clientHeight : node.clientWidth) + pageMargin;\n if (!stride) return;\n const page = Math.max(\n 0,\n Math.min(\n count - 1,\n Math.round((vertical ? node.scrollTop : Math.abs(node.scrollLeft)) / stride)\n )\n );\n if (page !== selected.current || !initialized.current) {\n selected.current = page;\n callbacks.current.onPageSelected?.(event({ position: page }));\n }\n initialized.current = true;\n callbacks.current.onPageScroll?.(event({ position: page, offset: 0 }));\n setState(\"idle\");\n }\n function goTo(index, animated) {\n validatePage(index);\n const node = container.current;\n const d = dimensions.current;\n if (!node || index >= d.count) return;\n const offset = index * ((d.vertical ? node.clientHeight : node.clientWidth) + d.pageMargin);\n if (animated && index !== selected.current) setState(\"settling\");\n node.scrollTo({\n left: d.vertical ? 0 : offset * (d.rtl ? -1 : 1),\n top: d.vertical ? offset : 0,\n behavior: animated ? \"smooth\" : \"instant\"\n });\n if (!animated) settle();\n }\n useImperativeHandle(ref, () => ({\n setPage: (index) => goTo(index, true),\n setPageWithoutAnimation: (index) => goTo(index, false),\n setScrollEnabled: setEnabled,\n getNativeScrollRef: () => container.current\n }));\n useEffect(() => setEnabled(scrollEnabled), [scrollEnabled]);\n useLayoutEffect(() => {\n const node = container.current;\n if (!node) return;\n const resize = new ResizeObserver(\n () => goTo(Math.min(selected.current, Math.max(0, count - 1)), false)\n );\n resize.observe(node);\n goTo(Math.min(selected.current, Math.max(0, count - 1)), false);\n node.addEventListener(\"scrollend\", settle);\n return () => {\n resize.disconnect();\n node.removeEventListener(\"scrollend\", settle);\n };\n }, [count, orientation, layoutDirection, pageMargin]);\n const css = {\n ...domStyle(style),\n display: \"flex\",\n position: \"relative\",\n flexDirection: vertical ? \"column\" : \"row\",\n direction: layoutDirection,\n overflowX: enabled && !vertical ? \"auto\" : \"hidden\",\n overflowY: enabled && vertical ? \"auto\" : \"hidden\",\n scrollSnapType: `${vertical ? \"y\" : \"x\"} mandatory`,\n gap: pageMargin,\n scrollbarWidth: \"none\",\n overscrollBehavior: \"contain\"\n };\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: container,\n style: css,\n \"data-testid\": testID,\n onScroll: scroll,\n onPointerDown: (e) => {\n const node = container.current;\n if (!enabled || !node) return;\n pointer.current = {\n x: e.clientX,\n y: e.clientY,\n offset: vertical ? node.scrollTop : node.scrollLeft\n };\n },\n onPointerMove: (e) => {\n const start = pointer.current;\n if (!start || !enabled || state.current === \"dragging\") return;\n const distance = vertical ? Math.abs(e.clientY - start.y) : Math.abs(e.clientX - start.x);\n if (distance < 8) return;\n setState(\"dragging\");\n if (keyboardDismissMode === \"on-drag\" && document.activeElement instanceof HTMLElement)\n document.activeElement.blur();\n },\n onPointerUp: () => {\n const start = pointer.current;\n const node = container.current;\n pointer.current = null;\n if (state.current !== \"dragging\" || !node) return;\n if ((vertical ? node.scrollTop : node.scrollLeft) === start?.offset) settle();\n else setState(\"settling\");\n },\n onPointerCancel: () => {\n pointer.current = null;\n if (state.current === \"dragging\") setState(\"settling\");\n },\n onWheel: () => {\n if (enabled) setState(\"dragging\");\n },\n children: Children.map(children, (child, index) => {\n if (!isValidElement(child))\n throw new Error(\"Pager children must be React Native views\");\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n flex: \"0 0 100%\",\n display: \"flex\",\n flexDirection: \"column\",\n width: vertical ? \"100%\" : void 0,\n height: vertical ? void 0 : \"100%\",\n scrollSnapAlign: \"start\",\n position: \"relative\",\n overflow: \"hidden\"\n },\n children: child\n },\n index\n );\n })\n }\n );\n});\nexport {\n Pager\n};\n//# sourceMappingURL=Pager.js.map\n"],"mappings":"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"}
|
|
@@ -19,6 +19,9 @@ var Pager = /* @__PURE__ */ forwardRef(function Pager2(param, ref) {
|
|
|
19
19
|
},
|
|
20
20
|
setScrollEnabled(enabled) {
|
|
21
21
|
if (nativeRef.current) Commands.setScrollEnabledImperatively(nativeRef.current, enabled);
|
|
22
|
+
},
|
|
23
|
+
getNativeScrollRef() {
|
|
24
|
+
return nativeRef.current;
|
|
22
25
|
}
|
|
23
26
|
};
|
|
24
27
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pager.native.js","names":[],"sources":["esm/platform/ui/Pager.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Children, cloneElement, forwardRef, isValidElement, useImperativeHandle, useRef } from \"react\";\nimport NativePager, { Commands } from \"../specs/OneNativePagerNativeComponent\";\nimport { validatePage, validatePager } from \"./pagerTypes\";\nvar Pager = /* @__PURE__ */ forwardRef(function Pager2(param, ref) {\n var { children, onPageScrollStateChanged, ...props } = param;\n validatePager(props);\n var nativeRef = useRef(null);\n useImperativeHandle(ref, function() {\n return {\n setPage(index) {\n validatePage(index);\n if (nativeRef.current) Commands.setPage(nativeRef.current, index);\n },\n setPageWithoutAnimation(index) {\n validatePage(index);\n if (nativeRef.current) Commands.setPageWithoutAnimation(nativeRef.current, index);\n },\n setScrollEnabled(enabled) {\n if (nativeRef.current) Commands.setScrollEnabledImperatively(nativeRef.current, enabled);\n }\n };\n }, []);\n return /* @__PURE__ */ _jsx(NativePager, {\n ...props,\n ref: nativeRef,\n onPageScrollStateChanged: onPageScrollStateChanged ? function(param2) {\n var { nativeEvent } = param2;\n var state = nativeEvent.pageScrollState;\n if (state === \"idle\" || state === \"dragging\" || state === \"settling\") onPageScrollStateChanged({\n nativeEvent: {\n pageScrollState: state\n }\n });\n } : void 0,\n children: Children.map(children, function(child) {\n if (!/* @__PURE__ */ isValidElement(child)) throw new Error(\"Pager children must be React Native views\");\n return /* @__PURE__ */ cloneElement(child, {\n collapsable: false,\n style: [\n child.props.style,\n {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\"\n }\n ]\n });\n })\n });\n});\nexport {\n Pager\n};\n//# sourceMappingURL=Pager.native.js.map\n"],"mappings":";;;;;;AAIA,IAAI,QAAwB,2BAAW,SAAS,OAAO,OAAO,KAAK;CACjE,IAAI,EAAE,UAAU,0BAA0B,GAAG,UAAU;CACvD,cAAc,KAAK;CACnB,IAAI,YAAY,OAAO,IAAI;CAC3B,oBAAoB,KAAK,WAAW;EAClC,OAAO;GACL,QAAQ,OAAO;IACb,aAAa,KAAK;IAClB,IAAI,UAAU,SAAS,SAAS,QAAQ,UAAU,SAAS,KAAK;GAClE;GACA,wBAAwB,OAAO;IAC7B,aAAa,KAAK;IAClB,IAAI,UAAU,SAAS,SAAS,wBAAwB,UAAU,SAAS,KAAK;GAClF;GACA,iBAAiB,SAAS;IACxB,IAAI,UAAU,SAAS,SAAS,6BAA6B,UAAU,SAAS,OAAO;GACzF;EACF;CACF,GAAG,CAAC,CAAC;CACL,OAAuB,oBAAK,aAAa;EACvC,GAAG;EACH,KAAK;EACL,0BAA0B,2BAA2B,SAAS,QAAQ;GACpE,IAAI,EAAE,gBAAgB;GACtB,IAAI,QAAQ,YAAY;GACxB,IAAI,UAAU,UAAU,UAAU,cAAc,UAAU,YAAY,yBAAyB,EAC7F,aAAa,EACX,iBAAiB,MACnB,EACF,CAAC;EACH,IAAI,KAAK;EACT,UAAU,SAAS,IAAI,UAAU,SAAS,OAAO;GAC/C,IAAI,CAAiB,+BAAe,KAAK,GAAG,MAAM,IAAI,MAAM,2CAA2C;GACvG,OAAuB,6BAAa,OAAO;IACzC,aAAa;IACb,OAAO,CACL,MAAM,MAAM,OACZ;KACE,UAAU;KACV,OAAO;KACP,QAAQ;IACV,CACF;GACF,CAAC;EACH,CAAC;CACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"Pager.native.js","names":[],"sources":["esm/platform/ui/Pager.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Children, cloneElement, forwardRef, isValidElement, useImperativeHandle, useRef } from \"react\";\nimport NativePager, { Commands } from \"../specs/OneNativePagerNativeComponent\";\nimport { validatePage, validatePager } from \"./pagerTypes\";\nvar Pager = /* @__PURE__ */ forwardRef(function Pager2(param, ref) {\n var { children, onPageScrollStateChanged, ...props } = param;\n validatePager(props);\n var nativeRef = useRef(null);\n useImperativeHandle(ref, function() {\n return {\n setPage(index) {\n validatePage(index);\n if (nativeRef.current) Commands.setPage(nativeRef.current, index);\n },\n setPageWithoutAnimation(index) {\n validatePage(index);\n if (nativeRef.current) Commands.setPageWithoutAnimation(nativeRef.current, index);\n },\n setScrollEnabled(enabled) {\n if (nativeRef.current) Commands.setScrollEnabledImperatively(nativeRef.current, enabled);\n },\n getNativeScrollRef() {\n return nativeRef.current;\n }\n };\n }, []);\n return /* @__PURE__ */ _jsx(NativePager, {\n ...props,\n ref: nativeRef,\n onPageScrollStateChanged: onPageScrollStateChanged ? function(param2) {\n var { nativeEvent } = param2;\n var state = nativeEvent.pageScrollState;\n if (state === \"idle\" || state === \"dragging\" || state === \"settling\") onPageScrollStateChanged({\n nativeEvent: {\n pageScrollState: state\n }\n });\n } : void 0,\n children: Children.map(children, function(child) {\n if (!/* @__PURE__ */ isValidElement(child)) throw new Error(\"Pager children must be React Native views\");\n return /* @__PURE__ */ cloneElement(child, {\n collapsable: false,\n style: [\n child.props.style,\n {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\"\n }\n ]\n });\n })\n });\n});\nexport {\n Pager\n};\n//# sourceMappingURL=Pager.native.js.map\n"],"mappings":";;;;;;AAIA,IAAI,QAAwB,2BAAW,SAAS,OAAO,OAAO,KAAK;CACjE,IAAI,EAAE,UAAU,0BAA0B,GAAG,UAAU;CACvD,cAAc,KAAK;CACnB,IAAI,YAAY,OAAO,IAAI;CAC3B,oBAAoB,KAAK,WAAW;EAClC,OAAO;GACL,QAAQ,OAAO;IACb,aAAa,KAAK;IAClB,IAAI,UAAU,SAAS,SAAS,QAAQ,UAAU,SAAS,KAAK;GAClE;GACA,wBAAwB,OAAO;IAC7B,aAAa,KAAK;IAClB,IAAI,UAAU,SAAS,SAAS,wBAAwB,UAAU,SAAS,KAAK;GAClF;GACA,iBAAiB,SAAS;IACxB,IAAI,UAAU,SAAS,SAAS,6BAA6B,UAAU,SAAS,OAAO;GACzF;GACA,qBAAqB;IACnB,OAAO,UAAU;GACnB;EACF;CACF,GAAG,CAAC,CAAC;CACL,OAAuB,oBAAK,aAAa;EACvC,GAAG;EACH,KAAK;EACL,0BAA0B,2BAA2B,SAAS,QAAQ;GACpE,IAAI,EAAE,gBAAgB;GACtB,IAAI,QAAQ,YAAY;GACxB,IAAI,UAAU,UAAU,UAAU,cAAc,UAAU,YAAY,yBAAyB,EAC7F,aAAa,EACX,iBAAiB,MACnB,EACF,CAAC;EACH,IAAI,KAAK;EACT,UAAU,SAAS,IAAI,UAAU,SAAS,OAAO;GAC/C,IAAI,CAAiB,+BAAe,KAAK,GAAG,MAAM,IAAI,MAAM,2CAA2C;GACvG,OAAuB,6BAAa,OAAO;IACzC,aAAa;IACb,OAAO,CACL,MAAM,MAAM,OACZ;KACE,UAAU;KACV,OAAO;KACP,QAAQ;IACV,CACF;GACF,CAAC;EACH,CAAC;CACH,CAAC;AACH,CAAC"}
|
|
@@ -779,7 +779,7 @@ async function linkTo(href, event, options) {
|
|
|
779
779
|
const isRootTarget = action.target === freshRootState.key;
|
|
780
780
|
const currentFocusedRoute = freshRootState.routes[freshRootState.index];
|
|
781
781
|
const currentFocusedName = currentFocusedRoute?.name;
|
|
782
|
-
if (isRootTarget && isGroupTarget && hasFreshRootState) {
|
|
782
|
+
if (event !== "REPLACE" && isRootTarget && isGroupTarget && hasFreshRootState) {
|
|
783
783
|
const targetRoute = state.routes[state.index ?? state.routes.length - 1];
|
|
784
784
|
const targetRootName = targetRoute.name;
|
|
785
785
|
if (currentFocusedName === targetRootName) {
|