@flemo/react 1.8.1 → 1.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +201 -204
  2. package/package.json +2 -2
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, consumeSelfInducedPop as _, createAnimHoldCoordinator as v, createBrowserHistoryDriver as y, createBrowserHistoryDriver as b, createDecorator as x, createHistoryStore as ne, createNavigateStore as S, createNavigationController as C, createPartTransition as re, createRawDecorator as w, createRawPartTransition as T, createRawTransition as E, createRouterScope as D, createScreenSelector as O, createScreenStore as k, createStepController as A, createSwipeController as j, createTransition as M, createTransitionEngine as ie, createTransitionStore as ae, decoratorMap as oe, eagerlyDecodeImages as se, ensureImageDecodeOffloader as ce, ensureScopeHistorySync as le, enteringInitialStyle as ue, getMatchedPathPattern as N, holdCompositorWarm as de, isOpaqueColor as fe, isServer as pe, markSelfInducedPop as me, matchesPathname as he, observeBarHeight as ge, observeViewportScrollHeight as _e, partTransitionMap as P, readStepParams as ve, registerTransitionDefinitions as ye, releaseScopeHistorySync as be, resolveTransition as xe, seedRouterEntry as F, subscribeStepParamsRestore as I } from "@flemo/core";
3
- import { jsx as L, jsxs as Se } from "react/jsx-runtime";
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";
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 Ce() {
15
+ function we() {
16
16
  let e = z();
17
- return o(() => (le(e), () => be(e)), [e]), null;
17
+ return o(() => (j(e), () => P(e)), [e]), null;
18
18
  }
19
19
  //#endregion
20
20
  //#region src/screen/ScreenContext.ts
@@ -38,10 +38,10 @@ function V() {
38
38
  }
39
39
  //#endregion
40
40
  //#region src/screen/ParamsProvider/ParamsContext.ts
41
- var we = r({}), Te = r(() => {});
41
+ var Te = r({}), Ee = r(() => {});
42
42
  //#endregion
43
43
  //#region src/screen/ParamsProvider/ParamsReducer.ts
44
- function Ee(e, t) {
44
+ function H(e, t) {
45
45
  switch (t.type) {
46
46
  case "SET": return t.params;
47
47
  default: return e;
@@ -49,8 +49,8 @@ function Ee(e, t) {
49
49
  }
50
50
  //#endregion
51
51
  //#region src/screen/ParamsProvider/ParamsProvider.tsx
52
- function H({ children: e }) {
53
- let { isActive: t, params: n } = V(), { driver: r } = z(), [i, a] = d(Ee, n);
52
+ function De({ children: e }) {
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({
56
56
  type: "SET",
@@ -60,9 +60,9 @@ function H({ children: e }) {
60
60
  t,
61
61
  a,
62
62
  r
63
- ]), /* @__PURE__ */ L(Te.Provider, {
63
+ ]), /* @__PURE__ */ L(Ee.Provider, {
64
64
  value: a,
65
- children: /* @__PURE__ */ L(we.Provider, {
65
+ children: /* @__PURE__ */ L(Te.Provider, {
66
66
  value: i,
67
67
  children: e
68
68
  })
@@ -70,42 +70,43 @@ function H({ children: e }) {
70
70
  }
71
71
  //#endregion
72
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 De = (e) => e;
74
- function U(t, n = De) {
73
+ var U = (e) => e;
74
+ function W(t, n = U) {
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 W(e) {
81
- return U(z().history, e);
80
+ function G(e) {
81
+ return W(z().history, e);
82
82
  }
83
83
  //#endregion
84
84
  //#region src/renderer/Renderer.tsx
85
- function G({ children: e }) {
86
- let t = W((e) => e.index), r = W((e) => e.histories), i = z();
85
+ function K({ children: e }) {
86
+ let t = G((e) => e.index), r = G((e) => e.histories), i = z(), o = a(B);
87
87
  return O(r, t).map((t) => {
88
- let [r] = n.toArray(e).filter((e) => he(e.props.path, t.pathname));
88
+ let [r] = n.toArray(e).filter((e) => ve(e.props.path, t.pathname));
89
89
  return r ? /* @__PURE__ */ L(B.Provider, {
90
90
  value: {
91
91
  ...t,
92
+ isPrev: t.isPrev || o.isPrev,
92
93
  navigateStore: i.navigate,
93
- routePath: N(r.props.path, t.pathname)
94
+ routePath: pe(r.props.path, t.pathname)
94
95
  },
95
- children: /* @__PURE__ */ L(H, { children: r })
96
+ children: /* @__PURE__ */ L(De, { children: r })
96
97
  }, t.id) : null;
97
98
  });
98
99
  }
99
100
  //#endregion
100
101
  //#region src/screen/ScreenViewportContext.ts
101
- var K = r({ contained: !1 });
102
+ var q = r({ contained: !1 });
102
103
  function Oe() {
103
- return a(K);
104
+ return a(q);
104
105
  }
105
106
  //#endregion
106
107
  //#region src/transition/styles.ts
107
- function ke(e, t, n = []) {
108
- l(() => ye(e, t, n), [
108
+ function J(e, t, n = []) {
109
+ l(() => xe(e, t, n), [
109
110
  e,
110
111
  t,
111
112
  n
@@ -113,7 +114,7 @@ function ke(e, t, n = []) {
113
114
  }
114
115
  //#endregion
115
116
  //#region src/RouterDepthContext.ts
116
- var q = r(0), Ae = { contained: !0 };
117
+ var ke = r(0), Ae = { contained: !0 };
117
118
  function je({ children: e, className: t, style: n }) {
118
119
  return /* @__PURE__ */ L("div", {
119
120
  className: t,
@@ -122,9 +123,9 @@ function je({ children: e, className: t, style: n }) {
122
123
  overflow: "hidden",
123
124
  ...n
124
125
  },
125
- children: /* @__PURE__ */ L(K.Provider, {
126
+ children: /* @__PURE__ */ L(q.Provider, {
126
127
  value: Ae,
127
- children: /* @__PURE__ */ L(G, { children: e })
128
+ children: /* @__PURE__ */ L(K, { children: e })
128
129
  })
129
130
  });
130
131
  }
@@ -145,30 +146,30 @@ function Me(e) {
145
146
  }
146
147
  }), t;
147
148
  }
148
- var Ne = typeof window > "u" ? o : u, Pe = [], Fe = [], J = [], Ie = { contained: !0 }, Le = 500, Re = 3e3;
149
- function Y({ children: e, initPath: t = "/", defaultTransitionName: r = "cupertino", transitions: i = Pe, decorators: c = Fe, partTransitions: l = J, history: u = "browser", createDriver: d, className: f, style: ee }) {
150
- let m = a(q), h = m > 0, g = u === "memory", te = s(), _ = a(B), v = a(R), y = h && _.id ? `_F_${v?.routerKey ?? ""}${_.id}_` : te, x = Me(e), ne = x !== null, S = h ? null : v, C = S !== null, re = d ?? b, [w] = p(() => g ? null : re(C ? void 0 : y)), T = !h && !g && !pe(), E = T && w ? w.readPathname() : t || "/", O = E.indexOf("?"), k = (O >= 0 ? E.slice(0, O) : E) || "/", A = T ? window.location.search : O >= 0 ? E.slice(O) : "", [j] = p(() => D({
151
- routePaths: (x ?? n.toArray(e)).map((e) => e.props.path).flat(),
152
- pathname: k,
153
- search: A,
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,
154
155
  defaultTransitionName: r,
155
156
  memory: g,
156
157
  browserDriver: w,
157
- hostedScope: S,
158
- routerKey: C ? void 0 : y,
159
- zoneEntryId: h && !C && _.id || void 0,
160
- persistKey: h && !g && !C ? y : void 0
158
+ hostedScope: x,
159
+ routerKey: S ? void 0 : y,
160
+ zoneEntryId: h && !S && _.id || void 0,
161
+ persistKey: h && !g && !S ? y : void 0
161
162
  }));
162
- j.transition.setState({ defaultTransitionName: r }), Ne(() => (j.life.alive = !0, () => {
163
- j.life.alive = !1;
164
- }), [j]), ke(i, c, l), o(() => ce(), []), o(() => {
163
+ A.transition.setState({ defaultTransitionName: r }), Ne(() => (A.life.alive = !0, () => {
164
+ A.life.alive = !1;
165
+ }), [A]), J(i, c, l), o(() => de(), []), o(() => {
165
166
  if (typeof document > "u") return;
166
167
  let e = null, t = null, n = 0, r = () => {
167
168
  let r = Date.now();
168
169
  if (r - n < Le) return;
169
170
  n = r, t && clearTimeout(t);
170
171
  let i = e;
171
- e = de(), i?.(), t = setTimeout(() => {
172
+ e = me(), i?.(), t = setTimeout(() => {
172
173
  t = null, e?.(), e = null;
173
174
  }, Re);
174
175
  }, i = [
@@ -186,30 +187,30 @@ function Y({ children: e, initPath: t = "/", defaultTransitionName: r = "cuperti
186
187
  }, []), o(() => {
187
188
  g || !w || F({
188
189
  driver: w,
189
- routerKey: C ? null : y,
190
- nested: h && !C,
191
- seedPathname: k,
190
+ routerKey: S ? null : y,
191
+ nested: h && !S,
192
+ seedPathname: O,
192
193
  defaultTransitionName: r,
193
- rootParams: j.history.getState().histories[0]?.params ?? {}
194
+ rootParams: A.history.getState().histories[0]?.params ?? {}
194
195
  });
195
196
  }, [
196
197
  g,
197
- C,
198
+ S,
198
199
  h,
199
200
  y,
200
- k,
201
+ O,
201
202
  r,
202
- j.history,
203
+ A.history,
203
204
  w
204
205
  ]);
205
- let M = ne ? e : /* @__PURE__ */ L(G, { children: e }), ie = /* @__PURE__ */ L(q.Provider, {
206
+ let ae = re ? e : /* @__PURE__ */ L(K, { children: e }), oe = /* @__PURE__ */ L(ke.Provider, {
206
207
  value: m + 1,
207
- children: /* @__PURE__ */ Se(R.Provider, {
208
- value: j,
209
- children: [!g && /* @__PURE__ */ L(Ce, {}), h ? /* @__PURE__ */ L(K.Provider, {
208
+ children: /* @__PURE__ */ Ce(R.Provider, {
209
+ value: A,
210
+ children: [!g && /* @__PURE__ */ L(we, {}), h ? /* @__PURE__ */ L(q.Provider, {
210
211
  value: Ie,
211
- children: M
212
- }) : M]
212
+ children: ae
213
+ }) : ae]
213
214
  })
214
215
  });
215
216
  return h ? /* @__PURE__ */ L("div", {
@@ -219,25 +220,25 @@ function Y({ children: e, initPath: t = "/", defaultTransitionName: r = "cuperti
219
220
  overflow: "hidden",
220
221
  ...ee
221
222
  },
222
- children: ie
223
- }) : ie;
223
+ children: oe
224
+ }) : oe;
224
225
  }
225
226
  //#endregion
226
227
  //#region src/Route.tsx
227
- function ze({ element: e }) {
228
+ function X({ element: e }) {
228
229
  return e;
229
230
  }
230
231
  //#endregion
231
232
  //#region src/utils/buildRoutePath.ts
232
- function X(e, t) {
233
+ function Z(e, t) {
233
234
  return h(e, t);
234
235
  }
235
236
  //#endregion
236
237
  //#region src/navigate/useNavigate.ts
237
- function Z() {
238
+ function Be() {
238
239
  let e = z(), t = C({
239
240
  stores: e,
240
- buildPathname: (e, t) => X(e, t),
241
+ buildPathname: (e, t) => Z(e, t),
241
242
  driver: e.driver,
242
243
  markSelfInduced: e.markSelfInduced
243
244
  });
@@ -249,21 +250,21 @@ function Z() {
249
250
  }
250
251
  //#endregion
251
252
  //#region src/navigate/usePathname.ts
252
- function Be() {
253
- return W((e) => e.histories[e.pendingIndex]?.pathname ?? "/");
253
+ function Ve() {
254
+ return G((e) => e.histories[e.pendingIndex]?.pathname ?? "/");
254
255
  }
255
256
  //#endregion
256
257
  //#region src/navigate/useStep.ts
257
- function Ve() {
258
- let { routePath: e } = V(), t = z(), n = a(Te), { driver: r, markSelfInduced: i } = t, [s, c] = p(null);
258
+ function He() {
259
+ let { routePath: e } = V(), t = z(), n = a(Ee), { driver: r, markSelfInduced: i } = t, [s, c] = p(null);
259
260
  o(() => {
260
- if (!e) return c(ve(r.readState())), r.subscribe((e) => c(ve(e.state)));
261
+ if (!e) return c(N(r.readState())), r.subscribe((e) => c(N(e.state)));
261
262
  }, [e, r]);
262
263
  let l = A({
263
264
  stores: t,
264
265
  driver: r,
265
266
  markSelfInduced: i,
266
- buildStepPathname: (t) => e ? X(e, t).pathname : m(r.readPathname(), t),
267
+ buildStepPathname: (t) => e ? Z(e, t).pathname : m(r.readPathname(), t),
267
268
  applyParams: (t) => {
268
269
  n({
269
270
  type: "SET",
@@ -280,12 +281,12 @@ function Ve() {
280
281
  }
281
282
  //#endregion
282
283
  //#region src/screen/ParamsProvider/useParams.ts
283
- function He() {
284
- return a(we);
284
+ function Ue() {
285
+ return a(Te);
285
286
  }
286
287
  //#endregion
287
288
  //#region src/screen/ScreenFreeze.tsx
288
- function Ue({ freeze: e, children: n }) {
289
+ function We({ freeze: e, children: n }) {
289
290
  return /* @__PURE__ */ L(t, {
290
291
  mode: e ? "hidden" : "visible",
291
292
  children: n
@@ -293,27 +294,27 @@ function Ue({ freeze: e, children: n }) {
293
294
  }
294
295
  //#endregion
295
296
  //#region src/screen/scopeAnimHoldCoordinator.ts
296
- var We = /* @__PURE__ */ new WeakMap();
297
- function Ge(e) {
298
- let t = We.get(e);
299
- return t || (t = v(), We.set(e, t)), t;
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;
300
301
  }
301
302
  //#endregion
302
303
  //#region src/stores/useNavigateStore.ts
303
304
  function Q(e) {
304
- return U(z().navigate, e);
305
+ return W(z().navigate, e);
305
306
  }
306
307
  //#endregion
307
308
  //#region src/screen/ScreenDecorator.tsx
308
- function Ke({ ref: e, style: t, ...n }) {
309
- let { isActive: r, transitionName: i } = V(), a = f(null);
310
- c(e, () => a.current);
311
- let o = Q((e) => e.status), { decoratorName: s } = xe(i), l = oe.get(s);
312
- return l ? /* @__PURE__ */ L("div", {
313
- ref: a,
309
+ function qe({ ref: e, style: t, ...n }) {
310
+ let { isActive: r, isPrev: i, transitionName: a } = V(), o = f(null);
311
+ c(e, () => o.current);
312
+ let s = Q((e) => i ? "COMPLETED" : e.status), { decoratorName: l } = Se(a), u = le.get(l);
313
+ return u ? /* @__PURE__ */ L("div", {
314
+ ref: o,
314
315
  "data-flemo-decorator": !0,
315
- "data-flemo-decorator-name": l.name,
316
- "data-flemo-status": o,
316
+ "data-flemo-decorator-name": u.name,
317
+ "data-flemo-status": s,
317
318
  "data-flemo-active": r ? "true" : "false",
318
319
  style: {
319
320
  position: "absolute",
@@ -330,9 +331,9 @@ function Ke({ ref: e, style: t, ...n }) {
330
331
  }
331
332
  //#endregion
332
333
  //#region src/screen/useViewportScrollHeight.ts
333
- function qe() {
334
+ function Je() {
334
335
  let [e, t] = p(0), [n, r] = p(0);
335
- return o(() => _e((e, n) => {
336
+ return o(() => M((e, n) => {
336
337
  r(n), t(e);
337
338
  }), []), {
338
339
  viewportScrollHeight: e,
@@ -342,45 +343,45 @@ function qe() {
342
343
  //#endregion
343
344
  //#region src/stores/useScreenStore.ts
344
345
  function $(e) {
345
- return U(z().screen, e);
346
+ return W(z().screen, e);
346
347
  }
347
348
  //#endregion
348
349
  //#region src/screen/ScreenMotion.tsx
349
- function Je({ 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 }) {
350
- let { id: y, isActive: b, isRoot: x, isPrev: ne, zIndex: S, transitionName: C, prevTransitionName: re } = V(), { contained: w } = Oe(), T = w ? "absolute" : "fixed", E = z(), D = W((e) => e.index), O = W((e) => e.histories), k = b || S === D - 1, A = Q((e) => k ? e.status : "COMPLETED"), M = $((e) => e.dragStatus), ae = $((e) => e.replaceTransitionStatus), ce = E.screen.getState().setDragStatus, le = E.screen.getState().setReplaceTransitionStatus, N = b ? O[D - 1]?.id : O[D]?.id, de = $((e) => N ? e.sharedBars[N] : void 0), pe = $((e) => N ? e.screenSurfaces[N] : void 0), me = f(null);
351
- me.current ||= ie({
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({
352
353
  getTransitionTaskId: () => E.navigate.getState().transitionTaskId,
353
354
  setDragStatus: ce,
354
- setReplaceTransitionStatus: le
355
+ setReplaceTransitionStatus: de
355
356
  });
356
- let he = me.current, _e = f(null);
357
- _e.current ||= Ge(E.navigate);
358
- let P = xe(C), { initial: ve, swipeDirection: ye, decoratorName: be } = P, F = oe.get(be), { viewportScrollHeight: I } = qe(), R = I > 0, [Ce, B] = p(0), [we, Te] = p(0), Ee = f(null), H = f(null), De = f(null), U = f(null), G = f(null), K = f({
359
- transition: P,
360
- decorator: F,
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,
361
362
  hasSharedTopBar: !!a,
362
363
  hasSharedBottomBar: !!s,
363
- viewportScrollHeight: I,
364
- isRoot: x,
364
+ viewportScrollHeight: F,
365
+ isRoot: ne,
365
366
  isActive: b,
366
- status: A,
367
- dragStatus: M,
367
+ status: k,
368
+ dragStatus: A,
368
369
  index: D
369
370
  });
370
371
  K.current = {
371
- transition: P,
372
- decorator: F,
372
+ transition: M,
373
+ decorator: P,
373
374
  hasSharedTopBar: !!a,
374
375
  hasSharedBottomBar: !!s,
375
- viewportScrollHeight: I,
376
- isRoot: x,
376
+ viewportScrollHeight: F,
377
+ isRoot: ne,
377
378
  isActive: b,
378
- status: A,
379
- dragStatus: M,
379
+ status: k,
380
+ dragStatus: A,
380
381
  index: D
381
382
  };
382
- let ke = f(null);
383
- ke.current ||= j({
383
+ let q = f(null);
384
+ q.current ||= ae({
384
385
  getTransition: () => K.current.transition,
385
386
  getDecorator: () => K.current.decorator,
386
387
  getElements: () => ({
@@ -388,7 +389,7 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
388
389
  screenContainer: Ee.current,
389
390
  decorator: De.current,
390
391
  sharedTopBar: U.current,
391
- sharedBottomBar: G.current
392
+ sharedBottomBar: W.current
392
393
  }),
393
394
  hasSharedTopBar: () => K.current.hasSharedTopBar,
394
395
  hasSharedBottomBar: () => K.current.hasSharedBottomBar,
@@ -404,32 +405,32 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
404
405
  setDragStatus: ce,
405
406
  back: () => window.history.back()
406
407
  });
407
- let q = ke.current, Ae = (e) => q.pointerDown(e.nativeEvent), je = (e) => q.pointerMove(e.nativeEvent), Me = (e) => q.pointerUp(e.nativeEvent);
408
+ let J = q.current, ke = (e) => J.pointerDown(e.nativeEvent), Ae = (e) => J.pointerMove(e.nativeEvent), je = (e) => J.pointerUp(e.nativeEvent);
408
409
  o(() => {
409
- se(H.current);
410
+ ue(H.current);
410
411
  }, []), o(() => {
411
412
  let e = H.current;
412
413
  if (!e) return;
413
414
  let t = (e) => {
414
- q.shouldPreventTouch() && e.preventDefault(), e.target?.dataset.swipeAtEdgeBar === "true" && e.preventDefault();
415
+ J.shouldPreventTouch() && e.preventDefault(), e.target?.dataset.swipeAtEdgeBar === "true" && e.preventDefault();
415
416
  };
416
417
  return e.addEventListener("touchmove", t, { passive: !1 }), () => {
417
418
  e.removeEventListener("touchmove", t);
418
419
  };
419
- }, [q]), u(() => {
420
+ }, [J]), u(() => {
420
421
  let e = U.current;
421
422
  if (!e) {
422
- B(0);
423
+ we(0);
423
424
  return;
424
425
  }
425
- return ge(e, B);
426
+ return ye(e, we);
426
427
  }, [a]), u(() => {
427
- let e = G.current;
428
+ let e = W.current;
428
429
  if (!e) {
429
430
  Te(0);
430
431
  return;
431
432
  }
432
- return ge(e, Te);
433
+ return ye(e, Te);
433
434
  }, [s]), u(() => {
434
435
  let { registerSharedBars: e, unregisterSharedBars: t } = E.screen.getState();
435
436
  return e(y, {
@@ -445,68 +446,68 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
445
446
  let e = H.current;
446
447
  if (!e) return;
447
448
  let { registerScreenSurface: t, unregisterScreenSurface: n } = E.screen.getState();
448
- return t(y, { opaqueBackground: fe(getComputedStyle(e).backgroundColor) }), () => n(y);
449
+ return t(y, { opaqueBackground: he(getComputedStyle(e).backgroundColor) }), () => n(y);
449
450
  }, [
450
451
  y,
451
452
  h,
452
- A,
453
+ k,
453
454
  E.screen
454
455
  ]);
455
- let Ne = k, { app: Pe, nav: Fe } = g({
456
- status: A,
457
- isTopOrTopPrev: Ne,
456
+ let Me = O, { app: Ne, nav: Pe } = g({
457
+ status: k,
458
+ isTopOrTopPrev: Me,
458
459
  hasTopBar: !!a,
459
460
  hasNavBar: !!s,
460
- partnerBars: de
461
- }), J = ee({
462
- status: A,
463
- isTopOrTopPrev: Ne,
464
- transitionName: C
465
- }), Ie = te({
461
+ partnerBars: pe
462
+ }), Y = ee({
463
+ status: k,
464
+ isTopOrTopPrev: Me,
465
+ transitionName: S
466
+ }), Fe = te({
466
467
  isActive: b,
467
- isPrev: ne,
468
- zIndex: S,
468
+ isPrev: re,
469
+ zIndex: x,
469
470
  index: D,
470
- status: A,
471
- dragStatus: M,
472
- replaceTransitionStatus: ae
473
- }), Le = f(Ie), Re = f(J !== null && Ie), [Y, ze] = p({
474
- key: J,
475
- released: J === null
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
476
477
  });
477
- Y.key !== J && (ze({
478
- key: J,
479
- released: J === null
480
- }), Re.current = J !== null && Le.current), Le.current = Ie;
481
- let X = J !== null && Y.key === J && !Y.released, Z = X ? !b && pe?.opaqueBackground ? "park" : b && (A === "PUSHING" || A === "REPLACING") && pe?.opaqueBackground ? "park-under" : "true" : "false";
482
- u(() => he.driveScreenLifecycle({
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({
483
484
  getElements: () => ({
484
485
  scope: H.current,
485
486
  decorator: De.current,
486
- bars: [U.current, G.current]
487
+ bars: [U.current, W.current]
487
488
  }),
488
- transitionName: C,
489
- prevTransitionName: re,
490
- status: A,
489
+ transitionName: S,
490
+ prevTransitionName: C,
491
+ status: k,
491
492
  isActive: b,
492
493
  animHoldReleased: !X
493
494
  }), [
494
- he,
495
- A,
495
+ _e,
496
+ k,
496
497
  b,
497
- re,
498
498
  C,
499
+ S,
499
500
  X
500
501
  ]), o(() => {
501
- if (!X || J === null) return;
502
- let e = J, t = E.navigate.getState().transitionTaskId, n = t === null ? e : `${e}#${t}`;
503
- return _e.current.join(n, () => ze((t) => t.key === e && !t.released ? {
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 ? {
504
505
  key: e,
505
506
  released: !0
506
507
  } : t), {
507
508
  scope: H.current,
508
- decodeWait: Re.current,
509
- contentSettle: b && A === "PUSHING" ? {
509
+ decodeWait: Le.current,
510
+ contentSettle: b && k === "PUSHING" ? {
510
511
  graceMs: 150,
511
512
  firstWaitMs: 400,
512
513
  capMs: 900,
@@ -515,18 +516,18 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
515
516
  });
516
517
  }, [
517
518
  X,
518
- J,
519
+ Y,
519
520
  Z,
520
521
  b,
521
- A,
522
+ k,
522
523
  E.navigate
523
524
  ]);
524
- let Be = Z === "park-under" ? {} : ue({
525
- initial: ve,
525
+ let Be = Z === "park-under" ? {} : fe({
526
+ initial: be,
526
527
  isActive: b,
527
- status: A
528
+ status: k
528
529
  });
529
- return /* @__PURE__ */ Se("div", {
530
+ return /* @__PURE__ */ Ce("div", {
530
531
  ref: Ee,
531
532
  style: {
532
533
  position: T,
@@ -553,16 +554,16 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
553
554
  zIndex: 1
554
555
  }
555
556
  }),
556
- /* @__PURE__ */ Se("div", {
557
+ /* @__PURE__ */ Ce("div", {
557
558
  ref: H,
558
559
  ...v,
559
- onPointerDown: Ae,
560
- onPointerMove: je,
561
- onPointerUp: Me,
562
- onPointerCancel: Me,
560
+ onPointerDown: ke,
561
+ onPointerMove: Ae,
562
+ onPointerUp: je,
563
+ onPointerCancel: je,
563
564
  "data-flemo-screen": !0,
564
- "data-flemo-transition": C,
565
- "data-flemo-status": A,
565
+ "data-flemo-transition": S,
566
+ "data-flemo-status": k,
566
567
  "data-flemo-active": b ? "true" : "false",
567
568
  "data-flemo-anim-hold": Z,
568
569
  style: {
@@ -571,7 +572,7 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
571
572
  height: "100%",
572
573
  backgroundColor: h,
573
574
  overflowY: _ ? void 0 : "auto",
574
- touchAction: ye === "x" ? "pan-y" : ye === "y" ? "pan-x" : "auto",
575
+ touchAction: N === "x" ? "pan-y" : N === "y" ? "pan-x" : "auto",
575
576
  ...Be,
576
577
  ...v.style
577
578
  },
@@ -588,7 +589,7 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
588
589
  }),
589
590
  a && /* @__PURE__ */ L("div", { style: {
590
591
  width: "100%",
591
- minHeight: Ce
592
+ minHeight: R
592
593
  } }),
593
594
  c,
594
595
  /* @__PURE__ */ L("div", {
@@ -602,13 +603,13 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
602
603
  }),
603
604
  l,
604
605
  s && /* @__PURE__ */ L("div", { style: {
605
- display: R ? "none" : void 0,
606
+ display: I ? "none" : void 0,
606
607
  width: "100%",
607
- minHeight: we
608
+ minHeight: B
608
609
  } }),
609
610
  !m && r && /* @__PURE__ */ L("div", {
610
611
  style: {
611
- display: R ? "none" : void 0,
612
+ display: I ? "none" : void 0,
612
613
  minHeight: r
613
614
  },
614
615
  children: /* @__PURE__ */ L("div", { style: {
@@ -624,10 +625,10 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
624
625
  a && /* @__PURE__ */ L("div", {
625
626
  ref: U,
626
627
  "data-flemo-bar": "app",
627
- "data-flemo-bar-transition": C,
628
- "data-flemo-bar-status": A,
628
+ "data-flemo-bar-transition": S,
629
+ "data-flemo-bar-status": k,
629
630
  "data-flemo-bar-active": b ? "true" : "false",
630
- "data-flemo-bar-riding": Pe ? "true" : "false",
631
+ "data-flemo-bar-riding": Ne ? "true" : "false",
631
632
  "data-flemo-anim-hold": Z,
632
633
  style: {
633
634
  position: T,
@@ -639,15 +640,15 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
639
640
  children: a
640
641
  }),
641
642
  s && /* @__PURE__ */ L("div", {
642
- ref: G,
643
+ ref: W,
643
644
  "data-flemo-bar": "nav",
644
- "data-flemo-bar-transition": C,
645
- "data-flemo-bar-status": A,
645
+ "data-flemo-bar-transition": S,
646
+ "data-flemo-bar-status": k,
646
647
  "data-flemo-bar-active": b ? "true" : "false",
647
- "data-flemo-bar-riding": Fe ? "true" : "false",
648
+ "data-flemo-bar-riding": Pe ? "true" : "false",
648
649
  "data-flemo-anim-hold": Z,
649
650
  style: {
650
- display: R ? "none" : void 0,
651
+ display: I ? "none" : void 0,
651
652
  position: T,
652
653
  bottom: m ? 0 : r,
653
654
  left: 0,
@@ -656,7 +657,7 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
656
657
  },
657
658
  children: s
658
659
  }),
659
- F && /* @__PURE__ */ L(Ke, {
660
+ P && /* @__PURE__ */ L(qe, {
660
661
  ref: De,
661
662
  "data-flemo-anim-hold": Z
662
663
  }),
@@ -676,41 +677,37 @@ function Je({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
676
677
  }
677
678
  //#endregion
678
679
  //#region src/screen/Screen.tsx
679
- function Ye({ children: e, ...t }) {
680
- let { isActive: n, isPrev: r, zIndex: i } = V(), a = W((e) => e.index), s = Q((e) => e.status), c = te({
680
+ function Xe({ children: e, ...t }) {
681
+ let { isActive: n, isPrev: r, zIndex: i } = V(), a = _({
681
682
  isActive: n,
682
683
  isPrev: r,
683
684
  zIndex: i,
684
- index: a,
685
- status: s,
685
+ index: G((e) => e.index),
686
+ status: Q((e) => e.status),
686
687
  dragStatus: $((e) => e.dragStatus),
687
688
  replaceTransitionStatus: $((e) => e.replaceTransitionStatus)
688
- }), [l, u] = p(c);
689
- return !c && l && u(!1), o(() => {
690
- if (!c || l || s !== "COMPLETED") return;
691
- let e = setTimeout(() => u(!0), Xe);
689
+ }), [s, c] = p(a !== "live");
690
+ return a === "live" && s && c(!1), a === "immediate" && !s && c(!0), o(() => {
691
+ if (a !== "deferred" || s) return;
692
+ let e = setTimeout(() => c(!0), Ze);
692
693
  return () => clearTimeout(e);
693
- }, [
694
- c,
695
- l,
696
- s
697
- ]), /* @__PURE__ */ L(Ue, {
698
- freeze: l,
699
- children: /* @__PURE__ */ L(Je, {
694
+ }, [a, s]), /* @__PURE__ */ L(We, {
695
+ freeze: s,
696
+ children: /* @__PURE__ */ L(Ye, {
700
697
  ...t,
701
698
  children: e
702
699
  })
703
700
  });
704
701
  }
705
- var Xe = 600;
702
+ var Ze = 600;
706
703
  //#endregion
707
704
  //#region src/screen/Part.tsx
708
- function Ze({ ref: e, name: t, style: n, children: r, ...i }) {
709
- let { isActive: a, navigateStore: o } = V(), s = z();
705
+ function Qe({ ref: e, name: t, style: n, children: r, ...i }) {
706
+ let { isActive: a, isPrev: o, navigateStore: s } = V(), c = z();
710
707
  return /* @__PURE__ */ L("div", {
711
708
  ref: e,
712
709
  "data-flemo-part-name": t,
713
- "data-flemo-status": U(o ?? s.navigate, (e) => e.status),
710
+ "data-flemo-status": W(s ?? c.navigate, (e) => o ? "COMPLETED" : e.status),
714
711
  "data-flemo-active": a ? "true" : "false",
715
712
  style: n,
716
713
  ...i,
@@ -719,15 +716,15 @@ function Ze({ ref: e, name: t, style: n, children: r, ...i }) {
719
716
  }
720
717
  //#endregion
721
718
  //#region src/stores/RouterScopeProvider.tsx
722
- function Qe({ children: e }) {
719
+ function $e({ children: e }) {
723
720
  let [t] = p(() => ({
724
- history: ne(),
721
+ history: x(),
725
722
  navigate: S(),
726
- transition: ae(),
723
+ transition: ce(),
727
724
  screen: k(),
728
- driver: b(),
729
- markSelfInduced: me,
730
- consume: _,
725
+ driver: ne(),
726
+ markSelfInduced: _e,
727
+ consume: v,
731
728
  life: { alive: !0 }
732
729
  }));
733
730
  return /* @__PURE__ */ L(R.Provider, {
@@ -736,4 +733,4 @@ function Qe({ children: e }) {
736
733
  });
737
734
  }
738
735
  //#endregion
739
- export { Ze as Part, ze as Route, Y as Router, Qe as RouterScopeProvider, Ye as Screen, B as ScreenContext, Ke as ScreenDecorator, Ue as ScreenFreeze, Je as ScreenMotion, je as Slot, y as createBrowserHistoryDriver, x as createDecorator, re as createPartTransition, w as createRawDecorator, T as createRawPartTransition, E as createRawTransition, M as createTransition, P as partTransitionMap, W as useHistoryStore, Z as useNavigate, Q as useNavigateStore, He as useParams, Be as usePathname, V as useScreen, $ as useScreenStore, Ve as useStep, z as useStores, qe as useViewportScrollHeight };
736
+ 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flemo/react",
3
- "version": "1.8.1",
3
+ "version": "1.8.2",
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,7 +36,7 @@
36
36
  "dependencies": {
37
37
  "path-to-regexp": "^8.4.2",
38
38
  "zustand": "^5.0.14",
39
- "@flemo/core": "1.21.1"
39
+ "@flemo/core": "1.22.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@testing-library/jest-dom": "^6.9.1",