@flemo/react 1.12.8 → 2.1.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.
package/dist/index.mjs CHANGED
@@ -1,21 +1,21 @@
1
- import e, { Activity as t, Children as n, createContext as r, isValidElement as i, useCallback as a, useContext as o, useEffect as s, useId as c, useImperativeHandle as l, useInsertionEffect as u, useLayoutEffect as d, useReducer as f, useRef as p, useState as m, useSyncExternalStore as ee } from "react";
2
- import { ANIM_HOLD as h, ANIM_HOLD_ATTR as te, animHoldKey as ne, appendParamsQuery as re, buildRoutePath as ie, computeBarRiding as ae, computeScreenFreeze as oe, computeScreenFreezeMode as g, consumeSelfInducedPop as _, createAnimHoldCoordinator as se, createBrowserHistoryDriver as v, createBrowserHistoryDriver as y, createDecorator as b, createHistoryStore as x, createNavigateStore as ce, createNavigationController as le, createPartTransition as S, createRawDecorator as ue, createRawPartTransition as C, createRawTransition as w, createRouterScope as T, createScreenSelector as E, createScreenStore as D, createStepController as O, createSwipeController as de, createTransition as k, createTransitionEngine as fe, createTransitionStore as A, decoratorMap as pe, eagerlyDecodeImages as j, ensureScopeHistorySync as M, enteringInitialStyle as me, getMatchedPathPattern as he, isDesktopBlink as ge, isOpaqueColor as _e, isServer as ve, markSelfInducedPop as N, matchesPathname as ye, observeBarHeight as be, observeViewportScrollHeight as xe, partTransitionMap as Se, readStepParams as Ce, registerTransitionDefinitions as we, releaseScopeHistorySync as Te, resolvePlatformProfile as Ee, resolveTransition as De, restLayerPromotionEnabled as Oe, seedRouterEntry as ke, sharedBarsMatch as Ae, startFlemoRuntime as je, subscribeStepParamsRestore as Me } from "@flemo/core";
3
- import { jsx as P, jsxs as Ne } from "react/jsx-runtime";
4
- import { flushSync as Pe } from "react-dom";
1
+ import e, { Activity as t, Children as n, createContext as r, createElement as i, isValidElement as a, useCallback as o, useContext as s, useEffect as c, useId as l, useImperativeHandle as u, useInsertionEffect as d, useLayoutEffect as f, useReducer as ee, useRef as p, useState as m, useSyncExternalStore as te } from "react";
2
+ import { ACTIVE_ATTR as ne, ANIM_HOLD as h, ANIM_HOLD_ATTR as g, LAYER_HOST_ATTR as re, LAYER_OWNER_ATTR as ie, LAYER_SLOT_ATTR as ae, OVERLAY_LEVEL as oe, STATUS_ATTR as _, TRANSITION_ATTR as v, animHoldKey as se, appendParamsQuery as ce, attachMorph as le, beginMorphSwipe as y, buildRoutePath as ue, computeBarRiding as de, computeScreenFreeze as fe, computeScreenFreezeMode as pe, consumeSelfInducedPop as b, createAnimHoldCoordinator as x, createBrowserHistoryDriver as S, createBrowserHistoryDriver as me, createDecorator as C, createHistoryStore as w, createMorphTransition as T, createNavigateStore as E, createNavigationController as D, createPartTransition as O, createRawDecorator as k, createRawMorphTransition as A, createRawPartTransition as he, createRawTransition as ge, createRouterScope as j, createScreenSelector as _e, createScreenStore as ve, createStepController as ye, createSwipeController as be, createTransition as xe, createTransitionEngine as Se, createTransitionStore as M, decoratorMap as Ce, eagerlyDecodeImages as we, ensureScopeHistorySync as Te, enteringInitialStyle as Ee, getMatchedPathPattern as N, isDesktopBlink as De, isOpaqueColor as Oe, isServer as ke, markSelfInducedPop as Ae, matchesPathname as je, morphTransitionMap as Me, observeBarHeight as Ne, observeViewportScrollHeight as Pe, partTransitionMap as Fe, publishRideBox as Ie, readStepParams as Le, registerMorphLayer as Re, registerTransitionDefinitions as ze, releaseScopeHistorySync as Be, resolvePlatformProfile as Ve, resolveTransition as He, restLayerPromotionEnabled as Ue, seedRouterEntry as We, sharedBarsMatch as Ge, startFlemoRuntime as Ke, subscribeStepParamsRestore as qe } from "@flemo/core";
3
+ import { Fragment as Je, jsx as P, jsxs as Ye } from "react/jsx-runtime";
4
+ import { createPortal as Xe, flushSync as Ze } from "react-dom";
5
5
  //#region src/stores/StoreContext.ts
6
- var Fe = r(null);
6
+ var Qe = r(null);
7
7
  //#endregion
8
8
  //#region src/stores/useStores.ts
9
9
  function F() {
10
- let e = o(Fe);
10
+ let e = s(Qe);
11
11
  if (!e) throw Error("flemo stores are missing. Render inside a <Router>.");
12
12
  return e;
13
13
  }
14
14
  //#endregion
15
15
  //#region src/history/HistoryListener.tsx
