@flemo/react 1.9.0 → 1.10.0

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.
@@ -0,0 +1,2 @@
1
+ declare const RouterIdContext: import('react').Context<string | null>;
2
+ export default RouterIdContext;
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import e, { Activity as t, Children as n, createContext as r, isValidElement as i, useContext as a, useEffect as o, useId as s, useImperativeHandle as c, useInsertionEffect as l, useLayoutEffect as u, useReducer as d, useRef as f, useState as p } from "react";
2
- import { animHoldKey as ee, appendParamsQuery as m, buildRoutePath as h, computeBarRiding as g, computeScreenFreeze as te, computeScreenFreezeMode as _, consumeSelfInducedPop as v, createAnimHoldCoordinator as y, createBrowserHistoryDriver as b, createBrowserHistoryDriver as ne, createDecorator as re, createHistoryStore as x, createNavigateStore as S, createNavigationController as C, createPartTransition as w, createRawDecorator as T, createRawPartTransition as E, createRawTransition as D, createRouterScope as ie, createScreenSelector as O, createScreenStore as k, createStepController as A, createSwipeController as ae, createTransition as oe, createTransitionEngine as se, createTransitionStore as ce, decoratorMap as le, eagerlyDecodeImages as ue, ensureImageDecodeOffloader as de, ensureScopeHistorySync as j, enteringInitialStyle as fe, getMatchedPathPattern as pe, holdCompositorWarm as me, isOpaqueColor as he, isServer as ge, markSelfInducedPop as _e, matchesPathname as ve, observeBarHeight as ye, observeViewportScrollHeight as M, partTransitionMap as be, readStepParams as N, registerTransitionDefinitions as xe, releaseScopeHistorySync as P, resolveTransition as Se, seedRouterEntry as F, subscribeStepParamsRestore as I } from "@flemo/core";
3
- import { jsx as L, jsxs as Ce } from "react/jsx-runtime";
2
+ import { animHoldKey as ee, appendParamsQuery as m, buildRoutePath as te, computeBarRiding as h, computeScreenFreeze as g, computeScreenFreezeMode as _, consumeSelfInducedPop as v, createAnimHoldCoordinator as y, createBrowserHistoryDriver as b, createBrowserHistoryDriver as x, createDecorator as S, createHistoryStore as ne, createNavigateStore as C, createNavigationController as w, createPartTransition as re, createRawDecorator as T, createRawPartTransition as E, createRawTransition as D, createRouterScope as ie, createScreenSelector as O, createScreenStore as k, createStepController as ae, createSwipeController as A, createTransition as j, createTransitionEngine as oe, createTransitionStore as M, decoratorMap as se, detectBlinkEngine as ce, eagerlyDecodeImages as le, ensureGpuPipelinePrewarm as ue, ensureImageDecodeOffloader as de, ensureScopeHistorySync as fe, enteringInitialStyle as pe, getMatchedPathPattern as N, holdCompositorWarm as me, isOpaqueColor as he, isServer as ge, markSelfInducedPop as _e, matchesPathname as ve, observeBarHeight as ye, observeViewportScrollHeight as be, partTransitionMap as P, readStepParams as xe, registerTransitionDefinitions as Se, releaseScopeHistorySync as Ce, resolveTransition as we, seedRouterEntry as F, subscribeStepParamsRestore as I } from "@flemo/core";
3
+ import { jsx as L, jsxs as Te } from "react/jsx-runtime";
4
4
  //#region src/stores/StoreContext.ts
5
5
  var R = r(null);
6
6
  //#endregion
@@ -12,9 +12,9 @@ function z() {
12
12
  }
13
13
  //#endregion
14
14
  //#region src/history/HistoryListener.tsx
