@fluixi/core 1.0.0-alpha.94 → 1.0.0-alpha.96

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 (63) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cdn/core.global.js +2 -2
  3. package/dist/src/cdn/{chunk-7XM7Q5VR.mjs → chunk-RKBFEFZP.mjs} +125 -10
  4. package/dist/src/cdn/core.cjs +132 -12
  5. package/dist/src/cdn/core.mjs +4 -4
  6. package/dist/src/cdn/{router-VOY43YNM.mjs → router-V2THK27H.mjs} +3 -3
  7. package/dist/src/index.cjs +122 -7
  8. package/dist/src/index.mjs +122 -7
  9. package/dist/src/lib/client/{chunk-TSXM2PNY.mjs → chunk-RNRJHQFG.mjs} +1 -1
  10. package/dist/src/lib/client/index.cjs +133 -13
  11. package/dist/src/lib/client/index.d.ts.map +1 -1
  12. package/dist/src/lib/client/index.js +4 -1
  13. package/dist/src/lib/client/index.mjs +5 -5
  14. package/dist/src/lib/client/{router-BDVPLLYX.mjs → router-F3Y4BIVJ.mjs} +127 -12
  15. package/dist/src/lib/core.cjs +121 -6
  16. package/dist/src/lib/core.mjs +121 -6
  17. package/dist/src/lib/i18n/index.cjs +1 -1
  18. package/dist/src/lib/i18n/index.mjs +1 -1
  19. package/dist/src/lib/index.cjs +1 -1
  20. package/dist/src/lib/index.mjs +1 -1
  21. package/dist/src/lib/isomorphic.cjs +1 -1
  22. package/dist/src/lib/isomorphic.d.ts +5 -0
  23. package/dist/src/lib/isomorphic.d.ts.map +1 -1
  24. package/dist/src/lib/isomorphic.js +1 -1
  25. package/dist/src/lib/isomorphic.mjs +1 -1
  26. package/dist/src/lib/jsx-runtime/index.cjs +1 -1
  27. package/dist/src/lib/jsx-runtime/index.mjs +1 -1
  28. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.cjs +1 -1
  29. package/dist/src/lib/jsx-runtime/jsx-dev-runtime.mjs +1 -1
  30. package/dist/src/lib/plugins/index.cjs +1 -1
  31. package/dist/src/lib/plugins/index.mjs +1 -1
  32. package/dist/src/lib/render/index.cjs +1 -1
  33. package/dist/src/lib/render/index.mjs +1 -1
  34. package/dist/src/lib/render/versions.cjs +1 -1
  35. package/dist/src/lib/render/versions.mjs +1 -1
  36. package/dist/src/lib/router/data.cjs +4 -4
  37. package/dist/src/lib/router/data.d.ts.map +1 -1
  38. package/dist/src/lib/router/data.js +9 -8
  39. package/dist/src/lib/router/data.mjs +4 -4
  40. package/dist/src/lib/router/index.cjs +126 -11
  41. package/dist/src/lib/router/index.d.ts +8 -5
  42. package/dist/src/lib/router/index.d.ts.map +1 -1
  43. package/dist/src/lib/router/index.js +94 -7
  44. package/dist/src/lib/router/index.mjs +126 -11
  45. package/dist/src/lib/router/scroll.cjs +79 -0
  46. package/dist/src/lib/router/scroll.d.ts +19 -0
  47. package/dist/src/lib/router/scroll.d.ts.map +1 -0
  48. package/dist/src/lib/router/scroll.js +68 -0
  49. package/dist/src/lib/router/scroll.mjs +58 -0
  50. package/dist/src/lib/server/index.cjs +1 -1
  51. package/dist/src/lib/server/index.mjs +1 -1
  52. package/dist/src/lib/storage/index.cjs +1 -1
  53. package/dist/src/lib/storage/index.mjs +1 -1
  54. package/dist/src/routes.cjs +1 -1
  55. package/dist/src/routes.mjs +1 -1
  56. package/dist/src/utils.cjs +1 -1
  57. package/dist/src/utils.mjs +1 -1
  58. package/dist/src/version.generated.cjs +1 -1
  59. package/dist/src/version.generated.d.ts +1 -1
  60. package/dist/src/version.generated.js +1 -1
  61. package/dist/src/version.generated.mjs +1 -1
  62. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  63. package/package.json +16 -16