16
- function Ie() {
16
+ function $e() {
17
17
  let e = F();
18
- return s(() => (M(e), () => Te(e)), [e]), null;
18
+ return c(() => (Te(e), () => Be(e)), [e]), null;
19
19
  }
20
20
  //#endregion
21
21
  //#region src/screen/ScreenContext.ts
@@ -29,17 +29,16 @@ var I = r({
29
29
  params: {},
30
30
  transitionName: "none",
31
31
  prevTransitionName: "none",
32
- layoutId: null,
33
32
  routePath: ""
34
33
  });
35
34
  //#endregion
36
35
  //#region src/screen/useScreen.ts
37
36
  function L() {
38
- return o(I);
37
+ return s(I);
39
38
  }
40
39
  //#endregion
41
40
  //#region src/screen/ParamsProvider/ParamsContext.ts
42
- var Le = r({}), R = r(() => {});
41
+ var et = r({}), R = r(() => {});
43
42
  //#endregion
44
43
  //#region src/screen/ParamsProvider/ParamsReducer.ts
45
44
  function z(e, t) {
@@ -51,9 +50,9 @@ function z(e, t) {
51
50
  //#endregion
52
51
  //#region src/screen/ParamsProvider/ParamsProvider.tsx
53
52
  function B({ children: e }) {
54
- let { isActive: t, params: n } = L(), { driver: r } = F(), [i, a] = f(z, n);
55
- return s(() => {
56
- if (t) return Me(r, (e) => a({
53
+ let { isActive: t, params: n } = L(), { driver: r } = F(), [i, a] = ee(z, n);
54
+ return c(() => {
55
+ if (t) return qe(r, (e) => a({
57
56
  type: "SET",
58
57
  params: e
59
58
  }));
@@ -63,14 +62,14 @@ function B({ children: e }) {
63
62
  r
64
63
  ]), /* @__PURE__ */ P(R.Provider, {
65
64
  value: a,
66
- children: /* @__PURE__ */ P(Le.Provider, {
65
+ children: /* @__PURE__ */ P(et.Provider, {
67
66
  value: i,
68
67
  children: e
69
68
  })
70
69
  });
71
70
  }
72
71
  //#endregion
73
- //#region ../../node_modules/.pnpm/zustand@5.0.14_@types+react@19.2.18_react@19.2.8/node_modules/zustand/esm/react.mjs
72
+ //#region ../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.2.18_react@19.2.8/node_modules/zustand/esm/react.mjs
74
73
  var V = (e) => e;
75
74
  function H(t, n = V) {
76
75
  let r = e.useSyncExternalStore(t.subscribe, e.useCallback(() => n(t.getState()), [t, n]), e.useCallback(() => n(t.getInitialState()), [t, n]));
@@ -83,80 +82,96 @@ function U(e) {
83
82
  }
84
83
  //#endregion
85
84
  //#region src/RouterIdContext.ts
86
- var Re = r(null);
85
+ var tt = r(null);
87
86
  //#endregion
88
87
  //#region src/renderer/Renderer.tsx
89
- function ze({ children: e }) {
90
- let t = U((e) => e.index), r = U((e) => e.histories), i = F(), a = o(I), s = o(Re);
91
- return E(r, t).map((t) => {
92
- let [r] = n.toArray(e).filter((e) => ye(e.props.path, t.pathname));
88
+ function nt({ children: e }) {
89
+ let t = U((e) => e.index), r = U((e) => e.histories), i = F(), a = s(I), o = s(tt);
90
+ return _e(r, t).map((t) => {
91
+ let [r] = n.toArray(e).filter((e) => je(e.props.path, t.pathname));
93
92
  return r ? /* @__PURE__ */ P(I.Provider, {
94
93
  value: {
95
94
  ...t,
96
95
  isPrev: t.isPrev || a.isPrev,
97
96
  navigateStore: i.navigate,
98
- routerId: s ?? void 0,
99
- routePath: he(r.props.path, t.pathname)
97
+ routerId: o ?? void 0,
98
+ routePath: N(r.props.path, t.pathname)
100
99
  },
101
100
  children: /* @__PURE__ */ P(B, { children: r })
102
101
  }, t.id) : null;
103
102
  });
104
103
  }
105
104
  //#endregion
105
+ //#region src/screen/MorphLayer/MorphLayer.tsx
106
+ function rt({ stores: e }) {
107
+ let t = p(null);
108
+ return f(() => (Re(e.navigate, t.current), () => Re(e.navigate, null)), [e.navigate]), /* @__PURE__ */ P("div", {
109
+ ref: t,
110
+ "data-flemo-morph-layer": "",
111
+ "aria-hidden": "true",
112
+ style: {
113
+ position: "absolute",
114
+ inset: 0,
115
+ pointerEvents: "none"
116
+ }
117
+ });
118
+ }
119
+ //#endregion
106
120
  //#region src/screen/ScreenViewportContext.ts
107
- var W = r({ contained: !1 });
108
- function Be() {
109
- return o(W);
121
+ var it = r({ contained: !1 });
122
+ function at() {
123
+ return s(it);
110
124
  }
111
125
  //#endregion
112
126
  //#region src/transition/styles.ts
113
- function Ve(e, t, n = []) {
114
- u(() => we(e, t, n), [
127
+ function ot(e, t, n = [], r = []) {
128
+ d(() => ze(e, t, n, r), [
115
129
  e,
116
130
  t,
117
- n
131
+ n,
132
+ r
118
133
  ]);
119
134
  }
120
135
  //#endregion
121
136
  //#region src/utils/devDiagnostics.ts
122
- function He() {
137
+ function st() {
123
138
  return typeof process < "u" && process.env.NODE_ENV !== "production";
124
139
  }
125
- function Ue(e) {
126
- !He() || typeof console > "u" || console.error(`[flemo] ${e}`);
140
+ function ct(e) {
141
+ !st() || typeof console > "u" || console.error(`[flemo] ${e}`);
127
142
  }
128
- function We(e) {
129
- if (He()) throw Error(`[flemo] ${e}`);
143
+ function lt(e) {
144
+ if (st()) throw Error(`[flemo] ${e}`);
130
145
  }
131
146
  //#endregion
132
147
  //#region src/RouterDepthContext.ts
133
- var Ge = r(0), Ke = r(null), qe = [
148
+ var ut = r(0), dt = r(null), ft = [
134
149
  "current",
135
150
  "parent",
136
151
  "root",
137
152
  "nearest-owner"
138
- ], Je = (e) => qe.includes(e), Ye = (e) => {
153
+ ], pt = (e) => ft.includes(e), W = (e) => {
139
154
  let t = [];
140
155
  for (let n = e; n; n = n.parent) t.push(n);
141
156
  return t;
142
157
  };
143
158
  function G(e, t, n) {
144
- return e.routePaths.length === 0 || e.routePaths.some((e) => e === t) ? !0 : n ? ye(e.routePaths, n) : !1;
159
+ return e.routePaths.length === 0 || e.routePaths.some((e) => e === t) ? !0 : n ? je(e.routePaths, n) : !1;
145
160
  }
146
161
  function K(e) {
147
- return Ye(e).map((e, t) => {
162
+ return W(e).map((e, t) => {
148
163
  let n = t === 0 ? "current" : `${t} level(s) up`;
149
164
  return e.name ? `"${e.name}" (${n})` : `<unnamed> (${n})`;
150
165
  }).join(", ");
151
166
  }
152
- function Xe({ from: e, target: t, path: n, pathname: r }) {
167
+ function mt({ from: e, target: t, path: n, pathname: r }) {
153
168
  if (t === void 0) return {
154
169
  node: e,
155
170
  message: null
156
171
  };
157
172
  let i = null, a = null;
158
- if (typeof t == "string" ? Je(t) ? i = t : a = t : "scope" in t ? i = t.scope : a = t.name, a !== null) {
159
- let t = Ye(e).find((e) => e.name === a);
173
+ if (typeof t == "string" ? pt(t) ? i = t : a = t : "scope" in t ? i = t.scope : a = t.name, a !== null) {
174
+ let t = W(e).find((e) => e.name === a);
160
175
  return t ? {
161
176
  node: t,
162
177
  message: null
@@ -174,7 +189,7 @@ function Xe({ from: e, target: t, path: n, pathname: r }) {
174
189
  message: "router: \"parent\" was requested, but the enclosing <Router> is the outermost one (it has no parent Router)."
175
190
  };
176
191
  case "root": {
177
- let t = Ye(e);
192
+ let t = W(e);
178
193
  return {
179
194
  node: t[t.length - 1],
180
195
  message: null
@@ -185,7 +200,7 @@ function Xe({ from: e, target: t, path: n, pathname: r }) {
185
200
  node: e,
186
201
  message: "router: \"nearest-owner\" needs a route to search for, and pop() carries none. Falling back to \"current\" — name the Router explicitly for a cross-Router pop."
187
202
  };
188
- let t = Ye(e).find((e) => G(e, n, r));
203
+ let t = W(e).find((e) => G(e, n, r));
189
204
  return t ? {
190
205
  node: t,
191
206
  message: null
@@ -200,15 +215,15 @@ function Xe({ from: e, target: t, path: n, pathname: r }) {
200
215
  };
201
216
  }
202
217
  }
203
- function Ze(e) {
218
+ function ht(e) {
204
219
  if (!e.name) return null;
205
220
  for (let t = e.parent; t; t = t.parent) if (t.name === e.name) return t;
206
221
  return null;
207
222
  }
208
223
  //#endregion
209
224
  //#region src/Slot.tsx
210
- var Qe = { contained: !0 };
211
- function q({ children: e, className: t, style: n }) {
225
+ var q = { contained: !0 };
226
+ function J({ children: e, className: t, style: n }) {
212
227
  return /* @__PURE__ */ P("div", {
213
228
  className: t,
214
229
  style: {
@@ -216,121 +231,121 @@ function q({ children: e, className: t, style: n }) {
216
231
  overflow: "hidden",
217
232
  ...n
218
233
  },
219
- children: /* @__PURE__ */ P(W.Provider, {
220
- value: Qe,
221
- children: /* @__PURE__ */ P(ze, { children: e })
234
+ children: /* @__PURE__ */ P(it.Provider, {
235
+ value: q,
236
+ children: /* @__PURE__ */ P(nt, { children: e })
222
237
  })
223
238
  });
224
239
  }
225
240
  //#endregion
226
241
  //#region src/Router.tsx
227
- function J(e) {
242
+ function gt(e) {
228
243
  let t = null;
229
244
  return n.forEach(e, (e) => {
230
- if (t || !i(e)) return;
231
- if (e.type === q) {
232
- t = n.toArray(e.props.children).filter(i);
245
+ if (t || !a(e)) return;
246
+ if (e.type === J) {
247
+ t = n.toArray(e.props.children).filter(a);
233
248
  return;
234
249
  }
235
250
  let r = e.props.children;
236
251
  if (r) {
237
- let e = J(r);
252
+ let e = gt(r);
238
253
  e && (t = e);
239
254
  }
240
255
  }), t;
241
256
  }
242
- var $e = typeof window > "u" ? s : d, et = typeof window > "u" ? s : u, tt = [], nt = [], Y = [], rt = { contained: !0 };
243
- function X({ children: e, name: t, strictRoutes: r = !1, initPath: a = "/", defaultTransitionName: l = "cupertino", transitions: u = tt, decorators: d = nt, partTransitions: f = Y, history: p = "browser", createDriver: ee, className: h, style: te }) {
244
- let ne = o(Ge), re = c(), [ie, ae] = m(!1);
245
- s(() => ae(!0), []);
246
- let oe = ie ? re : null, g = ne > 0, _ = p === "memory", se = c(), v = o(I), b = o(Fe), x = g && v.id ? `_F_${b?.routerKey ?? ""}${v.id}_` : se, ce = J(e), le = ce !== null, S = (ce ?? n.toArray(e).filter(i)).flatMap((e) => e.props?.path ? [e.props.path].flat() : []), ue = g ? null : b, C = ue !== null, w = ee ?? y, [E] = m(() => _ ? null : w(C ? void 0 : x)), D = !g && !_ && !ve(), O = D && E ? E.readPathname() : a || "/", de = O.indexOf("?"), k = (de >= 0 ? O.slice(0, de) : O) || "/", fe = D ? window.location.search : de >= 0 ? O.slice(de) : "", [A] = m(() => T({
247
- routePaths: S,
248
- pathname: k,
249
- search: fe,
250
- defaultTransitionName: l,
251
- memory: _,
252
- browserDriver: E,
253
- hostedScope: ue,
254
- routerKey: C ? void 0 : x,
255
- zoneEntryId: g && !C && v.id || void 0,
256
- persistKey: g && !_ && !C ? x : void 0
257
+ var _t = typeof window > "u" ? c : f, vt = typeof window > "u" ? c : d, yt = [], Y = [], bt = [], xt = [], X = { contained: !0 };
258
+ function St({ children: e, name: t, strictRoutes: r = !1, initPath: i = "/", defaultTransitionName: o = "cupertino", transitions: u = yt, decorators: d = Y, partTransitions: f = bt, morphTransitions: ee = xt, history: p = "browser", createDriver: te, className: ne, style: h }) {
259
+ let g = s(ut), re = l(), [ie, ae] = m(!1);
260
+ c(() => ae(!0), []);
261
+ let oe = ie ? re : null, _ = g > 0, v = p === "memory", se = l(), ce = s(I), le = s(Qe), y = _ && ce.id ? `_F_${le?.routerKey ?? ""}${ce.id}_` : se, ue = gt(e), de = ue !== null, fe = (ue ?? n.toArray(e).filter(a)).flatMap((e) => e.props?.path ? [e.props.path].flat() : []), pe = _ ? null : le, b = pe !== null, x = te ?? me, [S] = m(() => v ? null : x(b ? void 0 : y)), C = !_ && !v && !ke(), w = C && S ? S.readPathname() : i || "/", T = w.indexOf("?"), E = (T >= 0 ? w.slice(0, T) : w) || "/", D = C ? window.location.search : T >= 0 ? w.slice(T) : "", [O] = m(() => j({
262
+ routePaths: fe,
263
+ pathname: E,
264
+ search: D,
265
+ defaultTransitionName: o,
266
+ memory: v,
267
+ browserDriver: S,
268
+ hostedScope: pe,
269
+ routerKey: b ? void 0 : y,
270
+ zoneEntryId: _ && !b && ce.id || void 0,
271
+ persistKey: _ && !v && !b ? y : void 0
257
272
  }));
258
- $e(() => {
259
- A.transition.getState().defaultTransitionName !== l && A.transition.setState({ defaultTransitionName: l });
273
+ _t(() => {
274
+ O.transition.getState().defaultTransitionName !== o && O.transition.setState({ defaultTransitionName: o });
260
275
  });
261
- let pe = o(Ke), [j] = m(() => ({
276
+ let k = s(dt), [A] = m(() => ({
262
277
  name: t,
263
- stores: A,
264
- routePaths: S,
278
+ stores: O,
279
+ routePaths: fe,
265
280
  strictRoutes: r,
266
- parent: pe,
267
- depth: ne
281
+ parent: k,
282
+ depth: g
268
283
  }));
269
- et(() => {
270
- j.name = t, j.stores = A, j.routePaths = S, j.strictRoutes = r, j.parent = pe;
271
- }), s(() => {
272
- Ze(j) && Ue(`duplicate <Router name="${j.name}">: an enclosing <Router> already uses that name, so \`router\` targets resolve to the nearer one. Give each nested Router a unique name.`);
273
- }, [j, t]), $e(() => (A.life.alive = !0, () => {
274
- A.life.alive = !1;
275
- }), [A]), Ve(u, d, f), s(() => je(), []), s(() => {
276
- _ || !E || ke({
277
- driver: E,
278
- routerKey: C ? null : x,
279
- nested: g && !C,
280
- seedPathname: k,
281
- defaultTransitionName: l,
282
- rootParams: A.history.getState().histories[0]?.params ?? {}
284
+ vt(() => {
285
+ A.name = t, A.stores = O, A.routePaths = fe, A.strictRoutes = r, A.parent = k;
286
+ }), c(() => {
287
+ ht(A) && ct(`duplicate <Router name="${A.name}">: an enclosing <Router> already uses that name, so \`router\` targets resolve to the nearer one. Give each nested Router a unique name.`);
288
+ }, [A, t]), _t(() => (O.life.alive = !0, () => {
289
+ O.life.alive = !1;
290
+ }), [O]), ot(u, d, f, ee), c(() => Ke(), []), c(() => {
291
+ v || !S || We({
292
+ driver: S,
293
+ routerKey: b ? null : y,
294
+ nested: _ && !b,
295
+ seedPathname: E,
296
+ defaultTransitionName: o,
297
+ rootParams: O.history.getState().histories[0]?.params ?? {}
283
298
  });
284
299
  }, [
300
+ v,
301
+ b,
285
302
  _,
286
- C,
287
- g,
288
- x,
289
- k,
290
- l,
291
- A.history,
292
- E
303
+ y,
304
+ E,
305
+ o,
306
+ O.history,
307
+ S
293
308
  ]);
294
- let M = le ? e : /* @__PURE__ */ P(ze, { children: e }), me = /* @__PURE__ */ P(Re.Provider, {
309
+ let he = de ? e : /* @__PURE__ */ P(nt, { children: e }), ge = /* @__PURE__ */ P(tt.Provider, {
295
310
  value: oe,
296
- children: /* @__PURE__ */ P(Ge.Provider, {
297
- value: ne + 1,
298
- children: /* @__PURE__ */ P(Ke.Provider, {
299
- value: j,
300
- children: /* @__PURE__ */ Ne(Fe.Provider, {
301
- value: A,
302
- children: [!_ && /* @__PURE__ */ P(Ie, {}), g ? /* @__PURE__ */ P(W.Provider, {
303
- value: rt,
304
- children: M
305
- }) : M]
311
+ children: /* @__PURE__ */ P(ut.Provider, {
312
+ value: g + 1,
313
+ children: /* @__PURE__ */ P(dt.Provider, {
314
+ value: A,
315
+ children: /* @__PURE__ */ Ye(Qe.Provider, {
316
+ value: O,
317
+ children: [/* @__PURE__ */ P($e, {}), _ ? /* @__PURE__ */ P(it.Provider, {
318
+ value: X,
319
+ children: he
320
+ }) : he]
306
321
  })
307
322
  })
308
323
  })
309
324
  });
310
- return g ? /* @__PURE__ */ P("div", {
311
- className: h,
325
+ return _ ? /* @__PURE__ */ Ye("div", {
326
+ className: ne,
312
327
  style: {
313
328
  position: "relative",
314
329
  overflow: "hidden",
315
- ...te
330
+ ...h
316
331
  },
317
- children: me
318
- }) : me;
332
+ children: [ge, /* @__PURE__ */ P(rt, { stores: O })]
333
+ }) : /* @__PURE__ */ Ye(Je, { children: [ge, /* @__PURE__ */ P(rt, { stores: O })] });
319
334
  }
320
335
  //#endregion
321
336
  //#region src/Route.tsx
322
- function it({ element: e }) {
337
+ function Ct({ element: e }) {
323
338
  return e;
324
339
  }
325
340
  //#endregion
326
341
  //#region src/utils/buildRoutePath.ts
327
- function at(e, t) {
328
- return ie(e, t);
342
+ function wt(e, t) {
343
+ return ue(e, t);
329
344
  }
330
345
  //#endregion
331
346
  //#region src/navigate/useNavigate.ts
332
- function ot(e) {
333
- let t = F(), n = o(Ke) ?? {
347
+ function Tt(e) {
348
+ let t = F(), n = s(dt) ?? {
334
349
  stores: t,
335
350
  routePaths: [],
336
351
  strictRoutes: !1,
@@ -339,24 +354,24 @@ function ot(e) {
339
354
  }, r = (t, r, i) => {
340
355
  let a = t ?? e?.router, o;
341
356
  if (r) try {
342
- o = at(r, i).toPathname;
357
+ o = wt(r, i).toPathname;
343
358
  } catch {
344
359
  o = void 0;
345
360
  }
346
- let { node: s, message: c } = Xe({
361
+ let { node: s, message: c } = mt({
347
362
  from: n,
348
363
  target: a,
349
364
  path: r,
350
365
  pathname: o
351
366
  });
352
- if (!s) return We(c ?? "the requested Router could not be resolved."), null;
353
- if (c && Ue(c), r && !G(s, r, o)) {
367
+ if (!s) return lt(c ?? "the requested Router could not be resolved."), null;
368
+ if (c && ct(c), r && !G(s, r, o)) {
354
369
  let e = `"${r}" is not declared by ${s.name ? `<Router name="${s.name}">` : "the target <Router>"}, so the navigation cannot mount a screen there. Declare a matching <Route>, target the Router that owns it, or use \`router: "nearest-owner"\`.`;
355
- a !== void 0 || s.strictRoutes ? We(e) : Ue(e);
370
+ a !== void 0 || s.strictRoutes ? lt(e) : ct(e);
356
371
  }
357
- return le({
372
+ return D({
358
373
  stores: s.stores,
359
- buildPathname: (e, t) => at(e, t),
374
+ buildPathname: (e, t) => wt(e, t),
360
375
  driver: s.stores.driver,
361
376
  markSelfInduced: s.stores.markSelfInduced
362
377
  });
@@ -378,26 +393,26 @@ function ot(e) {
378
393
  }
379
394
  //#endregion
380
395
  //#region src/navigate/usePathname.ts
381
- function st() {
396
+ function Et() {
382
397
  return U((e) => e.histories[e.pendingIndex]?.pathname ?? "/");
383
398
  }
384
399
  //#endregion
385
400
  //#region src/navigate/useStep.ts
386
- function ct() {
387
- let { routePath: e } = L(), t = F(), n = o(R), { driver: r, markSelfInduced: i } = t, [a, c] = m(null);
388
- s(() => {
389
- if (!e) return c(Ce(r.readState())), r.subscribe((e) => c(Ce(e.state)));
401
+ function Dt() {
402
+ let { routePath: e } = L(), t = F(), n = s(R), { driver: r, markSelfInduced: i } = t, [a, o] = m(null);
403
+ c(() => {
404
+ if (!e) return o(Le(r.readState())), r.subscribe((e) => o(Le(e.state)));
390
405
  }, [e, r]);
391
- let l = O({
406
+ let l = ye({
392
407
  stores: t,
393
408
  driver: r,
394
409
  markSelfInduced: i,
395
- buildStepPathname: (t) => e ? at(e, t).pathname : re(r.readPathname(), t),
410
+ buildStepPathname: (t) => e ? wt(e, t).pathname : ce(r.readPathname(), t),
396
411
  applyParams: (t) => {
397
412
  n({
398
413
  type: "SET",
399
414
  params: t
400
- }), e || c(t);
415
+ }), e || o(t);
401
416
  }
402
417
  });
403
418
  return {
@@ -409,53 +424,68 @@ function ct() {
409
424
  }
410
425
  //#endregion
411
426
  //#region src/screen/ParamsProvider/useParams.ts
412
- function lt() {
413
- return o(Le);
427
+ function Ot() {
428
+ return s(et);
414
429
  }
415
430
  //#endregion
416
431
  //#region src/screen/ScreenFreeze.tsx
417
- var ut = 3e3;
418
- function dt({ freeze: e, children: n }) {
419
- let [r, i] = m(e), a = p(null);
420
- return !e && r && i(!1), s(() => {
421
- if (!(!e || r)) {
422
- if (!ge()) {
423
- i(!0);
432
+ var kt = 3e3;
433
+ function At({ freeze: e, mode: n = "deferred", children: r }) {
434
+ let [i, a] = m(e), o = p(null);
435
+ return !e && i && a(!1), c(() => {
436
+ if (!(!e || i)) {
437
+ if (n === "immediate" || !De()) {
438
+ a(!0);
424
439
  return;
425
440
  }
426
- return a.current = setTimeout(() => {
427
- a.current = null, i(!0);
428
- }, ut), () => {
429
- a.current !== null && (clearTimeout(a.current), a.current = null);
441
+ return o.current = setTimeout(() => {
442
+ o.current = null, a(!0);
443
+ }, kt), () => {
444
+ o.current !== null && (clearTimeout(o.current), o.current = null);
430
445
  };
431
446
  }
432
- }, [e, r]), /* @__PURE__ */ P(t, {
433
- mode: e && r ? "hidden" : "visible",
434
- children: n
447
+ }, [
448
+ e,
449
+ i,
450
+ n
451
+ ]), /* @__PURE__ */ P(t, {
452
+ mode: e && i ? "hidden" : "visible",
453
+ children: r
435
454
  });
436
455
  }
437
456
  //#endregion
457
+ //#region src/screen/LayerContext.ts
458
+ var jt = r(null);
459
+ function Mt() {
460
+ return s(jt);
461
+ }
462
+ var Nt = r(null);
463
+ function Z() {
464
+ return s(Nt);
465
+ }
466
+ //#endregion
438
467
  //#region src/screen/scopeAnimHoldCoordinator.ts
439
- var ft = /* @__PURE__ */ new WeakMap();
440
- function pt(e) {
441
- let t = ft.get(e);
442
- return t || (t = se(), ft.set(e, t)), t;
468
+ var Pt = /* @__PURE__ */ new WeakMap();
469
+ function Ft(e) {
470
+ let t = Pt.get(e);
471
+ return t || (t = x(), Pt.set(e, t)), t;
443
472
  }
444
473
  //#endregion
445
474
  //#region src/stores/useNavigateStore.ts
446
- function mt(e) {
475
+ function It(e) {
447
476
  return H(F().navigate, e);
448
477
  }
449
478
  //#endregion
450
479
  //#region src/screen/ScreenDecorator.tsx
451
- function ht({ ref: e, style: t, ...n }) {
480
+ function Lt({ ref: e, style: t, ...n }) {
452
481
  let { isActive: r, isPrev: i, transitionName: a } = L(), o = p(null);
453
- l(e, () => o.current);
454
- let s = mt((e) => i ? "COMPLETED" : e.status), { decoratorName: c } = De(a), u = pe.get(c);
455
- return u ? /* @__PURE__ */ P("div", {
482
+ u(e, () => o.current);
483
+ let s = It((e) => i ? "COMPLETED" : e.status), c = He(a), { decoratorName: l } = c, d = Ce.get(l);
484
+ return d ? /* @__PURE__ */ P("div", {
456
485
  ref: o,
457
486
  "data-flemo-decorator": !0,
458
- "data-flemo-decorator-name": u.name,
487
+ "data-flemo-decorator-name": d.name,
488
+ "data-flemo-transition": c.name,
459
489
  "data-flemo-status": s,
460
490
  "data-flemo-active": r ? "true" : "false",
461
491
  style: {
@@ -465,7 +495,6 @@ function ht({ ref: e, style: t, ...n }) {
465
495
  width: "100%",
466
496
  height: "100%",
467
497
  pointerEvents: "none",
468
- zIndex: 1,
469
498
  ...t
470
499
  },
471
500
  ...n
@@ -473,9 +502,9 @@ function ht({ ref: e, style: t, ...n }) {
473
502
  }
474
503
  //#endregion
475
504
  //#region src/screen/useViewportScrollHeight.ts
476
- function gt() {
505
+ function Rt() {
477
506
  let [e, t] = m(0), [n, r] = m(0);
478
- return s(() => xe((e, n) => {
507
+ return c(() => Pe((e, n) => {
479
508
  r(n), t(e);
480
509
  }), []), {
481
510
  viewportScrollHeight: e,
@@ -484,9 +513,9 @@ function gt() {
484
513
  }
485
514
  //#endregion
486
515
  //#region src/utils/useHydrationSafeFlag.ts
487
- var Z = () => () => {}, _t = () => !1;
488
- function vt(e) {
489
- return ee(Z, e, _t);
516
+ var zt = () => () => {}, Bt = () => !1;
517
+ function Vt(e) {
518
+ return te(zt, e, Bt);
490
519
  }
491
520
  //#endregion
492
521
  //#region src/stores/useScreenStore.ts
@@ -495,85 +524,88 @@ function Q(e) {
495
524
  }
496
525
  //#endregion
497
526
  //#region src/screen/ScreenMotion.tsx
498
- function yt({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigationBarHeight: r, systemNavigationBarColor: i, sharedTopBar: c, sharedTopBarId: l, sharedBottomBar: u, sharedBottomBarId: f, topBar: ee, bottomBar: re, hideStatusBar: ie, hideSystemNavigationBar: g, backgroundColor: _ = "white", contentScrollable: se = !0, ...v }) {
499
- let { id: y, isActive: b, isRoot: x, isPrev: ce, zIndex: le, transitionName: S, prevTransitionName: ue } = L(), { contained: C } = Be(), w = C ? "absolute" : "fixed", T = F(), E = o(Re), D = U((e) => e.index), O = U((e) => e.histories), k = b || le === D - 1, A = mt((e) => k ? e.status : "COMPLETED"), M = Q((e) => e.dragStatus), he = Q((e) => e.replaceTransitionStatus), ge = T.screen.getState().setDragStatus, ve = T.screen.getState().setReplaceTransitionStatus, N = b ? O[D - 1]?.id : O[D]?.id, ye = Q((e) => N ? e.sharedBars[N] : void 0), xe = Q((e) => N ? e.sharedBarMetadata[N] : void 0), Se = Q((e) => N ? e.screenSurfaces[N] : void 0), Ce = p(null);
500
- Ce.current ||= fe({
501
- getTransitionTaskId: () => T.navigate.getState().transitionTaskId,
502
- setDragStatus: ge,
503
- setReplaceTransitionStatus: ve
527
+ function Ht({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigationBarHeight: r, systemNavigationBarColor: i, sharedTopBar: a, sharedTopBarId: l, sharedBottomBar: u, sharedBottomBarId: d, topBar: ee, bottomBar: te, hideStatusBar: ie, hideSystemNavigationBar: ae, backgroundColor: ce = "white", contentScrollable: le = !0, paintHidden: ue = !1, ...pe }) {
528
+ let { id: b, isActive: x, isRoot: S, isPrev: me, zIndex: C, transitionName: w, prevTransitionName: T } = L(), { contained: E } = at(), D = E ? "absolute" : "fixed", O = F(), k = s(tt), A = U((e) => e.index), he = U((e) => e.histories), ge = x || C === A - 1, j = It((e) => ge ? e.status : "COMPLETED"), _e = Q((e) => e.dragStatus), ve = Q((e) => e.replaceTransitionStatus), ye = O.screen.getState().setDragStatus, xe = O.screen.getState().setReplaceTransitionStatus, M = x ? he[A - 1]?.id : he[A]?.id, Te = Q((e) => M ? e.sharedBars[M] : void 0), N = Q((e) => M ? e.sharedBarMetadata[M] : void 0), De = Q((e) => M ? e.screenSurfaces[M] : void 0), ke = p(null);
529
+ ke.current ||= Se({
530
+ getTransitionTaskId: () => O.navigate.getState().transitionTaskId,
531
+ setDragStatus: ye,
532
+ setReplaceTransitionStatus: xe
504
533
  });
505
- let we = Ce.current, Te = p(null);
506
- Te.current ||= pt(T.navigate);
507
- let ke = De(S), { initial: je, swipeDirection: Me, decoratorName: Fe } = ke, Ie = pe.get(Fe), { viewportScrollHeight: I } = gt(), Le = I > 0, R = !!c, z = !!u, B = R ? `${typeof l}:${String(l)}` : null, V = z ? `${typeof f}:${String(f)}` : null, [H, ze] = m({
534
+ let Ae = ke.current, je = p(null);
535
+ je.current ||= Ft(O.navigate);
536
+ let Me = He(w), { initial: Pe, swipeDirection: Fe, decoratorName: Le } = Me, Re = Ce.get(Le), { viewportScrollHeight: ze } = Rt(), Be = ze > 0, [We, Ke] = m(null), qe = Mt(), Je = qe ?? We, Qe = p(/* @__PURE__ */ new Set()), [$e, I] = m(!1), et = o((e) => {
537
+ let t = Qe.current;
538
+ e ? t.add(e) : t.clear(), I(t.size > 0);
539
+ }, []), R = !!a, z = !!u, B = R ? `${typeof l}:${String(l)}` : null, V = z ? `${typeof d}:${String(d)}` : null, [H, nt] = m({
508
540
  key: B,
509
541
  height: 0
510
- }), [W, Ve] = m({
542
+ }), [rt, it] = m({
511
543
  key: V,
512
544
  height: 0
513
- }), He = p(H), Ue = p(W), We = H.key === B ? H.height : 0, Ge = W.key === V ? W.height : 0, Ke = Ae(R ? { id: l } : void 0, xe?.topBar) ? xe?.topBar?.height ?? 0 : 0, qe = Ae(z ? { id: f } : void 0, xe?.bottomBar) ? xe?.bottomBar?.height ?? 0 : 0, Je = We || Ke, Ye = Ge || qe, G = p(null), K = p(null), Xe = p(null), Ze = p(null), Qe = p(null), q = p(null), J = p(null), $e = a((e) => {
514
- e <= 0 || B === null || (Ze.current && (Ze.current.style.minHeight = `${e}px`), He.current = {
545
+ }), ot = p(H), st = p(rt), ct = H.key === B ? H.height : 0, lt = rt.key === V ? rt.height : 0, ut = Ge(R ? { id: l } : void 0, N?.topBar) ? N?.topBar?.height ?? 0 : 0, dt = Ge(z ? { id: d } : void 0, N?.bottomBar) ? N?.bottomBar?.height ?? 0 : 0, ft = ct || ut, pt = lt || dt, W = p(null), G = p(null), K = p(null), mt = p(null), ht = p(null), q = p(null), J = p(null), gt = o((e) => {
546
+ e <= 0 || B === null || (mt.current && (mt.current.style.minHeight = `${e}px`), ot.current = {
515
547
  key: B,
516
548
  height: e
517
- }, ze((t) => t.key === B && t.height === e ? t : {
549
+ }, nt((t) => t.key === B && t.height === e ? t : {
518
550
  key: B,
519
551
  height: e
520
- }), T.screen.getState().updateSharedBarHeight(y, "topBar", e));
552
+ }), O.screen.getState().updateSharedBarHeight(b, "topBar", e));
521
553
  }, [
522
- y,
523
- T.screen,
554
+ b,
555
+ O.screen,
524
556
  B
525
- ]), et = a((e) => {
526
- e <= 0 || V === null || (Qe.current && (Qe.current.style.minHeight = `${e}px`), Ue.current = {
557
+ ]), _t = o((e) => {
558
+ e <= 0 || V === null || (ht.current && (ht.current.style.minHeight = `${e}px`), st.current = {
527
559
  key: V,
528
560
  height: e
529
- }, Ve((t) => t.key === V && t.height === e ? t : {
561
+ }, it((t) => t.key === V && t.height === e ? t : {
530
562
  key: V,
531
563
  height: e
532
- }), T.screen.getState().updateSharedBarHeight(y, "bottomBar", e));
564
+ }), O.screen.getState().updateSharedBarHeight(b, "bottomBar", e));
533
565
  }, [
534
566
  V,
535
- y,
536
- T.screen
537
- ]), tt = a((e) => {
538
- q.current = e, e?.offsetHeight && $e(e.offsetHeight);
539
- }, [$e]), nt = a((e) => {
540
- J.current = e, e?.offsetHeight && et(e.offsetHeight);
541
- }, [et]), Y = p({
542
- transition: ke,
543
- decorator: Ie,
544
- hasSharedTopBar: !!c,
567
+ b,
568
+ O.screen
569
+ ]), vt = o((e) => {
570
+ q.current = e, e?.offsetHeight && gt(e.offsetHeight);
571
+ }, [gt]), yt = o((e) => {
572
+ J.current = e, e?.offsetHeight && _t(e.offsetHeight);
573
+ }, [_t]), Y = p({
574
+ transition: Me,
575
+ decorator: Re,
576
+ hasSharedTopBar: !!a,
545
577
  hasSharedBottomBar: !!u,
546
578
  sharedTopBarId: l,
547
- sharedBottomBarId: f,
548
- viewportScrollHeight: I,
549
- isRoot: x,
550
- isActive: b,
551
- status: A,
552
- dragStatus: M,
553
- index: D
579
+ sharedBottomBarId: d,
580
+ viewportScrollHeight: ze,
581
+ isRoot: S,
582
+ isActive: x,
583
+ status: j,
584
+ dragStatus: _e,
585
+ index: A
554
586
  });
555
587
  Y.current = {
556
- transition: ke,
557
- decorator: Ie,
558
- hasSharedTopBar: !!c,
588
+ transition: Me,
589
+ decorator: Re,
590
+ hasSharedTopBar: !!a,
559
591
  hasSharedBottomBar: !!u,
560
592
  sharedTopBarId: l,
561
- sharedBottomBarId: f,
562
- viewportScrollHeight: I,
563
- isRoot: x,
564
- isActive: b,
565
- status: A,
566
- dragStatus: M,
567
- index: D
593
+ sharedBottomBarId: d,
594
+ viewportScrollHeight: ze,
595
+ isRoot: S,
596
+ isActive: x,
597
+ status: j,
598
+ dragStatus: _e,
599
+ index: A
568
600
  };
569
- let rt = p(null);
570
- rt.current ||= de({
601
+ let bt = p(null), xt = p(null);
602
+ bt.current ||= be({
571
603
  getTransition: () => Y.current.transition,
572
604
  getDecorator: () => Y.current.decorator,
573
605
  getElements: () => ({
574
- scope: K.current,
575
- screenContainer: G.current,
576
- decorator: Xe.current,
606
+ scope: G.current,
607
+ screenContainer: W.current,
608
+ decorator: K.current,
577
609
  sharedTopBar: q.current,
578
610
  sharedBottomBar: J.current
579
611
  }),
@@ -587,23 +619,32 @@ function yt({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
587
619
  return !e.isRoot && e.isActive && e.status === "COMPLETED" && e.dragStatus === "IDLE" && !!e.transition.swipeDirection && e.viewportScrollHeight < 10;
588
620
  },
589
621
  getPartnerBars: () => {
590
- let e = Y.current, t = T.history.getState().histories, n = e.isActive ? t[e.index - 1]?.id : t[e.index]?.id;
591
- return n ? T.screen.getState().sharedBars[n] : void 0;
622
+ let e = Y.current, t = O.history.getState().histories, n = e.isActive ? t[e.index - 1]?.id : t[e.index]?.id;
623
+ return n ? O.screen.getState().sharedBars[n] : void 0;
592
624
  },
593
625
  getPartnerBarMetadata: () => {
594
- let e = Y.current, t = T.history.getState().histories, n = e.isActive ? t[e.index - 1]?.id : t[e.index]?.id;
595
- return n ? T.screen.getState().sharedBarMetadata[n] : void 0;
626
+ let e = Y.current, t = O.history.getState().histories, n = e.isActive ? t[e.index - 1]?.id : t[e.index]?.id;
627
+ return n ? O.screen.getState().sharedBarMetadata[n] : void 0;
628
+ },
629
+ setDragStatus: ye,
630
+ back: () => O.driver.back(),
631
+ onDragStart: () => {
632
+ xt.current = y(O.navigate, "POPPING");
596
633
  },
597
- setDragStatus: ge,
598
- back: () => window.history.back()
634
+ onDragProgress: (e) => {
635
+ xt.current?.scrub(e);
636
+ },
637
+ onDragSettle: (e, t) => {
638
+ xt.current?.settle(e, t), xt.current = null;
639
+ }
599
640
  });
600
- let X = rt.current, it = (e) => X.pointerDown(e.nativeEvent), at = (e) => X.pointerMove(e.nativeEvent), ot = (e) => X.pointerUp(e.nativeEvent), st = (e) => X.pointerCancel(e.nativeEvent), ct = (e) => X.lostPointerCapture(e.nativeEvent), lt = (e) => {
601
- (A === "PUSHING" || A === "REPLACING") && (e.preventDefault(), e.stopPropagation());
641
+ let X = bt.current, St = (e) => X.pointerDown(e.nativeEvent), Ct = (e) => X.pointerMove(e.nativeEvent), wt = (e) => X.pointerUp(e.nativeEvent), Tt = (e) => X.pointerCancel(e.nativeEvent), Et = (e) => X.lostPointerCapture(e.nativeEvent), Dt = (e) => {
642
+ (j === "PUSHING" || j === "REPLACING") && (e.preventDefault(), e.stopPropagation());
602
643
  };
603
- s(() => {
604
- j(K.current);
605
- }, []), s(() => {
606
- let e = K.current;
644
+ c(() => {
645
+ we(G.current);
646
+ }, []), c(() => {
647
+ let e = G.current;
607
648
  if (!e) return;
608
649
  let t = (e) => {
609
650
  X.shouldPreventTouch() && e.preventDefault();
@@ -611,9 +652,9 @@ function yt({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
611
652
  return e.addEventListener("touchmove", t, { passive: !1 }), () => {
612
653
  e.removeEventListener("touchmove", t), X.abandon();
613
654
  };
614
- }, [X]), d(() => {
615
- let { registerSharedBars: e, unregisterSharedBars: t } = T.screen.getState(), n = He.current, r = Ue.current;
616
- return e(y, {
655
+ }, [X]), f(() => {
656
+ let { registerSharedBars: e, unregisterSharedBars: t } = O.screen.getState(), n = ot.current, r = st.current;
657
+ return e(b, {
617
658
  topBar: R,
618
659
  bottomBar: z
619
660
  }, {
@@ -622,188 +663,205 @@ function yt({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
622
663
  height: n.key === B ? n.height : void 0
623
664
  } : void 0,
624
665
  bottomBar: z ? {
625
- id: f,
666
+ id: d,
626
667
  height: r.key === V ? r.height : void 0
627
668
  } : void 0
628
- }), () => t(y);
669
+ }), () => t(b);
629
670
  }, [
630
671
  V,
631
672
  z,
632
673
  R,
633
- y,
634
- f,
674
+ b,
675
+ d,
635
676
  l,
636
- T.screen,
677
+ O.screen,
637
678
  B
638
- ]), d(() => {
679
+ ]), f(() => {
639
680
  let e = q.current;
640
- if (e) return be(e, $e);
641
- }, [$e, c]), d(() => {
681
+ if (e) return Ne(e, gt);
682
+ }, [gt, R]), f(() => {
642
683
  let e = J.current;
643
- if (e) return be(e, et);
644
- }, [et, u]), d(() => {
645
- let e = K.current;
684
+ if (e) return Ne(e, _t);
685
+ }, [_t, z]), f(() => {
686
+ let e = W.current;
687
+ if (e && !(!R && !z)) return Ie(e);
688
+ }, [z, R]), f(() => {
689
+ let e = G.current;
646
690
  if (!e) return;
647
- let { registerScreenSurface: t, unregisterScreenSurface: n } = T.screen.getState();
648
- return t(y, { opaqueBackground: _e(getComputedStyle(e).backgroundColor) }), () => n(y);
691
+ let { registerScreenSurface: t, unregisterScreenSurface: n } = O.screen.getState();
692
+ return t(b, { opaqueBackground: Oe(getComputedStyle(e).backgroundColor) }), () => n(b);
649
693
  }, [
650
- y,
651
- _,
652
- A,
653
- T.screen
694
+ b,
695
+ ce,
696
+ j,
697
+ O.screen
654
698
  ]);
655
- let ut = k, { app: dt, nav: ft } = ae({
656
- status: A,
657
- isTopOrTopPrev: ut,
699
+ let Ot = ge, { app: kt, nav: At } = de({
700
+ status: j,
701
+ isTopOrTopPrev: Ot,
658
702
  hasTopBar: R,
659
703
  hasNavBar: z,
660
704
  topBarId: l,
661
- bottomBarId: f,
662
- partnerBars: ye,
663
- partnerMetadata: xe
664
- }), Z = ne({
665
- status: A,
666
- isTopOrTopPrev: ut,
667
- transitionName: S
668
- }), _t = oe({
669
- isActive: b,
670
- isPrev: ce,
671
- zIndex: le,
672
- index: D,
673
- status: A,
674
- dragStatus: M,
675
- replaceTransitionStatus: he
676
- }), yt = p(_t), bt = p(Z !== null && _t), xt = p(null), [St, Ct] = m({
705
+ bottomBarId: d,
706
+ partnerBars: Te,
707
+ partnerMetadata: N
708
+ }), Z = se({
709
+ status: j,
710
+ isTopOrTopPrev: Ot,
711
+ transitionName: w
712
+ }), Pt = fe({
713
+ isActive: x,
714
+ isPrev: me,
715
+ zIndex: C,
716
+ index: A,
717
+ status: j,
718
+ dragStatus: _e,
719
+ replaceTransitionStatus: ve
720
+ }), zt = p(Pt), Bt = p(Z !== null && Pt), Ht = p(null), [Ut, Wt] = m({
677
721
  key: Z,
678
722
  released: Z === null
679
723
  });
680
- St.key !== Z && (Ct({
724
+ Ut.key !== Z && (Wt({
681
725
  key: Z,
682
726
  released: Z === null
683
- }), xt.current = null, bt.current = Z !== null && yt.current), yt.current = _t;
684
- let wt = Z !== null && St.key === Z && !St.released && xt.current !== Z, $ = wt ? !b && Se?.opaqueBackground ? h.PARK : b && (A === "PUSHING" || A === "REPLACING") && Se?.opaqueBackground ? Ee().parkOver ? h.PARK_OVER : h.PARK_UNDER : h.HELD : h.RELEASED, Tt = vt(Oe);
685
- d(() => we.driveScreenLifecycle({
727
+ }), Ht.current = null, Bt.current = Z !== null && zt.current), zt.current = Pt;
728
+ let Gt = Z !== null && Ut.key === Z && !Ut.released && Ht.current !== Z, $ = Gt ? !x && De?.opaqueBackground ? h.PARK : x && (j === "PUSHING" || j === "REPLACING") && De?.opaqueBackground ? Ve().parkOver ? h.PARK_OVER : h.PARK_UNDER : h.HELD : h.RELEASED, Kt = {
729
+ zIndex: C,
730
+ paintHidden: ue,
731
+ transitionName: w,
732
+ status: j,
733
+ isActive: x,
734
+ animHold: $,
735
+ rendersHost: !qe,
736
+ screenId: b,
737
+ registerSlot: et
738
+ }, qt = Vt(Ue);
739
+ f(() => Ae.driveScreenLifecycle({
686
740
  getElements: () => ({
687
- scope: K.current,
688
- decorator: Xe.current,
689
- bars: [q.current, J.current]
741
+ scope: G.current,
742
+ decorator: K.current,
743
+ bars: [q.current, J.current],
744
+ screenContainer: W.current
690
745
  }),
691
- transitionName: S,
692
- prevTransitionName: ue,
693
- status: A,
694
- isActive: b,
695
- animHoldReleased: !wt
746
+ transitionName: w,
747
+ prevTransitionName: T,
748
+ status: j,
749
+ isActive: x,
750
+ animHoldReleased: !Gt
696
751
  }), [
697
- we,
698
- A,
699
- b,
700
- ue,
701
- S,
702
- wt
703
- ]), s(() => {
704
- if (!wt || Z === null) return;
705
- let e = Z, t = T.navigate.getState().transitionTaskId, n = t === null ? e : `${e}#${t}`;
706
- return Te.current.join(n, () => {
707
- let t = Y.current.transition.driver === "native", n = Ee({ authoredNativeDriver: t }).atomicReleaseFlip;
752
+ Ae,
753
+ j,
754
+ x,
755
+ T,
756
+ w,
757
+ Gt
758
+ ]), c(() => {
759
+ if (!Gt || Z === null) return;
760
+ let e = Z, t = O.navigate.getState().transitionTaskId, n = t === null ? e : `${e}#${t}`;
761
+ return je.current.join(n, () => {
762
+ let t = Y.current.transition.driver === "native", n = Ve({ authoredNativeDriver: t }).atomicReleaseFlip;
708
763
  if (n) {
709
764
  for (let e of [
710
- K.current,
765
+ G.current,
711
766
  q.current,
712
767
  J.current,
713
- Xe.current
714
- ]) e?.isConnected && e.getAttribute(te) !== null && e.setAttribute(te, h.RELEASED);
715
- G.current && (G.current.style.zIndex = ""), xt.current = e;
768
+ K.current
769
+ ]) e?.isConnected && e.getAttribute(g) !== null && e.setAttribute(g, h.RELEASED);
770
+ W.current && (W.current.style.zIndex = String(C + 1)), Ht.current = e;
716
771
  }
717
772
  {
718
- let t = () => Ct((t) => t.key === e && !t.released ? {
773
+ let t = () => Wt((t) => t.key === e && !t.released ? {
719
774
  key: e,
720
775
  released: !0
721
776
  } : t);
722
- n && Ee().deferReleaseCommit && typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => t()) : Pe(t);
777
+ n && Ve().deferReleaseCommit && typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => t()) : Ze(t);
723
778
  }
724
779
  }, {
725
- scope: K.current,
726
- decodeWait: bt.current,
727
- contentSettle: Ee().renderSettleGate && (b && A === "PUSHING" || A === "POPPING") ? {
780
+ scope: G.current,
781
+ decodeWait: Bt.current,
782
+ contentSettle: Ve().renderSettleGate && (x && j === "PUSHING" || j === "POPPING") ? {
728
783
  firstWaitMs: 120,
729
784
  capMs: 700,
730
785
  graceMs: 60,
731
- minNodes: b ? 30 : 1,
786
+ minNodes: x ? 30 : 1,
732
787
  renderSettleOnly: !0
733
788
  } : void 0
734
789
  });
735
790
  }, [
736
- wt,
791
+ Gt,
737
792
  Z,
738
793
  $,
739
- b,
740
- A,
741
- T.navigate
794
+ x,
795
+ j,
796
+ O.navigate,
797
+ C
742
798
  ]);
743
- let Et = $ === h.PARK_UNDER || $ === h.PARK_OVER ? {} : me({
744
- initial: je,
745
- isActive: b,
746
- status: A
799
+ let Jt = $ === h.PARK_UNDER || $ === h.PARK_OVER ? {} : Ee({
800
+ initial: Pe,
801
+ isActive: x,
802
+ status: j
747
803
  });
748
- return /* @__PURE__ */ Ne("div", {
749
- ref: G,
750
- onClickCapture: lt,
804
+ return /* @__PURE__ */ Ye("div", {
805
+ ref: W,
806
+ onClickCapture: Dt,
751
807
  style: {
752
- position: w,
808
+ position: D,
753
809
  top: 0,
754
810
  left: 0,
755
811
  width: "100%",
756
812
  height: "100%",
757
813
  display: "flex",
758
- zIndex: $ === h.PARK_UNDER ? -1 : void 0,
759
- contain: "layout style",
814
+ visibility: ue ? "hidden" : void 0,
815
+ zIndex: $ === h.PARK_UNDER ? C - 1 : C + 1,
816
+ isolation: "isolate",
817
+ contain: "style",
760
818
  flexDirection: "column",
761
819
  boxSizing: "border-box",
762
820
  overscrollBehavior: "contain"
763
821
  },
764
822
  children: [
765
- /* @__PURE__ */ Ne("div", {
766
- ref: K,
767
- ...v,
768
- onPointerDown: it,
769
- onPointerMove: at,
770
- onPointerUp: ot,
771
- onPointerCancel: st,
772
- onLostPointerCapture: ct,
773
- "data-flemo-screen": !0,
774
- "data-flemo-router": E ?? void 0,
775
- "data-flemo-transition": S,
776
- "data-flemo-status": A,
777
- "data-flemo-active": b ? "true" : "false",
823
+ /* @__PURE__ */ Ye("div", {
824
+ ref: G,
825
+ ...pe,
826
+ onPointerDown: St,
827
+ onPointerMove: Ct,
828
+ onPointerUp: wt,
829
+ onPointerCancel: Tt,
830
+ onLostPointerCapture: Et,
831
+ "data-flemo-screen": b,
832
+ "data-flemo-router": k ?? void 0,
833
+ "data-flemo-transition": w,
834
+ "data-flemo-status": j,
835
+ "data-flemo-active": x ? "true" : "false",
778
836
  "data-flemo-anim-hold": $,
779
837
  style: {
780
838
  display: "flex",
781
839
  flexDirection: "column",
782
840
  height: "100%",
783
- backgroundColor: _,
784
- overflowY: se ? void 0 : "auto",
785
- touchAction: Me === "x" ? "pan-y" : Me === "y" ? "pan-x" : "auto",
786
- ...Tt && le === D && !C ? { willChange: "transform" } : {},
787
- ...Et,
788
- ...v.style
841
+ backgroundColor: ce,
842
+ overflowY: le ? void 0 : "auto",
843
+ touchAction: Fe === "x" ? "pan-y" : Fe === "y" ? "pan-x" : "auto",
844
+ ...qt && C === A && !E ? { willChange: "transform" } : {},
845
+ ...Jt,
846
+ ...pe.style
789
847
  },
790
848
  children: [
791
849
  !ie && t && /* @__PURE__ */ P("div", {
792
850
  style: { minHeight: t },
793
851
  children: /* @__PURE__ */ P("div", { style: {
794
- position: w,
852
+ position: D,
795
853
  top: 0,
796
854
  width: "100%",
797
855
  minHeight: t,
798
856
  backgroundColor: n
799
857
  } })
800
858
  }),
801
- c && /* @__PURE__ */ P("div", {
802
- ref: Ze,
859
+ a && /* @__PURE__ */ P("div", {
860
+ ref: mt,
803
861
  "data-flemo-bar-spacer": "app",
804
862
  style: {
805
863
  width: "100%",
806
- minHeight: Je
864
+ minHeight: ft
807
865
  }
808
866
  }),
809
867
  ee,
@@ -812,27 +870,33 @@ function yt({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
812
870
  display: "flex",
813
871
  flexDirection: "column",
814
872
  flexGrow: 1,
815
- overflowY: se ? "auto" : void 0
873
+ overflowY: le ? "auto" : void 0
816
874
  },
817
- children: e
875
+ children: /* @__PURE__ */ P(jt.Provider, {
876
+ value: Je,
877
+ children: /* @__PURE__ */ P(Nt.Provider, {
878
+ value: Kt,
879
+ children: e
880
+ })
881
+ })
818
882
  }),
819
- re,
883
+ te,
820
884
  u && /* @__PURE__ */ P("div", {
821
- ref: Qe,
885
+ ref: ht,
822
886
  "data-flemo-bar-spacer": "nav",
823
887
  style: {
824
- display: Le ? "none" : void 0,
888
+ display: Be ? "none" : void 0,
825
889
  width: "100%",
826
- minHeight: Ye
890
+ minHeight: pt
827
891
  }
828
892
  }),
829
- !g && r && /* @__PURE__ */ P("div", {
893
+ !ae && r && /* @__PURE__ */ P("div", {
830
894
  style: {
831
- display: Le ? "none" : void 0,
895
+ display: Be ? "none" : void 0,
832
896
  minHeight: r
833
897
  },
834
898
  children: /* @__PURE__ */ P("div", { style: {
835
- position: w,
899
+ position: D,
836
900
  bottom: 0,
837
901
  width: "100%",
838
902
  minHeight: r,
@@ -841,88 +905,106 @@ function yt({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
841
905
  })
842
906
  ]
843
907
  }),
844
- c && /* @__PURE__ */ P("div", {
845
- ref: tt,
908
+ a && /* @__PURE__ */ P("div", {
909
+ ref: vt,
846
910
  "data-flemo-bar": "app",
847
911
  "data-flemo-bar-id": l,
848
912
  "data-flemo-bar-id-type": l === void 0 ? void 0 : typeof l,
849
- "data-flemo-router": E ?? void 0,
850
- "data-flemo-bar-transition": S,
851
- "data-flemo-bar-status": A,
852
- "data-flemo-bar-active": b ? "true" : "false",
853
- "data-flemo-bar-riding": dt ? "true" : "false",
913
+ "data-flemo-router": k ?? void 0,
914
+ "data-flemo-bar-transition": w,
915
+ "data-flemo-bar-status": j,
916
+ "data-flemo-bar-active": x ? "true" : "false",
917
+ "data-flemo-bar-riding": kt ? "true" : "false",
854
918
  "data-flemo-anim-hold": $,
855
919
  style: {
856
- position: w,
920
+ position: D,
857
921
  top: ie ? 0 : t,
858
922
  left: 0,
859
- width: "100%",
860
- zIndex: 1
923
+ width: "100%"
861
924
  },
862
- children: c
925
+ children: a
863
926
  }),
864
927
  u && /* @__PURE__ */ P("div", {
865
- ref: nt,
928
+ ref: yt,
866
929
  "data-flemo-bar": "nav",
867
- "data-flemo-bar-id": f,
868
- "data-flemo-bar-id-type": f === void 0 ? void 0 : typeof f,
869
- "data-flemo-router": E ?? void 0,
870
- "data-flemo-bar-transition": S,
871
- "data-flemo-bar-status": A,
872
- "data-flemo-bar-active": b ? "true" : "false",
873
- "data-flemo-bar-riding": ft ? "true" : "false",
930
+ "data-flemo-bar-id": d,
931
+ "data-flemo-bar-id-type": d === void 0 ? void 0 : typeof d,
932
+ "data-flemo-router": k ?? void 0,
933
+ "data-flemo-bar-transition": w,
934
+ "data-flemo-bar-status": j,
935
+ "data-flemo-bar-active": x ? "true" : "false",
936
+ "data-flemo-bar-riding": At ? "true" : "false",
874
937
  "data-flemo-anim-hold": $,
875
938
  style: {
876
- display: Le ? "none" : void 0,
877
- position: w,
878
- bottom: g ? 0 : r,
939
+ display: Be ? "none" : void 0,
940
+ position: D,
941
+ bottom: ae ? 0 : r,
879
942
  left: 0,
880
- width: "100%",
881
- zIndex: 1
943
+ width: "100%"
882
944
  },
883
945
  children: u
884
946
  }),
885
- Ie && /* @__PURE__ */ P(ht, {
886
- ref: Xe,
947
+ Re && /* @__PURE__ */ P(Lt, {
948
+ ref: K,
887
949
  "data-flemo-anim-hold": $
950
+ }),
951
+ Re && $e && Je ? Xe(/* @__PURE__ */ P(Lt, {
952
+ "data-flemo-anim-hold": $,
953
+ style: { zIndex: C * 2 + 1 }
954
+ }), Je) : null,
955
+ !qe && /* @__PURE__ */ P("div", {
956
+ ref: Ke,
957
+ [re]: "",
958
+ [v]: w,
959
+ [_]: j,
960
+ [ne]: x ? "true" : "false",
961
+ [g]: $,
962
+ style: {
963
+ position: "absolute",
964
+ inset: 0,
965
+ pointerEvents: "none",
966
+ zIndex: oe
967
+ }
888
968
  })
889
969
  ]
890
970
  });
891
971
  }
892
972
  //#endregion
893
973
  //#region src/screen/Screen.tsx
894
- function bt({ children: e, ...t }) {
895
- let { isActive: n, isPrev: r, zIndex: i } = L(), a = U((e) => e.index), o = mt((e) => e.status), c = Q((e) => e.dragStatus), l = Q((e) => e.replaceTransitionStatus), u = g({
974
+ function Ut({ children: e, ...t }) {
975
+ let { isActive: n, isPrev: r, zIndex: i } = L(), a = U((e) => e.index), o = It((e) => e.status), s = Q((e) => e.dragStatus), l = Q((e) => e.replaceTransitionStatus), u = pe({
896
976
  isActive: n,
897
977
  isPrev: r,
898
978
  zIndex: i,
899
979
  index: a,
900
980
  status: o,
901
- dragStatus: c,
981
+ dragStatus: s,
902
982
  replaceTransitionStatus: l
903
983
  }), [d, f] = m(u !== "live");
904
- return u === "live" && d && f(!1), u === "immediate" && !d && f(!0), s(() => {
984
+ return u === "live" && d && f(!1), u === "immediate" && !d && f(!0), c(() => {
905
985
  if (u !== "deferred" || d) return;
906
- let e = setTimeout(() => f(!0), xt);
986
+ let e = setTimeout(() => f(!0), Wt);
907
987
  return () => clearTimeout(e);
908
- }, [u, d]), /* @__PURE__ */ P(dt, {
988
+ }, [u, d]), /* @__PURE__ */ P(At, {
909
989
  freeze: d,
910
- children: /* @__PURE__ */ P(yt, {
990
+ mode: u,
991
+ children: /* @__PURE__ */ P(Ht, {
992
+ paintHidden: d,
911
993
  ...t,
912
994
  children: e
913
995
  })
914
996
  });
915
997
  }
916
- var xt = 600;
998
+ var Wt = 600;
917
999
  //#endregion
918
1000
  //#region src/screen/Part.tsx
919
- function St({ ref: e, name: t, style: n, children: r, ...i }) {
920
- let { isActive: a, isPrev: s, navigateStore: c, routerId: l } = L(), u = o(Re), d = l ?? u ?? void 0, f = F(), p = H(c ?? f.navigate, (e) => s ? "COMPLETED" : e.status);
1001
+ function Gt({ ref: e, name: t, style: n, children: r, ...i }) {
1002
+ let { isActive: a, isPrev: o, navigateStore: c, routerId: l } = L(), u = s(tt), d = l ?? u ?? void 0, f = F(), ee = H(c ?? f.navigate, (e) => o ? "COMPLETED" : e.status);
921
1003
  return /* @__PURE__ */ P("div", {
922
1004
  ref: e,
923
1005
  "data-flemo-part-name": t,
924
1006
  "data-flemo-router": d,
925
- "data-flemo-status": p,
1007
+ "data-flemo-status": ee,
926
1008
  "data-flemo-active": a ? "true" : "false",
927
1009
  style: n,
928
1010
  ...i,
@@ -930,22 +1012,83 @@ function St({ ref: e, name: t, style: n, children: r, ...i }) {
930
1012
  });
931
1013
  }
932
1014
  //#endregion
1015
+ //#region src/screen/Layer.tsx
1016
+ function $({ children: e }) {
1017
+ let t = Mt(), n = Z();
1018
+ return !t || !n ? null : Xe(/* @__PURE__ */ P("div", {
1019
+ ref: n.registerSlot,
1020
+ [ae]: "",
1021
+ [ie]: n.screenId,
1022
+ ...n.rendersHost ? {} : {
1023
+ [v]: n.transitionName,
1024
+ [_]: n.status,
1025
+ [ne]: n.isActive ? "true" : "false",
1026
+ [g]: n.animHold
1027
+ },
1028
+ style: {
1029
+ position: "absolute",
1030
+ inset: 0,
1031
+ pointerEvents: "none",
1032
+ zIndex: n.zIndex * 2,
1033
+ visibility: n.paintHidden ? "hidden" : void 0
1034
+ },
1035
+ children: /* @__PURE__ */ P("div", {
1036
+ style: {
1037
+ display: "contents",
1038
+ pointerEvents: "auto"
1039
+ },
1040
+ children: e
1041
+ })
1042
+ }), t);
1043
+ }
1044
+ //#endregion
1045
+ //#region src/screen/Morph.tsx
1046
+ function Kt({ ref: e, layoutId: t, name: n, as: r = "div", style: a, children: s, ...c }) {
1047
+ let { isActive: l, isPrev: u, navigateStore: d } = L(), ee = F(), m = d ?? ee.navigate, te = H(m, (e) => u ? "COMPLETED" : e.status), ne = p(null), h = o((t) => {
1048
+ ne.current = t, typeof e == "function" ? e(t) : e && (e.current = t);
1049
+ }, [e]);
1050
+ return f(() => {
1051
+ let e = ne.current;
1052
+ if (e) return le(e, {
1053
+ layoutId: t,
1054
+ name: n,
1055
+ navigateStore: m
1056
+ });
1057
+ }, [
1058
+ t,
1059
+ n,
1060
+ m,
1061
+ te,
1062
+ l
1063
+ ]), i(r, {
1064
+ "data-flemo-morph-slot": "",
1065
+ style: { display: "contents" }
1066
+ }, i(r, {
1067
+ ref: h,
1068
+ "data-flemo-morph": "",
1069
+ "data-flemo-morph-name": n,
1070
+ style: a,
1071
+ ...c
1072
+ }, s));
1073
+ }
1074
+ //#endregion
933
1075
  //#region src/stores/RouterScopeProvider.tsx
934
- function Ct({ children: e }) {
1076
+ function qt({ children: e }) {
935
1077
  let [t] = m(() => ({
936
- history: x(),
937
- navigate: ce(),
938
- transition: A(),
939
- screen: D(),
940
- driver: y(),
941
- markSelfInduced: N,
942
- consume: _,
1078
+ history: w(),
1079
+ navigate: E(),
1080
+ transition: M(),
1081
+ screen: ve(),
1082
+ driver: me(),
1083
+ memory: !1,
1084
+ markSelfInduced: Ae,
1085
+ consume: b,
943
1086
  life: { alive: !0 }
944
1087
  }));
945
- return /* @__PURE__ */ P(Fe.Provider, {
1088
+ return /* @__PURE__ */ P(Qe.Provider, {
946
1089
  value: t,
947
1090
  children: e
948
1091
  });
949
1092
  }
950
1093
  //#endregion
951
- export { St as Part, it as Route, X as Router, Ct as RouterScopeProvider, bt as Screen, I as ScreenContext, ht as ScreenDecorator, dt as ScreenFreeze, yt as ScreenMotion, q as Slot, v as createBrowserHistoryDriver, b as createDecorator, S as createPartTransition, ue as createRawDecorator, C as createRawPartTransition, w as createRawTransition, k as createTransition, Se as partTransitionMap, U as useHistoryStore, ot as useNavigate, mt as useNavigateStore, lt as useParams, st as usePathname, L as useScreen, Q as useScreenStore, ct as useStep, F as useStores, gt as useViewportScrollHeight };
1094
+ export { $ as Layer, Kt as Morph, Gt as Part, Ct as Route, St as Router, qt as RouterScopeProvider, Ut as Screen, I as ScreenContext, Lt as ScreenDecorator, At as ScreenFreeze, Ht as ScreenMotion, J as Slot, S as createBrowserHistoryDriver, C as createDecorator, T as createMorphTransition, O as createPartTransition, k as createRawDecorator, A as createRawMorphTransition, he as createRawPartTransition, ge as createRawTransition, xe as createTransition, Me as morphTransitionMap, Fe as partTransitionMap, U as useHistoryStore, Tt as useNavigate, It as useNavigateStore, Ot as useParams, Et as usePathname, L as useScreen, Q as useScreenStore, Dt as useStep, F as useStores, Rt as useViewportScrollHeight };