15
- function we() {
15
+ function Ee() {
16
16
  let e = z();
17
- return o(() => (j(e), () => P(e)), [e]), null;
17
+ return o(() => (fe(e), () => Ce(e)), [e]), null;
18
18
  }
19
19
  //#endregion
20
20
  //#region src/screen/ScreenContext.ts
@@ -38,7 +38,7 @@ function V() {
38
38
  }
39
39
  //#endregion
40
40
  //#region src/screen/ParamsProvider/ParamsContext.ts
41
- var Te = r({}), Ee = r(() => {});
41
+ var De = r({}), Oe = r(() => {});
42
42
  //#endregion
43
43
  //#region src/screen/ParamsProvider/ParamsReducer.ts
44
44
  function H(e, t) {
@@ -49,7 +49,7 @@ function H(e, t) {
49
49
  }
50
50
  //#endregion
51
51
  //#region src/screen/ParamsProvider/ParamsProvider.tsx
52
- function De({ children: e }) {
52
+ function U({ children: e }) {
53
53
  let { isActive: t, params: n } = V(), { driver: r } = z(), [i, a] = d(H, n);
54
54
  return o(() => {
55
55
  if (t) return I(r, (e) => a({
@@ -60,30 +60,33 @@ function De({ children: e }) {
60
60
  t,
61
61
  a,
62
62
  r
63
- ]), /* @__PURE__ */ L(Ee.Provider, {
63
+ ]), /* @__PURE__ */ L(Oe.Provider, {
64
64
  value: a,
65
- children: /* @__PURE__ */ L(Te.Provider, {
65
+ children: /* @__PURE__ */ L(De.Provider, {
66
66
  value: i,
67
67
  children: e
68
68
  })
69
69
  });
70
70
  }
71
71
  //#endregion
72
- //#region ../../node_modules/.pnpm/zustand@5.0.14_@types+react@19.2.17_react@19.2.7/node_modules/zustand/esm/react.mjs
73
- var U = (e) => e;
74
- function W(t, n = U) {
72
+ //#region ../../node_modules/.pnpm/zustand@5.0.14_@types+react@19.2.18_react@19.2.8/node_modules/zustand/esm/react.mjs
73
+ var W = (e) => e;
74
+ function G(t, n = W) {
75
75
  let r = e.useSyncExternalStore(t.subscribe, e.useCallback(() => n(t.getState()), [t, n]), e.useCallback(() => n(t.getInitialState()), [t, n]));
76
76
  return e.useDebugValue(r), r;
77
77
  }
78
78
  //#endregion
79
79
  //#region src/stores/useHistoryStore.ts
80
- function G(e) {
81
- return W(z().history, e);
80
+ function K(e) {
81
+ return G(z().history, e);
82
82
  }
83
83
  //#endregion
84
+ //#region src/RouterIdContext.ts
85
+ var ke = r(null);
86
+ //#endregion
84
87
  //#region src/renderer/Renderer.tsx
85
- function K({ children: e }) {
86
- let t = G((e) => e.index), r = G((e) => e.histories), i = z(), o = a(B);
88
+ function q({ children: e }) {
89
+ let t = K((e) => e.index), r = K((e) => e.histories), i = z(), o = a(B), s = a(ke);
87
90
  return O(r, t).map((t) => {
88
91
  let [r] = n.toArray(e).filter((e) => ve(e.props.path, t.pathname));
89
92
  return r ? /* @__PURE__ */ L(B.Provider, {
@@ -91,22 +94,23 @@ function K({ children: e }) {
91
94
  ...t,
92
95
  isPrev: t.isPrev || o.isPrev,
93
96
  navigateStore: i.navigate,
94
- routePath: pe(r.props.path, t.pathname)
97
+ routerId: s ?? void 0,
98
+ routePath: N(r.props.path, t.pathname)
95
99
  },
96
- children: /* @__PURE__ */ L(De, { children: r })
100
+ children: /* @__PURE__ */ L(U, { children: r })
97
101
  }, t.id) : null;
98
102
  });
99
103
  }
100
104
  //#endregion
101
105
  //#region src/screen/ScreenViewportContext.ts
102
- var q = r({ contained: !1 });
103
- function Oe() {
104
- return a(q);
106
+ var J = r({ contained: !1 });
107
+ function Ae() {
108
+ return a(J);
105
109
  }
106
110
  //#endregion
107
111
  //#region src/transition/styles.ts
108
- function J(e, t, n = []) {
109
- l(() => xe(e, t, n), [
112
+ function je(e, t, n = []) {
113
+ l(() => Se(e, t, n), [
110
114
  e,
111
115
  t,
112
116
  n
@@ -114,8 +118,8 @@ function J(e, t, n = []) {
114
118
  }
115
119
  //#endregion
116
120
  //#region src/RouterDepthContext.ts
117
- var ke = r(0), Ae = { contained: !0 };
118
- function je({ children: e, className: t, style: n }) {
121
+ var Y = r(0), Me = { contained: !0 };
122
+ function Ne({ children: e, className: t, style: n }) {
119
123
  return /* @__PURE__ */ L("div", {
120
124
  className: t,
121
125
  style: {
@@ -123,55 +127,58 @@ function je({ children: e, className: t, style: n }) {
123
127
  overflow: "hidden",
124
128
  ...n
125
129
  },
126
- children: /* @__PURE__ */ L(q.Provider, {
127
- value: Ae,
128
- children: /* @__PURE__ */ L(K, { children: e })
130
+ children: /* @__PURE__ */ L(J.Provider, {
131
+ value: Me,
132
+ children: /* @__PURE__ */ L(q, { children: e })
129
133
  })
130
134
  });
131
135
  }
132
136
  //#endregion
133
137
  //#region src/Router.tsx
134
- function Me(e) {
138
+ function Pe(e) {
135
139
  let t = null;
136
140
  return n.forEach(e, (e) => {
137
141
  if (t || !i(e)) return;
138
- if (e.type === je) {
142
+ if (e.type === Ne) {
139
143
  t = n.toArray(e.props.children).filter(i);
140
144
  return;
141
145
  }
142
146
  let r = e.props.children;
143
147
  if (r) {
144
- let e = Me(r);
148
+ let e = Pe(r);
145
149
  e && (t = e);
146
150
  }
147
151
  }), t;
148
152
  }
149
- var Ne = typeof window > "u" ? o : u, Pe = [], Y = [], Fe = [], Ie = { contained: !0 }, Le = 500, Re = 3e3;
150
- function ze({ children: e, initPath: t = "/", defaultTransitionName: r = "cupertino", transitions: i = Pe, decorators: c = Y, partTransitions: l = Fe, history: u = "browser", createDriver: d, className: f, style: ee }) {
151
- let m = a(ke), h = m > 0, g = u === "memory", te = s(), _ = a(B), v = a(R), y = h && _.id ? `_F_${v?.routerKey ?? ""}${_.id}_` : te, b = Me(e), re = b !== null, x = h ? null : v, S = x !== null, C = d ?? ne, [w] = p(() => g ? null : C(S ? void 0 : y)), T = !h && !g && !ge(), E = T && w ? w.readPathname() : t || "/", D = E.indexOf("?"), O = (D >= 0 ? E.slice(0, D) : E) || "/", k = T ? window.location.search : D >= 0 ? E.slice(D) : "", [A] = p(() => ie({
152
- routePaths: (b ?? n.toArray(e)).map((e) => e.props.path).flat(),
153
- pathname: O,
154
- search: k,
155
- defaultTransitionName: r,
156
- memory: g,
157
- browserDriver: w,
158
- hostedScope: x,
159
- routerKey: S ? void 0 : y,
160
- zoneEntryId: h && !S && _.id || void 0,
161
- persistKey: h && !g && !S ? y : void 0
162
- }));
163
- A.transition.setState({ defaultTransitionName: r }), Ne(() => (A.life.alive = !0, () => {
153
+ var Fe = typeof window > "u" ? o : u, Ie = [], Le = [], X = [], Re = { contained: !0 }, ze = 500, Be = 3e3;
154
+ function Ve({ children: e, initPath: t = "/", defaultTransitionName: r = "cupertino", transitions: i = Ie, decorators: c = Le, partTransitions: l = X, history: u = "browser", createDriver: d, className: f, style: ee }) {
155
+ let m = a(Y), te = s(), h = m > 0, g = u === "memory", _ = s(), v = a(B), y = a(R), b = h && v.id ? `_F_${y?.routerKey ?? ""}${v.id}_` : _, S = Pe(e), ne = S !== null, C = h ? null : y, w = C !== null, re = d ?? x, [T] = p(() => g ? null : re(w ? void 0 : b)), E = !h && !g && !ge(), D = E && T ? T.readPathname() : t || "/", O = D.indexOf("?"), k = (O >= 0 ? D.slice(0, O) : D) || "/", ae = E ? window.location.search : O >= 0 ? D.slice(O) : "", [A] = p(() => {
156
+ let t = (S ?? n.toArray(e)).map((e) => e.props.path).flat();
157
+ return ie({
158
+ routePaths: t,
159
+ pathname: k,
160
+ search: ae,
161
+ defaultTransitionName: r,
162
+ memory: g,
163
+ browserDriver: T,
164
+ hostedScope: C,
165
+ routerKey: w ? void 0 : b,
166
+ zoneEntryId: h && !w && v.id || void 0,
167
+ persistKey: h && !g && !w ? b : void 0
168
+ });
169
+ });
170
+ A.transition.setState({ defaultTransitionName: r }), Fe(() => (A.life.alive = !0, () => {
164
171
  A.life.alive = !1;
165
- }), [A]), J(i, c, l), o(() => de(), []), o(() => {
172
+ }), [A]), je(i, c, l), o(() => de(), []), o(() => ue(), []), o(() => {
166
173
  if (typeof document > "u") return;
167
174
  let e = null, t = null, n = 0, r = () => {
168
175
  let r = Date.now();
169
- if (r - n < Le) return;
176
+ if (r - n < ze) return;
170
177
  n = r, t && clearTimeout(t);
171
178
  let i = e;
172
179
  e = me(), i?.(), t = setTimeout(() => {
173
180
  t = null, e?.(), e = null;
174
- }, Re);
181
+ }, Be);
175
182
  }, i = [
176
183
  "pointerdown",
177
184
  "pointermove",
@@ -185,32 +192,35 @@ function ze({ children: e, initPath: t = "/", defaultTransitionName: r = "cupert
185
192
  t && clearTimeout(t), e?.();
186
193
  };
187
194
  }, []), o(() => {
188
- g || !w || F({
189
- driver: w,
190
- routerKey: S ? null : y,
191
- nested: h && !S,
192
- seedPathname: O,
195
+ g || !T || F({
196
+ driver: T,
197
+ routerKey: w ? null : b,
198
+ nested: h && !w,
199
+ seedPathname: k,
193
200
  defaultTransitionName: r,
194
201
  rootParams: A.history.getState().histories[0]?.params ?? {}
195
202
  });
196
203
  }, [
197
204
  g,
198
- S,
205
+ w,
199
206
  h,
200
- y,
201
- O,
207
+ b,
208
+ k,
202
209
  r,
203
210
  A.history,
204
- w
211
+ T
205
212
  ]);
206
- let ae = re ? e : /* @__PURE__ */ L(K, { children: e }), oe = /* @__PURE__ */ L(ke.Provider, {
207
- value: m + 1,
208
- children: /* @__PURE__ */ Ce(R.Provider, {
209
- value: A,
210
- children: [!g && /* @__PURE__ */ L(we, {}), h ? /* @__PURE__ */ L(q.Provider, {
211
- value: Ie,
212
- children: ae
213
- }) : ae]
213
+ let j = ne ? e : /* @__PURE__ */ L(q, { children: e }), oe = /* @__PURE__ */ L(ke.Provider, {
214
+ value: te,
215
+ children: /* @__PURE__ */ L(Y.Provider, {
216
+ value: m + 1,
217
+ children: /* @__PURE__ */ Te(R.Provider, {
218
+ value: A,
219
+ children: [!g && /* @__PURE__ */ L(Ee, {}), h ? /* @__PURE__ */ L(J.Provider, {
220
+ value: Re,
221
+ children: j
222
+ }) : j]
223
+ })
214
224
  })
215
225
  });
216
226
  return h ? /* @__PURE__ */ L("div", {
@@ -225,18 +235,18 @@ function ze({ children: e, initPath: t = "/", defaultTransitionName: r = "cupert
225
235
  }
226
236
  //#endregion
227
237
  //#region src/Route.tsx
228
- function X({ element: e }) {
238
+ function He({ element: e }) {
229
239
  return e;
230
240
  }
231
241
  //#endregion
232
242
  //#region src/utils/buildRoutePath.ts
233
243
  function Z(e, t) {
234
- return h(e, t);
244
+ return te(e, t);
235
245
  }
236
246
  //#endregion
237
247
  //#region src/navigate/useNavigate.ts
238
- function Be() {
239
- let e = z(), t = C({
248
+ function Q() {
249
+ let e = z(), t = w({
240
250
  stores: e,
241
251
  buildPathname: (e, t) => Z(e, t),
242
252
  driver: e.driver,
@@ -250,17 +260,17 @@ function Be() {
250
260
  }
251
261
  //#endregion
252
262
  //#region src/navigate/usePathname.ts
253
- function Ve() {
254
- return G((e) => e.histories[e.pendingIndex]?.pathname ?? "/");
263
+ function Ue() {
264
+ return K((e) => e.histories[e.pendingIndex]?.pathname ?? "/");
255
265
  }
256
266
  //#endregion
257
267
  //#region src/navigate/useStep.ts
258
- function He() {
259
- let { routePath: e } = V(), t = z(), n = a(Ee), { driver: r, markSelfInduced: i } = t, [s, c] = p(null);
268
+ function We() {
269
+ let { routePath: e } = V(), t = z(), n = a(Oe), { driver: r, markSelfInduced: i } = t, [s, c] = p(null);
260
270
  o(() => {
261
- if (!e) return c(N(r.readState())), r.subscribe((e) => c(N(e.state)));
271
+ if (!e) return c(xe(r.readState())), r.subscribe((e) => c(xe(e.state)));
262
272
  }, [e, r]);
263
- let l = A({
273
+ let l = ae({
264
274
  stores: t,
265
275
  driver: r,
266
276
  markSelfInduced: i,
@@ -281,12 +291,12 @@ function He() {
281
291
  }
282
292
  //#endregion
283
293
  //#region src/screen/ParamsProvider/useParams.ts
284
- function Ue() {
285
- return a(Te);
294
+ function Ge() {
295
+ return a(De);
286
296
  }
287
297
  //#endregion
288
298
  //#region src/screen/ScreenFreeze.tsx
289
- function We({ freeze: e, children: n }) {
299
+ function Ke({ freeze: e, children: n }) {
290
300
  return /* @__PURE__ */ L(t, {
291
301
  mode: e ? "hidden" : "visible",
292
302
  children: n
@@ -294,22 +304,22 @@ function We({ freeze: e, children: n }) {
294
304
  }
295
305
  //#endregion
296
306
  //#region src/screen/scopeAnimHoldCoordinator.ts
297
- var Ge = /* @__PURE__ */ new WeakMap();
298
- function Ke(e) {
299
- let t = Ge.get(e);
300
- return t || (t = y(), Ge.set(e, t)), t;
307
+ var qe = /* @__PURE__ */ new WeakMap();
308
+ function Je(e) {
309
+ let t = qe.get(e);
310
+ return t || (t = y(), qe.set(e, t)), t;
301
311
  }
302
312
  //#endregion
303
313
  //#region src/stores/useNavigateStore.ts
304
- function Q(e) {
305
- return W(z().navigate, e);
314
+ function Ye(e) {
315
+ return G(z().navigate, e);
306
316
  }
307
317
  //#endregion
308
318
  //#region src/screen/ScreenDecorator.tsx
309
- function qe({ ref: e, style: t, ...n }) {
319
+ function Xe({ ref: e, style: t, ...n }) {
310
320
  let { isActive: r, isPrev: i, transitionName: a } = V(), o = f(null);
311
321
  c(e, () => o.current);
312
- let s = Q((e) => i ? "COMPLETED" : e.status), { decoratorName: l } = Se(a), u = le.get(l);
322
+ let s = Ye((e) => i ? "COMPLETED" : e.status), { decoratorName: l } = we(a), u = se.get(l);
313
323
  return u ? /* @__PURE__ */ L("div", {
314
324
  ref: o,
315
325
  "data-flemo-decorator": !0,
@@ -331,9 +341,9 @@ function qe({ ref: e, style: t, ...n }) {
331
341
  }
332
342
  //#endregion
333
343
  //#region src/screen/useViewportScrollHeight.ts
334
- function Je() {
344
+ function Ze() {
335
345
  let [e, t] = p(0), [n, r] = p(0);
336
- return o(() => M((e, n) => {
346
+ return o(() => be((e, n) => {
337
347
  r(n), t(e);
338
348
  }), []), {
339
349
  viewportScrollHeight: e,
@@ -343,194 +353,205 @@ function Je() {
343
353
  //#endregion
344
354
  //#region src/stores/useScreenStore.ts
345
355
  function $(e) {
346
- return W(z().screen, e);
356
+ return G(z().screen, e);
347
357
  }
348
358
  //#endregion
349
359
  //#region src/screen/ScreenMotion.tsx
350
- function Ye({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigationBarHeight: r, systemNavigationBarColor: i, sharedTopBar: a, sharedBottomBar: s, topBar: c, bottomBar: l, hideStatusBar: d, hideSystemNavigationBar: m, backgroundColor: h = "white", contentScrollable: _ = !0, ...v }) {
351
- let { id: y, isActive: b, isRoot: ne, isPrev: re, zIndex: x, transitionName: S, prevTransitionName: C } = V(), { contained: w } = Oe(), T = w ? "absolute" : "fixed", E = z(), D = G((e) => e.index), ie = G((e) => e.histories), O = b || x === D - 1, k = Q((e) => O ? e.status : "COMPLETED"), A = $((e) => e.dragStatus), oe = $((e) => e.replaceTransitionStatus), ce = E.screen.getState().setDragStatus, de = E.screen.getState().setReplaceTransitionStatus, j = b ? ie[D - 1]?.id : ie[D]?.id, pe = $((e) => j ? e.sharedBars[j] : void 0), me = $((e) => j ? e.screenSurfaces[j] : void 0), ge = f(null);
352
- ge.current ||= se({
353
- getTransitionTaskId: () => E.navigate.getState().transitionTaskId,
354
- setDragStatus: ce,
355
- setReplaceTransitionStatus: de
360
+ function Qe({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigationBarHeight: r, systemNavigationBarColor: i, sharedTopBar: s, sharedBottomBar: c, topBar: l, bottomBar: d, hideStatusBar: m, hideSystemNavigationBar: te, backgroundColor: _ = "white", contentScrollable: v = !0, ...y }) {
361
+ let { id: b, isActive: x, isRoot: S, isPrev: ne, zIndex: C, transitionName: w, prevTransitionName: re } = V(), { contained: T } = Ae(), E = T ? "absolute" : "fixed", D = z(), ie = a(ke), O = K((e) => e.index), k = K((e) => e.histories), ae = x || C === O - 1, j = Ye((e) => ae ? e.status : "COMPLETED"), M = $((e) => e.dragStatus), ue = $((e) => e.replaceTransitionStatus), de = D.screen.getState().setDragStatus, fe = D.screen.getState().setReplaceTransitionStatus, N = x ? k[O - 1]?.id : k[O]?.id, me = $((e) => N ? e.sharedBars[N] : void 0), ge = $((e) => N ? e.screenSurfaces[N] : void 0), _e = f(null);
362
+ _e.current ||= oe({
363
+ getTransitionTaskId: () => D.navigate.getState().transitionTaskId,
364
+ setDragStatus: de,
365
+ setReplaceTransitionStatus: fe
356
366
  });
357
- let _e = ge.current, ve = f(null);
358
- ve.current ||= Ke(E.navigate);
359
- let M = Se(S), { initial: be, swipeDirection: N, decoratorName: xe } = M, P = le.get(xe), { viewportScrollHeight: F } = Je(), I = F > 0, [R, we] = p(0), [B, Te] = p(0), Ee = f(null), H = f(null), De = f(null), U = f(null), W = f(null), K = f({
360
- transition: M,
361
- decorator: P,
362
- hasSharedTopBar: !!a,
363
- hasSharedBottomBar: !!s,
364
- viewportScrollHeight: F,
365
- isRoot: ne,
366
- isActive: b,
367
- status: k,
368
- dragStatus: A,
369
- index: D
367
+ let ve = _e.current, be = f(null);
368
+ be.current ||= Je(D.navigate);
369
+ let P = we(w), { initial: xe, swipeDirection: Se, decoratorName: Ce } = P, F = se.get(Ce), { viewportScrollHeight: I } = Ze(), R = I > 0, [Ee, B] = p(0), [De, Oe] = p(0), H = f(null), U = f(null), W = f(null), G = f(null), q = f(null), J = f({
370
+ transition: P,
371
+ decorator: F,
372
+ hasSharedTopBar: !!s,
373
+ hasSharedBottomBar: !!c,
374
+ viewportScrollHeight: I,
375
+ isRoot: S,
376
+ isActive: x,
377
+ status: j,
378
+ dragStatus: M,
379
+ index: O
370
380
  });
371
- K.current = {
372
- transition: M,
373
- decorator: P,
374
- hasSharedTopBar: !!a,
375
- hasSharedBottomBar: !!s,
376
- viewportScrollHeight: F,
377
- isRoot: ne,
378
- isActive: b,
379
- status: k,
380
- dragStatus: A,
381
- index: D
381
+ J.current = {
382
+ transition: P,
383
+ decorator: F,
384
+ hasSharedTopBar: !!s,
385
+ hasSharedBottomBar: !!c,
386
+ viewportScrollHeight: I,
387
+ isRoot: S,
388
+ isActive: x,
389
+ status: j,
390
+ dragStatus: M,
391
+ index: O
382
392
  };
383
- let q = f(null);
384
- q.current ||= ae({
385
- getTransition: () => K.current.transition,
386
- getDecorator: () => K.current.decorator,
393
+ let je = f(null);
394
+ je.current ||= A({
395
+ getTransition: () => J.current.transition,
396
+ getDecorator: () => J.current.decorator,
387
397
  getElements: () => ({
388
- scope: H.current,
389
- screenContainer: Ee.current,
390
- decorator: De.current,
391
- sharedTopBar: U.current,
392
- sharedBottomBar: W.current
398
+ scope: U.current,
399
+ screenContainer: H.current,
400
+ decorator: W.current,
401
+ sharedTopBar: G.current,
402
+ sharedBottomBar: q.current
393
403
  }),
394
- hasSharedTopBar: () => K.current.hasSharedTopBar,
395
- hasSharedBottomBar: () => K.current.hasSharedBottomBar,
396
- getViewportScrollHeight: () => K.current.viewportScrollHeight,
404
+ hasSharedTopBar: () => J.current.hasSharedTopBar,
405
+ hasSharedBottomBar: () => J.current.hasSharedBottomBar,
406
+ getViewportScrollHeight: () => J.current.viewportScrollHeight,
397
407
  isReadyForDrag: () => {
398
- let e = K.current;
408
+ let e = J.current;
399
409
  return !e.isRoot && e.isActive && e.status === "COMPLETED" && e.dragStatus === "IDLE" && !!e.transition.swipeDirection && e.viewportScrollHeight < 10;
400
410
  },
401
411
  getPartnerBars: () => {
402
- let e = K.current, t = E.history.getState().histories, n = e.isActive ? t[e.index - 1]?.id : t[e.index]?.id;
403
- return n ? E.screen.getState().sharedBars[n] : void 0;
412
+ let e = J.current, t = D.history.getState().histories, n = e.isActive ? t[e.index - 1]?.id : t[e.index]?.id;
413
+ return n ? D.screen.getState().sharedBars[n] : void 0;
404
414
  },
405
- setDragStatus: ce,
415
+ setDragStatus: de,
406
416
  back: () => window.history.back()
407
417
  });
408
- let J = q.current, ke = (e) => J.pointerDown(e.nativeEvent), Ae = (e) => J.pointerMove(e.nativeEvent), je = (e) => J.pointerUp(e.nativeEvent);
418
+ let Y = je.current, Me = (e) => Y.pointerDown(e.nativeEvent), Ne = (e) => Y.pointerMove(e.nativeEvent), Pe = (e) => Y.pointerUp(e.nativeEvent);
409
419
  o(() => {
410
- ue(H.current);
420
+ le(U.current);
411
421
  }, []), o(() => {
412
- let e = H.current;
422
+ let e = U.current;
413
423
  if (!e) return;
414
424
  let t = (e) => {
415
- J.shouldPreventTouch() && e.preventDefault(), e.target?.dataset.swipeAtEdgeBar === "true" && e.preventDefault();
425
+ Y.shouldPreventTouch() && e.preventDefault(), e.target?.dataset.swipeAtEdgeBar === "true" && e.preventDefault();
416
426
  };
417
427
  return e.addEventListener("touchmove", t, { passive: !1 }), () => {
418
428
  e.removeEventListener("touchmove", t);
419
429
  };
420
- }, [J]), u(() => {
421
- let e = U.current;
430
+ }, [Y]), u(() => {
431
+ let e = G.current;
422
432
  if (!e) {
423
- we(0);
433
+ B(0);
424
434
  return;
425
435
  }
426
- return ye(e, we);
427
- }, [a]), u(() => {
428
- let e = W.current;
436
+ return ye(e, B);
437
+ }, [s]), u(() => {
438
+ let e = q.current;
429
439
  if (!e) {
430
- Te(0);
440
+ Oe(0);
431
441
  return;
432
442
  }
433
- return ye(e, Te);
434
- }, [s]), u(() => {
435
- let { registerSharedBars: e, unregisterSharedBars: t } = E.screen.getState();
436
- return e(y, {
437
- topBar: !!a,
438
- bottomBar: !!s
439
- }), () => t(y);
443
+ return ye(e, Oe);
444
+ }, [c]), u(() => {
445
+ let { registerSharedBars: e, unregisterSharedBars: t } = D.screen.getState();
446
+ return e(b, {
447
+ topBar: !!s,
448
+ bottomBar: !!c
449
+ }), () => t(b);
440
450
  }, [
441
- y,
442
- a,
451
+ b,
443
452
  s,
444
- E.screen
453
+ c,
454
+ D.screen
445
455
  ]), u(() => {
446
- let e = H.current;
456
+ let e = U.current;
447
457
  if (!e) return;
448
- let { registerScreenSurface: t, unregisterScreenSurface: n } = E.screen.getState();
449
- return t(y, { opaqueBackground: he(getComputedStyle(e).backgroundColor) }), () => n(y);
458
+ let { registerScreenSurface: t, unregisterScreenSurface: n } = D.screen.getState();
459
+ return t(b, { opaqueBackground: he(getComputedStyle(e).backgroundColor) }), () => n(b);
450
460
  }, [
451
- y,
452
- h,
453
- k,
454
- E.screen
461
+ b,
462
+ _,
463
+ j,
464
+ D.screen
455
465
  ]);
456
- let Me = O, { app: Ne, nav: Pe } = g({
457
- status: k,
458
- isTopOrTopPrev: Me,
459
- hasTopBar: !!a,
460
- hasNavBar: !!s,
461
- partnerBars: pe
462
- }), Y = ee({
463
- status: k,
464
- isTopOrTopPrev: Me,
465
- transitionName: S
466
- }), Fe = te({
467
- isActive: b,
468
- isPrev: re,
469
- zIndex: x,
470
- index: D,
471
- status: k,
472
- dragStatus: A,
473
- replaceTransitionStatus: oe
474
- }), Ie = f(Fe), Le = f(Y !== null && Fe), [Re, ze] = p({
475
- key: Y,
476
- released: Y === null
466
+ let Fe = ae, { app: Ie, nav: Le } = h({
467
+ status: j,
468
+ isTopOrTopPrev: Fe,
469
+ hasTopBar: !!s,
470
+ hasNavBar: !!c,
471
+ partnerBars: me
472
+ }), X = ee({
473
+ status: j,
474
+ isTopOrTopPrev: Fe,
475
+ transitionName: w
476
+ }), Re = g({
477
+ isActive: x,
478
+ isPrev: ne,
479
+ zIndex: C,
480
+ index: O,
481
+ status: j,
482
+ dragStatus: M,
483
+ replaceTransitionStatus: ue
484
+ }), ze = f(Re), Be = f(X !== null && Re), [Ve, He] = p({
485
+ key: X,
486
+ released: X === null
477
487
  });
478
- Re.key !== Y && (ze({
479
- key: Y,
480
- released: Y === null
481
- }), Le.current = Y !== null && Ie.current), Ie.current = Fe;
482
- let X = Y !== null && Re.key === Y && !Re.released, Z = X ? !b && me?.opaqueBackground ? "park" : b && (k === "PUSHING" || k === "REPLACING") && me?.opaqueBackground ? "park-under" : "true" : "false";
483
- u(() => _e.driveScreenLifecycle({
488
+ Ve.key !== X && (He({
489
+ key: X,
490
+ released: X === null
491
+ }), Be.current = X !== null && ze.current), ze.current = Re;
492
+ let Z = X !== null && Ve.key === X && !Ve.released, Q = Z ? !x && ge?.opaqueBackground ? "park" : x && (j === "PUSHING" || j === "REPLACING") && ge?.opaqueBackground ? "park-under" : "true" : "false";
493
+ u(() => ve.driveScreenLifecycle({
484
494
  getElements: () => ({
485
- scope: H.current,
486
- decorator: De.current,
487
- bars: [U.current, W.current]
495
+ scope: U.current,
496
+ decorator: W.current,
497
+ bars: [G.current, q.current]
488
498
  }),
489
- transitionName: S,
490
- prevTransitionName: C,
491
- status: k,
492
- isActive: b,
493
- animHoldReleased: !X
499
+ transitionName: w,
500
+ prevTransitionName: re,
501
+ status: j,
502
+ isActive: x,
503
+ animHoldReleased: !Z
494
504
  }), [
495
- _e,
496
- k,
497
- b,
498
- C,
499
- S,
500
- X
505
+ ve,
506
+ j,
507
+ x,
508
+ re,
509
+ w,
510
+ Z
501
511
  ]), o(() => {
502
- if (!X || Y === null) return;
503
- let e = Y, t = E.navigate.getState().transitionTaskId, n = t === null ? e : `${e}#${t}`;
504
- return ve.current.join(n, () => ze((t) => t.key === e && !t.released ? {
505
- key: e,
506
- released: !0
507
- } : t), {
508
- scope: H.current,
509
- decodeWait: Le.current
512
+ if (!Z || X === null) return;
513
+ let e = X, t = D.navigate.getState().transitionTaskId, n = t === null ? e : `${e}#${t}`;
514
+ return be.current.join(n, () => {
515
+ if (J.current.transition.driver === "native" && !ce()) {
516
+ for (let e of [
517
+ U.current,
518
+ G.current,
519
+ q.current,
520
+ W.current
521
+ ]) e?.isConnected && e.getAttribute("data-flemo-anim-hold") !== null && e.setAttribute("data-flemo-anim-hold", "false");
522
+ H.current && (H.current.style.zIndex = "");
523
+ }
524
+ He((t) => t.key === e && !t.released ? {
525
+ key: e,
526
+ released: !0
527
+ } : t);
528
+ }, {
529
+ scope: U.current,
530
+ decodeWait: Be.current
510
531
  });
511
532
  }, [
512
- X,
513
- Y,
514
533
  Z,
515
- b,
516
- k,
517
- E.navigate
534
+ X,
535
+ Q,
536
+ x,
537
+ j,
538
+ D.navigate
518
539
  ]);
519
- let Be = Z === "park-under" ? {} : fe({
520
- initial: be,
521
- isActive: b,
522
- status: k
540
+ let Ue = Q === "park-under" ? {} : pe({
541
+ initial: xe,
542
+ isActive: x,
543
+ status: j
523
544
  });
524
- return /* @__PURE__ */ Ce("div", {
525
- ref: Ee,
545
+ return /* @__PURE__ */ Te("div", {
546
+ ref: H,
526
547
  style: {
527
- position: T,
548
+ position: E,
528
549
  top: 0,
529
550
  left: 0,
530
551
  width: "100%",
531
552
  height: "100%",
532
553
  display: "flex",
533
- zIndex: Z === "park-under" ? -1 : void 0,
554
+ zIndex: Q === "park-under" ? -1 : void 0,
534
555
  contain: "layout style",
535
556
  flexDirection: "column",
536
557
  boxSizing: "border-box",
@@ -540,7 +561,7 @@ function Ye({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
540
561
  /* @__PURE__ */ L("div", {
541
562
  "data-swipe-at-edge-bar": !0,
542
563
  style: {
543
- position: T,
564
+ position: E,
544
565
  top: 0,
545
566
  left: 0,
546
567
  width: 8,
@@ -548,66 +569,67 @@ function Ye({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
548
569
  zIndex: 1
549
570
  }
550
571
  }),
551
- /* @__PURE__ */ Ce("div", {
552
- ref: H,
553
- ...v,
554
- onPointerDown: ke,
555
- onPointerMove: Ae,
556
- onPointerUp: je,
557
- onPointerCancel: je,
572
+ /* @__PURE__ */ Te("div", {
573
+ ref: U,
574
+ ...y,
575
+ onPointerDown: Me,
576
+ onPointerMove: Ne,
577
+ onPointerUp: Pe,
578
+ onPointerCancel: Pe,
558
579
  "data-flemo-screen": !0,
559
- "data-flemo-transition": S,
560
- "data-flemo-status": k,
561
- "data-flemo-active": b ? "true" : "false",
562
- "data-flemo-anim-hold": Z,
580
+ "data-flemo-router": ie ?? void 0,
581
+ "data-flemo-transition": w,
582
+ "data-flemo-status": j,
583
+ "data-flemo-active": x ? "true" : "false",
584
+ "data-flemo-anim-hold": Q,
563
585
  style: {
564
586
  display: "flex",
565
587
  flexDirection: "column",
566
588
  height: "100%",
567
- backgroundColor: h,
568
- overflowY: _ ? void 0 : "auto",
569
- touchAction: N === "x" ? "pan-y" : N === "y" ? "pan-x" : "auto",
570
- ...Be,
571
- ...v.style
589
+ backgroundColor: _,
590
+ overflowY: v ? void 0 : "auto",
591
+ touchAction: Se === "x" ? "pan-y" : Se === "y" ? "pan-x" : "auto",
592
+ ...Ue,
593
+ ...y.style
572
594
  },
573
595
  children: [
574
- !d && t && /* @__PURE__ */ L("div", {
596
+ !m && t && /* @__PURE__ */ L("div", {
575
597
  style: { minHeight: t },
576
598
  children: /* @__PURE__ */ L("div", { style: {
577
- position: T,
599
+ position: E,
578
600
  top: 0,
579
601
  width: "100%",
580
602
  minHeight: t,
581
603
  backgroundColor: n
582
604
  } })
583
605
  }),
584
- a && /* @__PURE__ */ L("div", { style: {
606
+ s && /* @__PURE__ */ L("div", { style: {
585
607
  width: "100%",
586
- minHeight: R
608
+ minHeight: Ee
587
609
  } }),
588
- c,
610
+ l,
589
611
  /* @__PURE__ */ L("div", {
590
612
  style: {
591
613
  display: "flex",
592
614
  flexDirection: "column",
593
615
  flexGrow: 1,
594
- overflowY: _ ? "auto" : void 0
616
+ overflowY: v ? "auto" : void 0
595
617
  },
596
618
  children: e
597
619
  }),
598
- l,
599
- s && /* @__PURE__ */ L("div", { style: {
600
- display: I ? "none" : void 0,
620
+ d,
621
+ c && /* @__PURE__ */ L("div", { style: {
622
+ display: R ? "none" : void 0,
601
623
  width: "100%",
602
- minHeight: B
624
+ minHeight: De
603
625
  } }),
604
- !m && r && /* @__PURE__ */ L("div", {
626
+ !te && r && /* @__PURE__ */ L("div", {
605
627
  style: {
606
- display: I ? "none" : void 0,
628
+ display: R ? "none" : void 0,
607
629
  minHeight: r
608
630
  },
609
631
  children: /* @__PURE__ */ L("div", { style: {
610
- position: T,
632
+ position: E,
611
633
  bottom: 0,
612
634
  width: "100%",
613
635
  minHeight: r,
@@ -616,49 +638,51 @@ function Ye({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
616
638
  })
617
639
  ]
618
640
  }),
619
- a && /* @__PURE__ */ L("div", {
620
- ref: U,
641
+ s && /* @__PURE__ */ L("div", {
642
+ ref: G,
621
643
  "data-flemo-bar": "app",
622
- "data-flemo-bar-transition": S,
623
- "data-flemo-bar-status": k,
624
- "data-flemo-bar-active": b ? "true" : "false",
625
- "data-flemo-bar-riding": Ne ? "true" : "false",
626
- "data-flemo-anim-hold": Z,
644
+ "data-flemo-router": ie ?? void 0,
645
+ "data-flemo-bar-transition": w,
646
+ "data-flemo-bar-status": j,
647
+ "data-flemo-bar-active": x ? "true" : "false",
648
+ "data-flemo-bar-riding": Ie ? "true" : "false",
649
+ "data-flemo-anim-hold": Q,
627
650
  style: {
628
- position: T,
629
- top: d ? 0 : t,
651
+ position: E,
652
+ top: m ? 0 : t,
630
653
  left: 0,
631
654
  width: "100%",
632
655
  zIndex: 1
633
656
  },
634
- children: a
657
+ children: s
635
658
  }),
636
- s && /* @__PURE__ */ L("div", {
637
- ref: W,
659
+ c && /* @__PURE__ */ L("div", {
660
+ ref: q,
638
661
  "data-flemo-bar": "nav",
639
- "data-flemo-bar-transition": S,
640
- "data-flemo-bar-status": k,
641
- "data-flemo-bar-active": b ? "true" : "false",
642
- "data-flemo-bar-riding": Pe ? "true" : "false",
643
- "data-flemo-anim-hold": Z,
662
+ "data-flemo-router": ie ?? void 0,
663
+ "data-flemo-bar-transition": w,
664
+ "data-flemo-bar-status": j,
665
+ "data-flemo-bar-active": x ? "true" : "false",
666
+ "data-flemo-bar-riding": Le ? "true" : "false",
667
+ "data-flemo-anim-hold": Q,
644
668
  style: {
645
- display: I ? "none" : void 0,
646
- position: T,
647
- bottom: m ? 0 : r,
669
+ display: R ? "none" : void 0,
670
+ position: E,
671
+ bottom: te ? 0 : r,
648
672
  left: 0,
649
673
  width: "100%",
650
674
  zIndex: 1
651
675
  },
652
- children: s
676
+ children: c
653
677
  }),
654
- P && /* @__PURE__ */ L(qe, {
655
- ref: De,
656
- "data-flemo-anim-hold": Z
678
+ F && /* @__PURE__ */ L(Xe, {
679
+ ref: W,
680
+ "data-flemo-anim-hold": Q
657
681
  }),
658
682
  /* @__PURE__ */ L("div", {
659
683
  "data-swipe-at-edge-bar": !0,
660
684
  style: {
661
- position: T,
685
+ position: E,
662
686
  top: 0,
663
687
  right: 0,
664
688
  width: 8,
@@ -671,38 +695,39 @@ function Ye({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
671
695
  }
672
696
  //#endregion
673
697
  //#region src/screen/Screen.tsx
674
- function Xe({ children: e, ...t }) {
675
- let { isActive: n, isPrev: r, zIndex: i } = V(), a = _({
698
+ function $e({ children: e, ...t }) {
699
+ let { isActive: n, isPrev: r, zIndex: i } = V(), a = K((e) => e.index), s = Ye((e) => e.status), c = $((e) => e.dragStatus), l = $((e) => e.replaceTransitionStatus), u = _({
676
700
  isActive: n,
677
701
  isPrev: r,
678
702
  zIndex: i,
679
- index: G((e) => e.index),
680
- status: Q((e) => e.status),
681
- dragStatus: $((e) => e.dragStatus),
682
- replaceTransitionStatus: $((e) => e.replaceTransitionStatus)
683
- }), [s, c] = p(a !== "live");
684
- return a === "live" && s && c(!1), a === "immediate" && !s && c(!0), o(() => {
685
- if (a !== "deferred" || s) return;
686
- let e = setTimeout(() => c(!0), Ze);
703
+ index: a,
704
+ status: s,
705
+ dragStatus: c,
706
+ replaceTransitionStatus: l
707
+ }), [d, f] = p(u !== "live");
708
+ return u === "live" && d && f(!1), u === "immediate" && !d && f(!0), o(() => {
709
+ if (u !== "deferred" || d) return;
710
+ let e = setTimeout(() => f(!0), et);
687
711
  return () => clearTimeout(e);
688
- }, [a, s]), /* @__PURE__ */ L(We, {
689
- freeze: s,
690
- children: /* @__PURE__ */ L(Ye, {
712
+ }, [u, d]), /* @__PURE__ */ L(Ke, {
713
+ freeze: d,
714
+ children: /* @__PURE__ */ L(Qe, {
691
715
  ...t,
692
716
  children: e
693
717
  })
694
718
  });
695
719
  }
696
- var Ze = 600;
720
+ var et = 600;
697
721
  //#endregion
698
722
  //#region src/screen/Part.tsx
699
- function Qe({ ref: e, name: t, style: n, children: r, ...i }) {
700
- let { isActive: a, isPrev: o, navigateStore: s } = V(), c = z();
723
+ function tt({ ref: e, name: t, style: n, children: r, ...i }) {
724
+ let { isActive: o, isPrev: s, navigateStore: c, routerId: l } = V(), u = a(ke), d = l ?? u ?? void 0, f = z(), p = G(c ?? f.navigate, (e) => s ? "COMPLETED" : e.status);
701
725
  return /* @__PURE__ */ L("div", {
702
726
  ref: e,
703
727
  "data-flemo-part-name": t,
704
- "data-flemo-status": W(s ?? c.navigate, (e) => o ? "COMPLETED" : e.status),
705
- "data-flemo-active": a ? "true" : "false",
728
+ "data-flemo-router": d,
729
+ "data-flemo-status": p,
730
+ "data-flemo-active": o ? "true" : "false",
706
731
  style: n,
707
732
  ...i,
708
733
  children: r
@@ -710,13 +735,13 @@ function Qe({ ref: e, name: t, style: n, children: r, ...i }) {
710
735
  }
711
736
  //#endregion
712
737
  //#region src/stores/RouterScopeProvider.tsx
713
- function $e({ children: e }) {
738
+ function nt({ children: e }) {
714
739
  let [t] = p(() => ({
715
- history: x(),
716
- navigate: S(),
717
- transition: ce(),
740
+ history: ne(),
741
+ navigate: C(),
742
+ transition: M(),
718
743
  screen: k(),
719
- driver: ne(),
744
+ driver: x(),
720
745
  markSelfInduced: _e,
721
746
  consume: v,
722
747
  life: { alive: !0 }
@@ -727,4 +752,4 @@ function $e({ children: e }) {
727
752
  });
728
753
  }
729
754
  //#endregion
730
- export { Qe as Part, X as Route, ze as Router, $e as RouterScopeProvider, Xe as Screen, B as ScreenContext, qe as ScreenDecorator, We as ScreenFreeze, Ye as ScreenMotion, je as Slot, b as createBrowserHistoryDriver, re as createDecorator, w as createPartTransition, T as createRawDecorator, E as createRawPartTransition, D as createRawTransition, oe as createTransition, be as partTransitionMap, G as useHistoryStore, Be as useNavigate, Q as useNavigateStore, Ue as useParams, Ve as usePathname, V as useScreen, $ as useScreenStore, He as useStep, z as useStores, Je as useViewportScrollHeight };
755
+ export { tt as Part, He as Route, Ve as Router, nt as RouterScopeProvider, $e as Screen, B as ScreenContext, Xe as ScreenDecorator, Ke as ScreenFreeze, Qe as ScreenMotion, Ne as Slot, b as createBrowserHistoryDriver, S as createDecorator, re as createPartTransition, T as createRawDecorator, E as createRawPartTransition, D as createRawTransition, j as createTransition, P as partTransitionMap, K as useHistoryStore, Q as useNavigate, Ye as useNavigateStore, Ge as useParams, Ue as usePathname, V as useScreen, $ as useScreenStore, We as useStep, z as useStores, Ze as useViewportScrollHeight };
@@ -9,6 +9,7 @@ export interface ScreenContextProps extends History {
9
9
  prevTransitionName: TransitionName;
10
10
  routePath: Path;
11
11
  navigateStore?: FlemoStores["navigate"];
12
+ routerId?: string;
12
13
  }
13
14
  declare const ScreenContext: import('react').Context<ScreenContextProps>;
14
15
  export default ScreenContext;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flemo/react",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "description": "React bindings for flemo: Router, Route, Screen, and the screen-transition runtime.",
5
5
  "main": "./dist/index.mjs",
6
6
  "module": "./dist/index.mjs",
@@ -36,30 +36,30 @@
36
36
  "dependencies": {
37
37
  "path-to-regexp": "^8.4.2",
38
38
  "zustand": "^5.0.14",
39
- "@flemo/core": "1.22.1"
39
+ "@flemo/core": "1.23.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@testing-library/jest-dom": "^6.9.1",
43
43
  "@testing-library/react": "^16.3.2",
44
44
  "@types/node": "^24.13.1",
45
- "@types/react": "^19.2.17",
46
- "@types/react-dom": "^19.2.3",
47
- "@vitejs/plugin-react-swc": "^4.3.2",
45
+ "@types/react": "^19.2.18",
46
+ "@types/react-dom": "^19.2.4",
47
+ "@vitejs/plugin-react-swc": "^4.3.3",
48
48
  "@vitest/coverage-v8": "^4.1.10",
49
49
  "eslint": "^9.39.4",
50
50
  "jsdom": "^29.1.1",
51
- "react": "^19.2.7",
52
- "react-dom": "^19.2.7",
51
+ "react": "^19.2.8",
52
+ "react-dom": "^19.2.8",
53
53
  "typescript": "^6.0.3",
54
- "vite": "^8.1.5",
54
+ "vite": "^8.2.0",
55
55
  "vite-plugin-dts": "^5.0.3",
56
56
  "vitest": "^4.1.10",
57
57
  "@flemo/eslint-config": "0.0.0",
58
58
  "@flemo/tsconfig": "0.0.0"
59
59
  },
60
60
  "peerDependencies": {
61
- "react": "^19.2.7",
62
- "react-dom": "^19.2.7"
61
+ "react": "^19.2.8",
62
+ "react-dom": "^19.2.8"
63
63
  },
64
64
  "publishConfig": {
65
65
  "access": "public"