@flemo/react 1.5.4 → 1.5.5

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 +218 -206
  2. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -1,20 +1,20 @@
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 _, consumeSelfInducedPop as v, createBrowserHistoryDriver as y, createBrowserHistoryDriver as b, createDecorator as x, createHistoryStore as S, createHistorySync as C, createNavigateStore as te, createNavigationController as w, createPartTransition as T, createRawDecorator as E, createRawPartTransition as D, createRawTransition as O, createRouterScope as ne, createScreenSelector as re, createScreenStore as k, createStepController as A, createSwipeController as ie, createTransition as ae, createTransitionEngine as oe, createTransitionStore as se, decoratorMap as ce, ensureWindowHistoryState as le, enteringInitialStyle as ue, getMatchedPathPattern as de, isServer as j, markSelfInducedPop as fe, matchesPathname as pe, observeBarHeight as me, observeViewportScrollHeight as he, partTransitionMap as M, readStepParams as N, registerTransitionDefinitions as P, resolveTransition as ge, scheduleAnimHoldRelease as _e, subscribeStepParamsRestore as ve } from "@flemo/core";
3
- import { jsx as F, jsxs as ye } from "react/jsx-runtime";
2
+ import { animHoldKey as ee, appendParamsQuery as m, buildRoutePath as h, computeBarRiding as g, computeScreenFreeze as _, consumeSelfInducedPop as v, createBrowserHistoryDriver as y, createBrowserHistoryDriver as b, createDecorator as x, createHistoryStore as S, createHistorySync as C, createNavigateStore as w, createNavigationController as T, createPartTransition as E, createRawDecorator as D, createRawPartTransition as O, createRawTransition as k, createRouterScope as te, createScreenSelector as ne, createScreenStore as A, createStepController as j, createSwipeController as re, createTransition as M, createTransitionEngine as ie, createTransitionStore as ae, decoratorMap as oe, eagerlyDecodeImages as se, ensureWindowHistoryState as ce, enteringInitialStyle as le, getMatchedPathPattern as ue, isOpaqueColor as de, isServer as N, markSelfInducedPop as fe, matchesPathname as pe, observeBarHeight as me, observeViewportScrollHeight as he, partTransitionMap as ge, readStepParams as P, registerTransitionDefinitions as F, resolveTransition as _e, scheduleAnimHoldRelease as ve, subscribeStepParamsRestore as I } from "@flemo/core";
3
+ import { jsx as L, jsxs as ye } from "react/jsx-runtime";
4
4
  import { createPortal as be } from "react-dom";
5
5
  //#region src/stores/StoreContext.ts
6
- var I = r(null);
6
+ var R = r(null);
7
7
  //#endregion
8
8
  //#region src/stores/useStores.ts
