one 1.2.79 → 1.2.82
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/Root.cjs +1 -1
- package/dist/cjs/Root.js +1 -1
- package/dist/cjs/Root.js.map +1 -1
- package/dist/cjs/Root.native.js +1 -1
- package/dist/cjs/Root.native.js.map +1 -1
- package/dist/cjs/drawer.cjs +27 -0
- package/dist/cjs/drawer.js +22 -0
- package/dist/cjs/drawer.js.map +6 -0
- package/dist/cjs/drawer.native.js +30 -0
- package/dist/cjs/drawer.native.js.map +1 -0
- package/dist/cjs/hooks.cjs +25 -2
- package/dist/cjs/hooks.js +23 -2
- package/dist/cjs/hooks.js.map +1 -1
- package/dist/cjs/hooks.native.js +147 -14
- package/dist/cjs/hooks.native.js.map +1 -1
- package/dist/cjs/hooks.test.cjs +73 -0
- package/dist/cjs/hooks.test.js +98 -0
- package/dist/cjs/hooks.test.js.map +6 -0
- package/dist/cjs/hooks.test.native.js +194 -0
- package/dist/cjs/hooks.test.native.js.map +1 -0
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/link/prefetchIntent.cjs +122 -0
- package/dist/cjs/link/prefetchIntent.js +85 -0
- package/dist/cjs/link/prefetchIntent.js.map +6 -0
- package/dist/cjs/link/prefetchIntent.native.js +155 -0
- package/dist/cjs/link/prefetchIntent.native.js.map +1 -0
- package/dist/cjs/link/prefetchIntent.test.cjs +217 -0
- package/dist/cjs/link/prefetchIntent.test.js +149 -0
- package/dist/cjs/link/prefetchIntent.test.js.map +6 -0
- package/dist/cjs/link/prefetchIntent.test.native.js +239 -0
- package/dist/cjs/link/prefetchIntent.test.native.js.map +1 -0
- package/dist/cjs/link/prefetchViewport.cjs +67 -0
- package/dist/cjs/link/prefetchViewport.js +55 -0
- package/dist/cjs/link/prefetchViewport.js.map +6 -0
- package/dist/cjs/link/prefetchViewport.native.js +83 -0
- package/dist/cjs/link/prefetchViewport.native.js.map +1 -0
- package/dist/cjs/link/prefetchViewport.test.cjs +57 -0
- package/dist/cjs/link/prefetchViewport.test.js +59 -0
- package/dist/cjs/link/prefetchViewport.test.js.map +6 -0
- package/dist/cjs/link/prefetchViewport.test.native.js +85 -0
- package/dist/cjs/link/prefetchViewport.test.native.js.map +1 -0
- package/dist/cjs/router/findRouteNode.cjs +26 -0
- package/dist/cjs/router/findRouteNode.js +33 -0
- package/dist/cjs/router/findRouteNode.js.map +1 -1
- package/dist/cjs/router/findRouteNode.native.js +31 -0
- package/dist/cjs/router/findRouteNode.native.js.map +1 -1
- package/dist/cjs/router/router.cjs +11 -13
- package/dist/cjs/router/router.js +8 -10
- package/dist/cjs/router/router.js.map +2 -2
- package/dist/cjs/router/router.native.js +38 -122
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/router/useScreens.cjs +3 -1
- package/dist/cjs/router/useScreens.js +1 -0
- package/dist/cjs/router/useScreens.js.map +1 -1
- package/dist/cjs/router/useScreens.native.js.map +1 -1
- package/dist/cjs/server/PreloadScripts.cjs +46 -0
- package/dist/cjs/server/PreloadScripts.js +37 -0
- package/dist/cjs/server/PreloadScripts.js.map +6 -0
- package/dist/cjs/server/PreloadScripts.native.js +53 -0
- package/dist/cjs/server/PreloadScripts.native.js.map +6 -0
- package/dist/cjs/server/RNWStylesheet.cjs +35 -0
- package/dist/cjs/server/RNWStylesheet.js +31 -0
- package/dist/cjs/server/RNWStylesheet.js.map +6 -0
- package/dist/cjs/server/RNWStylesheet.native.js +38 -0
- package/dist/cjs/server/RNWStylesheet.native.js.map +1 -0
- package/dist/cjs/views/PreloadLinks.cjs +102 -18
- package/dist/cjs/views/PreloadLinks.js +95 -19
- package/dist/cjs/views/PreloadLinks.js.map +1 -1
- package/dist/cjs/vite/one.cjs +3 -0
- package/dist/cjs/vite/one.js +3 -0
- package/dist/cjs/vite/one.js.map +1 -1
- package/dist/cjs/vite/one.native.js +4 -0
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/esm/Root.js +1 -1
- package/dist/esm/Root.js.map +1 -1
- package/dist/esm/Root.mjs +1 -1
- package/dist/esm/Root.mjs.map +1 -1
- package/dist/esm/Root.native.js +1 -1
- package/dist/esm/Root.native.js.map +1 -1
- package/dist/esm/drawer.js +6 -0
- package/dist/esm/drawer.js.map +6 -0
- package/dist/esm/drawer.mjs +3 -0
- package/dist/esm/drawer.mjs.map +1 -0
- package/dist/esm/drawer.native.js +3 -0
- package/dist/esm/drawer.native.js.map +1 -0
- package/dist/esm/hooks.js +23 -2
- package/dist/esm/hooks.js.map +1 -1
- package/dist/esm/hooks.mjs +25 -3
- package/dist/esm/hooks.mjs.map +1 -1
- package/dist/esm/hooks.native.js +147 -15
- package/dist/esm/hooks.native.js.map +1 -1
- package/dist/esm/hooks.test.js +98 -0
- package/dist/esm/hooks.test.js.map +6 -0
- package/dist/esm/hooks.test.mjs +74 -0
- package/dist/esm/hooks.test.mjs.map +1 -0
- package/dist/esm/hooks.test.native.js +192 -0
- package/dist/esm/hooks.test.native.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/link/prefetchIntent.js +69 -0
- package/dist/esm/link/prefetchIntent.js.map +6 -0
- package/dist/esm/link/prefetchIntent.mjs +97 -0
- package/dist/esm/link/prefetchIntent.mjs.map +1 -0
- package/dist/esm/link/prefetchIntent.native.js +127 -0
- package/dist/esm/link/prefetchIntent.native.js.map +1 -0
- package/dist/esm/link/prefetchIntent.test.js +150 -0
- package/dist/esm/link/prefetchIntent.test.js.map +6 -0
- package/dist/esm/link/prefetchIntent.test.mjs +218 -0
- package/dist/esm/link/prefetchIntent.test.mjs.map +1 -0
- package/dist/esm/link/prefetchIntent.test.native.js +237 -0
- package/dist/esm/link/prefetchIntent.test.native.js.map +1 -0
- package/dist/esm/link/prefetchViewport.js +39 -0
- package/dist/esm/link/prefetchViewport.js.map +6 -0
- package/dist/esm/link/prefetchViewport.mjs +42 -0
- package/dist/esm/link/prefetchViewport.mjs.map +1 -0
- package/dist/esm/link/prefetchViewport.native.js +55 -0
- package/dist/esm/link/prefetchViewport.native.js.map +1 -0
- package/dist/esm/link/prefetchViewport.test.js +60 -0
- package/dist/esm/link/prefetchViewport.test.js.map +6 -0
- package/dist/esm/link/prefetchViewport.test.mjs +58 -0
- package/dist/esm/link/prefetchViewport.test.mjs.map +1 -0
- package/dist/esm/link/prefetchViewport.test.native.js +83 -0
- package/dist/esm/link/prefetchViewport.test.native.js.map +1 -0
- package/dist/esm/router/findRouteNode.js +33 -0
- package/dist/esm/router/findRouteNode.js.map +1 -1
- package/dist/esm/router/findRouteNode.mjs +26 -1
- package/dist/esm/router/findRouteNode.mjs.map +1 -1
- package/dist/esm/router/findRouteNode.native.js +31 -1
- package/dist/esm/router/findRouteNode.native.js.map +1 -1
- package/dist/esm/router/router.js +10 -11
- package/dist/esm/router/router.js.map +2 -2
- package/dist/esm/router/router.mjs +12 -14
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +39 -123
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/router/useScreens.js +1 -0
- package/dist/esm/router/useScreens.js.map +1 -1
- package/dist/esm/router/useScreens.mjs +3 -1
- package/dist/esm/router/useScreens.mjs.map +1 -1
- package/dist/esm/router/useScreens.native.js.map +1 -1
- package/dist/esm/server/PreloadScripts.js +22 -0
- package/dist/esm/server/PreloadScripts.js.map +6 -0
- package/dist/esm/server/PreloadScripts.mjs +23 -0
- package/dist/esm/server/PreloadScripts.mjs.map +1 -0
- package/dist/esm/server/PreloadScripts.native.js +37 -0
- package/dist/esm/server/PreloadScripts.native.js.map +6 -0
- package/dist/esm/server/RNWStylesheet.js +15 -0
- package/dist/esm/server/RNWStylesheet.js.map +6 -0
- package/dist/esm/server/RNWStylesheet.mjs +12 -0
- package/dist/esm/server/RNWStylesheet.mjs.map +1 -0
- package/dist/esm/server/RNWStylesheet.native.js +12 -0
- package/dist/esm/server/RNWStylesheet.native.js.map +1 -0
- package/dist/esm/views/PreloadLinks.js +86 -17
- package/dist/esm/views/PreloadLinks.js.map +1 -1
- package/dist/esm/views/PreloadLinks.mjs +87 -14
- package/dist/esm/views/PreloadLinks.mjs.map +1 -1
- package/dist/esm/vite/one.js +3 -0
- package/dist/esm/vite/one.js.map +1 -1
- package/dist/esm/vite/one.mjs +3 -0
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js +4 -0
- package/dist/esm/vite/one.native.js.map +1 -1
- package/package.json +33 -12
- package/src/Root.tsx +1 -1
- package/src/drawer.ts +1 -0
- package/src/hooks.test.ts +157 -0
- package/src/hooks.tsx +79 -23
- package/src/index.ts +1 -0
- package/src/link/prefetchIntent.test.ts +416 -0
- package/src/link/prefetchIntent.ts +174 -0
- package/src/link/prefetchViewport.test.ts +120 -0
- package/src/link/prefetchViewport.ts +62 -0
- package/src/router/findRouteNode.ts +73 -0
- package/src/router/router.ts +68 -41
- package/src/router/useScreens.tsx +1 -0
- package/src/views/PreloadLinks.tsx +156 -20
- package/src/vite/one.ts +4 -0
- package/src/vite/types.ts +12 -0
- package/types/drawer.d.ts +2 -0
- package/types/drawer.d.ts.map +1 -0
- package/types/hooks.d.ts +22 -0
- package/types/hooks.d.ts.map +1 -1
- package/types/hooks.test.d.ts +2 -0
- package/types/hooks.test.d.ts.map +1 -0
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/link/prefetchIntent.d.ts +43 -0
- package/types/link/prefetchIntent.d.ts.map +1 -0
- package/types/link/prefetchIntent.test.d.ts +2 -0
- package/types/link/prefetchIntent.test.d.ts.map +1 -0
- package/types/link/prefetchViewport.d.ts +16 -0
- package/types/link/prefetchViewport.d.ts.map +1 -0
- package/types/link/prefetchViewport.test.d.ts +2 -0
- package/types/link/prefetchViewport.test.d.ts.map +1 -0
- package/types/router/findRouteNode.d.ts +11 -0
- package/types/router/findRouteNode.d.ts.map +1 -1
- package/types/router/router.d.ts.map +1 -1
- package/types/router/useScreens.d.ts.map +1 -1
- package/types/server/PreloadScripts.d.ts.map +1 -0
- package/types/views/PreloadLinks.d.ts +9 -0
- package/types/views/PreloadLinks.d.ts.map +1 -1
- package/types/vite/one.d.ts.map +1 -1
- package/types/vite/types.d.ts +11 -0
- package/types/vite/types.d.ts.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","beforeEach","createPrefetchIntent","rect","x","y","w","arguments","length","h","left","top","right","bottom","width","height","toJSON","prefetched","intent","onPrefetch","href","push","setRects","r","move","toEqual","toBe","links","Array","from","_","i"],"sources":["../../../src/link/prefetchIntent.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
function createPrefetchViewport() {
|
|
2
|
+
const done = /* @__PURE__ */ new Set(), nodes = /* @__PURE__ */ new Map();
|
|
3
|
+
let io = null, onPrefetch = null;
|
|
4
|
+
function getObserver() {
|
|
5
|
+
return io || (io = new IntersectionObserver(
|
|
6
|
+
(entries) => {
|
|
7
|
+
for (const entry of entries) {
|
|
8
|
+
if (!entry.isIntersecting) continue;
|
|
9
|
+
const href = nodes.get(entry.target);
|
|
10
|
+
href && !done.has(href) && (done.add(href), onPrefetch?.(href));
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{ threshold: 0.5 }
|
|
14
|
+
// fires when mostly visible
|
|
15
|
+
), io);
|
|
16
|
+
}
|
|
17
|
+
function start(prefetch) {
|
|
18
|
+
onPrefetch = prefetch;
|
|
19
|
+
}
|
|
20
|
+
function observe(el, href) {
|
|
21
|
+
return nodes.set(el, href), getObserver().observe(el), () => {
|
|
22
|
+
nodes.delete(el), io?.unobserve(el), done.delete(href);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return { start, observe, done, nodes };
|
|
26
|
+
}
|
|
27
|
+
let instance = null;
|
|
28
|
+
function startPrefetchViewport(prefetch) {
|
|
29
|
+
instance || (instance = createPrefetchViewport()), instance.start(prefetch);
|
|
30
|
+
}
|
|
31
|
+
function observePrefetchViewport(el, href) {
|
|
32
|
+
return instance || (instance = createPrefetchViewport()), instance.observe(el, href);
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
createPrefetchViewport,
|
|
36
|
+
observePrefetchViewport,
|
|
37
|
+
startPrefetchViewport
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=prefetchViewport.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/link/prefetchViewport.ts"],
|
|
4
|
+
"mappings": "AASO,SAAS,yBAAyB;AACvC,QAAM,OAAO,oBAAI,IAAY,GACvB,QAAQ,oBAAI,IAAyB;AAC3C,MAAI,KAAkC,MAClC,aAA8C;AAElD,WAAS,cAAc;AACrB,WAAI,OACJ,KAAK,IAAI;AAAA,MACP,CAAC,YAAY;AACX,mBAAW,SAAS,SAAS;AAC3B,cAAI,CAAC,MAAM,eAAgB;AAC3B,gBAAM,OAAO,MAAM,IAAI,MAAM,MAAqB;AAClD,UAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,MACxB,KAAK,IAAI,IAAI,GACb,aAAa,IAAI;AAAA,QAErB;AAAA,MACF;AAAA,MACA,EAAE,WAAW,IAAI;AAAA;AAAA,IACnB,GACO;AAAA,EACT;AAEA,WAAS,MAAM,UAAkC;AAC/C,iBAAa;AAAA,EACf;AAEA,WAAS,QAAQ,IAAiB,MAAc;AAC9C,iBAAM,IAAI,IAAI,IAAI,GAClB,YAAY,EAAE,QAAQ,EAAE,GACjB,MAAM;AACX,YAAM,OAAO,EAAE,GACf,IAAI,UAAU,EAAE,GAChB,KAAK,OAAO,IAAI;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,EAAE,OAAO,SAAS,MAAM,MAAM;AACvC;AAGA,IAAI,WAAsC;AAEnC,SAAS,sBAAsB,UAAkC;AACtE,EAAK,aAAU,WAAW,uBAAuB,IACjD,SAAS,MAAM,QAAQ;AACzB;AAEO,SAAS,wBAAwB,IAAiB,MAAc;AACrE,SAAK,aAAU,WAAW,uBAAuB,IAC1C,SAAS,QAAQ,IAAI,IAAI;AAClC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function createPrefetchViewport() {
|
|
2
|
+
const done = /* @__PURE__ */new Set(),
|
|
3
|
+
nodes = /* @__PURE__ */new Map();
|
|
4
|
+
let io = null,
|
|
5
|
+
onPrefetch = null;
|
|
6
|
+
function getObserver() {
|
|
7
|
+
return io || (io = new IntersectionObserver(entries => {
|
|
8
|
+
for (const entry of entries) {
|
|
9
|
+
if (!entry.isIntersecting) continue;
|
|
10
|
+
const href = nodes.get(entry.target);
|
|
11
|
+
href && !done.has(href) && (done.add(href), onPrefetch?.(href));
|
|
12
|
+
}
|
|
13
|
+
}, {
|
|
14
|
+
threshold: 0.5
|
|
15
|
+
}
|
|
16
|
+
// fires when mostly visible
|
|
17
|
+
), io);
|
|
18
|
+
}
|
|
19
|
+
function start(prefetch) {
|
|
20
|
+
onPrefetch = prefetch;
|
|
21
|
+
}
|
|
22
|
+
function observe(el, href) {
|
|
23
|
+
return nodes.set(el, href), getObserver().observe(el), () => {
|
|
24
|
+
nodes.delete(el), io?.unobserve(el), done.delete(href);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
start,
|
|
29
|
+
observe,
|
|
30
|
+
done,
|
|
31
|
+
nodes
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
let instance = null;
|
|
35
|
+
function startPrefetchViewport(prefetch) {
|
|
36
|
+
instance || (instance = createPrefetchViewport()), instance.start(prefetch);
|
|
37
|
+
}
|
|
38
|
+
function observePrefetchViewport(el, href) {
|
|
39
|
+
return instance || (instance = createPrefetchViewport()), instance.observe(el, href);
|
|
40
|
+
}
|
|
41
|
+
export { createPrefetchViewport, observePrefetchViewport, startPrefetchViewport };
|
|
42
|
+
//# sourceMappingURL=prefetchViewport.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPrefetchViewport","done","Set","nodes","Map","io","onPrefetch","getObserver","IntersectionObserver","entries","entry","isIntersecting","href","get","target","has","add","threshold","start","prefetch","observe","el","set","delete","unobserve","instance","startPrefetchViewport","observePrefetchViewport"],"sources":["../../../src/link/prefetchViewport.ts"],"sourcesContent":[null],"mappings":"AASO,SAASA,uBAAA,EAAyB;EACvC,MAAMC,IAAA,GAAO,mBAAIC,GAAA,CAAY;IACvBC,KAAA,GAAQ,mBAAIC,GAAA,CAAyB;EAC3C,IAAIC,EAAA,GAAkC;IAClCC,UAAA,GAA8C;EAElD,SAASC,YAAA,EAAc;IACrB,OAAIF,EAAA,KACJA,EAAA,GAAK,IAAIG,oBAAA,CACNC,OAAA,IAAY;MACX,WAAWC,KAAA,IAASD,OAAA,EAAS;QAC3B,IAAI,CAACC,KAAA,CAAMC,cAAA,EAAgB;QAC3B,MAAMC,IAAA,GAAOT,KAAA,CAAMU,GAAA,CAAIH,KAAA,CAAMI,MAAqB;QAC9CF,IAAA,IAAQ,CAACX,IAAA,CAAKc,GAAA,CAAIH,IAAI,MACxBX,IAAA,CAAKe,GAAA,CAAIJ,IAAI,GACbN,UAAA,GAAaM,IAAI;MAErB;IACF,GACA;MAAEK,SAAA,EAAW;IAAI;IAAA;IACnB,GACOZ,EAAA;EACT;EAEA,SAASa,MAAMC,QAAA,EAAkC;IAC/Cb,UAAA,GAAaa,QAAA;EACf;EAEA,SAASC,QAAQC,EAAA,EAAiBT,IAAA,EAAc;IAC9C,OAAAT,KAAA,CAAMmB,GAAA,CAAID,EAAA,EAAIT,IAAI,GAClBL,WAAA,CAAY,EAAEa,OAAA,CAAQC,EAAE,GACjB,MAAM;MACXlB,KAAA,CAAMoB,MAAA,CAAOF,EAAE,GACfhB,EAAA,EAAImB,SAAA,CAAUH,EAAE,GAChBpB,IAAA,CAAKsB,MAAA,CAAOX,IAAI;IAClB;EACF;EAEA,OAAO;IAAEM,KAAA;IAAOE,OAAA;IAASnB,IAAA;IAAME;EAAM;AACvC;AAGA,IAAIsB,QAAA,GAAsC;AAEnC,SAASC,sBAAsBP,QAAA,EAAkC;EACjEM,QAAA,KAAUA,QAAA,GAAWzB,sBAAA,CAAuB,IACjDyB,QAAA,CAASP,KAAA,CAAMC,QAAQ;AACzB;AAEO,SAASQ,wBAAwBN,EAAA,EAAiBT,IAAA,EAAc;EACrE,OAAKa,QAAA,KAAUA,QAAA,GAAWzB,sBAAA,CAAuB,IAC1CyB,QAAA,CAASL,OAAA,CAAQC,EAAA,EAAIT,IAAI;AAClC","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
function createPrefetchViewport() {
|
|
2
|
+
var done = /* @__PURE__ */new Set(),
|
|
3
|
+
nodes = /* @__PURE__ */new Map(),
|
|
4
|
+
io = null,
|
|
5
|
+
onPrefetch = null;
|
|
6
|
+
function getObserver() {
|
|
7
|
+
return io || (io = new IntersectionObserver(function (entries) {
|
|
8
|
+
var _iteratorNormalCompletion = !0,
|
|
9
|
+
_didIteratorError = !1,
|
|
10
|
+
_iteratorError = void 0;
|
|
11
|
+
try {
|
|
12
|
+
for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
13
|
+
var entry = _step.value;
|
|
14
|
+
if (entry.isIntersecting) {
|
|
15
|
+
var href = nodes.get(entry.target);
|
|
16
|
+
href && !done.has(href) && (done.add(href), onPrefetch?.(href));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
} catch (err) {
|
|
20
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
21
|
+
} finally {
|
|
22
|
+
try {
|
|
23
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
24
|
+
} finally {
|
|
25
|
+
if (_didIteratorError) throw _iteratorError;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
threshold: 0.5
|
|
30
|
+
}), io);
|
|
31
|
+
}
|
|
32
|
+
function start(prefetch) {
|
|
33
|
+
onPrefetch = prefetch;
|
|
34
|
+
}
|
|
35
|
+
function observe(el, href) {
|
|
36
|
+
return nodes.set(el, href), getObserver().observe(el), function () {
|
|
37
|
+
nodes.delete(el), io?.unobserve(el), done.delete(href);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
start,
|
|
42
|
+
observe,
|
|
43
|
+
done,
|
|
44
|
+
nodes
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
var instance = null;
|
|
48
|
+
function startPrefetchViewport(prefetch) {
|
|
49
|
+
instance || (instance = createPrefetchViewport()), instance.start(prefetch);
|
|
50
|
+
}
|
|
51
|
+
function observePrefetchViewport(el, href) {
|
|
52
|
+
return instance || (instance = createPrefetchViewport()), instance.observe(el, href);
|
|
53
|
+
}
|
|
54
|
+
export { createPrefetchViewport, observePrefetchViewport, startPrefetchViewport };
|
|
55
|
+
//# sourceMappingURL=prefetchViewport.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPrefetchViewport","done","Set","nodes","Map","io","onPrefetch","getObserver","IntersectionObserver","entries","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","entry","value","isIntersecting","href","get","target","has","add","err","return","threshold","start","prefetch","observe","el","set","delete","unobserve"],"sources":["../../../src/link/prefetchViewport.ts"],"sourcesContent":[null],"mappings":"AASO,SAASA,uBAAA,EAAyB;EACvC,IAAAC,IAAM,kBAAO,IAAAC,GAAI;IAAYC,KACvB,kBAAQ,IAAAC,GAAI;IAAyBC,EAAA;IAAAC,UAAA;EAC3C,SAAsCC,WAClCA,CAAA;IAEJ,OAASF,EAAA,KAAAA,EAAA,OAAcG,oBAAA,WAAAC,OAAA;MACrB,IAAAC,yBACS;QAAAC,iBAAA;QAAAC,cAAA;MACP,IAAC;QACC,SAAAC,SAAW,GAASJ,OAAA,CAASK,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAhB,IAAA,GAAAS,yBAAA;UAC3B,IAAIQ,KAAC,GAAMF,KAAA,CAAAG,KAAA;UACX,IAAAD,KAAM,CAAAE,cAAiB;YACnB,IAAAC,IAAS,GAAAlB,KAAS,CAAAmB,GAAI,CAAAJ,KACxB,CAAAK,MAAK;YAGTF,IAAA,KAAApB,IAAA,CAAAuB,GAAA,CAAAH,IAAA,MAAApB,IAAA,CAAAwB,GAAA,CAAAJ,IAAA,GAAAf,UAAA,GAAAe,IAAA;UACF;QACE;MAAe,SAAAK,GAAA;QAEZf,iBAAA,OAAAC,cAAA,GAAAc,GAAA;MACT;QAEA,IAAS;UACP,CAAAhB,yBAAa,IAAAG,SAAA,CAAAc,MAAA,YAAAd,SAAA,CAAAc,MAAA;QACf;UAEA,IAAShB,iBAAuC,EAC9C,MAAMC,cACN;QAEE;MAGF;IACF;MAEAgB,SAAS;IACX,IAAAvB,EAAA;EAGA;EAEO,SAASwB,MAAAC,QAAA;IACTxB,UAAA,GAAUwB,QAAA;EAEjB;EAEO,SAASC,QAAAC,EAAA,EAAAX,IAAA;IACd,OAAKlB,KAAA,CAAA8B,GAAA,CAAAD,EAAU,EAAAX,IAAA,GAAAd,WAAW,GAAAwB,OAAA,CAAAC,EAAuB,eACjC;MAClB7B,KAAA,CAAA+B,MAAA,CAAAF,EAAA,GAAA3B,EAAA,EAAA8B,SAAA,CAAAH,EAAA,GAAA/B,IAAA,CAAAiC,MAAA,CAAAb,IAAA","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { describe, expect, it, beforeEach, vi } from "vitest";
|
|
2
|
+
import { createPrefetchViewport } from "./prefetchViewport";
|
|
3
|
+
let mockIOCallback;
|
|
4
|
+
const mockObserved = /* @__PURE__ */ new Set();
|
|
5
|
+
vi.stubGlobal(
|
|
6
|
+
"IntersectionObserver",
|
|
7
|
+
class {
|
|
8
|
+
constructor(callback) {
|
|
9
|
+
mockIOCallback = callback;
|
|
10
|
+
}
|
|
11
|
+
observe(el) {
|
|
12
|
+
mockObserved.add(el);
|
|
13
|
+
}
|
|
14
|
+
unobserve(el) {
|
|
15
|
+
mockObserved.delete(el);
|
|
16
|
+
}
|
|
17
|
+
disconnect() {
|
|
18
|
+
mockObserved.clear();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
function simulateIntersect(el, isIntersecting) {
|
|
23
|
+
mockIOCallback(
|
|
24
|
+
[{ target: el, isIntersecting }],
|
|
25
|
+
{}
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
describe("prefetchViewport", () => {
|
|
29
|
+
let prefetched, vp;
|
|
30
|
+
beforeEach(() => {
|
|
31
|
+
prefetched = [], mockObserved.clear(), vp = createPrefetchViewport(), vp.start((href) => prefetched.push(href));
|
|
32
|
+
}), it("prefetches when link enters viewport", () => {
|
|
33
|
+
const el = {};
|
|
34
|
+
vp.observe(el, "/about"), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
35
|
+
}), it("does not prefetch when link exits viewport", () => {
|
|
36
|
+
const el = {};
|
|
37
|
+
vp.observe(el, "/about"), simulateIntersect(el, !1), expect(prefetched).toEqual([]);
|
|
38
|
+
}), it("only prefetches each href once", () => {
|
|
39
|
+
const el = {};
|
|
40
|
+
vp.observe(el, "/about"), simulateIntersect(el, !0), simulateIntersect(el, !1), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
41
|
+
}), it("cleanup re-enables prefetch for href", () => {
|
|
42
|
+
const el = {}, cleanup = vp.observe(el, "/about");
|
|
43
|
+
simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]), cleanup(), prefetched.length = 0, vp.observe(el, "/about"), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
44
|
+
}), describe("memory and performance", () => {
|
|
45
|
+
it("does not leak elements after cleanup", () => {
|
|
46
|
+
const elements = [], cleanups = [];
|
|
47
|
+
for (let i = 0; i < 100; i++) {
|
|
48
|
+
const el = {};
|
|
49
|
+
elements.push(el), cleanups.push(vp.observe(el, `/page-${i}`));
|
|
50
|
+
}
|
|
51
|
+
expect(vp.nodes.size).toBe(100), cleanups.forEach((c) => c()), expect(vp.nodes.size).toBe(0), expect(vp.done.size).toBe(0);
|
|
52
|
+
}), it("handles rapid observe/unobserve cycles", () => {
|
|
53
|
+
const el = {};
|
|
54
|
+
for (let i = 0; i < 100; i++)
|
|
55
|
+
vp.observe(el, "/test")();
|
|
56
|
+
expect(vp.nodes.size).toBe(0);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=prefetchViewport.test.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/link/prefetchViewport.test.ts"],
|
|
4
|
+
"mappings": "AAAA,SAAS,UAAU,QAAQ,IAAI,YAAY,UAAU;AACrD,SAAS,8BAA8B;AAGvC,IAAI;AACJ,MAAM,eAAe,oBAAI,IAAa;AAEtC,GAAG;AAAA,EACD;AAAA,EACA,MAAM;AAAA,IACJ,YAAY,UAAwC;AAClD,uBAAiB;AAAA,IACnB;AAAA,IACA,QAAQ,IAAa;AACnB,mBAAa,IAAI,EAAE;AAAA,IACrB;AAAA,IACA,UAAU,IAAa;AACrB,mBAAa,OAAO,EAAE;AAAA,IACxB;AAAA,IACA,aAAa;AACX,mBAAa,MAAM;AAAA,IACrB;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,IAAa,gBAAyB;AAC/D;AAAA,IACE,CAAC,EAAE,QAAQ,IAAI,eAAe,CAA8B;AAAA,IAC5D,CAAC;AAAA,EACH;AACF;AAEA,SAAS,oBAAoB,MAAM;AACjC,MAAI,YACA;AAEJ,aAAW,MAAM;AACf,iBAAa,CAAC,GACd,aAAa,MAAM,GACnB,KAAK,uBAAuB,GAC5B,GAAG,MAAM,CAAC,SAAS,WAAW,KAAK,IAAI,CAAC;AAAA,EAC1C,CAAC,GAED,GAAG,wCAAwC,MAAM;AAC/C,UAAM,KAAK,CAAC;AACZ,OAAG,QAAQ,IAAI,QAAQ,GAEvB,kBAAkB,IAAI,EAAI,GAC1B,OAAO,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;AAAA,EACvC,CAAC,GAED,GAAG,8CAA8C,MAAM;AACrD,UAAM,KAAK,CAAC;AACZ,OAAG,QAAQ,IAAI,QAAQ,GAEvB,kBAAkB,IAAI,EAAK,GAC3B,OAAO,UAAU,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC/B,CAAC,GAED,GAAG,kCAAkC,MAAM;AACzC,UAAM,KAAK,CAAC;AACZ,OAAG,QAAQ,IAAI,QAAQ,GAEvB,kBAAkB,IAAI,EAAI,GAC1B,kBAAkB,IAAI,EAAK,GAC3B,kBAAkB,IAAI,EAAI,GAE1B,OAAO,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;AAAA,EACvC,CAAC,GAED,GAAG,wCAAwC,MAAM;AAC/C,UAAM,KAAK,CAAC,GACN,UAAU,GAAG,QAAQ,IAAI,QAAQ;AAEvC,sBAAkB,IAAI,EAAI,GAC1B,OAAO,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAErC,QAAQ,GACR,WAAW,SAAS,GAGpB,GAAG,QAAQ,IAAI,QAAQ,GACvB,kBAAkB,IAAI,EAAI,GAC1B,OAAO,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;AAAA,EACvC,CAAC,GAED,SAAS,0BAA0B,MAAM;AACvC,OAAG,wCAAwC,MAAM;AAC/C,YAAM,WAA0B,CAAC,GAC3B,WAA2B,CAAC;AAGlC,eAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAM,KAAK,CAAC;AACZ,iBAAS,KAAK,EAAE,GAChB,SAAS,KAAK,GAAG,QAAQ,IAAI,SAAS,CAAC,EAAE,CAAC;AAAA,MAC5C;AAEA,aAAO,GAAG,MAAM,IAAI,EAAE,KAAK,GAAG,GAG9B,SAAS,QAAQ,CAAC,MAAM,EAAE,CAAC,GAE3B,OAAO,GAAG,MAAM,IAAI,EAAE,KAAK,CAAC,GAC5B,OAAO,GAAG,KAAK,IAAI,EAAE,KAAK,CAAC;AAAA,IAC7B,CAAC,GAED,GAAG,0CAA0C,MAAM;AACjD,YAAM,KAAK,CAAC;AAEZ,eAAS,IAAI,GAAG,IAAI,KAAK;AAEvB,QADgB,GAAG,QAAQ,IAAI,OAAO,EAC9B;AAIV,aAAO,GAAG,MAAM,IAAI,EAAE,KAAK,CAAC;AAAA,IAC9B,CAAC;AAAA,EACH,CAAC;AACH,CAAC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { describe, expect, it, beforeEach, vi } from "vitest";
|
|
2
|
+
import { createPrefetchViewport } from "./prefetchViewport.mjs";
|
|
3
|
+
let mockIOCallback;
|
|
4
|
+
const mockObserved = /* @__PURE__ */new Set();
|
|
5
|
+
vi.stubGlobal("IntersectionObserver", class {
|
|
6
|
+
constructor(callback) {
|
|
7
|
+
mockIOCallback = callback;
|
|
8
|
+
}
|
|
9
|
+
observe(el) {
|
|
10
|
+
mockObserved.add(el);
|
|
11
|
+
}
|
|
12
|
+
unobserve(el) {
|
|
13
|
+
mockObserved.delete(el);
|
|
14
|
+
}
|
|
15
|
+
disconnect() {
|
|
16
|
+
mockObserved.clear();
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
function simulateIntersect(el, isIntersecting) {
|
|
20
|
+
mockIOCallback([{
|
|
21
|
+
target: el,
|
|
22
|
+
isIntersecting
|
|
23
|
+
}], {});
|
|
24
|
+
}
|
|
25
|
+
describe("prefetchViewport", () => {
|
|
26
|
+
let prefetched, vp;
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
prefetched = [], mockObserved.clear(), vp = createPrefetchViewport(), vp.start(href => prefetched.push(href));
|
|
29
|
+
}), it("prefetches when link enters viewport", () => {
|
|
30
|
+
const el = {};
|
|
31
|
+
vp.observe(el, "/about"), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
32
|
+
}), it("does not prefetch when link exits viewport", () => {
|
|
33
|
+
const el = {};
|
|
34
|
+
vp.observe(el, "/about"), simulateIntersect(el, !1), expect(prefetched).toEqual([]);
|
|
35
|
+
}), it("only prefetches each href once", () => {
|
|
36
|
+
const el = {};
|
|
37
|
+
vp.observe(el, "/about"), simulateIntersect(el, !0), simulateIntersect(el, !1), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
38
|
+
}), it("cleanup re-enables prefetch for href", () => {
|
|
39
|
+
const el = {},
|
|
40
|
+
cleanup = vp.observe(el, "/about");
|
|
41
|
+
simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]), cleanup(), prefetched.length = 0, vp.observe(el, "/about"), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
42
|
+
}), describe("memory and performance", () => {
|
|
43
|
+
it("does not leak elements after cleanup", () => {
|
|
44
|
+
const elements = [],
|
|
45
|
+
cleanups = [];
|
|
46
|
+
for (let i = 0; i < 100; i++) {
|
|
47
|
+
const el = {};
|
|
48
|
+
elements.push(el), cleanups.push(vp.observe(el, `/page-${i}`));
|
|
49
|
+
}
|
|
50
|
+
expect(vp.nodes.size).toBe(100), cleanups.forEach(c => c()), expect(vp.nodes.size).toBe(0), expect(vp.done.size).toBe(0);
|
|
51
|
+
}), it("handles rapid observe/unobserve cycles", () => {
|
|
52
|
+
const el = {};
|
|
53
|
+
for (let i = 0; i < 100; i++) vp.observe(el, "/test")();
|
|
54
|
+
expect(vp.nodes.size).toBe(0);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=prefetchViewport.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","beforeEach","vi","createPrefetchViewport","mockIOCallback","mockObserved","Set","stubGlobal","constructor","callback","observe","el","add","unobserve","delete","disconnect","clear","simulateIntersect","isIntersecting","target","prefetched","vp","start","href","push","toEqual","cleanup","length","elements","cleanups","i","nodes","size","toBe","forEach","c","done"],"sources":["../../../src/link/prefetchViewport.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { describe, expect, it, beforeEach, vi } from "vitest";
|
|
2
|
+
import { createPrefetchViewport } from "./prefetchViewport.native.js";
|
|
3
|
+
function _class_call_check(instance, Constructor) {
|
|
4
|
+
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
|
|
5
|
+
}
|
|
6
|
+
function _defineProperties(target, props) {
|
|
7
|
+
for (var i = 0; i < props.length; i++) {
|
|
8
|
+
var descriptor = props[i];
|
|
9
|
+
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
13
|
+
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor;
|
|
14
|
+
}
|
|
15
|
+
var mockIOCallback,
|
|
16
|
+
mockObserved = /* @__PURE__ */new Set();
|
|
17
|
+
vi.stubGlobal("IntersectionObserver", /* @__PURE__ */function () {
|
|
18
|
+
"use strict";
|
|
19
|
+
|
|
20
|
+
function _class(callback) {
|
|
21
|
+
_class_call_check(this, _class), mockIOCallback = callback;
|
|
22
|
+
}
|
|
23
|
+
return _create_class(_class, [{
|
|
24
|
+
key: "observe",
|
|
25
|
+
value: function (el) {
|
|
26
|
+
mockObserved.add(el);
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
key: "unobserve",
|
|
30
|
+
value: function (el) {
|
|
31
|
+
mockObserved.delete(el);
|
|
32
|
+
}
|
|
33
|
+
}, {
|
|
34
|
+
key: "disconnect",
|
|
35
|
+
value: function () {
|
|
36
|
+
mockObserved.clear();
|
|
37
|
+
}
|
|
38
|
+
}]), _class;
|
|
39
|
+
}());
|
|
40
|
+
function simulateIntersect(el, isIntersecting) {
|
|
41
|
+
mockIOCallback([{
|
|
42
|
+
target: el,
|
|
43
|
+
isIntersecting
|
|
44
|
+
}], {});
|
|
45
|
+
}
|
|
46
|
+
describe("prefetchViewport", function () {
|
|
47
|
+
var prefetched, vp;
|
|
48
|
+
beforeEach(function () {
|
|
49
|
+
prefetched = [], mockObserved.clear(), vp = createPrefetchViewport(), vp.start(function (href) {
|
|
50
|
+
return prefetched.push(href);
|
|
51
|
+
});
|
|
52
|
+
}), it("prefetches when link enters viewport", function () {
|
|
53
|
+
var el = {};
|
|
54
|
+
vp.observe(el, "/about"), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
55
|
+
}), it("does not prefetch when link exits viewport", function () {
|
|
56
|
+
var el = {};
|
|
57
|
+
vp.observe(el, "/about"), simulateIntersect(el, !1), expect(prefetched).toEqual([]);
|
|
58
|
+
}), it("only prefetches each href once", function () {
|
|
59
|
+
var el = {};
|
|
60
|
+
vp.observe(el, "/about"), simulateIntersect(el, !0), simulateIntersect(el, !1), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
61
|
+
}), it("cleanup re-enables prefetch for href", function () {
|
|
62
|
+
var el = {},
|
|
63
|
+
cleanup = vp.observe(el, "/about");
|
|
64
|
+
simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]), cleanup(), prefetched.length = 0, vp.observe(el, "/about"), simulateIntersect(el, !0), expect(prefetched).toEqual(["/about"]);
|
|
65
|
+
}), describe("memory and performance", function () {
|
|
66
|
+
it("does not leak elements after cleanup", function () {
|
|
67
|
+
for (var elements = [], cleanups = [], i = 0; i < 100; i++) {
|
|
68
|
+
var el = {};
|
|
69
|
+
elements.push(el), cleanups.push(vp.observe(el, `/page-${i}`));
|
|
70
|
+
}
|
|
71
|
+
expect(vp.nodes.size).toBe(100), cleanups.forEach(function (c) {
|
|
72
|
+
return c();
|
|
73
|
+
}), expect(vp.nodes.size).toBe(0), expect(vp.done.size).toBe(0);
|
|
74
|
+
}), it("handles rapid observe/unobserve cycles", function () {
|
|
75
|
+
for (var el = {}, i = 0; i < 100; i++) {
|
|
76
|
+
var cleanup = vp.observe(el, "/test");
|
|
77
|
+
cleanup();
|
|
78
|
+
}
|
|
79
|
+
expect(vp.nodes.size).toBe(0);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=prefetchViewport.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","beforeEach","vi","createPrefetchViewport","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","mockIOCallback","mockObserved","Set","stubGlobal","_class","callback","value","el","add","delete","clear","simulateIntersect","isIntersecting","prefetched","vp","start","href","push","observe","toEqual"],"sources":["../../../src/link/prefetchViewport.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,UAAA,EAAYC,EAAA,QAAU;AACrD,SAASC,sBAAA,QAA8B;AAGvC,SAAIC,kBAAAC,QAAA,EAAAC,WAAA;EACJ,IAAM,EAAAD,QAAA,YAAeC,WAAA,GAElB,UAAAC,SAAA;AAAA;AACD,SACMC,kBAAAC,MAAA,EAAAC,KAAA;EAAA,KACJ,IAAAC,CAAA,IAAY,EAAAA,CAAA,GAAAD,KAAwC,CAAAE,MAAA,EAAAD,CAAA;IAClD,IAAAE,UAAA,GAAAH,KAAiB,CAAAC,CAAA;IACnBE,UAAA,CAAAC,UAAA,GAAAD,UAAA,CAAAC,UAAA,QAAAD,UAAA,CAAAE,YAAA,kBAAAF,UAAA,KAAAA,UAAA,CAAAG,QAAA,QAAAC,MAAA,CAAAC,cAAA,CAAAT,MAAA,EAAAI,UAAA,CAAAM,GAAA,EAAAN,UAAA;EAAA;AAEE;AAAmB,SACrBO,cAAAd,WAAA,EAAAe,UAAA,EAAAC,WAAA;EAAA,OACAD,UAAuB,IAAAb,iBAAA,CAAAF,WAAA,CAAAiB,SAAA,EAAAF,UAAA,GAAAC,WAAA,IAAAd,iBAAA,CAAAF,WAAA,EAAAgB,WAAA,GAAAhB,WAAA;AACrB;AAAsB,IACxBkB,cAAA;EAAAC,YAAA,sBAAAC,GAAA;AAAAxB,EAAA,CAAAyB,UACA,uBAAa;EACX;;EAAmB,SACrBC,OAAAC,QAAA;IACFzB,iBAAA,OAAAwB,MAAA,GAAAJ,cAAA,GAAAK,QAAA;EACF;EAEA,OAAST,aAAA,CAAAQ,MAAkB,EAAa,CACtC;IACGT,GAAE,WAAY;IACdW,KAAA,WAAAA,CAAAC,EAAA;MACHN,YAAA,CAAAO,GAAA,CAAAD,EAAA;IACF;EAEA,GACE;IAGAZ,GAAA,aAAiB;IACfW,KAAA,WAAAA,CACAC,EAAA;MAKFN,YAAG,CAAAQ,MAAA,CAAAF,EAAA;IACD;EACA,GAID;IAGCZ,GAAA,EAAM,YAAM;IACZW,KAAG,WAAAA,CAAA,EAAY;MAMjBL,YAAG,CAAAS,KAAA;IACD;EACA,EAOD,GAEDN,MAAG;AACD;AAGA,SAAAO,iBAAsBA,CAAAJ,EAAI,EAC1BK,cAAO;EASTZ,cAES,EACP;IACEf,MAAM,EAAAsB,EAAA;IAINK;EACE,EACA;AAC0C;AAG5CtC,QAAA,mBAAoB,EAAE,YAGtB;EAG2B,IAC5BuC,UAEE,EAAAC,EAAA;EACDrC,UAAM,aAAM;IAEZoC,UAAA,GAAS,EAAI,EAAAZ,YAAY,CAAAS,KAAA,IAAAI,EAAA,GAAAnC,sBAAA,IAAAmC,EAAA,CAAAC,KAAA,WAAAC,IAAA;MAEvB,OADmBH,UAAY,CAAAI,IAAA,CAAAD,IACvB;IAIV;EAA4B,EAC9B,EAACxC,EAAA;IACF,IAAA+B,EAAA;IACFO,EAAA,CAAAI,OAAA,CAAAX,EAAA,aAAAI,iBAAA,CAAAJ,EAAA,OAAAhC,MAAA,CAAAsC,UAAA,EAAAM,OAAA,E","ignoreList":[]}
|
|
@@ -47,10 +47,43 @@ function extractPathnameFromHref(href) {
|
|
|
47
47
|
let endIndex = href.length;
|
|
48
48
|
return searchIndex !== -1 && (endIndex = Math.min(endIndex, searchIndex)), hashIndex !== -1 && (endIndex = Math.min(endIndex, hashIndex)), href.slice(0, endIndex);
|
|
49
49
|
}
|
|
50
|
+
function findAllRouteNodesFromState(state, rootNode) {
|
|
51
|
+
if (!state || !rootNode)
|
|
52
|
+
return [];
|
|
53
|
+
const nodes = [];
|
|
54
|
+
function collectNodes(currentState, parentNode) {
|
|
55
|
+
if (!currentState || !parentNode)
|
|
56
|
+
return;
|
|
57
|
+
const currentRoute = currentState.routes[currentState.routes.length - 1];
|
|
58
|
+
if (!currentRoute)
|
|
59
|
+
return;
|
|
60
|
+
const matchingNode = findNodeByRouteName(parentNode, currentRoute.name);
|
|
61
|
+
if (!matchingNode) {
|
|
62
|
+
process.env.NODE_ENV === "development" && console.log(
|
|
63
|
+
"[one] findAllRouteNodesFromState: could not find node for",
|
|
64
|
+
currentRoute.name,
|
|
65
|
+
"in",
|
|
66
|
+
parentNode.route
|
|
67
|
+
);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (nodes.push(matchingNode), currentRoute.state && currentRoute.state.routes)
|
|
71
|
+
collectNodes(currentRoute.state, matchingNode);
|
|
72
|
+
else if (currentRoute.params?.screen) {
|
|
73
|
+
const childRouteName = currentRoute.params.screen, childNode = matchingNode.children.find((c) => c.route === childRouteName);
|
|
74
|
+
childNode && (nodes.push(childNode), currentRoute.params.params && currentRoute.params.params.screen && collectNodes(
|
|
75
|
+
{ routes: [{ name: childRouteName, params: currentRoute.params.params }] },
|
|
76
|
+
childNode
|
|
77
|
+
));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return collectNodes(state, rootNode), nodes;
|
|
81
|
+
}
|
|
50
82
|
export {
|
|
51
83
|
extractParamsFromState,
|
|
52
84
|
extractPathnameFromHref,
|
|
53
85
|
extractSearchFromHref,
|
|
86
|
+
findAllRouteNodesFromState,
|
|
54
87
|
findRouteNodeFromState
|
|
55
88
|
};
|
|
56
89
|
//# sourceMappingURL=findRouteNode.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/router/findRouteNode.ts"],
|
|
4
|
-
"mappings": "AAMO,SAAS,uBACd,OACA,UACkB;AAClB,MAAI,CAAC,SAAS,CAAC;AACb,WAAO;AAIT,QAAM,eAAe,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC;AACzD,MAAI,CAAC;AACH,WAAO;AAIT,QAAM,eAAe,oBAAoB,UAAU,aAAa,IAAI;AACpE,MAAI,CAAC;AACH,WAAO;AAIT,MAAI,aAAa,SAAS,aAAa,MAAM,QAAQ;AACnD,UAAM,eAAe,uBAAuB,aAAa,OAAO,YAAY;AAC5E,QAAI;AACF,aAAO;AAAA,EAEX;AAEA,SAAO;AACT;AAMA,SAAS,oBAAoB,MAAiB,WAAqC;AAEjF,MAAI,KAAK,UAAU;AACjB,WAAO;AAIT,aAAW,SAAS,KAAK,UAAU;AACjC,UAAM,QAAQ,oBAAoB,OAAO,SAAS;AAClD,QAAI;AACF,aAAO;AAAA,EAEX;AAEA,SAAO;AACT;AAMO,SAAS,uBACd,OAGmC;AACnC,MAAI,CAAC;AACH,WAAO,CAAC;AAGV,QAAM,SAA4C,CAAC;AAGnD,aAAW,SAAS,MAAM;AACxB,IAAI,MAAM,UACR,OAAO,OAAO,QAAQ,MAAM,MAAM,GAGhC,MAAM,SACR,OAAO,OAAO,QAAQ,uBAAuB,MAAM,KAAK,CAAC;AAI7D,SAAO;AACT;AAKO,SAAS,sBAAsB,MAAiD;AACrF,QAAM,cAAc,KAAK,QAAQ,GAAG;AACpC,MAAI,gBAAgB;AAClB,WAAO,CAAC;AAGV,QAAM,eAAe,KAAK,MAAM,cAAc,CAAC,GACzC,SAA4C,CAAC;AAGnD,SAFqB,IAAI,gBAAgB,YAAY,EAExC,QAAQ,CAAC,OAAO,QAAQ;AACnC,UAAM,WAAW,OAAO,GAAG;AAC3B,IAAI,aAAa,SACf,OAAO,GAAG,IAAI,QACL,MAAM,QAAQ,QAAQ,IAC/B,SAAS,KAAK,KAAK,IAEnB,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK;AAAA,EAElC,CAAC,GAEM;AACT;AAKO,SAAS,wBAAwB,MAAsB;AAC5D,QAAM,cAAc,KAAK,QAAQ,GAAG,GAC9B,YAAY,KAAK,QAAQ,GAAG;AAElC,MAAI,WAAW,KAAK;AACpB,SAAI,gBAAgB,OAAI,WAAW,KAAK,IAAI,UAAU,WAAW,IAC7D,cAAc,OAAI,WAAW,KAAK,IAAI,UAAU,SAAS,IAEtD,KAAK,MAAM,GAAG,QAAQ;AAC/B;",
|
|
4
|
+
"mappings": "AAMO,SAAS,uBACd,OACA,UACkB;AAClB,MAAI,CAAC,SAAS,CAAC;AACb,WAAO;AAIT,QAAM,eAAe,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC;AACzD,MAAI,CAAC;AACH,WAAO;AAIT,QAAM,eAAe,oBAAoB,UAAU,aAAa,IAAI;AACpE,MAAI,CAAC;AACH,WAAO;AAIT,MAAI,aAAa,SAAS,aAAa,MAAM,QAAQ;AACnD,UAAM,eAAe,uBAAuB,aAAa,OAAO,YAAY;AAC5E,QAAI;AACF,aAAO;AAAA,EAEX;AAEA,SAAO;AACT;AAMA,SAAS,oBAAoB,MAAiB,WAAqC;AAEjF,MAAI,KAAK,UAAU;AACjB,WAAO;AAIT,aAAW,SAAS,KAAK,UAAU;AACjC,UAAM,QAAQ,oBAAoB,OAAO,SAAS;AAClD,QAAI;AACF,aAAO;AAAA,EAEX;AAEA,SAAO;AACT;AAMO,SAAS,uBACd,OAGmC;AACnC,MAAI,CAAC;AACH,WAAO,CAAC;AAGV,QAAM,SAA4C,CAAC;AAGnD,aAAW,SAAS,MAAM;AACxB,IAAI,MAAM,UACR,OAAO,OAAO,QAAQ,MAAM,MAAM,GAGhC,MAAM,SACR,OAAO,OAAO,QAAQ,uBAAuB,MAAM,KAAK,CAAC;AAI7D,SAAO;AACT;AAKO,SAAS,sBAAsB,MAAiD;AACrF,QAAM,cAAc,KAAK,QAAQ,GAAG;AACpC,MAAI,gBAAgB;AAClB,WAAO,CAAC;AAGV,QAAM,eAAe,KAAK,MAAM,cAAc,CAAC,GACzC,SAA4C,CAAC;AAGnD,SAFqB,IAAI,gBAAgB,YAAY,EAExC,QAAQ,CAAC,OAAO,QAAQ;AACnC,UAAM,WAAW,OAAO,GAAG;AAC3B,IAAI,aAAa,SACf,OAAO,GAAG,IAAI,QACL,MAAM,QAAQ,QAAQ,IAC/B,SAAS,KAAK,KAAK,IAEnB,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK;AAAA,EAElC,CAAC,GAEM;AACT;AAKO,SAAS,wBAAwB,MAAsB;AAC5D,QAAM,cAAc,KAAK,QAAQ,GAAG,GAC9B,YAAY,KAAK,QAAQ,GAAG;AAElC,MAAI,WAAW,KAAK;AACpB,SAAI,gBAAgB,OAAI,WAAW,KAAK,IAAI,UAAU,WAAW,IAC7D,cAAc,OAAI,WAAW,KAAK,IAAI,UAAU,SAAS,IAEtD,KAAK,MAAM,GAAG,QAAQ;AAC/B;AAOO,SAAS,2BACd,OACA,UACa;AACb,MAAI,CAAC,SAAS,CAAC;AACb,WAAO,CAAC;AAGV,QAAM,QAAqB,CAAC;AAE5B,WAAS,aACP,cAGA,YACA;AACA,QAAI,CAAC,gBAAgB,CAAC;AACpB;AAIF,UAAM,eAAe,aAAa,OAAO,aAAa,OAAO,SAAS,CAAC;AACvE,QAAI,CAAC;AACH;AAIF,UAAM,eAAe,oBAAoB,YAAY,aAAa,IAAI;AACtE,QAAI,CAAC,cAAc;AACjB,MAAI,QAAQ,IAAI,aAAa,iBAC3B,QAAQ;AAAA,QACN;AAAA,QACA,aAAa;AAAA,QACb;AAAA,QACA,WAAW;AAAA,MACb;AAEF;AAAA,IACF;AAMA,QAHA,MAAM,KAAK,YAAY,GAGnB,aAAa,SAAS,aAAa,MAAM;AAC3C,mBAAa,aAAa,OAAO,YAAY;AAAA,aACpC,aAAa,QAAQ,QAAQ;AAGtC,YAAM,iBAAiB,aAAa,OAAO,QACrC,YAAY,aAAa,SAAS,KAAK,CAAC,MAAM,EAAE,UAAU,cAAc;AAC9E,MAAI,cACF,MAAM,KAAK,SAAS,GAEhB,aAAa,OAAO,UAAW,aAAa,OAAO,OAAe,UACpE;AAAA,QACE,EAAE,QAAQ,CAAC,EAAE,MAAM,gBAAgB,QAAQ,aAAa,OAAO,OAAO,CAAC,EAAE;AAAA,QACzE;AAAA,MACF;AAAA,IAGN;AAAA,EACF;AAEA,sBAAa,OAAO,QAAQ,GACrB;AACT;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -40,5 +40,30 @@ function extractPathnameFromHref(href) {
|
|
|
40
40
|
let endIndex = href.length;
|
|
41
41
|
return searchIndex !== -1 && (endIndex = Math.min(endIndex, searchIndex)), hashIndex !== -1 && (endIndex = Math.min(endIndex, hashIndex)), href.slice(0, endIndex);
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
function findAllRouteNodesFromState(state, rootNode) {
|
|
44
|
+
if (!state || !rootNode) return [];
|
|
45
|
+
const nodes = [];
|
|
46
|
+
function collectNodes(currentState, parentNode) {
|
|
47
|
+
if (!currentState || !parentNode) return;
|
|
48
|
+
const currentRoute = currentState.routes[currentState.routes.length - 1];
|
|
49
|
+
if (!currentRoute) return;
|
|
50
|
+
const matchingNode = findNodeByRouteName(parentNode, currentRoute.name);
|
|
51
|
+
if (!matchingNode) {
|
|
52
|
+
process.env.NODE_ENV === "development" && console.log("[one] findAllRouteNodesFromState: could not find node for", currentRoute.name, "in", parentNode.route);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (nodes.push(matchingNode), currentRoute.state && currentRoute.state.routes) collectNodes(currentRoute.state, matchingNode);else if (currentRoute.params?.screen) {
|
|
56
|
+
const childRouteName = currentRoute.params.screen,
|
|
57
|
+
childNode = matchingNode.children.find(c => c.route === childRouteName);
|
|
58
|
+
childNode && (nodes.push(childNode), currentRoute.params.params && currentRoute.params.params.screen && collectNodes({
|
|
59
|
+
routes: [{
|
|
60
|
+
name: childRouteName,
|
|
61
|
+
params: currentRoute.params.params
|
|
62
|
+
}]
|
|
63
|
+
}, childNode));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return collectNodes(state, rootNode), nodes;
|
|
67
|
+
}
|
|
68
|
+
export { extractParamsFromState, extractPathnameFromHref, extractSearchFromHref, findAllRouteNodesFromState, findRouteNodeFromState };
|
|
44
69
|
//# sourceMappingURL=findRouteNode.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["findRouteNodeFromState","state","rootNode","currentRoute","routes","length","matchingNode","findNodeByRouteName","name","nestedResult","node","routeName","route","child","children","found","extractParamsFromState","params","Object","assign","extractSearchFromHref","href","searchIndex","indexOf","searchString","slice","URLSearchParams","forEach","value","key","existing","Array","isArray","push","extractPathnameFromHref","hashIndex","endIndex","Math","min"],"sources":["../../../src/router/findRouteNode.ts"],"sourcesContent":[null],"mappings":"AAMO,SAASA,uBACdC,KAAA,EACAC,QAAA,EACkB;EAClB,IAAI,CAACD,KAAA,IAAS,CAACC,QAAA,EACb,OAAO;EAIT,MAAMC,YAAA,GAAeF,KAAA,CAAMG,MAAA,CAAOH,KAAA,CAAMG,MAAA,CAAOC,MAAA,GAAS,CAAC;EACzD,IAAI,CAACF,YAAA,EACH,OAAO;EAIT,MAAMG,YAAA,GAAeC,mBAAA,CAAoBL,QAAA,EAAUC,YAAA,CAAaK,IAAI;EACpE,IAAI,CAACF,YAAA,EACH,OAAO;EAIT,IAAIH,YAAA,CAAaF,KAAA,IAASE,YAAA,CAAaF,KAAA,CAAMG,MAAA,EAAQ;IACnD,MAAMK,YAAA,GAAeT,sBAAA,CAAuBG,YAAA,CAAaF,KAAA,EAAOK,YAAY;IAC5E,IAAIG,YAAA,EACF,OAAOA,YAAA;EAEX;EAEA,OAAOH,YAAA;AACT;AAMA,SAASC,oBAAoBG,IAAA,EAAiBC,SAAA,EAAqC;EAEjF,IAAID,IAAA,CAAKE,KAAA,KAAUD,SAAA,EACjB,OAAOD,IAAA;EAIT,WAAWG,KAAA,IAASH,IAAA,CAAKI,QAAA,EAAU;IACjC,MAAMC,KAAA,GAAQR,mBAAA,CAAoBM,KAAA,EAAOF,SAAS;IAClD,IAAII,KAAA,EACF,OAAOA,KAAA;EAEX;EAEA,OAAO;AACT;AAMO,SAASC,uBACdf,KAAA,EAGmC;EACnC,IAAI,CAACA,KAAA,EACH,OAAO,CAAC;EAGV,MAAMgB,MAAA,GAA4C,CAAC;EAGnD,WAAWL,KAAA,IAASX,KAAA,CAAMG,MAAA,EACpBQ,KAAA,CAAMK,MAAA,IACRC,MAAA,CAAOC,MAAA,CAAOF,MAAA,EAAQL,KAAA,CAAMK,MAAM,GAGhCL,KAAA,CAAMX,KAAA,IACRiB,MAAA,CAAOC,MAAA,CAAOF,MAAA,EAAQD,sBAAA,CAAuBJ,KAAA,CAAMX,KAAK,CAAC;EAI7D,OAAOgB,MAAA;AACT;AAKO,SAASG,sBAAsBC,IAAA,EAAiD;EACrF,MAAMC,WAAA,GAAcD,IAAA,CAAKE,OAAA,CAAQ,GAAG;EACpC,IAAID,WAAA,KAAgB,IAClB,OAAO,CAAC;EAGV,MAAME,YAAA,GAAeH,IAAA,CAAKI,KAAA,CAAMH,WAAA,GAAc,CAAC;IACzCL,MAAA,GAA4C,CAAC;EAGnD,OAFqB,IAAIS,eAAA,CAAgBF,YAAY,EAExCG,OAAA,CAAQ,CAACC,KAAA,EAAOC,GAAA,KAAQ;IACnC,MAAMC,QAAA,GAAWb,MAAA,CAAOY,GAAG;IACvBC,QAAA,KAAa,SACfb,MAAA,CAAOY,GAAG,IAAID,KAAA,GACLG,KAAA,CAAMC,OAAA,CAAQF,QAAQ,IAC/BA,QAAA,CAASG,IAAA,CAAKL,KAAK,IAEnBX,MAAA,CAAOY,GAAG,IAAI,CAACC,QAAA,EAAUF,KAAK;EAElC,CAAC,GAEMX,MAAA;AACT;AAKO,SAASiB,wBAAwBb,IAAA,EAAsB;EAC5D,MAAMC,WAAA,GAAcD,IAAA,CAAKE,OAAA,CAAQ,GAAG;IAC9BY,SAAA,GAAYd,IAAA,CAAKE,OAAA,CAAQ,GAAG;EAElC,IAAIa,QAAA,GAAWf,IAAA,CAAKhB,MAAA;EACpB,OAAIiB,WAAA,KAAgB,OAAIc,QAAA,GAAWC,IAAA,CAAKC,GAAA,CAAIF,QAAA,EAAUd,WAAW,IAC7Da,SAAA,KAAc,OAAIC,QAAA,GAAWC,IAAA,CAAKC,GAAA,CAAIF,QAAA,EAAUD,SAAS,IAEtDd,IAAA,CAAKI,KAAA,CAAM,GAAGW,QAAQ;AAC/B","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["findRouteNodeFromState","state","rootNode","currentRoute","routes","length","matchingNode","findNodeByRouteName","name","nestedResult","node","routeName","route","child","children","found","extractParamsFromState","params","Object","assign","extractSearchFromHref","href","searchIndex","indexOf","searchString","slice","URLSearchParams","forEach","value","key","existing","Array","isArray","push","extractPathnameFromHref","hashIndex","endIndex","Math","min","findAllRouteNodesFromState","nodes","collectNodes","currentState","parentNode","process","env","NODE_ENV","console","log","screen","childRouteName","childNode","find","c"],"sources":["../../../src/router/findRouteNode.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -71,5 +71,35 @@ function extractPathnameFromHref(href) {
|
|
|
71
71
|
endIndex = href.length;
|
|
72
72
|
return searchIndex !== -1 && (endIndex = Math.min(endIndex, searchIndex)), hashIndex !== -1 && (endIndex = Math.min(endIndex, hashIndex)), href.slice(0, endIndex);
|
|
73
73
|
}
|
|
74
|
-
|
|
74
|
+
function findAllRouteNodesFromState(state, rootNode) {
|
|
75
|
+
if (!state || !rootNode) return [];
|
|
76
|
+
var nodes = [];
|
|
77
|
+
function collectNodes(currentState, parentNode) {
|
|
78
|
+
var _currentRoute_params;
|
|
79
|
+
if (!(!currentState || !parentNode)) {
|
|
80
|
+
var currentRoute = currentState.routes[currentState.routes.length - 1];
|
|
81
|
+
if (currentRoute) {
|
|
82
|
+
var matchingNode = findNodeByRouteName(parentNode, currentRoute.name);
|
|
83
|
+
if (!matchingNode) {
|
|
84
|
+
process.env.NODE_ENV === "development" && console.log("[one] findAllRouteNodesFromState: could not find node for", currentRoute.name, "in", parentNode.route);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (nodes.push(matchingNode), currentRoute.state && currentRoute.state.routes) collectNodes(currentRoute.state, matchingNode);else if (!((_currentRoute_params = currentRoute.params) === null || _currentRoute_params === void 0) && _currentRoute_params.screen) {
|
|
88
|
+
var childRouteName = currentRoute.params.screen,
|
|
89
|
+
childNode = matchingNode.children.find(function (c) {
|
|
90
|
+
return c.route === childRouteName;
|
|
91
|
+
});
|
|
92
|
+
childNode && (nodes.push(childNode), currentRoute.params.params && currentRoute.params.params.screen && collectNodes({
|
|
93
|
+
routes: [{
|
|
94
|
+
name: childRouteName,
|
|
95
|
+
params: currentRoute.params.params
|
|
96
|
+
}]
|
|
97
|
+
}, childNode));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return collectNodes(state, rootNode), nodes;
|
|
103
|
+
}
|
|
104
|
+
export { extractParamsFromState, extractPathnameFromHref, extractSearchFromHref, findAllRouteNodesFromState, findRouteNodeFromState };
|
|
75
105
|
//# sourceMappingURL=findRouteNode.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["findRouteNodeFromState","state","rootNode","currentRoute","routes","length","matchingNode","findNodeByRouteName","name","nestedResult","node","routeName","route","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","children","Symbol","iterator","_step","next","done","child","value","found","err","return","extractParamsFromState","params","Object","assign"],"sources":["../../../src/router/findRouteNode.ts"],"sourcesContent":[null],"mappings":"AAMO,SAASA,uBACdC,KAAA,EACAC,QAAA,EACkB;EAClB,IAAI,CAACD,KAAA,IAAS,CAACC,QAAA,EACb,OAAO;EAIT,IAAAC,YAAM,GAAAF,KAAe,CAAAG,MAAM,CAAAH,KAAO,CAAAG,MAAM,CAAAC,MAAO,KAAS;EACxD,IAAI,CAACF,YAAA,EACH,OAAO;EAIT,IAAAG,YAAM,GAAAC,mBAAe,CAAAL,QAAoB,EAAAC,YAAU,CAAAK,IAAa;EAChE,IAAI,CAACF,YAAA,EACH,OAAO;EAIT,IAAIH,YAAA,CAAaF,KAAA,IAASE,YAAA,CAAaF,KAAA,CAAMG,MAAA,EAAQ;IACnD,IAAAK,YAAM,GAAAT,sBAAe,CAAAG,YAAuB,CAAAF,KAAa,EAAAK,YAAO;IAChE,IAAIG,YAAA,EACF,OAAOA,YAAA;EAEX;EAEA,OAAOH,YAAA;AACT;AAMA,SAASC,oBAAoBG,IAAA,EAAiBC,SAAA,EAAqC;EAEjF,IAAID,IAAA,CAAKE,KAAA,KAAUD,SAAA,EACjB,OAAOD,IAAA;EAIT,IAAAG,yBAAyB;IAAUC,iBAAA;IAAAC,cAAA;EACjC;IACA,KAAI,IAAAC,SAAA,GAAAN,IAAA,CAAAO,QAAA,CAAAC,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAP,yBAAA,IAAAO,KAAA,GAAAJ,SAAA,CAAAK,IAAA,IAAAC,IAAA,GAAAT,yBAAA;MACF,IAAAU,KAAO,GAAAH,KAAA,CAAAI,KAAA;QAAAC,KAAA,GAAAlB,mBAAA,CAAAgB,KAAA,EAAAZ,SAAA;MAEX,IAAAc,KAAA,EAEA,OAAOA,KAAA;IACT;EAMO,SAASC,GAAA;IAKdZ,iBAAK,OAAAC,cAAA,GAAAW,GAAA;EACH,UAAQ;IAGV,IAAM;MAGN,CAAAb,yBAA0B,IAAAG,SAAA,CAAAW,MAAA,YAAAX,SAAA,CAAAW,MAAA;IACpB,UAAM;MASZ,IAAOb,iBAAA,EACT,MAAAC,cAAA;IAKO;EACL;EACA,OAAI;AACF;AAGF,SAAMa,sBAAoBA,CAAA3B,KAAM;EAIhC,KAAAA,KAFqB,EAGnB,OAAM;EACN,IAAI4B,MAAA,KAAa;IAAAhB,yBACD,IACL;IAAAC,iBAAc,GAAQ;IAC/BC,cAAc,QAEd;EAEJ,IAEO;IACT,SAAAC,SAAA,GAAAf,KAAA,CAAAG,MAAA,CAAAc,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAP,yBAAA,IAAAO,KAAA,GAAAJ,SAAA,CAAAK,IAAA,IAAAC,IAAA,GAAAT,yBAAA;MAKO,IAASD,KAAA,GAAAQ,KAAA,CAAAI,KAAA;MACdZ,KAAM,CAAAiB,MAAA,IAAcC,MAAK,CAAAC,MAAQ,CAAAF,MAC3B,EAAAjB,KAAA,CAAAiB,MAAY,GAAKjB,KAAA,CAAAX,KAAW,IAAA6B,MAAA,CAAAC,MAAA,CAAAF,MAAA,EAAAD,sBAAA,CAAAhB,KAAA,CAAAX,KAAA;IAElC;EACA,SAAIyB,GAAA;IAINZ,iBAAA,OAAAC,cAAA,GAAAW,GAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["findRouteNodeFromState","state","rootNode","currentRoute","routes","length","matchingNode","findNodeByRouteName","name","nestedResult","node","routeName","route","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","children","Symbol","iterator","_step","next","done","child","value","found","err","return","extractParamsFromState","params","Object","assign","extractSearchFromHref","href","searchIndex","indexOf","searchString","slice","searchParams","URLSearchParams","forEach","key","existing","Array","isArray","push","extractPathnameFromHref","hashIndex","endIndex","Math","min","findAllRouteNodesFromState","nodes","collectNodes","currentState","parentNode"],"sources":["../../../src/router/findRouteNode.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -26,7 +26,8 @@ import {
|
|
|
26
26
|
extractParamsFromState,
|
|
27
27
|
extractPathnameFromHref,
|
|
28
28
|
extractSearchFromHref,
|
|
29
|
-
findRouteNodeFromState
|
|
29
|
+
findRouteNodeFromState,
|
|
30
|
+
findAllRouteNodesFromState
|
|
30
31
|
} from "./findRouteNode";
|
|
31
32
|
import { getRouteInfo } from "./getRouteInfo";
|
|
32
33
|
import { getRoutes } from "./getRoutes";
|
|
@@ -380,7 +381,7 @@ function preloadRoute(href, injectCSS = !1) {
|
|
|
380
381
|
}
|
|
381
382
|
return preloadingLoader[href] || (preloadingLoader[href] = doPreload(href).then((data) => (preloadedLoaderData[href] = data, data))), injectCSS ? preloadingLoader[href]?.then(async (data) => {
|
|
382
383
|
const inject = cssInjectFunctions[href];
|
|
383
|
-
return inject && await Promise.race([inject(), new Promise((r) => setTimeout(r,
|
|
384
|
+
return inject && await Promise.race([inject(), new Promise((r) => setTimeout(r, 800))]), data;
|
|
384
385
|
}) : preloadingLoader[href];
|
|
385
386
|
}
|
|
386
387
|
function normalizeLoaderPath(href) {
|
|
@@ -425,8 +426,8 @@ async function linkTo(href, event, options) {
|
|
|
425
426
|
if (!segment.startsWith("[")) return segment;
|
|
426
427
|
if (segment.startsWith("[...")) {
|
|
427
428
|
segment = segment.slice(4, -1);
|
|
428
|
-
const
|
|
429
|
-
return Array.isArray(
|
|
429
|
+
const params2 = routeInfo?.params?.[segment];
|
|
430
|
+
return Array.isArray(params2) ? params2.join("/") : params2?.split(",")?.join("/") ?? "";
|
|
430
431
|
}
|
|
431
432
|
return segment = segment.slice(1, -1), routeInfo?.params?.[segment];
|
|
432
433
|
}).filter(Boolean).join("/") ?? "/";
|
|
@@ -444,10 +445,10 @@ async function linkTo(href, event, options) {
|
|
|
444
445
|
if (matchingRouteNode?.loadRoute) {
|
|
445
446
|
setValidationState({ status: "validating", lastValidatedHref: href });
|
|
446
447
|
try {
|
|
447
|
-
const loadedRoute = matchingRouteNode.loadRoute(),
|
|
448
|
-
if (loadedRoute.validateParams && runValidateParams(loadedRoute.validateParams,
|
|
448
|
+
const loadedRoute = matchingRouteNode.loadRoute(), params2 = extractParamsFromState(state), search = extractSearchFromHref(href), pathname = extractPathnameFromHref(href);
|
|
449
|
+
if (loadedRoute.validateParams && runValidateParams(loadedRoute.validateParams, params2), loadedRoute.validateRoute) {
|
|
449
450
|
const validationResult = await loadedRoute.validateRoute({
|
|
450
|
-
params,
|
|
451
|
+
params: params2,
|
|
451
452
|
search,
|
|
452
453
|
pathname,
|
|
453
454
|
href
|
|
@@ -468,10 +469,8 @@ async function linkTo(href, event, options) {
|
|
|
468
469
|
else throw (error instanceof ParamValidationError || error instanceof RouteValidationError) && setValidationState({ status: "error", error, lastValidatedHref: href }), error;
|
|
469
470
|
}
|
|
470
471
|
}
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
currentMatches = newMatches, setClientMatches(newMatches);
|
|
474
|
-
}
|
|
472
|
+
const normalizedPath = normalizeLoaderPath(href), loaderData = preloadedLoaderData[normalizedPath], params = extractParamsFromState(state), newMatches = buildClientMatches(href, matchingRouteNode, params, loaderData);
|
|
473
|
+
currentMatches = newMatches, setClientMatches(newMatches);
|
|
475
474
|
const rootState2 = navigationRef.getRootState(), hash = href.indexOf("#");
|
|
476
475
|
rootState2.key && hash > 0 && (hashes[rootState2.key] = href.slice(hash)), nextOptions = options ?? null, startTransition(() => {
|
|
477
476
|
const action = getNavigateAction(state, rootState2, event), current2 = navigationRef.getCurrentRoute();
|