@@ -84,6 +84,64 @@ import {
84
84
  import { createContext as createContext2, useContext as useContext2 } from "@fluixi/reactive/signal";
85
85
  import { get } from "@fluixi/utils/object";
86
86
  import { deepEqual } from "@fluixi/utils/compare";
87
+
88
+ // src/lib/router/scroll.ts
89
+ var STORE = "fx:scroll";
90
+ var KEEP = 100;
91
+ function keepScroll(initial) {
92
+ const read2 = () => {
93
+ try {
94
+ return JSON.parse(sessionStorage.getItem(STORE) ?? "{}");
95
+ } catch {
96
+ return {};
97
+ }
98
+ };
99
+ const positions = read2();
100
+ const write = () => {
101
+ const keys = Object.keys(positions);
102
+ for (const key of keys.slice(0, Math.max(0, keys.length - KEEP))) delete positions[key];
103
+ try {
104
+ sessionStorage.setItem(STORE, JSON.stringify(positions));
105
+ } catch {
106
+ }
107
+ };
108
+ let current = initial.key;
109
+ const save = () => {
110
+ if (current === void 0) return;
111
+ delete positions[current];
112
+ positions[current] = window.scrollY;
113
+ write();
114
+ };
115
+ const restoration = history.scrollRestoration;
116
+ history.scrollRestoration = "manual";
117
+ window.addEventListener("pagehide", save);
118
+ const to = (top) => window.scrollTo({ top, left: 0, behavior: "instant" });
119
+ const toHash = (hash) => {
120
+ if (!hash || hash === "#") return false;
121
+ const target = document.getElementById(decodeURIComponent(hash.slice(1)));
122
+ target?.scrollIntoView({ behavior: "instant" });
123
+ return target !== null;
124
+ };
125
+ return {
126
+ leave: save,
127
+ arrive(location, from) {
128
+ current = location.key;
129
+ if (location.action === "pop" || from === void 0) {
130
+ const y = location.key === void 0 ? void 0 : positions[location.key];
131
+ if (y !== void 0) to(y);
132
+ return;
133
+ }
134
+ if (location.action === "replace" && location.pathname === from.pathname) return;
135
+ if (!toHash(location.hash)) to(0);
136
+ },
137
+ dispose() {
138
+ window.removeEventListener("pagehide", save);
139
+ history.scrollRestoration = restoration;
140
+ }
141
+ };
142
+ }
143
+
144
+ // src/lib/router/index.ts
87
145
  import {
88
146
  createRouter as createCoreRouter,
89
147
  createBrowserHistory,
@@ -245,7 +303,8 @@ function getSubmissionsSignal(url) {
245
303
  }
246
304
  function action(fn, name, options = {}) {
247
305
  const actionUrl = name || fn.name || "action";
248
- const submit = async (input) => {
306
+ const submit = async (...args) => {
307
+ const input = args.length > 1 ? args : args[0];
249
308
  const [, setSubmission] = getSubmissionSignal(actionUrl);
250
309
  const [, setSubmissions] = getSubmissionsSignal(actionUrl);
251
310
  let entry;
@@ -260,11 +319,10 @@ function action(fn, name, options = {}) {
260
319
  };
261
320
  const retry = () => {
262
321
  drop2();
263
- return submit(input);
322
+ return submit(...args);
264
323
  };
265
324
  entry = {
266
325
  input,
267
- // Approximate type for tracking
268
326
  pending: true,
269
327
  clear,
270
328
  retry
@@ -272,7 +330,7 @@ function action(fn, name, options = {}) {
272
330
  setSubmission(entry);
273
331
  setSubmissions((list) => [...list, entry]);
274
332
  try {
275
- const result = await fn(input);
333
+ const result = await fn(...args);
276
334
  setSubmission({
277
335
  input,
278
336
  result,
@@ -400,14 +458,49 @@ function renderLayer(m, depth, base) {
400
458
  });
401
459
  });
402
460
  };
461
+ let readsLocation;
403
462
  const [resource, { refetch }] = createResource3(() => {
404
- const result = loader({ params: base.params, location: base.location }, owner, () => cancelled, trackDeps);
463
+ const params = untrack2(base.params);
464
+ const location = untrack2(base.location);
465
+ readsLocation = false;
466
+ const result = loader(
467
+ {
468
+ params: () => params,
469
+ location: () => {
470
+ readsLocation = true;
471
+ return location;
472
+ }
473
+ },
474
+ owner,
475
+ () => cancelled,
476
+ trackDeps
477
+ );
405
478
  return router ? router.trackLoad(result) : result;
406
479
  });
407
- onCleanup(onRevalidate(() => void refetch()));
480
+ onCleanup(
481
+ onRevalidate(() => {
482
+ if (untrack2(() => base.matched()[depth]?.route) !== m.route) return;
483
+ void refetch();
484
+ })
485
+ );
486
+ let loadedFor = untrack2(() => JSON.stringify(base.matched()[depth]?.params ?? {}));
487
+ let searchedFor = untrack2(() => base.location().search);
488
+ createEffect(() => {
489
+ const now = base.matched()[depth];
490
+ const search = base.location().search;
491
+ if (now?.route !== m.route) return;
492
+ const params = JSON.stringify(now.params ?? {});
493
+ const paramsMoved = params !== loadedFor;
494
+ const searchMoved = readsLocation !== false && search !== searchedFor;
495
+ loadedFor = params;
496
+ searchedFor = search;
497
+ if (paramsMoved || searchMoved) untrack2(() => void refetch());
498
+ });
408
499
  data = () => {
409
500
  const error = resource.error;
410
501
  if (error !== void 0 && error !== null) throw error;
502
+ const r = resource;
503
+ if (r.state === "refreshing") return r.latest;
411
504
  return resource();
412
505
  };
413
506
  Object.defineProperty(data, "loading", { get: () => resource.loading });
@@ -512,16 +605,19 @@ function buildDefaultNotFound() {
512
605
  }
513
606
  var pendingTransitionMode;
514
607
  function Router(props) {
515
- const history = props.history ?? createBrowserHistory();
608
+ const history2 = props.history ?? createBrowserHistory();
516
609
  const router = createCoreRouter({
517
610
  routes: props.routes,
518
611
  base: props.base,
519
- history
612
+ history: history2
520
613
  });
521
614
  const [state, setState] = createSignal2(router.state());
522
615
  const [navigating, setNavigating] = createSignal2(false);
523
616
  const [loads, setLoads] = createSignal2(0);
524
617
  let navigationId = 0;
618
+ const scroll = history2.window ? keepScroll(router.state().location) : void 0;
619
+ let arriving = scroll ? { id: 0, location: router.state().location, from: void 0 } : null;
620
+ const [arrived, setArrived] = createSignal2(0);
525
621
  const takeMode = () => {
526
622
  const mode = pendingTransitionMode ?? (props.transition ?? "auto");
527
623
  pendingTransitionMode = void 0;
@@ -531,6 +627,10 @@ function Router(props) {
531
627
  const id = ++navigationId;
532
628
  const mode = takeMode();
533
629
  setNavigating(true);
630
+ if (scroll) {
631
+ scroll.leave();
632
+ arriving = { id, location: next.location, from: untrack2(state).location };
633
+ }
534
634
  const prepared = prepareComponents(
535
635
  (next.match?.matched ?? []).map((m) => m.component).filter(Boolean)
536
636
  );
@@ -538,6 +638,7 @@ function Router(props) {
538
638
  setState(next);
539
639
  const flushed = flush();
540
640
  if (id === navigationId) setNavigating(false);
641
+ if (scroll) setArrived(id);
541
642
  return flushed;
542
643
  };
543
644
  if (!prepared) {
@@ -551,6 +652,7 @@ function Router(props) {
551
652
  });
552
653
  onCleanup(() => {
553
654
  unsub();
655
+ scroll?.dispose();
554
656
  router.destroy();
555
657
  navigationId++;
556
658
  });
@@ -573,6 +675,19 @@ function Router(props) {
573
675
  return result;
574
676
  }
575
677
  };
678
+ if (scroll) {
679
+ const nextFrame = typeof requestAnimationFrame === "function" ? requestAnimationFrame : (fn) => setTimeout(fn, 0);
680
+ createEffect(() => {
681
+ const id = arrived();
682
+ if (ctx.isRouting()) return;
683
+ const next = arriving;
684
+ if (!next || next.id !== id || id !== navigationId) return;
685
+ arriving = null;
686
+ nextFrame(() => {
687
+ if (id === navigationId) scroll.arrive(next.location, next.from);
688
+ });
689
+ });
690
+ }
576
691
  const root = {
577
692
  depth: -1,
578
693
  matched,
@@ -788,7 +903,7 @@ function Link(props) {
788
903
  return a;
789
904
  }
790
905
  var A = Link;
791
- function Form(props) {
906
+ function ActionForm(props) {
792
907
  const action2 = props.action;
793
908
  const cls = props.className ?? props.class;
794
909
  const url = action2.url ?? "";
@@ -862,7 +977,7 @@ export {
862
977
  useRouteData,
863
978
  Link,
864
979
  A,
865
- Form,
980
+ ActionForm,
866
981
  preloadRoutes,
867
982
  createMemoryHistory,
868
983
  createBrowserHistory2 as createBrowserHistory,
@@ -184,6 +184,68 @@ var init_transition = __esm({
184
184
  }
185
185
  });
186
186
 
187
+ // src/lib/router/scroll.ts
188
+ function keepScroll(initial) {
189
+ const read2 = () => {
190
+ try {
191
+ return JSON.parse(sessionStorage.getItem(STORE) ?? "{}");
192
+ } catch {
193
+ return {};
194
+ }
195
+ };
196
+ const positions = read2();
197
+ const write = () => {
198
+ const keys = Object.keys(positions);
199
+ for (const key of keys.slice(0, Math.max(0, keys.length - KEEP))) delete positions[key];
200
+ try {
201
+ sessionStorage.setItem(STORE, JSON.stringify(positions));
202
+ } catch {
203
+ }
204
+ };
205
+ let current = initial.key;
206
+ const save = () => {
207
+ if (current === void 0) return;
208
+ delete positions[current];
209
+ positions[current] = window.scrollY;
210
+ write();
211
+ };
212
+ const restoration = history.scrollRestoration;
213
+ history.scrollRestoration = "manual";
214
+ window.addEventListener("pagehide", save);
215
+ const to = (top) => window.scrollTo({ top, left: 0, behavior: "instant" });
216
+ const toHash = (hash) => {
217
+ if (!hash || hash === "#") return false;
218
+ const target = document.getElementById(decodeURIComponent(hash.slice(1)));
219
+ target?.scrollIntoView({ behavior: "instant" });
220
+ return target !== null;
221
+ };
222
+ return {
223
+ leave: save,
224
+ arrive(location, from) {
225
+ current = location.key;
226
+ if (location.action === "pop" || from === void 0) {
227
+ const y = location.key === void 0 ? void 0 : positions[location.key];
228
+ if (y !== void 0) to(y);
229
+ return;
230
+ }
231
+ if (location.action === "replace" && location.pathname === from.pathname) return;
232
+ if (!toHash(location.hash)) to(0);
233
+ },
234
+ dispose() {
235
+ window.removeEventListener("pagehide", save);
236
+ history.scrollRestoration = restoration;
237
+ }
238
+ };
239
+ }
240
+ var STORE, KEEP;
241
+ var init_scroll = __esm({
242
+ "src/lib/router/scroll.ts"() {
243
+ "use strict";
244
+ STORE = "fx:scroll";
245
+ KEEP = 100;
246
+ }
247
+ });
248
+
187
249
  // src/lib/router/data.ts
188
250
  function onRevalidate(listener) {
189
251
  revalidationListeners.add(listener);
@@ -255,7 +317,8 @@ function getSubmissionsSignal(url) {
255
317
  }
256
318
  function action(fn, name, options = {}) {
257
319
  const actionUrl = name || fn.name || "action";
258
- const submit = async (input) => {
320
+ const submit = async (...args) => {
321
+ const input = args.length > 1 ? args : args[0];
259
322
  const [, setSubmission] = getSubmissionSignal(actionUrl);
260
323
  const [, setSubmissions] = getSubmissionsSignal(actionUrl);
261
324
  let entry;
@@ -270,11 +333,10 @@ function action(fn, name, options = {}) {
270
333
  };
271
334
  const retry = () => {
272
335
  drop2();
273
- return submit(input);
336
+ return submit(...args);
274
337
  };
275
338
  entry = {
276
339
  input,
277
- // Approximate type for tracking
278
340
  pending: true,
279
341
  clear,
280
342
  retry
@@ -282,7 +344,7 @@ function action(fn, name, options = {}) {
282
344
  setSubmission(entry);
283
345
  setSubmissions((list) => [...list, entry]);
284
346
  try {
285
- const result = await fn(input);
347
+ const result = await fn(...args);
286
348
  setSubmission({
287
349
  input,
288
350
  result,
@@ -356,7 +418,7 @@ var init_data = __esm({
356
418
  var router_exports = {};
357
419
  __export(router_exports, {
358
420
  A: () => A,
359
- Form: () => Form,
421
+ ActionForm: () => ActionForm,
360
422
  Link: () => Link,
361
423
  Outlet: () => Outlet,
362
424
  Redirect: () => Redirect,
@@ -414,14 +476,49 @@ function renderLayer(m, depth, base) {
414
476
  });
415
477
  });
416
478
  };
479
+ let readsLocation;
417
480
  const [resource, { refetch }] = (0, import_signal14.createResource)(() => {
418
- const result = loader({ params: base.params, location: base.location }, owner, () => cancelled, trackDeps);
481
+ const params = (0, import_signal14.untrack)(base.params);
482
+ const location = (0, import_signal14.untrack)(base.location);
483
+ readsLocation = false;
484
+ const result = loader(
485
+ {
486
+ params: () => params,
487
+ location: () => {
488
+ readsLocation = true;
489
+ return location;
490
+ }
491
+ },
492
+ owner,
493
+ () => cancelled,
494
+ trackDeps
495
+ );
419
496
  return router ? router.trackLoad(result) : result;
420
497
  });
421
- (0, import_signal14.onCleanup)(onRevalidate(() => void refetch()));
498
+ (0, import_signal14.onCleanup)(
499
+ onRevalidate(() => {
500
+ if ((0, import_signal14.untrack)(() => base.matched()[depth]?.route) !== m.route) return;
501
+ void refetch();
502
+ })
503
+ );
504
+ let loadedFor = (0, import_signal14.untrack)(() => JSON.stringify(base.matched()[depth]?.params ?? {}));
505
+ let searchedFor = (0, import_signal14.untrack)(() => base.location().search);
506
+ (0, import_signal14.createEffect)(() => {
507
+ const now = base.matched()[depth];
508
+ const search = base.location().search;
509
+ if (now?.route !== m.route) return;
510
+ const params = JSON.stringify(now.params ?? {});
511
+ const paramsMoved = params !== loadedFor;
512
+ const searchMoved = readsLocation !== false && search !== searchedFor;
513
+ loadedFor = params;
514
+ searchedFor = search;
515
+ if (paramsMoved || searchMoved) (0, import_signal14.untrack)(() => void refetch());
516
+ });
422
517
  data = () => {
423
518
  const error = resource.error;
424
519
  if (error !== void 0 && error !== null) throw error;
520
+ const r = resource;
521
+ if (r.state === "refreshing") return r.latest;
425
522
  return resource();
426
523
  };
427
524
  Object.defineProperty(data, "loading", { get: () => resource.loading });
@@ -525,16 +622,19 @@ function buildDefaultNotFound() {
525
622
  return el;
526
623
  }
527
624
  function Router(props) {
528
- const history = props.history ?? (0, import_router.createBrowserHistory)();
625
+ const history2 = props.history ?? (0, import_router.createBrowserHistory)();
529
626
  const router = (0, import_router.createRouter)({
530
627
  routes: props.routes,
531
628
  base: props.base,
532
- history
629
+ history: history2
533
630
  });
534
631
  const [state, setState] = (0, import_signal14.createSignal)(router.state());
535
632
  const [navigating, setNavigating] = (0, import_signal14.createSignal)(false);
536
633
  const [loads, setLoads] = (0, import_signal14.createSignal)(0);
537
634
  let navigationId = 0;
635
+ const scroll = history2.window ? keepScroll(router.state().location) : void 0;
636
+ let arriving = scroll ? { id: 0, location: router.state().location, from: void 0 } : null;
637
+ const [arrived, setArrived] = (0, import_signal14.createSignal)(0);
538
638
  const takeMode = () => {
539
639
  const mode = pendingTransitionMode ?? (props.transition ?? "auto");
540
640
  pendingTransitionMode = void 0;
@@ -544,6 +644,10 @@ function Router(props) {
544
644
  const id = ++navigationId;
545
645
  const mode = takeMode();
546
646
  setNavigating(true);
647
+ if (scroll) {
648
+ scroll.leave();
649
+ arriving = { id, location: next.location, from: (0, import_signal14.untrack)(state).location };
650
+ }
547
651
  const prepared = prepareComponents(
548
652
  (next.match?.matched ?? []).map((m) => m.component).filter(Boolean)
549
653
  );
@@ -551,6 +655,7 @@ function Router(props) {
551
655
  setState(next);
552
656
  const flushed = (0, import_signal14.flush)();
553
657
  if (id === navigationId) setNavigating(false);
658
+ if (scroll) setArrived(id);
554
659
  return flushed;
555
660
  };
556
661
  if (!prepared) {
@@ -564,6 +669,7 @@ function Router(props) {
564
669
  });
565
670
  (0, import_signal14.onCleanup)(() => {
566
671
  unsub();
672
+ scroll?.dispose();
567
673
  router.destroy();
568
674
  navigationId++;
569
675
  });
@@ -586,6 +692,19 @@ function Router(props) {
586
692
  return result;
587
693
  }
588
694
  };
695
+ if (scroll) {
696
+ const nextFrame = typeof requestAnimationFrame === "function" ? requestAnimationFrame : (fn) => setTimeout(fn, 0);
697
+ (0, import_signal14.createEffect)(() => {
698
+ const id = arrived();
699
+ if (ctx.isRouting()) return;
700
+ const next = arriving;
701
+ if (!next || next.id !== id || id !== navigationId) return;
702
+ arriving = null;
703
+ nextFrame(() => {
704
+ if (id === navigationId) scroll.arrive(next.location, next.from);
705
+ });
706
+ });
707
+ }
589
708
  const root = {
590
709
  depth: -1,
591
710
  matched,
@@ -781,7 +900,7 @@ function Link(props) {
781
900
  if (linkChildren != null) (0, import_dom16.insert)(a, linkChildren);
782
901
  return a;
783
902
  }
784
- function Form(props) {
903
+ function ActionForm(props) {
785
904
  const action2 = props.action;
786
905
  const cls = props.className ?? props.class;
787
906
  const url = action2.url ?? "";
@@ -829,6 +948,7 @@ var init_router = __esm({
829
948
  import_signal15 = require("@fluixi/reactive/signal");
830
949
  import_object = require("@fluixi/utils/object");
831
950
  import_compare = require("@fluixi/utils/compare");
951
+ init_scroll();
832
952
  import_router = require("@fluixi/router");
833
953
  init_data();
834
954
  import_router2 = require("@fluixi/router");
@@ -976,7 +1096,7 @@ var import_signal6 = require("@fluixi/reactive/signal");
976
1096
  var import_dom = require("@fluixi/dom");
977
1097
 
978
1098
  // src/version.generated.ts
979
- var VERSION = "1.0.0-alpha.94";
1099
+ var VERSION = "1.0.0-alpha.96";
980
1100
 
981
1101
  // src/lib/render/versions.ts
982
1102
  var import_dom2 = require("@fluixi/dom");
@@ -1432,7 +1552,7 @@ async function startClient(App, options = {}) {
1432
1552
  }
1433
1553
  deserializeHydrationData();
1434
1554
  setHydrating(true);
1435
- (0, import_dom17.hydrate)(rootOf(App), container);
1555
+ (0, import_dom17.hydrate)(() => rootOf(App), container);
1436
1556
  replayEvents();
1437
1557
  } finally {
1438
1558
  (0, import_dom17.endAppHydration)();
@@ -20,7 +20,7 @@ import {
20
20
  useParams,
21
21
  useRouter,
22
22
  useSearchParams
23
- } from "./chunk-7XM7Q5VR.mjs";
23
+ } from "./chunk-RKBFEFZP.mjs";
24
24
 
25
25
  // src/lib/index.ts
26
26
  import {
@@ -54,7 +54,7 @@ import { createRoot as createRoot2 } from "@fluixi/reactive/signal";
54
54
  import { registerCoreVersion } from "@fluixi/dom";
55
55
 
56
56
  // src/version.generated.ts
57
- var VERSION = "1.0.0-alpha.94";
57
+ var VERSION = "1.0.0-alpha.96";
58
58
 
59
59
  // src/lib/render/versions.ts
60
60
  import { stampVersions, warnOnVersionSkew, versions } from "@fluixi/dom";
@@ -574,12 +574,12 @@ async function startClient(App, options = {}) {
574
574
  beginAppHydration();
575
575
  try {
576
576
  if (options.routes && options.routes.length) {
577
- const { preloadRoutes } = await import("./router-VOY43YNM.mjs");
577
+ const { preloadRoutes } = await import("./router-V2THK27H.mjs");
578
578
  await preloadRoutes(options.routes, window.location.pathname);
579
579
  }
580
580
  deserializeHydrationData();
581
581
  setHydrating(true);
582
- domHydrate(rootOf(App), container);
582
+ domHydrate(() => rootOf(App), container);
583
583
  replayEvents();
584
584
  } finally {
585
585
  endAppHydration();
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  A,
3
- Form,
3
+ ActionForm,
4
4
  Link,
5
5
  Outlet,
6
6
  Redirect,
@@ -34,10 +34,10 @@ import {
34
34
  useSearchParams,
35
35
  useSubmission,
36
36
  useSubmissions
37
- } from "./chunk-7XM7Q5VR.mjs";
37
+ } from "./chunk-RKBFEFZP.mjs";
38
38
  export {
39
39
  A,
40
- Form,
40
+ ActionForm,
41
41
  Link,
42
42
  Outlet,
43
43
  Redirect,