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.
Files changed (212) hide show
  1. package/dist/cjs/Root.cjs +1 -1
  2. package/dist/cjs/Root.js +1 -1
  3. package/dist/cjs/Root.js.map +1 -1
  4. package/dist/cjs/Root.native.js +1 -1
  5. package/dist/cjs/Root.native.js.map +1 -1
  6. package/dist/cjs/drawer.cjs +27 -0
  7. package/dist/cjs/drawer.js +22 -0
  8. package/dist/cjs/drawer.js.map +6 -0
  9. package/dist/cjs/drawer.native.js +30 -0
  10. package/dist/cjs/drawer.native.js.map +1 -0
  11. package/dist/cjs/hooks.cjs +25 -2
  12. package/dist/cjs/hooks.js +23 -2
  13. package/dist/cjs/hooks.js.map +1 -1
  14. package/dist/cjs/hooks.native.js +147 -14
  15. package/dist/cjs/hooks.native.js.map +1 -1
  16. package/dist/cjs/hooks.test.cjs +73 -0
  17. package/dist/cjs/hooks.test.js +98 -0
  18. package/dist/cjs/hooks.test.js.map +6 -0
  19. package/dist/cjs/hooks.test.native.js +194 -0
  20. package/dist/cjs/hooks.test.native.js.map +1 -0
  21. package/dist/cjs/index.cjs +1 -0
  22. package/dist/cjs/index.js +1 -0
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/cjs/index.native.js +1 -0
  25. package/dist/cjs/index.native.js.map +1 -1
  26. package/dist/cjs/link/prefetchIntent.cjs +122 -0
  27. package/dist/cjs/link/prefetchIntent.js +85 -0
  28. package/dist/cjs/link/prefetchIntent.js.map +6 -0
  29. package/dist/cjs/link/prefetchIntent.native.js +155 -0
  30. package/dist/cjs/link/prefetchIntent.native.js.map +1 -0
  31. package/dist/cjs/link/prefetchIntent.test.cjs +217 -0
  32. package/dist/cjs/link/prefetchIntent.test.js +149 -0
  33. package/dist/cjs/link/prefetchIntent.test.js.map +6 -0
  34. package/dist/cjs/link/prefetchIntent.test.native.js +239 -0
  35. package/dist/cjs/link/prefetchIntent.test.native.js.map +1 -0
  36. package/dist/cjs/link/prefetchViewport.cjs +67 -0
  37. package/dist/cjs/link/prefetchViewport.js +55 -0
  38. package/dist/cjs/link/prefetchViewport.js.map +6 -0
  39. package/dist/cjs/link/prefetchViewport.native.js +83 -0
  40. package/dist/cjs/link/prefetchViewport.native.js.map +1 -0
  41. package/dist/cjs/link/prefetchViewport.test.cjs +57 -0
  42. package/dist/cjs/link/prefetchViewport.test.js +59 -0
  43. package/dist/cjs/link/prefetchViewport.test.js.map +6 -0
  44. package/dist/cjs/link/prefetchViewport.test.native.js +85 -0
  45. package/dist/cjs/link/prefetchViewport.test.native.js.map +1 -0
  46. package/dist/cjs/router/findRouteNode.cjs +26 -0
  47. package/dist/cjs/router/findRouteNode.js +33 -0
  48. package/dist/cjs/router/findRouteNode.js.map +1 -1
  49. package/dist/cjs/router/findRouteNode.native.js +31 -0
  50. package/dist/cjs/router/findRouteNode.native.js.map +1 -1
  51. package/dist/cjs/router/router.cjs +11 -13
  52. package/dist/cjs/router/router.js +8 -10
  53. package/dist/cjs/router/router.js.map +2 -2
  54. package/dist/cjs/router/router.native.js +38 -122
  55. package/dist/cjs/router/router.native.js.map +1 -1
  56. package/dist/cjs/router/useScreens.cjs +3 -1
  57. package/dist/cjs/router/useScreens.js +1 -0
  58. package/dist/cjs/router/useScreens.js.map +1 -1
  59. package/dist/cjs/router/useScreens.native.js.map +1 -1
  60. package/dist/cjs/server/PreloadScripts.cjs +46 -0
  61. package/dist/cjs/server/PreloadScripts.js +37 -0
  62. package/dist/cjs/server/PreloadScripts.js.map +6 -0
  63. package/dist/cjs/server/PreloadScripts.native.js +53 -0
  64. package/dist/cjs/server/PreloadScripts.native.js.map +6 -0
  65. package/dist/cjs/server/RNWStylesheet.cjs +35 -0
  66. package/dist/cjs/server/RNWStylesheet.js +31 -0
  67. package/dist/cjs/server/RNWStylesheet.js.map +6 -0
  68. package/dist/cjs/server/RNWStylesheet.native.js +38 -0
  69. package/dist/cjs/server/RNWStylesheet.native.js.map +1 -0
  70. package/dist/cjs/views/PreloadLinks.cjs +102 -18
  71. package/dist/cjs/views/PreloadLinks.js +95 -19
  72. package/dist/cjs/views/PreloadLinks.js.map +1 -1
  73. package/dist/cjs/vite/one.cjs +3 -0
  74. package/dist/cjs/vite/one.js +3 -0
  75. package/dist/cjs/vite/one.js.map +1 -1
  76. package/dist/cjs/vite/one.native.js +4 -0
  77. package/dist/cjs/vite/one.native.js.map +1 -1
  78. package/dist/esm/Root.js +1 -1
  79. package/dist/esm/Root.js.map +1 -1
  80. package/dist/esm/Root.mjs +1 -1
  81. package/dist/esm/Root.mjs.map +1 -1
  82. package/dist/esm/Root.native.js +1 -1
  83. package/dist/esm/Root.native.js.map +1 -1
  84. package/dist/esm/drawer.js +6 -0
  85. package/dist/esm/drawer.js.map +6 -0
  86. package/dist/esm/drawer.mjs +3 -0
  87. package/dist/esm/drawer.mjs.map +1 -0
  88. package/dist/esm/drawer.native.js +3 -0
  89. package/dist/esm/drawer.native.js.map +1 -0
  90. package/dist/esm/hooks.js +23 -2
  91. package/dist/esm/hooks.js.map +1 -1
  92. package/dist/esm/hooks.mjs +25 -3
  93. package/dist/esm/hooks.mjs.map +1 -1
  94. package/dist/esm/hooks.native.js +147 -15
  95. package/dist/esm/hooks.native.js.map +1 -1
  96. package/dist/esm/hooks.test.js +98 -0
  97. package/dist/esm/hooks.test.js.map +6 -0
  98. package/dist/esm/hooks.test.mjs +74 -0
  99. package/dist/esm/hooks.test.mjs.map +1 -0
  100. package/dist/esm/hooks.test.native.js +192 -0
  101. package/dist/esm/hooks.test.native.js.map +1 -0
  102. package/dist/esm/index.js +2 -0
  103. package/dist/esm/index.js.map +1 -1
  104. package/dist/esm/index.mjs +2 -2
  105. package/dist/esm/index.mjs.map +1 -1
  106. package/dist/esm/index.native.js +2 -2
  107. package/dist/esm/index.native.js.map +1 -1
  108. package/dist/esm/link/prefetchIntent.js +69 -0
  109. package/dist/esm/link/prefetchIntent.js.map +6 -0
  110. package/dist/esm/link/prefetchIntent.mjs +97 -0
  111. package/dist/esm/link/prefetchIntent.mjs.map +1 -0
  112. package/dist/esm/link/prefetchIntent.native.js +127 -0
  113. package/dist/esm/link/prefetchIntent.native.js.map +1 -0
  114. package/dist/esm/link/prefetchIntent.test.js +150 -0
  115. package/dist/esm/link/prefetchIntent.test.js.map +6 -0
  116. package/dist/esm/link/prefetchIntent.test.mjs +218 -0
  117. package/dist/esm/link/prefetchIntent.test.mjs.map +1 -0
  118. package/dist/esm/link/prefetchIntent.test.native.js +237 -0
  119. package/dist/esm/link/prefetchIntent.test.native.js.map +1 -0
  120. package/dist/esm/link/prefetchViewport.js +39 -0
  121. package/dist/esm/link/prefetchViewport.js.map +6 -0
  122. package/dist/esm/link/prefetchViewport.mjs +42 -0
  123. package/dist/esm/link/prefetchViewport.mjs.map +1 -0
  124. package/dist/esm/link/prefetchViewport.native.js +55 -0
  125. package/dist/esm/link/prefetchViewport.native.js.map +1 -0
  126. package/dist/esm/link/prefetchViewport.test.js +60 -0
  127. package/dist/esm/link/prefetchViewport.test.js.map +6 -0
  128. package/dist/esm/link/prefetchViewport.test.mjs +58 -0
  129. package/dist/esm/link/prefetchViewport.test.mjs.map +1 -0
  130. package/dist/esm/link/prefetchViewport.test.native.js +83 -0
  131. package/dist/esm/link/prefetchViewport.test.native.js.map +1 -0
  132. package/dist/esm/router/findRouteNode.js +33 -0
  133. package/dist/esm/router/findRouteNode.js.map +1 -1
  134. package/dist/esm/router/findRouteNode.mjs +26 -1
  135. package/dist/esm/router/findRouteNode.mjs.map +1 -1
  136. package/dist/esm/router/findRouteNode.native.js +31 -1
  137. package/dist/esm/router/findRouteNode.native.js.map +1 -1
  138. package/dist/esm/router/router.js +10 -11
  139. package/dist/esm/router/router.js.map +2 -2
  140. package/dist/esm/router/router.mjs +12 -14
  141. package/dist/esm/router/router.mjs.map +1 -1
  142. package/dist/esm/router/router.native.js +39 -123
  143. package/dist/esm/router/router.native.js.map +1 -1
  144. package/dist/esm/router/useScreens.js +1 -0
  145. package/dist/esm/router/useScreens.js.map +1 -1
  146. package/dist/esm/router/useScreens.mjs +3 -1
  147. package/dist/esm/router/useScreens.mjs.map +1 -1
  148. package/dist/esm/router/useScreens.native.js.map +1 -1
  149. package/dist/esm/server/PreloadScripts.js +22 -0
  150. package/dist/esm/server/PreloadScripts.js.map +6 -0
  151. package/dist/esm/server/PreloadScripts.mjs +23 -0
  152. package/dist/esm/server/PreloadScripts.mjs.map +1 -0
  153. package/dist/esm/server/PreloadScripts.native.js +37 -0
  154. package/dist/esm/server/PreloadScripts.native.js.map +6 -0
  155. package/dist/esm/server/RNWStylesheet.js +15 -0
  156. package/dist/esm/server/RNWStylesheet.js.map +6 -0
  157. package/dist/esm/server/RNWStylesheet.mjs +12 -0
  158. package/dist/esm/server/RNWStylesheet.mjs.map +1 -0
  159. package/dist/esm/server/RNWStylesheet.native.js +12 -0
  160. package/dist/esm/server/RNWStylesheet.native.js.map +1 -0
  161. package/dist/esm/views/PreloadLinks.js +86 -17
  162. package/dist/esm/views/PreloadLinks.js.map +1 -1
  163. package/dist/esm/views/PreloadLinks.mjs +87 -14
  164. package/dist/esm/views/PreloadLinks.mjs.map +1 -1
  165. package/dist/esm/vite/one.js +3 -0
  166. package/dist/esm/vite/one.js.map +1 -1
  167. package/dist/esm/vite/one.mjs +3 -0
  168. package/dist/esm/vite/one.mjs.map +1 -1
  169. package/dist/esm/vite/one.native.js +4 -0
  170. package/dist/esm/vite/one.native.js.map +1 -1
  171. package/package.json +33 -12
  172. package/src/Root.tsx +1 -1
  173. package/src/drawer.ts +1 -0
  174. package/src/hooks.test.ts +157 -0
  175. package/src/hooks.tsx +79 -23
  176. package/src/index.ts +1 -0
  177. package/src/link/prefetchIntent.test.ts +416 -0
  178. package/src/link/prefetchIntent.ts +174 -0
  179. package/src/link/prefetchViewport.test.ts +120 -0
  180. package/src/link/prefetchViewport.ts +62 -0
  181. package/src/router/findRouteNode.ts +73 -0
  182. package/src/router/router.ts +68 -41
  183. package/src/router/useScreens.tsx +1 -0
  184. package/src/views/PreloadLinks.tsx +156 -20
  185. package/src/vite/one.ts +4 -0
  186. package/src/vite/types.ts +12 -0
  187. package/types/drawer.d.ts +2 -0
  188. package/types/drawer.d.ts.map +1 -0
  189. package/types/hooks.d.ts +22 -0
  190. package/types/hooks.d.ts.map +1 -1
  191. package/types/hooks.test.d.ts +2 -0
  192. package/types/hooks.test.d.ts.map +1 -0
  193. package/types/index.d.ts +1 -1
  194. package/types/index.d.ts.map +1 -1
  195. package/types/link/prefetchIntent.d.ts +43 -0
  196. package/types/link/prefetchIntent.d.ts.map +1 -0
  197. package/types/link/prefetchIntent.test.d.ts +2 -0
  198. package/types/link/prefetchIntent.test.d.ts.map +1 -0
  199. package/types/link/prefetchViewport.d.ts +16 -0
  200. package/types/link/prefetchViewport.d.ts.map +1 -0
  201. package/types/link/prefetchViewport.test.d.ts +2 -0
  202. package/types/link/prefetchViewport.test.d.ts.map +1 -0
  203. package/types/router/findRouteNode.d.ts +11 -0
  204. package/types/router/findRouteNode.d.ts.map +1 -1
  205. package/types/router/router.d.ts.map +1 -1
  206. package/types/router/useScreens.d.ts.map +1 -1
  207. package/types/server/PreloadScripts.d.ts.map +1 -0
  208. package/types/views/PreloadLinks.d.ts +9 -0
  209. package/types/views/PreloadLinks.d.ts.map +1 -1
  210. package/types/vite/one.d.ts.map +1 -1
  211. package/types/vite/types.d.ts +11 -0
  212. 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": "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",
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
- export { extractParamsFromState, extractPathnameFromHref, extractSearchFromHref, findRouteNodeFromState };
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
- export { extractParamsFromState, extractPathnameFromHref, extractSearchFromHref, findRouteNodeFromState };
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, 500))]), data;
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 params = routeInfo?.params?.[segment];
429
- return Array.isArray(params) ? params.join("/") : params?.split(",")?.join("/") ?? "";
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(), params = extractParamsFromState(state), search = extractSearchFromHref(href), pathname = extractPathnameFromHref(href);
448
- if (loadedRoute.validateParams && runValidateParams(loadedRoute.validateParams, params), loadedRoute.validateRoute) {
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
- const normalizedPath = normalizeLoaderPath(href), loaderData = preloadedLoaderData[normalizedPath], params = extractParamsFromState(state), newMatches = buildClientMatches(href, matchingRouteNode, params, loaderData);
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();