9
- function L() {
10
- let e = a(I);
9
+ function z() {
10
+ let e = a(R);
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
16
  function xe() {
17
- let e = L();
17
+ let e = z();
18
18
  return o(() => C({
19
19
  stores: e,
20
20
  driver: e.driver,
@@ -23,7 +23,7 @@ function xe() {
23
23
  }
24
24
  //#endregion
25
25
  //#region src/screen/ScreenContext.ts
26
- var R = r({
26
+ var B = r({
27
27
  id: "",
28
28
  isActive: !1,
29
29
  isRoot: !0,
@@ -38,15 +38,15 @@ var R = r({
38
38
  });
39
39
  //#endregion
40
40
  //#region src/screen/useScreen.ts
41
- function z() {
42
- return a(R);
41
+ function V() {
42
+ return a(B);
43
43
  }
44
44
  //#endregion
45
45
  //#region src/screen/ParamsProvider/ParamsContext.ts
46
- var Se = r({}), B = r(() => {});
46
+ var Se = r({}), Ce = r(() => {});
47
47
  //#endregion
48
48
  //#region src/screen/ParamsProvider/ParamsReducer.ts
49
- function V(e, t) {
49
+ function we(e, t) {
50
50
  switch (t.type) {
51
51
  case "SET": return t.params;
52
52
  default: return e;
@@ -55,9 +55,9 @@ function V(e, t) {
55
55
  //#endregion
56
56
  //#region src/screen/ParamsProvider/ParamsProvider.tsx
57
57
  function H({ children: e }) {
58
- let { isActive: t, params: n } = z(), { driver: r } = L(), [i, a] = d(V, n);
58
+ let { isActive: t, params: n } = V(), { driver: r } = z(), [i, a] = d(we, n);
59
59
  return o(() => {
60
- if (t) return ve(r, (e) => a({
60
+ if (t) return I(r, (e) => a({
61
61
  type: "SET",
62
62
  params: e
63
63
  }));
@@ -65,9 +65,9 @@ function H({ children: e }) {
65
65
  t,
66
66
  a,
67
67
  r
68
- ]), /* @__PURE__ */ F(B.Provider, {
68
+ ]), /* @__PURE__ */ L(Ce.Provider, {
69
69
  value: a,
70
- children: /* @__PURE__ */ F(Se.Provider, {
70
+ children: /* @__PURE__ */ L(Se.Provider, {
71
71
  value: i,
72
72
  children: e
73
73
  })
@@ -83,33 +83,33 @@ function W(t, n = U) {
83
83
  //#endregion
84
84
  //#region src/stores/useHistoryStore.ts
85
85
  function G(e) {
86
- return W(L().history, e);
86
+ return W(z().history, e);
87
87
  }
88
88
  //#endregion
89
89
  //#region src/renderer/Renderer.tsx
90
90
  function K({ children: e }) {
91
91
  let t = G((e) => e.index);
92
- return re(G((e) => e.histories), t).map((t) => {
92
+ return ne(G((e) => e.histories), t).map((t) => {
93
93
  let [r] = n.toArray(e).filter((e) => pe(e.props.path, t.pathname));
94
- return /* @__PURE__ */ F(R.Provider, {
94
+ return /* @__PURE__ */ L(B.Provider, {
95
95
  value: {
96
96
  ...t,
97
- routePath: de(r.props.path, t.pathname)
97
+ routePath: ue(r.props.path, t.pathname)
98
98
  },
99
- children: /* @__PURE__ */ F(H, { children: r })
99
+ children: /* @__PURE__ */ L(H, { children: r })
100
100
  }, t.id);
101
101
  });
102
102
  }
103
103
  //#endregion
104
104
  //#region src/screen/ScreenViewportContext.ts
105
105
  var q = r({ contained: !1 });
106
- function Ce() {
106
+ function Te() {
107
107
  return a(q);
108
108
  }
109
109
  //#endregion
110
110
  //#region src/transition/styles.ts
111
- function J(e, t, n = []) {
112
- l(() => P(e, t, n), [
111
+ function Ee(e, t, n = []) {
112
+ l(() => F(e, t, n), [
113
113
  e,
114
114
  t,
115
115
  n
@@ -117,106 +117,106 @@ function J(e, t, n = []) {
117
117
  }
118
118
  //#endregion
119
119
  //#region src/RouterDepthContext.ts
120
- var we = r(0), Te = { contained: !0 };
121
- function Y({ children: e, className: t, style: n }) {
122
- return /* @__PURE__ */ F("div", {
120
+ var J = r(0), De = { contained: !0 };
121
+ function Oe({ children: e, className: t, style: n }) {
122
+ return /* @__PURE__ */ L("div", {
123
123
  className: t,
124
124
  style: {
125
125
  position: "relative",
126
126
  overflow: "hidden",
127
127
  ...n
128
128
  },
129
- children: /* @__PURE__ */ F(q.Provider, {
130
- value: Te,
131
- children: /* @__PURE__ */ F(K, { children: e })
129
+ children: /* @__PURE__ */ L(q.Provider, {
130
+ value: De,
131
+ children: /* @__PURE__ */ L(K, { children: e })
132
132
  })
133
133
  });
134
134
  }
135
135
  //#endregion
136
136
  //#region src/Router.tsx
137
- function Ee(e) {
137
+ function Y(e) {
138
138
  let t = null;
139
139
  return n.forEach(e, (e) => {
140
140
  if (t || !i(e)) return;
141
- if (e.type === Y) {
141
+ if (e.type === Oe) {
142
142
  t = n.toArray(e.props.children).filter(i);
143
143
  return;
144
144
  }
145
145
  let r = e.props.children;
146
146
  if (r) {
147
- let e = Ee(r);
147
+ let e = Y(r);
148
148
  e && (t = e);
149
149
  }
150
150
  }), t;
151
151
  }
152
- var De = [], Oe = [], X = [], ke = { contained: !0 };
153
- function Ae({ children: e, initPath: t = "/", defaultTransitionName: r = "cupertino", transitions: i = De, decorators: c = Oe, partTransitions: l = X, history: u = "browser", createDriver: d, className: f, style: ee }) {
154
- let m = a(we), h = m > 0, g = u === "memory", _ = s(), v = Ee(e), y = v !== null, x = a(I), S = h ? null : x, C = S !== null, te = d ?? b, [w] = p(() => g ? null : te(C ? void 0 : _)), T = !h && !g && !j(), E = T && w ? w.readPathname() : t || "/", D = E.indexOf("?"), O = (D >= 0 ? E.slice(0, D) : E) || "/", re = T ? window.location.search : D >= 0 ? E.slice(D) : "", [k] = p(() => ne({
152
+ var ke = [], Ae = [], je = [], X = { contained: !0 };
153
+ function Me({ children: e, initPath: t = "/", defaultTransitionName: r = "cupertino", transitions: i = ke, decorators: c = Ae, partTransitions: l = je, history: u = "browser", createDriver: d, className: f, style: ee }) {
154
+ let m = a(J), h = m > 0, g = u === "memory", _ = s(), v = Y(e), y = v !== null, x = a(R), S = h ? null : x, C = S !== null, w = d ?? b, [T] = p(() => g ? null : w(C ? void 0 : _)), E = !h && !g && !N(), D = E && T ? T.readPathname() : t || "/", O = D.indexOf("?"), k = (O >= 0 ? D.slice(0, O) : D) || "/", ne = E ? window.location.search : O >= 0 ? D.slice(O) : "", [A] = p(() => te({
155
155
  routePaths: (v ?? n.toArray(e)).map((e) => e.props.path).flat(),
156
- pathname: O,
157
- search: re,
156
+ pathname: k,
157
+ search: ne,
158
158
  defaultTransitionName: r,
159
159
  memory: g,
160
- browserDriver: w,
160
+ browserDriver: T,
161
161
  hostedScope: S
162
162
  }));
163
- k.transition.setState({ defaultTransitionName: r }), J(i, c, l), o(() => {
164
- g || j() || (le(C ? null : _, r, k.history.getState().histories[0]?.params ?? {}), h && !C && w && w.readPathname() !== O && w.replaceState(w.readState(), O));
163
+ A.transition.setState({ defaultTransitionName: r }), Ee(i, c, l), o(() => {
164
+ g || N() || (ce(C ? null : _, r, A.history.getState().histories[0]?.params ?? {}), h && !C && T && T.readPathname() !== k && T.replaceState(T.readState(), k));
165
165
  }, [
166
166
  g,
167
167
  C,
168
168
  h,
169
169
  _,
170
- O,
170
+ k,
171
171
  r,
172
- k.history,
173
- w
172
+ A.history,
173
+ T
174
174
  ]);
175
- let A = y ? e : /* @__PURE__ */ F(K, { children: e }), ie = /* @__PURE__ */ F(we.Provider, {
175
+ let j = y ? e : /* @__PURE__ */ L(K, { children: e }), re = /* @__PURE__ */ L(J.Provider, {
176
176
  value: m + 1,
177
- children: /* @__PURE__ */ ye(I.Provider, {
178
- value: k,
179
- children: [!g && /* @__PURE__ */ F(xe, {}), h ? /* @__PURE__ */ F(q.Provider, {
180
- value: ke,
181
- children: A
182
- }) : A]
177
+ children: /* @__PURE__ */ ye(R.Provider, {
178
+ value: A,
179
+ children: [!g && /* @__PURE__ */ L(xe, {}), h ? /* @__PURE__ */ L(q.Provider, {
180
+ value: X,
181
+ children: j
182
+ }) : j]
183
183
  })
184
184
  });
185
- return h ? /* @__PURE__ */ F("div", {
185
+ return h ? /* @__PURE__ */ L("div", {
186
186
  className: f,
187
187
  style: {
188
188
  position: "relative",
189
189
  overflow: "hidden",
190
190
  ...ee
191
191
  },
192
- children: ie
193
- }) : ie;
192
+ children: re
193
+ }) : re;
194
194
  }
195
195
  //#endregion
196
196
  //#region src/Route.tsx
197
- function Z({ element: e }) {
197
+ function Ne({ element: e }) {
198
198
  return e;
199
199
  }
200
200
  //#endregion
201
201
  //#region src/screen/LayerMountContext.ts
202
- var je = r(null);
202
+ var Pe = r(null);
203
203
  //#endregion
204
204
  //#region src/screen/Layer.tsx
205
- function Me({ children: e }) {
206
- let t = a(je);
205
+ function Fe({ children: e }) {
206
+ let t = a(Pe);
207
207
  return t ? be(e, t) : e;
208
208
  }
209
209
  //#endregion
210
210
  //#region src/utils/buildRoutePath.ts
211
- function Ne(e, t) {
211
+ function Z(e, t) {
212
212
  return h(e, t);
213
213
  }
214
214
  //#endregion
215
215
  //#region src/navigate/useNavigate.ts
216
- function Pe() {
217
- let e = L(), t = w({
216
+ function Ie() {
217
+ let e = z(), t = T({
218
218
  stores: e,
219
- buildPathname: (e, t) => Ne(e, t),
219
+ buildPathname: (e, t) => Z(e, t),
220
220
  driver: e.driver,
221
221
  markSelfInduced: e.markSelfInduced
222
222
  });
@@ -228,21 +228,21 @@ function Pe() {
228
228
  }
229
229
  //#endregion
230
230
  //#region src/navigate/usePathname.ts
231
- function Fe() {
231
+ function Le() {
232
232
  return G((e) => e.histories[e.pendingIndex]?.pathname ?? "/");
233
233
  }
234
234
  //#endregion
235
235
  //#region src/navigate/useStep.ts
236
- function Ie() {
237
- let { routePath: e } = z(), t = L(), n = a(B), { driver: r, markSelfInduced: i } = t, [s, c] = p(null);
236
+ function Re() {
237
+ let { routePath: e } = V(), t = z(), n = a(Ce), { driver: r, markSelfInduced: i } = t, [s, c] = p(null);
238
238
  o(() => {
239
- if (!e) return c(N(r.readState())), r.subscribe((e) => c(N(e.state)));
239
+ if (!e) return c(P(r.readState())), r.subscribe((e) => c(P(e.state)));
240
240
  }, [e, r]);
241
- let l = A({
241
+ let l = j({
242
242
  stores: t,
243
243
  driver: r,
244
244
  markSelfInduced: i,
245
- buildStepPathname: (t) => e ? Ne(e, t).pathname : m(r.readPathname(), t),
245
+ buildStepPathname: (t) => e ? Z(e, t).pathname : m(r.readPathname(), t),
246
246
  applyParams: (t) => {
247
247
  n({
248
248
  type: "SET",
@@ -259,13 +259,13 @@ function Ie() {
259
259
  }
260
260
  //#endregion
261
261
  //#region src/screen/ParamsProvider/useParams.ts
262
- function Le() {
262
+ function ze() {
263
263
  return a(Se);
264
264
  }
265
265
  //#endregion
266
266
  //#region src/screen/ScreenFreeze.tsx
267
- function Re({ freeze: e, children: n }) {
268
- return /* @__PURE__ */ F(t, {
267
+ function Be({ freeze: e, children: n }) {
268
+ return /* @__PURE__ */ L(t, {
269
269
  mode: e ? "hidden" : "visible",
270
270
  children: n
271
271
  });
@@ -273,15 +273,15 @@ function Re({ freeze: e, children: n }) {
273
273
  //#endregion
274
274
  //#region src/stores/useNavigateStore.ts
275
275
  function Q(e) {
276
- return W(L().navigate, e);
276
+ return W(z().navigate, e);
277
277
  }
278
278
  //#endregion
279
279
  //#region src/screen/ScreenDecorator.tsx
280
- function ze({ ref: e, style: t, ...n }) {
281
- let { isActive: r, transitionName: i } = z(), a = f(null);
280
+ function Ve({ ref: e, style: t, ...n }) {
281
+ let { isActive: r, transitionName: i } = V(), a = f(null);
282
282
  c(e, () => a.current);
283
- let o = Q((e) => e.status), { decoratorName: s } = ge(i), l = ce.get(s);
284
- return l ? /* @__PURE__ */ F("div", {
283
+ let o = Q((e) => e.status), { decoratorName: s } = _e(i), l = oe.get(s);
284
+ return l ? /* @__PURE__ */ L("div", {
285
285
  ref: a,
286
286
  "data-flemo-decorator": !0,
287
287
  "data-flemo-decorator-name": l.name,
@@ -302,7 +302,7 @@ function ze({ ref: e, style: t, ...n }) {
302
302
  }
303
303
  //#endregion
304
304
  //#region src/screen/useViewportScrollHeight.ts
305
- function Be() {
305
+ function He() {
306
306
  let [e, t] = p(0), [n, r] = p(0);
307
307
  return o(() => he((e, n) => {
308
308
  r(n), t(e);
@@ -314,69 +314,71 @@ function Be() {
314
314
  //#endregion
315
315
  //#region src/stores/useScreenStore.ts
316
316
  function $(e) {
317
- return W(L().screen, e);
317
+ return W(z().screen, e);
318
318
  }
319
319
  //#endregion
320
320
  //#region src/screen/ScreenMotion.tsx
321
- function Ve({ 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 }) {
322
- let { id: y, isActive: b, isRoot: x, zIndex: S, transitionName: C, prevTransitionName: te } = z(), { contained: w } = Ce(), T = w ? "absolute" : "fixed", E = L(), D = Q((e) => e.status), O = $((e) => e.dragStatus), ne = E.screen.getState().setDragStatus, re = E.screen.getState().setReplaceTransitionStatus, k = G((e) => e.index), A = G((e) => e.histories), ae = b ? A[k - 1]?.id : A[k]?.id, se = $((e) => ae ? e.sharedBars[ae] : void 0), le = f(null);
323
- le.current ||= oe({
324
- getTransitionTaskId: () => E.navigate.getState().transitionTaskId,
325
- setDragStatus: ne,
326
- setReplaceTransitionStatus: re
321
+ function Ue({ 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 }) {
322
+ let { id: y, isActive: b, isRoot: x, zIndex: S, transitionName: C, prevTransitionName: w } = V(), { contained: T } = Te(), E = T ? "absolute" : "fixed", D = z(), O = Q((e) => e.status), k = $((e) => e.dragStatus), te = D.screen.getState().setDragStatus, ne = D.screen.getState().setReplaceTransitionStatus, A = G((e) => e.index), j = G((e) => e.histories), M = b ? j[A - 1]?.id : j[A]?.id, ae = $((e) => M ? e.sharedBars[M] : void 0), ce = $((e) => M ? e.screenSurfaces[M] : void 0), ue = f(null);
323
+ ue.current ||= ie({
324
+ getTransitionTaskId: () => D.navigate.getState().transitionTaskId,
325
+ setDragStatus: te,
326
+ setReplaceTransitionStatus: ne
327
327
  });
328
- let de = le.current, j = ge(C), { initial: fe, swipeDirection: pe, decoratorName: he } = j, M = ce.get(he), { viewportScrollHeight: N } = Be(), P = N > 0, [ve, be] = p(0), [I, xe] = p(0), [R, Se] = p(null), B = f(null), V = f(null), H = f(null), U = f(null), W = f(null), K = f({
329
- transition: j,
330
- decorator: M,
328
+ let N = ue.current, fe = _e(C), { initial: pe, swipeDirection: he, decoratorName: ge } = fe, P = oe.get(ge), { viewportScrollHeight: F } = He(), I = F > 0, [be, R] = p(0), [xe, B] = p(0), [Se, Ce] = p(null), we = f(null), H = f(null), U = f(null), W = f(null), K = f(null), q = f({
329
+ transition: fe,
330
+ decorator: P,
331
331
  hasSharedTopBar: !!a,
332
332
  hasSharedBottomBar: !!s,
333
- viewportScrollHeight: N,
333
+ viewportScrollHeight: F,
334
334
  isRoot: x,
335
335
  isActive: b,
336
- status: D,
337
- dragStatus: O,
338
- index: k
336
+ status: O,
337
+ dragStatus: k,
338
+ index: A
339
339
  });
340
- K.current = {
341
- transition: j,
342
- decorator: M,
340
+ q.current = {
341
+ transition: fe,
342
+ decorator: P,
343
343
  hasSharedTopBar: !!a,
344
344
  hasSharedBottomBar: !!s,
345
- viewportScrollHeight: N,
345
+ viewportScrollHeight: F,
346
346
  isRoot: x,
347
347
  isActive: b,
348
- status: D,
349
- dragStatus: O,
350
- index: k
348
+ status: O,
349
+ dragStatus: k,
350
+ index: A
351
351
  };
352
- let q = f(null);
353
- q.current ||= ie({
354
- getTransition: () => K.current.transition,
355
- getDecorator: () => K.current.decorator,
352
+ let Ee = f(null);
353
+ Ee.current ||= re({
354
+ getTransition: () => q.current.transition,
355
+ getDecorator: () => q.current.decorator,
356
356
  getElements: () => ({
357
- scope: V.current,
358
- screenContainer: B.current,
359
- decorator: H.current,
360
- sharedTopBar: U.current,
361
- sharedBottomBar: W.current
357
+ scope: H.current,
358
+ screenContainer: we.current,
359
+ decorator: U.current,
360
+ sharedTopBar: W.current,
361
+ sharedBottomBar: K.current
362
362
  }),
363
- hasSharedTopBar: () => K.current.hasSharedTopBar,
364
- hasSharedBottomBar: () => K.current.hasSharedBottomBar,
365
- getViewportScrollHeight: () => K.current.viewportScrollHeight,
363
+ hasSharedTopBar: () => q.current.hasSharedTopBar,
364
+ hasSharedBottomBar: () => q.current.hasSharedBottomBar,
365
+ getViewportScrollHeight: () => q.current.viewportScrollHeight,
366
366
  isReadyForDrag: () => {
367
- let e = K.current;
367
+ let e = q.current;
368
368
  return !e.isRoot && e.isActive && e.status === "COMPLETED" && e.dragStatus === "IDLE" && !!e.transition.swipeDirection && e.viewportScrollHeight < 10;
369
369
  },
370
370
  getPartnerBars: () => {
371
- let e = K.current, t = E.history.getState().histories, n = e.isActive ? t[e.index - 1]?.id : t[e.index]?.id;
372
- return n ? E.screen.getState().sharedBars[n] : void 0;
371
+ let e = q.current, t = D.history.getState().histories, n = e.isActive ? t[e.index - 1]?.id : t[e.index]?.id;
372
+ return n ? D.screen.getState().sharedBars[n] : void 0;
373
373
  },
374
- setDragStatus: ne,
374
+ setDragStatus: te,
375
375
  back: () => window.history.back()
376
376
  });
377
- let J = q.current, we = (e) => J.pointerDown(e.nativeEvent), Te = (e) => J.pointerMove(e.nativeEvent), Y = (e) => J.pointerUp(e.nativeEvent);
377
+ let J = Ee.current, De = (e) => J.pointerDown(e.nativeEvent), Oe = (e) => J.pointerMove(e.nativeEvent), Y = (e) => J.pointerUp(e.nativeEvent);
378
378
  o(() => {
379
- let e = V.current;
379
+ se(H.current);
380
+ }, []), o(() => {
381
+ let e = H.current;
380
382
  if (!e) return;
381
383
  let t = (e) => {
382
384
  J.shouldPreventTouch() && e.preventDefault(), e.target?.dataset.swipeAtEdgeBar === "true" && e.preventDefault();
@@ -384,38 +386,38 @@ function Ve({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
384
386
  return e.addEventListener("touchmove", t, { passive: !1 }), () => {
385
387
  e.removeEventListener("touchmove", t);
386
388
  };
387
- }, [J]), u(() => de.driveScreenLifecycle({
389
+ }, [J]), u(() => N.driveScreenLifecycle({
388
390
  getElements: () => ({
389
- scope: V.current,
390
- decorator: H.current,
391
- bars: [U.current, W.current]
391
+ scope: H.current,
392
+ decorator: U.current,
393
+ bars: [W.current, K.current]
392
394
  }),
393
395
  transitionName: C,
394
- prevTransitionName: te,
395
- status: D,
396
+ prevTransitionName: w,
397
+ status: O,
396
398
  isActive: b
397
399
  }), [
398
- de,
399
- D,
400
+ N,
401
+ O,
400
402
  b,
401
- te,
403
+ w,
402
404
  C
403
405
  ]), u(() => {
404
- let e = U.current;
406
+ let e = W.current;
405
407
  if (!e) {
406
- be(0);
408
+ R(0);
407
409
  return;
408
410
  }
409
- return me(e, be);
411
+ return me(e, R);
410
412
  }, [a]), u(() => {
411
- let e = W.current;
413
+ let e = K.current;
412
414
  if (!e) {
413
- xe(0);
415
+ B(0);
414
416
  return;
415
417
  }
416
- return me(e, xe);
418
+ return me(e, B);
417
419
  }, [s]), u(() => {
418
- let { registerSharedBars: e, unregisterSharedBars: t } = E.screen.getState();
420
+ let { registerSharedBars: e, unregisterSharedBars: t } = D.screen.getState();
419
421
  return e(y, {
420
422
  topBar: !!a,
421
423
  bottomBar: !!s
@@ -424,42 +426,52 @@ function Ve({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
424
426
  y,
425
427
  a,
426
428
  s,
427
- E.screen
429
+ D.screen
430
+ ]), u(() => {
431
+ let e = H.current;
432
+ if (!e) return;
433
+ let { registerScreenSurface: t, unregisterScreenSurface: n } = D.screen.getState();
434
+ return t(y, { opaqueBackground: de(getComputedStyle(e).backgroundColor) }), () => n(y);
435
+ }, [
436
+ y,
437
+ h,
438
+ O,
439
+ D.screen
428
440
  ]);
429
- let Ee = b || S === k - 1, { app: De, nav: Oe } = g({
430
- status: D,
431
- isTopOrTopPrev: Ee,
441
+ let ke = b || S === A - 1, { app: Ae, nav: je } = g({
442
+ status: O,
443
+ isTopOrTopPrev: ke,
432
444
  hasTopBar: !!a,
433
445
  hasNavBar: !!s,
434
- partnerBars: se
446
+ partnerBars: ae
435
447
  }), X = ee({
436
- status: D,
437
- isTopOrTopPrev: Ee,
448
+ status: O,
449
+ isTopOrTopPrev: ke,
438
450
  transitionName: C
439
- }), [ke, Ae] = p({
451
+ }), [Me, Ne] = p({
440
452
  key: X,
441
453
  released: X === null
442
454
  });
443
- ke.key !== X && Ae({
455
+ Me.key !== X && Ne({
444
456
  key: X,
445
457
  released: X === null
446
458
  });
447
- let Z = X !== null && ke.key === X && !ke.released;
459
+ let Fe = X !== null && Me.key === X && !Me.released, Z = Fe ? !b && ce?.opaqueBackground ? "park" : "true" : "false";
448
460
  o(() => {
449
- if (Z) return _e(() => Ae((e) => e.key === X && !e.released ? {
461
+ if (Fe) return ve(() => Ne((e) => e.key === X && !e.released ? {
450
462
  key: X,
451
463
  released: !0
452
464
  } : e));
453
- }, [Z, X]);
454
- let Me = ue({
455
- initial: fe,
465
+ }, [Fe, X]);
466
+ let Ie = le({
467
+ initial: pe,
456
468
  isActive: b,
457
- status: D
469
+ status: O
458
470
  });
459
471
  return /* @__PURE__ */ ye("div", {
460
- ref: B,
472
+ ref: we,
461
473
  style: {
462
- position: T,
474
+ position: E,
463
475
  top: 0,
464
476
  left: 0,
465
477
  width: "100%",
@@ -471,10 +483,10 @@ function Ve({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
471
483
  overscrollBehavior: "contain"
472
484
  },
473
485
  children: [
474
- /* @__PURE__ */ F("div", {
486
+ /* @__PURE__ */ L("div", {
475
487
  "data-swipe-at-edge-bar": !0,
476
488
  style: {
477
- position: T,
489
+ position: E,
478
490
  top: 0,
479
491
  left: 0,
480
492
  width: 8,
@@ -483,94 +495,94 @@ function Ve({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
483
495
  }
484
496
  }),
485
497
  /* @__PURE__ */ ye("div", {
486
- ref: V,
498
+ ref: H,
487
499
  ...v,
488
- onPointerDown: we,
489
- onPointerMove: Te,
500
+ onPointerDown: De,
501
+ onPointerMove: Oe,
490
502
  onPointerUp: Y,
491
503
  onPointerCancel: Y,
492
504
  "data-flemo-screen": !0,
493
505
  "data-flemo-transition": C,
494
- "data-flemo-status": D,
506
+ "data-flemo-status": O,
495
507
  "data-flemo-active": b ? "true" : "false",
496
- "data-flemo-anim-hold": Z ? "true" : "false",
508
+ "data-flemo-anim-hold": Z,
497
509
  style: {
498
510
  display: "flex",
499
511
  flexDirection: "column",
500
512
  height: "100%",
501
513
  backgroundColor: h,
502
514
  overflowY: _ ? void 0 : "auto",
503
- touchAction: pe === "x" ? "pan-y" : pe === "y" ? "pan-x" : "auto",
504
- ...Me,
515
+ touchAction: he === "x" ? "pan-y" : he === "y" ? "pan-x" : "auto",
516
+ ...Ie,
505
517
  ...v.style
506
518
  },
507
519
  children: [
508
- !d && t && /* @__PURE__ */ F("div", {
520
+ !d && t && /* @__PURE__ */ L("div", {
509
521
  style: { minHeight: t },
510
- children: /* @__PURE__ */ F("div", { style: {
511
- position: T,
522
+ children: /* @__PURE__ */ L("div", { style: {
523
+ position: E,
512
524
  top: 0,
513
525
  width: "100%",
514
526
  minHeight: t,
515
527
  backgroundColor: n
516
528
  } })
517
529
  }),
518
- a && /* @__PURE__ */ F("div", { style: {
530
+ a && /* @__PURE__ */ L("div", { style: {
519
531
  width: "100%",
520
- minHeight: ve
532
+ minHeight: be
521
533
  } }),
522
534
  c,
523
- /* @__PURE__ */ F("div", {
535
+ /* @__PURE__ */ L("div", {
524
536
  style: {
525
537
  display: "flex",
526
538
  flexDirection: "column",
527
539
  flexGrow: 1,
528
540
  overflowY: _ ? "auto" : void 0,
529
- ...D !== "IDLE" && D !== "COMPLETED" ? {
541
+ ...O !== "IDLE" && O !== "COMPLETED" ? {
530
542
  transform: "translateZ(0)",
531
543
  willChange: "transform"
532
544
  } : null
533
545
  },
534
- children: /* @__PURE__ */ F(je.Provider, {
535
- value: R,
546
+ children: /* @__PURE__ */ L(Pe.Provider, {
547
+ value: Se,
536
548
  children: e
537
549
  })
538
550
  }),
539
551
  l,
540
- s && /* @__PURE__ */ F("div", { style: {
541
- display: P ? "none" : void 0,
552
+ s && /* @__PURE__ */ L("div", { style: {
553
+ display: I ? "none" : void 0,
542
554
  width: "100%",
543
- minHeight: I
555
+ minHeight: xe
544
556
  } }),
545
- !m && r && /* @__PURE__ */ F("div", {
557
+ !m && r && /* @__PURE__ */ L("div", {
546
558
  style: {
547
- display: P ? "none" : void 0,
559
+ display: I ? "none" : void 0,
548
560
  minHeight: r
549
561
  },
550
- children: /* @__PURE__ */ F("div", { style: {
551
- position: T,
562
+ children: /* @__PURE__ */ L("div", { style: {
563
+ position: E,
552
564
  bottom: 0,
553
565
  width: "100%",
554
566
  minHeight: r,
555
567
  backgroundColor: i
556
568
  } })
557
569
  }),
558
- /* @__PURE__ */ F("div", {
559
- ref: Se,
570
+ /* @__PURE__ */ L("div", {
571
+ ref: Ce,
560
572
  "data-flemo-layer-mount": !0
561
573
  })
562
574
  ]
563
575
  }),
564
- a && /* @__PURE__ */ F("div", {
565
- ref: U,
576
+ a && /* @__PURE__ */ L("div", {
577
+ ref: W,
566
578
  "data-flemo-bar": "app",
567
579
  "data-flemo-bar-transition": C,
568
- "data-flemo-bar-status": D,
580
+ "data-flemo-bar-status": O,
569
581
  "data-flemo-bar-active": b ? "true" : "false",
570
- "data-flemo-bar-riding": De ? "true" : "false",
571
- "data-flemo-anim-hold": Z ? "true" : "false",
582
+ "data-flemo-bar-riding": Ae ? "true" : "false",
583
+ "data-flemo-anim-hold": Z,
572
584
  style: {
573
- position: T,
585
+ position: E,
574
586
  top: d ? 0 : t,
575
587
  left: 0,
576
588
  width: "100%",
@@ -578,17 +590,17 @@ function Ve({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
578
590
  },
579
591
  children: a
580
592
  }),
581
- s && /* @__PURE__ */ F("div", {
582
- ref: W,
593
+ s && /* @__PURE__ */ L("div", {
594
+ ref: K,
583
595
  "data-flemo-bar": "nav",
584
596
  "data-flemo-bar-transition": C,
585
- "data-flemo-bar-status": D,
597
+ "data-flemo-bar-status": O,
586
598
  "data-flemo-bar-active": b ? "true" : "false",
587
- "data-flemo-bar-riding": Oe ? "true" : "false",
588
- "data-flemo-anim-hold": Z ? "true" : "false",
599
+ "data-flemo-bar-riding": je ? "true" : "false",
600
+ "data-flemo-anim-hold": Z,
589
601
  style: {
590
- display: P ? "none" : void 0,
591
- position: T,
602
+ display: I ? "none" : void 0,
603
+ position: E,
592
604
  bottom: m ? 0 : r,
593
605
  left: 0,
594
606
  width: "100%",
@@ -596,14 +608,14 @@ function Ve({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
596
608
  },
597
609
  children: s
598
610
  }),
599
- M && /* @__PURE__ */ F(ze, {
600
- ref: H,
601
- "data-flemo-anim-hold": Z ? "true" : "false"
611
+ P && /* @__PURE__ */ L(Ve, {
612
+ ref: U,
613
+ "data-flemo-anim-hold": Z
602
614
  }),
603
- /* @__PURE__ */ F("div", {
615
+ /* @__PURE__ */ L("div", {
604
616
  "data-swipe-at-edge-bar": !0,
605
617
  style: {
606
- position: T,
618
+ position: E,
607
619
  top: 0,
608
620
  right: 0,
609
621
  width: 8,
@@ -616,9 +628,9 @@ function Ve({ children: e, statusBarHeight: t, statusBarColor: n, systemNavigati
616
628
  }
617
629
  //#endregion
618
630
  //#region src/screen/Screen.tsx
619
- function He({ children: e, ...t }) {
620
- let { isActive: n, isPrev: r, zIndex: i } = z();
621
- return /* @__PURE__ */ F(Re, {
631
+ function We({ children: e, ...t }) {
632
+ let { isActive: n, isPrev: r, zIndex: i } = V();
633
+ return /* @__PURE__ */ L(Be, {
622
634
  freeze: _({
623
635
  isActive: n,
624
636
  isPrev: r,
@@ -628,7 +640,7 @@ function He({ children: e, ...t }) {
628
640
  dragStatus: $((e) => e.dragStatus),
629
641
  replaceTransitionStatus: $((e) => e.replaceTransitionStatus)
630
642
  }),
631
- children: /* @__PURE__ */ F(Ve, {
643
+ children: /* @__PURE__ */ L(Ue, {
632
644
  ...t,
633
645
  children: e
634
646
  })
@@ -636,9 +648,9 @@ function He({ children: e, ...t }) {
636
648
  }
637
649
  //#endregion
638
650
  //#region src/screen/Part.tsx
639
- function Ue({ ref: e, name: t, style: n, children: r, ...i }) {
640
- let { isActive: a } = z();
641
- return /* @__PURE__ */ F("div", {
651
+ function Ge({ ref: e, name: t, style: n, children: r, ...i }) {
652
+ let { isActive: a } = V();
653
+ return /* @__PURE__ */ L("div", {
642
654
  ref: e,
643
655
  "data-flemo-part-name": t,
644
656
  "data-flemo-status": Q((e) => e.status),
@@ -650,20 +662,20 @@ function Ue({ ref: e, name: t, style: n, children: r, ...i }) {
650
662
  }
651
663
  //#endregion
652
664
  //#region src/stores/RouterScopeProvider.tsx
653
- function We({ children: e }) {
665
+ function Ke({ children: e }) {
654
666
  let [t] = p(() => ({
655
667
  history: S(),
656
- navigate: te(),
657
- transition: se(),
658
- screen: k(),
668
+ navigate: w(),
669
+ transition: ae(),
670
+ screen: A(),
659
671
  driver: b(),
660
672
  markSelfInduced: fe,
661
673
  consume: v
662
674
  }));
663
- return /* @__PURE__ */ F(I.Provider, {
675
+ return /* @__PURE__ */ L(R.Provider, {
664
676
  value: t,
665
677
  children: e
666
678
  });
667
679
  }
668
680
  //#endregion
669
- export { Me as Layer, Ue as Part, Z as Route, Ae as Router, We as RouterScopeProvider, He as Screen, R as ScreenContext, ze as ScreenDecorator, Re as ScreenFreeze, Ve as ScreenMotion, Y as Slot, y as createBrowserHistoryDriver, x as createDecorator, T as createPartTransition, E as createRawDecorator, D as createRawPartTransition, O as createRawTransition, ae as createTransition, M as partTransitionMap, G as useHistoryStore, Pe as useNavigate, Q as useNavigateStore, Le as useParams, Fe as usePathname, z as useScreen, $ as useScreenStore, Ie as useStep, L as useStores, Be as useViewportScrollHeight };
681
+ export { Fe as Layer, Ge as Part, Ne as Route, Me as Router, Ke as RouterScopeProvider, We as Screen, B as ScreenContext, Ve as ScreenDecorator, Be as ScreenFreeze, Ue as ScreenMotion, Oe as Slot, y as createBrowserHistoryDriver, x as createDecorator, E as createPartTransition, D as createRawDecorator, O as createRawPartTransition, k as createRawTransition, M as createTransition, ge as partTransitionMap, G as useHistoryStore, Ie as useNavigate, Q as useNavigateStore, ze as useParams, Le as usePathname, V as useScreen, $ as useScreenStore, Re as useStep, z as useStores, He as useViewportScrollHeight };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flemo/react",
3
- "version": "1.5.4",
3
+ "version": "1.5.5",
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.9.0"
39
+ "@flemo/core": "1.10.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@testing-library/jest-dom": "^6.9.1",