@flemo/core 1.4.0 → 1.6.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.
Files changed (41) hide show
  1. package/dist/core/engine/__tests__/barRiding.test.d.ts +1 -0
  2. package/dist/core/engine/__tests__/createSwipeController.test.d.ts +1 -0
  3. package/dist/core/engine/__tests__/createTransitionEngine.test.d.ts +1 -0
  4. package/dist/core/engine/barRiding.d.ts +18 -0
  5. package/dist/core/engine/createSwipeController.d.ts +32 -0
  6. package/dist/core/engine/createTransitionEngine.d.ts +2 -0
  7. package/dist/core/engine/types.d.ts +22 -0
  8. package/dist/history/__tests__/createHistorySync.test.d.ts +1 -0
  9. package/dist/history/__tests__/historyDriver.test.d.ts +1 -0
  10. package/dist/history/__tests__/memoryHistoryDriver.test.d.ts +1 -0
  11. package/dist/history/__tests__/seedInitialHistory.test.d.ts +1 -0
  12. package/dist/history/createHistorySync.d.ts +12 -0
  13. package/dist/history/ensureWindowHistoryState.d.ts +2 -0
  14. package/dist/history/historyDriver.d.ts +14 -0
  15. package/dist/history/memoryHistoryDriver.d.ts +5 -0
  16. package/dist/history/seedInitialHistory.d.ts +4 -0
  17. package/dist/history/store.d.ts +2 -0
  18. package/dist/index.d.ts +21 -1
  19. package/dist/index.mjs +820 -97
  20. package/dist/navigate/__tests__/createNavigationController.test.d.ts +1 -0
  21. package/dist/navigate/createNavigationController.d.ts +34 -0
  22. package/dist/navigate/selfPopGuard.d.ts +5 -0
  23. package/dist/screen/__tests__/computeScreenFreeze.test.d.ts +1 -0
  24. package/dist/screen/__tests__/createScreenSelector.test.d.ts +1 -0
  25. package/dist/screen/__tests__/store.test.d.ts +1 -0
  26. package/dist/screen/computeScreenFreeze.d.ts +11 -0
  27. package/dist/screen/createScreenSelector.d.ts +10 -0
  28. package/dist/screen/store.d.ts +16 -0
  29. package/dist/transition/__tests__/animateInline.test.d.ts +1 -0
  30. package/dist/transition/__tests__/applyTransitionStyles.test.d.ts +1 -0
  31. package/dist/transition/__tests__/compileTransitionStyles.test.d.ts +5 -0
  32. package/dist/transition/animateInline.d.ts +4 -0
  33. package/dist/transition/applyTransitionStyles.d.ts +1 -0
  34. package/dist/transition/compileTransitionStyles.d.ts +3 -2
  35. package/dist/transition/partTransition/__tests__/createPartTransition.test.d.ts +1 -0
  36. package/dist/transition/partTransition/__tests__/createRawPartTransition.test.d.ts +1 -0
  37. package/dist/transition/partTransition/createPartTransition.d.ts +13 -0
  38. package/dist/transition/partTransition/createRawPartTransition.d.ts +19 -0
  39. package/dist/transition/partTransition/partTransition.d.ts +2 -0
  40. package/dist/transition/partTransition/typing.d.ts +24 -0
  41. package/package.json +3 -3
package/dist/index.mjs CHANGED
@@ -178,17 +178,21 @@ var r = new class {
178
178
  function i(t = [], n = -1) {
179
179
  return e((e) => ({
180
180
  index: n,
181
+ pendingIndex: n,
181
182
  histories: t,
182
183
  addHistory: (t) => e((e) => ({
183
184
  index: e.index + 1,
185
+ pendingIndex: e.index + 1,
184
186
  histories: e.histories.concat(t)
185
187
  })),
186
188
  replaceHistory: (t) => e((e) => (e.histories.splice(t, 1), {
187
189
  index: e.index - 1,
190
+ pendingIndex: e.index - 1,
188
191
  histories: e.histories
189
192
  })),
190
193
  popHistory: (t) => e((e) => ({
191
194
  index: e.index - 1,
195
+ pendingIndex: e.index - 1,
192
196
  histories: e.histories.filter((e, n) => n !== t)
193
197
  })),
194
198
  popHistories: (t) => {
@@ -196,10 +200,12 @@ function i(t = [], n = -1) {
196
200
  let n = e.index;
197
201
  return {
198
202
  index: e.index - t,
203
+ pendingIndex: e.index - t,
199
204
  histories: e.histories.filter((e, r) => r < n - t || r >= n)
200
205
  };
201
206
  });
202
207
  },
208
+ setPendingIndex: (t) => e({ pendingIndex: t }),
203
209
  setTransitionName: (t, n) => e((e) => {
204
210
  let r = e.histories[t];
205
211
  if (!r || r.transitionName === n) return {};
@@ -212,8 +218,193 @@ function i(t = [], n = -1) {
212
218
  }));
213
219
  }
214
220
  //#endregion
221
+ //#region src/utils/getMatchedPathPattern.ts
222
+ function a(e, t) {
223
+ return Array.isArray(e) ? e.find((e) => n(e).regexp.test(t)) ?? "" : n(e).regexp.test(t) ? e : "";
224
+ }
225
+ //#endregion
226
+ //#region src/utils/getParams.ts
227
+ function o(e, n, r) {
228
+ let i = t(a(e, n))(n), o = new URLSearchParams(r), s = Object.fromEntries(o.entries());
229
+ return i ? {
230
+ ...i.params,
231
+ ...s
232
+ } : {};
233
+ }
234
+ //#endregion
235
+ //#region src/history/seedInitialHistory.ts
236
+ function s(e, t, n, r) {
237
+ return {
238
+ id: "root",
239
+ pathname: t,
240
+ params: o(e, t, n),
241
+ transitionName: r,
242
+ layoutId: null
243
+ };
244
+ }
245
+ //#endregion
246
+ //#region src/utils/isServer.ts
247
+ function c() {
248
+ return typeof document > "u";
249
+ }
250
+ //#endregion
251
+ //#region src/history/ensureWindowHistoryState.ts
252
+ function l(e, t, n = {}) {
253
+ if (c()) return;
254
+ let r = {
255
+ id: "root",
256
+ index: 0,
257
+ status: "IDLE",
258
+ params: n,
259
+ transitionName: t,
260
+ layoutId: null
261
+ };
262
+ if (e === null) {
263
+ if (window.history.state?.index) return;
264
+ window.history.replaceState(r, "", window.location.href);
265
+ return;
266
+ }
267
+ let i = window.history.state ?? {};
268
+ i[e]?.index || window.history.replaceState({
269
+ ...i,
270
+ [e]: r
271
+ }, "", window.location.href);
272
+ }
273
+ //#endregion
274
+ //#region src/history/historyDriver.ts
275
+ var u = (e, t) => ({
276
+ ...window.history.state ?? {},
277
+ [e]: t
278
+ });
279
+ function d(e) {
280
+ return e === void 0 ? {
281
+ readState: () => window.history.state,
282
+ readPathname: () => window.location.pathname,
283
+ pushState: (e, t) => window.history.pushState(e, "", t),
284
+ replaceState: (e, t) => window.history.replaceState(e, "", t),
285
+ go: (e) => window.history.go(e),
286
+ back: () => window.history.back(),
287
+ subscribe: (e) => {
288
+ let t = (t) => e({
289
+ state: t.state,
290
+ pathname: window.location.pathname
291
+ });
292
+ return window.addEventListener("popstate", t), () => window.removeEventListener("popstate", t);
293
+ }
294
+ } : {
295
+ readState: () => window.history.state?.[e] ?? null,
296
+ readPathname: () => window.location.pathname,
297
+ pushState: (t, n) => window.history.pushState(u(e, t), "", n),
298
+ replaceState: (t, n) => window.history.replaceState(u(e, t), "", n),
299
+ go: (e) => window.history.go(e),
300
+ back: () => window.history.back(),
301
+ subscribe: (t) => {
302
+ let n = (n) => t({
303
+ state: n.state?.[e] ?? null,
304
+ pathname: window.location.pathname
305
+ });
306
+ return window.addEventListener("popstate", n), () => window.removeEventListener("popstate", n);
307
+ }
308
+ };
309
+ }
310
+ //#endregion
311
+ //#region src/navigate/selfPopGuard.ts
312
+ function f() {
313
+ let e = 0;
314
+ return {
315
+ mark() {
316
+ e += 1;
317
+ },
318
+ consume() {
319
+ return e > 0 ? (--e, !0) : !1;
320
+ }
321
+ };
322
+ }
323
+ var p = f();
324
+ function m() {
325
+ p.mark();
326
+ }
327
+ function h() {
328
+ return p.consume();
329
+ }
330
+ //#endregion
331
+ //#region src/history/createHistorySync.ts
332
+ function g(e) {
333
+ let { stores: t, driver: n = d(), consume: i = h } = e;
334
+ return n.subscribe(async (e) => {
335
+ if (i()) return;
336
+ let n = e.state, a = r.generateTaskId();
337
+ (await r.addTask(async (r) => {
338
+ let { setStatus: i, setTransitionTaskId: o } = t.navigate.getState(), { index: s, addHistory: c, popHistory: l, setPendingIndex: u } = t.history.getState(), d = n?.index, f = d !== void 0 && d < s, p = n?.status === "PUSHING" && d !== void 0 && d > s, m = n?.status === "REPLACING" && d !== void 0 && d > s;
339
+ if (!f && !p && !m) {
340
+ r.abort();
341
+ return;
342
+ }
343
+ if (o(a), f) u(d), i("POPPING");
344
+ else {
345
+ let t = n;
346
+ i(p ? "PUSHING" : "REPLACING"), c({
347
+ id: t.id,
348
+ pathname: e.pathname,
349
+ params: t.params,
350
+ transitionName: t.transitionName,
351
+ layoutId: t.layoutId
352
+ });
353
+ }
354
+ return async () => {
355
+ f && d !== void 0 && l(d + 1), i("COMPLETED");
356
+ };
357
+ }, {
358
+ id: a,
359
+ control: { manual: !0 }
360
+ })).result?.();
361
+ });
362
+ }
363
+ //#endregion
364
+ //#region src/history/memoryHistoryDriver.ts
365
+ function _(e) {
366
+ let t = [{
367
+ state: e?.state ?? null,
368
+ url: e?.url ?? "/"
369
+ }], n = 0, r = /* @__PURE__ */ new Set(), i = () => {
370
+ let e = t[n], i = {
371
+ state: e.state,
372
+ pathname: e.url
373
+ };
374
+ queueMicrotask(() => {
375
+ for (let e of r) e(i);
376
+ });
377
+ };
378
+ return {
379
+ readState: () => t[n].state,
380
+ readPathname: () => t[n].url,
381
+ pushState: (e, r) => {
382
+ t.splice(n + 1), t.push({
383
+ state: e,
384
+ url: r
385
+ }), n = t.length - 1;
386
+ },
387
+ replaceState: (e, r) => {
388
+ t[n] = {
389
+ state: e,
390
+ url: r
391
+ };
392
+ },
393
+ go: (e) => {
394
+ let r = Math.min(Math.max(n + e, 0), t.length - 1);
395
+ r !== n && (n = r, i());
396
+ },
397
+ back: () => {
398
+ n !== 0 && (--n, i());
399
+ },
400
+ subscribe: (e) => (r.add(e), () => {
401
+ r.delete(e);
402
+ })
403
+ };
404
+ }
405
+ //#endregion
215
406
  //#region src/navigate/store.ts
216
- function a() {
407
+ function v() {
217
408
  return e((e) => ({
218
409
  status: "IDLE",
219
410
  transitionTaskId: null,
@@ -222,17 +413,203 @@ function a() {
222
413
  }));
223
414
  }
224
415
  //#endregion
225
- //#region src/navigate/selfPopGuard.ts
226
- var o = 0;
227
- function s() {
228
- o += 1;
416
+ //#region src/navigate/createNavigationController.ts
417
+ var y = (e, t, r) => {
418
+ let { regexp: i } = n(e);
419
+ for (let e = t - 1; e >= 0; e--) if (i.test(r[e].pathname)) return t - e;
420
+ return -1;
421
+ }, b = (e, t) => typeof e == "number" && Number.isFinite(e) ? Math.max(0, Math.trunc(e)) : t, x = async (e, t, n, r) => {
422
+ let i, a = new Promise((t) => {
423
+ i = e.subscribe(() => t(!0));
424
+ }), o = new Promise((e) => setTimeout(() => e(!1), 200));
425
+ t(), e.go(-n);
426
+ let s = await Promise.race([a, o]);
427
+ i(), s && r();
428
+ };
429
+ function S(e) {
430
+ let { stores: t, buildPathname: n, driver: i = d(), markSelfInduced: a = m } = e, o = async (e, o, s) => {
431
+ let { status: c } = t.navigate.getState();
432
+ if (c !== "COMPLETED" && c !== "IDLE") return;
433
+ let l = t.transition.getState().defaultTransitionName, { transitionName: u = l, layoutId: d = null } = s ?? {}, f = r.generateTaskId();
434
+ (await r.addTask(async () => {
435
+ let { index: r, histories: c, addHistory: l, popHistories: p } = t.history.getState(), m = (() => {
436
+ if (s?.until != null) {
437
+ let e = y(s.until, r, c);
438
+ return e < 0 ? 0 : e;
439
+ }
440
+ return Math.min(b(s?.skip, 0), Math.max(0, r));
441
+ })(), { setStatus: h, setTransitionTaskId: g } = t.navigate.getState();
442
+ h("PUSHING"), g(f);
443
+ let { pathname: _, toPathname: v } = n(e, o ?? {}), S = {
444
+ id: f,
445
+ pathname: v,
446
+ params: o ?? {},
447
+ transitionName: u,
448
+ layoutId: d
449
+ };
450
+ return m === 0 ? (i.pushState({
451
+ id: f,
452
+ index: r + 1,
453
+ status: "PUSHING",
454
+ params: o,
455
+ transitionName: u,
456
+ layoutId: d
457
+ }, _), l(S), () => {
458
+ h("COMPLETED");
459
+ }) : (l(S), await x(i, a, m, () => {
460
+ i.pushState({
461
+ id: f,
462
+ index: t.history.getState().index - m,
463
+ status: "PUSHING",
464
+ params: o,
465
+ transitionName: u,
466
+ layoutId: d
467
+ }, _);
468
+ }), async () => {
469
+ p(m), h("COMPLETED");
470
+ });
471
+ }, {
472
+ id: f,
473
+ control: { manual: !0 }
474
+ })).result?.();
475
+ }, s = async (e, o, s) => {
476
+ let { status: c } = t.navigate.getState();
477
+ if (c !== "COMPLETED" && c !== "IDLE") return;
478
+ let l = t.transition.getState().defaultTransitionName, { transitionName: u = l, layoutId: d = null } = s ?? {}, f = r.generateTaskId();
479
+ (await r.addTask(async (r) => {
480
+ let { index: c, histories: l, addHistory: p, replaceHistory: m, popHistories: h } = t.history.getState(), g = (() => {
481
+ if (s?.until != null) {
482
+ let e = y(s.until, c, l);
483
+ return e < 0 ? 0 : e + 1;
484
+ }
485
+ return Math.min(b(s?.skip, 0) + 1, c + 1);
486
+ })();
487
+ if (g <= 0) {
488
+ r.abort();
489
+ return;
490
+ }
491
+ let { setStatus: _, setTransitionTaskId: v } = t.navigate.getState();
492
+ _("REPLACING"), v(f);
493
+ let { pathname: S, toPathname: C } = n(e, o ?? {}), w = {
494
+ id: f,
495
+ pathname: C,
496
+ params: o ?? {},
497
+ transitionName: u,
498
+ layoutId: d
499
+ };
500
+ return g === 1 ? (i.replaceState({
501
+ id: f,
502
+ index: c,
503
+ status: "REPLACING",
504
+ params: o,
505
+ transitionName: u,
506
+ layoutId: d
507
+ }, S), p(w), async () => {
508
+ m(c), _("COMPLETED");
509
+ }) : (h(g - 1), p(w), g <= c ? await x(i, a, g, () => {
510
+ i.pushState({
511
+ id: f,
512
+ index: t.history.getState().index - 1,
513
+ status: "REPLACING",
514
+ params: o,
515
+ transitionName: u,
516
+ layoutId: d
517
+ }, S);
518
+ }) : await x(i, a, c, () => {
519
+ i.replaceState({
520
+ id: f,
521
+ index: 0,
522
+ status: "REPLACING",
523
+ params: o,
524
+ transitionName: u,
525
+ layoutId: d
526
+ }, S);
527
+ }), async () => {
528
+ m(t.history.getState().index - 1), _("COMPLETED");
529
+ });
530
+ }, {
531
+ id: f,
532
+ control: { manual: !0 }
533
+ })).result?.();
534
+ }, c = async (e, n) => {
535
+ let o = r.generateTaskId();
536
+ (await r.addTask(async (r) => {
537
+ let { index: s, histories: c, popHistory: l, popHistories: u, setPendingIndex: d, setTransitionName: f } = t.history.getState();
538
+ if (s <= 0) {
539
+ r.abort();
540
+ return;
541
+ }
542
+ let p = Math.min(e(s, c), s);
543
+ if (p <= 0) {
544
+ r.abort();
545
+ return;
546
+ }
547
+ d(s - p);
548
+ let { setStatus: m, setTransitionTaskId: h } = t.navigate.getState();
549
+ return n && f(s, n), m("POPPING"), h(o), u(p - 1), a(), p === 1 ? i.back() : i.go(-p), async () => {
550
+ l(t.history.getState().index), m("COMPLETED");
551
+ };
552
+ }, {
553
+ id: o,
554
+ control: { manual: !0 }
555
+ })).result?.();
556
+ };
557
+ return {
558
+ push: o,
559
+ replace: s,
560
+ pop: async (e) => {
561
+ await c((t, n) => {
562
+ if (e?.until != null) {
563
+ let r = y(e.until, t, n);
564
+ return r < 0 ? 0 : r;
565
+ }
566
+ let r = b(e?.skip, 1);
567
+ return r <= 0 ? 0 : Math.min(r, t);
568
+ }, e?.transitionName);
569
+ }
570
+ };
229
571
  }
230
- function c() {
231
- return o > 0 ? (--o, !0) : !1;
572
+ //#endregion
573
+ //#region src/screen/store.ts
574
+ function C() {
575
+ return e((e) => ({
576
+ dragStatus: "IDLE",
577
+ replaceTransitionStatus: "IDLE",
578
+ sharedBars: {},
579
+ setDragStatus: (t) => e({ dragStatus: t }),
580
+ setReplaceTransitionStatus: (t) => e({ replaceTransitionStatus: t }),
581
+ registerSharedBars: (t, n) => e((e) => ({ sharedBars: {
582
+ ...e.sharedBars,
583
+ [t]: n
584
+ } })),
585
+ unregisterSharedBars: (t) => e((e) => {
586
+ let n = { ...e.sharedBars };
587
+ return delete n[t], { sharedBars: n };
588
+ })
589
+ }));
590
+ }
591
+ //#endregion
592
+ //#region src/screen/createScreenSelector.ts
593
+ function w(e, t) {
594
+ return e.map((n, r) => ({
595
+ ...n,
596
+ isActive: r === t,
597
+ isRoot: r === 0,
598
+ isPrev: r < t - 1,
599
+ zIndex: r,
600
+ transitionName: e[t].transitionName,
601
+ prevTransitionName: e[t - 1]?.transitionName
602
+ }));
603
+ }
604
+ //#endregion
605
+ //#region src/screen/computeScreenFreeze.ts
606
+ function ee(e) {
607
+ let t = e.status === "COMPLETED" && e.dragStatus === "IDLE";
608
+ return !e.isActive && t || e.isPrev && e.index - 2 <= e.zIndex && e.replaceTransitionStatus === "IDLE" || e.isPrev && e.index - 2 > e.zIndex;
232
609
  }
233
610
  //#endregion
234
611
  //#region src/transition/createTransition.ts
235
- function l({ name: e, initial: t, idle: n, enter: r, enterBack: i, exit: a, exitBack: o, options: s }) {
612
+ function T({ name: e, initial: t, idle: n, enter: r, enterBack: i, exit: a, exitBack: o, options: s }) {
236
613
  return {
237
614
  name: e,
238
615
  initial: t,
@@ -253,7 +630,7 @@ function l({ name: e, initial: t, idle: n, enter: r, enterBack: i, exit: a, exit
253
630
  }
254
631
  //#endregion
255
632
  //#region src/transition/createRawTransition.ts
256
- function u({ name: e, initial: t, idle: n, pushOnEnter: r, pushOnExit: i, replaceOnEnter: a, replaceOnExit: o, popOnEnter: s, popOnExit: c, completedOnExit: l, completedOnEnter: u, options: d }) {
633
+ function te({ name: e, initial: t, idle: n, pushOnEnter: r, pushOnExit: i, replaceOnEnter: a, replaceOnExit: o, popOnEnter: s, popOnExit: c, completedOnExit: l, completedOnEnter: u, options: d }) {
257
634
  return {
258
635
  name: e,
259
636
  initial: t,
@@ -274,10 +651,10 @@ function u({ name: e, initial: t, idle: n, pushOnEnter: r, pushOnExit: i, replac
274
651
  }
275
652
  //#endregion
276
653
  //#region src/transition/cupertino.ts
277
- var d = (e, t, n) => {
654
+ var ne = (e, t, n) => {
278
655
  let [r, i] = t, [a, o] = n;
279
656
  return i === r ? a : a + (e - r) / (i - r) * (o - a);
280
- }, f = l({
657
+ }, E = T({
281
658
  name: "cupertino",
282
659
  initial: { x: "100%" },
283
660
  idle: {
@@ -337,7 +714,7 @@ var d = (e, t, n) => {
337
714
  swipeDirection: "x",
338
715
  onSwipeStart: async () => !0,
339
716
  onSwipe: (e, t, { animate: n, currentScreen: r, prevScreen: i, onProgress: a }) => {
340
- let { offset: o } = t, s = o.x, c = d(s, [0, window.innerWidth], [0, 100]);
717
+ let { offset: o } = t, s = o.x, c = ne(s, [0, window.innerWidth], [0, 100]);
341
718
  return a?.(!0, c), n(r, { x: Math.max(0, s) }, { duration: 0 }), n(i, { x: `${-30 + c * .3}%` }, { duration: 0 }), c;
342
719
  },
343
720
  onSwipeEnd: async (e, t, { animate: n, currentScreen: r, prevScreen: i, onStart: a }) => {
@@ -361,10 +738,10 @@ var d = (e, t, n) => {
361
738
  })]), c;
362
739
  }
363
740
  }
364
- }), p = (e, t, n) => {
741
+ }), re = (e, t, n) => {
365
742
  let [r, i] = t, [a, o] = n;
366
743
  return i === r ? a : a + (e - r) / (i - r) * (o - a);
367
- }, m = l({
744
+ }, ie = T({
368
745
  name: "layout",
369
746
  initial: { opacity: .97 },
370
747
  idle: {
@@ -392,11 +769,11 @@ var d = (e, t, n) => {
392
769
  swipeDirection: "y",
393
770
  onSwipeStart: async () => !0,
394
771
  onSwipe: (e, t, { animate: n, currentScreen: r, onProgress: i }) => {
395
- let { offset: a } = t, o = a.y, s = Math.max(0, Math.min(56, o)), c = p(s, [0, 56], [1, .96]), l = Math.max(0, o - 56), u = Math.min(1, l / 160), d = Math.sqrt(u) * 12, f = Math.max(0, s + d), m = Math.min(56, f);
772
+ let { offset: a } = t, o = a.y, s = Math.max(0, Math.min(56, o)), c = re(s, [0, 56], [1, .96]), l = Math.max(0, o - 56), u = Math.min(1, l / 160), d = Math.sqrt(u) * 12, f = Math.max(0, s + d), p = Math.min(56, f);
396
773
  return i?.(!0, 100), n(r, {
397
774
  y: f,
398
775
  opacity: c
399
- }, { duration: 0 }), m;
776
+ }, { duration: 0 }), p;
400
777
  },
401
778
  onSwipeEnd: async (e, t, { animate: n, currentScreen: r, prevScreen: i, onStart: a }) => {
402
779
  let { offset: o, velocity: s } = t, c = o.y > 56 || s.y > 20;
@@ -409,7 +786,7 @@ var d = (e, t, n) => {
409
786
  }, { duration: .3 })]), c;
410
787
  }
411
788
  }
412
- }), h = l({
789
+ }), ae = T({
413
790
  name: "material",
414
791
  initial: { y: "100%" },
415
792
  idle: {
@@ -517,7 +894,7 @@ var d = (e, t, n) => {
517
894
  })]), c;
518
895
  }
519
896
  }
520
- }), g = l({
897
+ }), oe = T({
521
898
  name: "none",
522
899
  initial: {},
523
900
  idle: {
@@ -540,15 +917,15 @@ var d = (e, t, n) => {
540
917
  value: {},
541
918
  options: { duration: 0 }
542
919
  }
543
- }), _ = new Map([
544
- ["none", g],
545
- ["cupertino", f],
546
- ["material", h],
547
- ["layout", m]
920
+ }), D = new Map([
921
+ ["none", oe],
922
+ ["cupertino", E],
923
+ ["material", ae],
924
+ ["layout", ie]
548
925
  ]);
549
926
  //#endregion
550
927
  //#region src/transition/store.ts
551
- function v(t = "cupertino") {
928
+ function se(t = "cupertino") {
552
929
  return e((e) => ({
553
930
  defaultTransitionName: t,
554
931
  setDefaultTransitionName: (t) => e({ defaultTransitionName: t })
@@ -556,7 +933,7 @@ function v(t = "cupertino") {
556
933
  }
557
934
  //#endregion
558
935
  //#region src/transition/decorator/createDecorator.ts
559
- function y({ name: e, initial: t, idle: n, enter: r, exit: i, options: a }) {
936
+ function O({ name: e, initial: t, idle: n, enter: r, exit: i, options: a }) {
560
937
  return {
561
938
  name: e,
562
939
  initial: t,
@@ -577,7 +954,7 @@ function y({ name: e, initial: t, idle: n, enter: r, exit: i, options: a }) {
577
954
  }
578
955
  //#endregion
579
956
  //#region src/transition/decorator/createRawDecorator.ts
580
- function ee({ name: e, initial: t, idle: n, pushOnEnter: r, pushOnExit: i, replaceOnEnter: a, replaceOnExit: o, popOnEnter: s, popOnExit: c, completedOnEnter: l, completedOnExit: u, options: d }) {
957
+ function ce({ name: e, initial: t, idle: n, pushOnEnter: r, pushOnExit: i, replaceOnEnter: a, replaceOnExit: o, popOnEnter: s, popOnExit: c, completedOnEnter: l, completedOnExit: u, options: d }) {
581
958
  return {
582
959
  name: e,
583
960
  initial: t,
@@ -598,30 +975,30 @@ function ee({ name: e, initial: t, idle: n, pushOnEnter: r, pushOnExit: i, repla
598
975
  }
599
976
  //#endregion
600
977
  //#region src/transition/decorator/overlay.ts
601
- var b = "rgba(0, 0, 0, 0.3)", x = y({
978
+ var k = "rgba(0, 0, 0, 0.3)", le = O({
602
979
  name: "overlay",
603
980
  initial: {
604
981
  opacity: 0,
605
- backgroundColor: b
982
+ backgroundColor: k
606
983
  },
607
984
  idle: {
608
985
  value: {
609
986
  opacity: 0,
610
- backgroundColor: b
987
+ backgroundColor: k
611
988
  },
612
989
  options: { duration: 0 }
613
990
  },
614
991
  enter: {
615
992
  value: {
616
993
  opacity: 1,
617
- backgroundColor: b
994
+ backgroundColor: k
618
995
  },
619
996
  options: { duration: .7 }
620
997
  },
621
998
  exit: {
622
999
  value: {
623
1000
  opacity: 0,
624
- backgroundColor: b
1001
+ backgroundColor: k
625
1002
  },
626
1003
  options: { duration: .6 }
627
1004
  },
@@ -630,7 +1007,52 @@ var b = "rgba(0, 0, 0, 0.3)", x = y({
630
1007
  onSwipe: (e, t, { animate: n, prevDecorator: r }) => n(r, { opacity: Math.max(0, 1 - t / 100) }, { duration: 0 }),
631
1008
  onSwipeEnd: (e, { animate: t, prevDecorator: n }) => t(n, { opacity: +!e }, { duration: .3 })
632
1009
  }
633
- }), te = new Map([["overlay", x]]), S = {
1010
+ }), A = new Map([["overlay", le]]);
1011
+ //#endregion
1012
+ //#region src/transition/partTransition/createPartTransition.ts
1013
+ function ue({ name: e, initial: t, idle: n, enter: r, exit: i, options: a }) {
1014
+ return {
1015
+ name: e,
1016
+ initial: t,
1017
+ variants: {
1018
+ "IDLE-true": n,
1019
+ "IDLE-false": n,
1020
+ "PUSHING-true": n,
1021
+ "PUSHING-false": r,
1022
+ "REPLACING-true": n,
1023
+ "REPLACING-false": r,
1024
+ "POPPING-true": n,
1025
+ "POPPING-false": i,
1026
+ "COMPLETED-true": n,
1027
+ "COMPLETED-false": r
1028
+ },
1029
+ ...a
1030
+ };
1031
+ }
1032
+ //#endregion
1033
+ //#region src/transition/partTransition/createRawPartTransition.ts
1034
+ function de({ name: e, initial: t, idle: n, pushOnEnter: r, pushOnExit: i, replaceOnEnter: a, replaceOnExit: o, popOnEnter: s, popOnExit: c, completedOnEnter: l, completedOnExit: u, options: d }) {
1035
+ return {
1036
+ name: e,
1037
+ initial: t,
1038
+ variants: {
1039
+ "IDLE-true": n,
1040
+ "IDLE-false": n,
1041
+ "PUSHING-false": i,
1042
+ "PUSHING-true": r,
1043
+ "REPLACING-false": o,
1044
+ "REPLACING-true": a,
1045
+ "POPPING-false": c,
1046
+ "POPPING-true": s,
1047
+ "COMPLETED-false": u,
1048
+ "COMPLETED-true": l
1049
+ },
1050
+ ...d
1051
+ };
1052
+ }
1053
+ //#endregion
1054
+ //#region src/transition/partTransition/partTransition.ts
1055
+ var j = /* @__PURE__ */ new Map(), M = {
634
1056
  "IDLE-true": "self",
635
1057
  "IDLE-false": "self",
636
1058
  "PUSHING-true": "initial",
@@ -641,7 +1063,7 @@ var b = "rgba(0, 0, 0, 0.3)", x = y({
641
1063
  "POPPING-false": "PUSHING-false",
642
1064
  "COMPLETED-true": "self",
643
1065
  "COMPLETED-false": "self"
644
- }, C = Object.keys(S), w = C, ne = (e) => e.replace(/[^a-zA-Z0-9_-]/g, "_"), T = (e) => typeof e == "object" && !!e && !Array.isArray(e), E = new Set(/* @__PURE__ */ "opacity.scale.scaleX.scaleY.scaleZ.aspectRatio.columnCount.columns.flex.flexGrow.flexShrink.fontWeight.gridArea.gridColumn.gridColumnEnd.gridColumnStart.gridRow.gridRowEnd.gridRowStart.lineHeight.lineClamp.order.orphans.tabSize.widows.zIndex.zoom.fillOpacity.floodOpacity.stopOpacity.strokeOpacity.strokeDasharray.strokeDashoffset.strokeMiterlimit.strokeWidth".split(".")), D = (e, t) => t.startsWith("--") || E.has(t) ? `${e}` : t === "rotate" || t === "rotateX" || t === "rotateY" || t === "rotateZ" ? `${e}deg` : `${e}px`, O = (e, t) => typeof t == "number" ? D(t, e) : typeof t == "string" ? t : "", k = (e) => e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), A = new Set([
1066
+ }, fe = Object.keys(M), pe = fe, me = (e) => e.replace(/[^a-zA-Z0-9_-]/g, "_"), N = (e) => typeof e == "object" && !!e && !Array.isArray(e), he = new Set(/* @__PURE__ */ "opacity.scale.scaleX.scaleY.scaleZ.aspectRatio.columnCount.columns.flex.flexGrow.flexShrink.fontWeight.gridArea.gridColumn.gridColumnEnd.gridColumnStart.gridRow.gridRowEnd.gridRowStart.lineHeight.lineClamp.order.orphans.tabSize.widows.zIndex.zoom.fillOpacity.floodOpacity.stopOpacity.strokeOpacity.strokeDasharray.strokeDashoffset.strokeMiterlimit.strokeWidth".split(".")), ge = (e, t) => t.startsWith("--") || he.has(t) ? `${e}` : t === "rotate" || t === "rotateX" || t === "rotateY" || t === "rotateZ" ? `${e}deg` : `${e}px`, P = (e, t) => typeof t == "number" ? ge(t, e) : typeof t == "string" ? t : "", F = (e) => e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), I = new Set([
645
1067
  "x",
646
1068
  "y",
647
1069
  "z",
@@ -652,7 +1074,7 @@ var b = "rgba(0, 0, 0, 0.3)", x = y({
652
1074
  "rotateX",
653
1075
  "rotateY",
654
1076
  "rotateZ"
655
- ]), j = /^-?0(\.0+)?(px|%|em|rem|vh|vw|vmin|vmax)?$/, M = /^-?0(\.0+)?(deg|rad|grad|turn)?$/, N = /^1(\.0+)?$/, P = (e, t) => e === "scale" || e === "scaleX" || e === "scaleY" ? t === 1 ? !0 : typeof t == "string" ? N.test(t.trim()) : !1 : e === "rotate" || e === "rotateX" || e === "rotateY" || e === "rotateZ" ? t === 0 ? !0 : typeof t == "string" ? M.test(t.trim()) : !1 : t === 0 ? !0 : typeof t == "string" ? j.test(t.trim()) : !1, F = (e, t) => {
1077
+ ]), _e = /^-?0(\.0+)?(px|%|em|rem|vh|vw|vmin|vmax)?$/, ve = /^-?0(\.0+)?(deg|rad|grad|turn)?$/, ye = /^1(\.0+)?$/, be = (e, t) => e === "scale" || e === "scaleX" || e === "scaleY" ? t === 1 ? !0 : typeof t == "string" ? ye.test(t.trim()) : !1 : e === "rotate" || e === "rotateX" || e === "rotateY" || e === "rotateZ" ? t === 0 ? !0 : typeof t == "string" ? ve.test(t.trim()) : !1 : t === 0 ? !0 : typeof t == "string" ? _e.test(t.trim()) : !1, xe = (e, t) => {
656
1078
  switch (e) {
657
1079
  case "x": return `translateX(${t})`;
658
1080
  case "y": return `translateY(${t})`;
@@ -666,23 +1088,23 @@ var b = "rgba(0, 0, 0, 0.3)", x = y({
666
1088
  case "rotateY": return `rotateY(${t})`;
667
1089
  default: return "";
668
1090
  }
669
- }, I = (e) => {
1091
+ }, L = (e) => {
670
1092
  let t = /* @__PURE__ */ new Set(), n = !1, r = (e) => {
671
- if (T(e)) for (let r of Object.keys(e)) {
1093
+ if (N(e)) for (let r of Object.keys(e)) {
672
1094
  let i = e[r];
673
- O(r, i) !== "" && (A.has(r) ? n = !0 : t.add(k(r)));
1095
+ P(r, i) !== "" && (I.has(r) ? n = !0 : t.add(F(r)));
674
1096
  }
675
1097
  };
676
1098
  r(e.initial);
677
1099
  for (let t of Object.values(e.variants)) r(t.value);
678
1100
  return n && t.add("transform"), Array.from(t);
679
- }, L = (e) => {
680
- if (!T(e)) return [];
1101
+ }, R = (e) => {
1102
+ if (!N(e)) return [];
681
1103
  let t = [], n = !0, r = [];
682
1104
  for (let i of Object.keys(e)) {
683
- let a = e[i], o = O(i, a);
684
- o !== "" && (A.has(i) ? (t.push(F(i, o)), P(i, a) || (n = !1)) : r.push({
685
- property: k(i),
1105
+ let a = e[i], o = P(i, a);
1106
+ o !== "" && (I.has(i) ? (t.push(xe(i, o)), be(i, a) || (n = !1)) : r.push({
1107
+ property: F(i),
686
1108
  value: o
687
1109
  }));
688
1110
  }
@@ -690,7 +1112,7 @@ var b = "rgba(0, 0, 0, 0.3)", x = y({
690
1112
  property: "transform",
691
1113
  value: n ? "none" : t.join(" ")
692
1114
  }), r;
693
- }, R = (e) => e.map((e) => ` ${e.property}: ${e.value};`).join("\n"), z = (e) => Array.isArray(e) ? e.length === 4 && e.every((e) => typeof e == "number") ? `cubic-bezier(${e.join(", ")})` : "linear" : typeof e == "string" ? {
1115
+ }, z = (e) => e.map((e) => ` ${e.property}: ${e.value};`).join("\n"), B = (e) => Array.isArray(e) ? e.length === 4 && e.every((e) => typeof e == "number") ? `cubic-bezier(${e.join(", ")})` : "linear" : typeof e == "string" ? {
694
1116
  linear: "linear",
695
1117
  easeIn: "ease-in",
696
1118
  easeOut: "ease-out",
@@ -700,30 +1122,33 @@ var b = "rgba(0, 0, 0, 0.3)", x = y({
700
1122
  backIn: "cubic-bezier(0.31, 0.01, 0.66, -0.59)",
701
1123
  backOut: "cubic-bezier(0.33, 1.53, 0.69, 0.99)",
702
1124
  anticipate: "cubic-bezier(0.36, 0, 0.66, -0.56)"
703
- }[e] ?? "ease" : "ease", B = (e) => {
1125
+ }[e] ?? "ease" : "ease", V = (e) => {
704
1126
  if (!e) return 0;
705
1127
  let t = e.duration;
706
1128
  return typeof t == "number" && t >= 0 ? t : 0;
707
- }, V = (e) => e && typeof e.delay == "number" && e.delay > 0 ? e.delay : 0, H = (e, t) => {
1129
+ }, Se = (e) => e && typeof e.delay == "number" && e.delay > 0 ? e.delay : 0, Ce = (e, t) => {
708
1130
  let [n, r] = t.split("-");
709
1131
  return `[data-flemo-screen][data-flemo-transition="${e}"][data-flemo-status="${n}"][data-flemo-active="${r}"]`;
710
- }, U = (e, t) => {
1132
+ }, we = (e, t) => {
711
1133
  let [n, r] = t.split("-");
712
1134
  return `[data-flemo-decorator][data-flemo-decorator-name="${e}"][data-flemo-status="${n}"][data-flemo-active="${r}"]`;
713
- }, W = (e, t) => {
1135
+ }, Te = (e, t) => {
714
1136
  let [n, r] = t.split("-");
715
1137
  return `[data-flemo-bar][data-flemo-bar-transition="${e}"][data-flemo-bar-status="${n}"][data-flemo-bar-active="${r}"][data-flemo-bar-riding="true"]`;
716
- }, G = (e, t, n) => `flemo-${e}-${ne(t)}-${n}`, K = (e, t, n, r, i, a) => {
717
- let o = L(r), s = L(i.value), c = B(i.options), l = V(i.options), u = z(i.options?.ease), d = a(t, n), f = e === "screen" ? `${d},\n${W(t, n)}` : d;
1138
+ }, Ee = (e, t) => {
1139
+ let [n, r] = t.split("-");
1140
+ return `[data-flemo-part-name="${e}"][data-flemo-status="${n}"][data-flemo-active="${r}"]`;
1141
+ }, H = (e, t, n) => `flemo-${e}-${me(t)}-${n}`, U = (e, t, n, r, i, a) => {
1142
+ let o = R(r), s = R(i.value), c = V(i.options), l = Se(i.options), u = B(i.options?.ease), d = a(t, n), f = e === "screen" ? `${d},\n${Te(t, n)}` : d;
718
1143
  if (s.length === 0 && o.length === 0) return "";
719
- if (c <= 0 && l <= 0) return s.length === 0 ? "" : `${f} {\n${R(s)}\n animation: none;\n}`;
720
- let p = G(e, t, n), m = [
1144
+ if (c <= 0 && l <= 0) return s.length === 0 ? "" : `${f} {\n${z(s)}\n animation: none;\n}`;
1145
+ let p = H(e, t, n), m = [
721
1146
  `@keyframes ${p} {`,
722
1147
  " from {",
723
- R(o).replace(/^/gm, " "),
1148
+ z(o).replace(/^/gm, " "),
724
1149
  " }",
725
1150
  " to {",
726
- R(s).replace(/^/gm, " "),
1151
+ z(s).replace(/^/gm, " "),
727
1152
  " }",
728
1153
  "}"
729
1154
  ].join("\n"), h = [
@@ -734,79 +1159,144 @@ var b = "rgba(0, 0, 0, 0.3)", x = y({
734
1159
  "both"
735
1160
  ].filter(Boolean).join(" "), g = Array.from(new Set([...o.map((e) => e.property), ...s.map((e) => e.property)])), _ = g.length > 0 ? ` will-change: ${g.join(", ")};\n` : "", v = n.split("-")[0];
736
1161
  return `${m}\n${`${f} {\n animation: ${h};\n${_}${v === "PUSHING" || v === "REPLACING" ? " contain: layout;\n pointer-events: none;\n" : ""}}`}`;
737
- }, q = (e, t, n, r) => {
738
- let i = L(r.value);
739
- return i.length === 0 ? "" : `${e(t, n)} {\n${R(i)}\n}`;
740
- }, J = (e, t) => {
741
- let n = [];
1162
+ }, W = (e, t, n, r) => {
1163
+ let i = R(r.value);
1164
+ return i.length === 0 ? "" : `${e(t, n)} {\n${z(i)}\n}`;
1165
+ }, De = (e, t, n = []) => {
1166
+ let r = [];
742
1167
  for (let t of e) {
743
1168
  let e = t.name;
744
- for (let r of C) {
745
- let i = t.variants[r], a = S[r];
1169
+ for (let n of fe) {
1170
+ let i = t.variants[n], a = M[n];
746
1171
  if (a === "self") {
747
- n.push(q(H, e, r, i));
1172
+ r.push(W(Ce, e, n, i));
748
1173
  continue;
749
1174
  }
750
1175
  let o = a === "initial" ? t.initial : t.variants[a].value;
751
- n.push(K("screen", e, r, o, i, H));
1176
+ r.push(U("screen", e, n, o, i, Ce));
752
1177
  }
753
1178
  }
754
1179
  for (let e of t) {
755
1180
  let t = e.name;
756
- for (let r of w) {
757
- let i = e.variants[r], a = S[r];
1181
+ for (let n of pe) {
1182
+ let i = e.variants[n], a = M[n];
1183
+ if (a === "self") {
1184
+ r.push(W(we, t, n, i));
1185
+ continue;
1186
+ }
1187
+ let o = a === "initial" ? e.initial : e.variants[a].value;
1188
+ r.push(U("decorator", t, n, o, i, we));
1189
+ }
1190
+ }
1191
+ for (let e of n) {
1192
+ let t = e.name;
1193
+ for (let n of pe) {
1194
+ let i = e.variants[n], a = M[n];
758
1195
  if (a === "self") {
759
- n.push(q(U, t, r, i));
1196
+ r.push(W(Ee, t, n, i));
760
1197
  continue;
761
1198
  }
762
1199
  let o = a === "initial" ? e.initial : e.variants[a].value;
763
- n.push(K("decorator", t, r, o, i, U));
1200
+ r.push(U("part", t, n, o, i, Ee));
764
1201
  }
765
1202
  }
766
- return n.filter((e) => e.length > 0).join("\n\n");
767
- }, Y = (e, t) => {
768
- let n = S[t];
1203
+ return r.filter((e) => e.length > 0).join("\n\n");
1204
+ }, Oe = (e, t) => {
1205
+ let n = M[t];
769
1206
  if (n === "self") return !1;
770
- let r = e.variants[t], i = B(r.options), a = V(r.options);
1207
+ let r = e.variants[t], i = V(r.options), a = Se(r.options);
771
1208
  if (i <= 0 && a <= 0) return !1;
772
- let o = L(n === "initial" ? e.initial : e.variants[n].value), s = L(r.value);
1209
+ let o = R(n === "initial" ? e.initial : e.variants[n].value), s = R(r.value);
773
1210
  return o.length > 0 || s.length > 0;
774
- };
775
- //#endregion
776
- //#region src/utils/isServer.ts
777
- function X() {
778
- return typeof document > "u";
779
- }
780
- //#endregion
781
- //#region src/utils/getMatchedPathPattern.ts
782
- function Z(e, t) {
783
- return Array.isArray(e) ? e.find((e) => n(e).regexp.test(t)) ?? "" : n(e).regexp.test(t) ? e : "";
1211
+ }, ke = "data-flemo";
1212
+ function Ae() {
1213
+ if (c()) return;
1214
+ let e = De(D.values(), A.values(), j.values()), t = document.head.querySelector(`style[${ke}]`);
1215
+ t || (t = document.createElement("style"), t.setAttribute(ke, ""), document.head.appendChild(t)), t.textContent !== e && (t.textContent = e);
784
1216
  }
785
1217
  //#endregion
786
- //#region src/utils/getParams.ts
787
- function re(e, n, r) {
788
- let i = t(Z(e, n))(n), a = new URLSearchParams(r), o = Object.fromEntries(a.entries());
789
- return i ? {
790
- ...i.params,
791
- ...o
792
- } : {};
1218
+ //#region src/transition/animateInline.ts
1219
+ var je = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, G = /* @__PURE__ */ new WeakMap(), Me = (e, t) => {
1220
+ let n = G.get(e);
1221
+ n || (n = /* @__PURE__ */ new Set(), G.set(e, n)), n.add(t);
1222
+ }, K = (e, t) => {
1223
+ if (e.style.transition = "", t) {
1224
+ let n = G.get(e);
1225
+ for (let r of t) e.style.removeProperty(r), n?.delete(r);
1226
+ return;
1227
+ }
1228
+ let n = G.get(e);
1229
+ if (n && n.size > 0) {
1230
+ for (let t of n) e.style.removeProperty(t);
1231
+ n.clear();
1232
+ return;
1233
+ }
1234
+ e.style.removeProperty("transform"), e.style.removeProperty("opacity");
1235
+ }, q = (e, t, n = {}) => {
1236
+ if (!je(e)) return Promise.resolve();
1237
+ let r = e, i = R(t);
1238
+ if (i.length === 0) return Promise.resolve();
1239
+ let a = typeof n.duration == "number" ? n.duration : 0, o = typeof n.delay == "number" && n.delay > 0 ? n.delay : 0, s = B(n.ease);
1240
+ if (a <= 0 && o <= 0) {
1241
+ r.style.transition = "none";
1242
+ for (let e of i) r.style.setProperty(e.property, e.value), Me(r, e.property);
1243
+ return Promise.resolve();
1244
+ }
1245
+ let c = i.map((e) => `${e.property} ${a}s ${s} ${o}s`).join(", ");
1246
+ r.style.transition = c, r.offsetWidth;
1247
+ for (let e of i) r.style.setProperty(e.property, e.value), Me(r, e.property);
1248
+ return new Promise((e) => {
1249
+ let t = !1, n = () => {
1250
+ t || (t = !0, r.removeEventListener("transitionend", i), e());
1251
+ }, i = (e) => {
1252
+ e.target === r && n();
1253
+ };
1254
+ r.addEventListener("transitionend", i), setTimeout(n, (a + o) * 1e3 + 60);
1255
+ });
1256
+ }, J = "data-flemo-skip-animation", Y = () => {};
1257
+ function Ne(e) {
1258
+ return { driveScreenLifecycle: (t) => {
1259
+ let { getElements: n, transitionName: i, prevTransitionName: a, status: o, isActive: s } = t;
1260
+ if (!s) return o === "REPLACING" && a !== i && e.setReplaceTransitionStatus("PENDING"), Y;
1261
+ if (o === "COMPLETED") {
1262
+ e.setDragStatus("IDLE"), e.setReplaceTransitionStatus("IDLE");
1263
+ let { scope: t, decorator: r, bars: i } = n();
1264
+ t && (K(t), t.removeAttribute(J)), r && (K(r), r.removeAttribute(J));
1265
+ for (let e of i ?? []) e && (K(e), e.style.removeProperty("will-change"));
1266
+ return Y;
1267
+ }
1268
+ if (o === "IDLE") return Y;
1269
+ let { scope: c } = n();
1270
+ if (!c) return Y;
1271
+ let l = () => {
1272
+ let t = e.getTransitionTaskId();
1273
+ t && r.resolveTask(t);
1274
+ }, u = D.get(i) ?? D.get("none"), d = `${o}-true`;
1275
+ if (!(c.getAttribute("data-flemo-skip-animation") !== "true" && Oe(u, d))) return queueMicrotask(l), Y;
1276
+ let f = H("screen", i, d), p = (e) => {
1277
+ e.target === c && e.animationName === f && (c.removeEventListener("animationend", p), l());
1278
+ };
1279
+ return c.addEventListener("animationend", p), () => {
1280
+ c.removeEventListener("animationend", p);
1281
+ };
1282
+ } };
793
1283
  }
794
1284
  //#endregion
795
1285
  //#region src/utils/findScrollable.ts
796
- function ie(e, t) {
797
- let { direction: n = "x", markerSelector: r = "[data-swipe-at-edge]", depthLimit: i = 24, verifyByScroll: a = !1 } = t ?? {}, o = ae(e);
1286
+ function X(e, t) {
1287
+ let { direction: n = "x", markerSelector: r = "[data-swipe-at-edge]", depthLimit: i = 24, verifyByScroll: a = !1 } = t ?? {}, o = Pe(e);
798
1288
  if (!o) return {
799
1289
  element: null,
800
1290
  hasMarker: !1
801
1291
  };
802
1292
  let s = o.closest?.(r);
803
- if (s instanceof HTMLElement && Q(s, n) && (!a || $(s, n))) return {
1293
+ if (s instanceof HTMLElement && Z(s, n) && (!a || Q(s, n))) return {
804
1294
  element: s,
805
1295
  hasMarker: !0
806
1296
  };
807
1297
  let c = o, l = 0;
808
1298
  for (; c && l < i;) {
809
- if (Q(c, n) && (!a || $(c, n))) return {
1299
+ if (Z(c, n) && (!a || Q(c, n))) return {
810
1300
  element: c,
811
1301
  hasMarker: !1
812
1302
  };
@@ -817,7 +1307,7 @@ function ie(e, t) {
817
1307
  hasMarker: !1
818
1308
  };
819
1309
  }
820
- function ae(e) {
1310
+ function Pe(e) {
821
1311
  if (!e) return null;
822
1312
  let t = e, n = typeof t.composedPath == "function" ? t.composedPath() : void 0;
823
1313
  if (n && n.length) {
@@ -825,13 +1315,246 @@ function ae(e) {
825
1315
  }
826
1316
  return e instanceof HTMLElement ? e : null;
827
1317
  }
828
- function Q(e, t) {
1318
+ function Z(e, t) {
829
1319
  return t === "y" ? e.scrollHeight - e.clientHeight > 1 : e.scrollWidth - e.clientWidth > 1;
830
1320
  }
831
- function $(e, t) {
832
- if (!Q(e, t) || typeof window > "u") return !1;
1321
+ function Q(e, t) {
1322
+ if (!Z(e, t) || typeof window > "u") return !1;
833
1323
  let n = window.getComputedStyle(e), r = t === "y" ? n.overflowY : n.overflowX;
834
1324
  return r === "auto" || r === "scroll" || r === "overlay";
835
1325
  }
836
1326
  //#endregion
837
- export { r as TaskManger, G as animationName, $ as canProgrammaticallyScroll, I as collectAnimatedProperties, J as compileTransitionStyles, c as consumeSelfInducedPop, y as createDecorator, i as createHistoryStore, a as createNavigateStore, ee as createRawDecorator, u as createRawTransition, l as createTransition, v as createTransitionStore, f as cupertino, te as decoratorMap, z as easingToCss, ie as findScrollable, Z as getMatchedPathPattern, re as getParams, X as isServer, m as layout, s as markSelfInducedPop, h as material, g as none, Q as overflowsAxis, x as overlay, L as targetToDecls, _ as transitionMap, Y as variantHasAnimation };
1327
+ //#region src/core/engine/createSwipeController.ts
1328
+ var Fe = "data-flemo-skip-animation";
1329
+ function Ie(e) {
1330
+ let t = null, n = null, r = {
1331
+ current: [],
1332
+ prev: []
1333
+ }, i = {
1334
+ current: [],
1335
+ prev: []
1336
+ }, a = !1, o = !1, s = !1, c = {
1337
+ x: 0,
1338
+ y: 0
1339
+ }, l = {
1340
+ x: 0,
1341
+ y: 0
1342
+ }, u = 0, d = {
1343
+ x: 0,
1344
+ y: 0
1345
+ }, f = {
1346
+ element: null,
1347
+ hasMarker: !1
1348
+ }, p = {
1349
+ element: null,
1350
+ hasMarker: !1
1351
+ }, m = 0, h = 0, g = (e) => ({
1352
+ point: {
1353
+ x: e.clientX,
1354
+ y: e.clientY
1355
+ },
1356
+ offset: {
1357
+ x: e.clientX - c.x,
1358
+ y: e.clientY - c.y
1359
+ },
1360
+ delta: {
1361
+ x: e.clientX - l.x,
1362
+ y: e.clientY - l.y
1363
+ },
1364
+ velocity: d
1365
+ }), _ = (e) => {
1366
+ let t = e.timeStamp, n = Math.max(1, t - u);
1367
+ d = {
1368
+ x: (e.clientX - l.x) / n * 1e3,
1369
+ y: (e.clientY - l.y) / n * 1e3
1370
+ }, l = {
1371
+ x: e.clientX,
1372
+ y: e.clientY
1373
+ }, u = t;
1374
+ }, v = (n, i, a) => {
1375
+ let o = q(n, i, a);
1376
+ if (n === e.getElements().scope) for (let e of r.current) q(e, i, a);
1377
+ else if (n === t) for (let e of r.prev) q(e, i, a);
1378
+ return o;
1379
+ }, y = (t) => {
1380
+ let n = e.getPartnerBars(), i = [], { sharedTopBar: a, sharedBottomBar: o } = e.getElements();
1381
+ a && e.hasSharedTopBar() && !n?.topBar && i.push(a), o && e.hasSharedBottomBar() && !n?.bottomBar && i.push(o);
1382
+ let s = [];
1383
+ if (t) {
1384
+ let n = t.querySelector("[data-flemo-bar=\"app\"]"), r = t.querySelector("[data-flemo-bar=\"nav\"]");
1385
+ n && !e.hasSharedTopBar() && s.push(n), r && !e.hasSharedBottomBar() && s.push(r);
1386
+ }
1387
+ r = {
1388
+ current: i,
1389
+ prev: s
1390
+ };
1391
+ let c = L(e.getTransition()).join(", ");
1392
+ for (let e of i) e.style.willChange = c;
1393
+ for (let e of s) e.style.willChange = c;
1394
+ }, b = () => {
1395
+ for (let e of r.current) K(e), e.style.removeProperty("will-change");
1396
+ for (let e of r.prev) K(e), e.style.removeProperty("will-change");
1397
+ r = {
1398
+ current: [],
1399
+ prev: []
1400
+ };
1401
+ }, x = (t) => {
1402
+ let { screenContainer: n } = e.getElements(), r = (e) => Array.from(e.querySelectorAll("[data-flemo-part-name]"));
1403
+ i = {
1404
+ current: r(n),
1405
+ prev: r(t)
1406
+ };
1407
+ }, S = (e, t, n) => {
1408
+ let r = (r, i) => {
1409
+ let a = j.get(r.getAttribute("data-flemo-part-name"));
1410
+ if (!a) return;
1411
+ let o = {
1412
+ animate: q,
1413
+ element: r,
1414
+ active: i
1415
+ };
1416
+ e === "swipe" ? a.onSwipe?.(t, n, o) : e === "start" ? a.onSwipeStart?.(t, o) : a.onSwipeEnd?.(t, o);
1417
+ };
1418
+ for (let e of i.current) r(e, !0);
1419
+ for (let e of i.prev) r(e, !1);
1420
+ }, C = () => {
1421
+ for (let e of [...i.current, ...i.prev]) K(e);
1422
+ i = {
1423
+ current: [],
1424
+ prev: []
1425
+ };
1426
+ }, w = async (r) => {
1427
+ let i = e.getTransition();
1428
+ if (!i.swipeDirection || e.getViewportScrollHeight() > 10) return;
1429
+ let { scope: a, screenContainer: o, decorator: f } = e.getElements();
1430
+ if (!a) return;
1431
+ let p = o?.parentElement?.previousElementSibling ?? null;
1432
+ if (t = p?.querySelector("[data-flemo-screen]") ?? null, n = p?.querySelector("[data-flemo-decorator]") ?? null, !t) return;
1433
+ s = !0, c = {
1434
+ x: r.clientX,
1435
+ y: r.clientY
1436
+ }, l = {
1437
+ x: r.clientX,
1438
+ y: r.clientY
1439
+ }, u = r.timeStamp, d = {
1440
+ x: 0,
1441
+ y: 0
1442
+ }, a.setPointerCapture(r.pointerId), y(p), x(p);
1443
+ let m = e.getDecorator();
1444
+ await i.onSwipeStart(r, g(r), {
1445
+ animate: v,
1446
+ currentScreen: a,
1447
+ prevScreen: t,
1448
+ onStart: (e) => {
1449
+ m?.onSwipeStart?.(e, {
1450
+ animate: q,
1451
+ currentDecorator: f,
1452
+ prevDecorator: n
1453
+ }), S("start", e, 0);
1454
+ }
1455
+ }) ? e.setDragStatus("PENDING") : (e.setDragStatus("IDLE"), s = !1, b());
1456
+ }, ee = (r) => {
1457
+ let i = e.getTransition();
1458
+ if (!i.swipeDirection || !s || e.getViewportScrollHeight() > 10) return;
1459
+ _(r);
1460
+ let { scope: a, decorator: o } = e.getElements(), c = e.getDecorator();
1461
+ i.onSwipe(r, g(r), {
1462
+ animate: v,
1463
+ currentScreen: a,
1464
+ prevScreen: t,
1465
+ onProgress: (e, t) => {
1466
+ c?.onSwipe?.(e, t, {
1467
+ animate: q,
1468
+ currentDecorator: o,
1469
+ prevDecorator: n
1470
+ }), S("swipe", e, t);
1471
+ }
1472
+ });
1473
+ }, T = async (a) => {
1474
+ let o = e.getTransition();
1475
+ if (!o.swipeDirection || !s) return;
1476
+ s = !1;
1477
+ let { scope: c, decorator: l } = e.getElements();
1478
+ c && c.hasPointerCapture(a.pointerId) && c.releasePointerCapture(a.pointerId);
1479
+ let u = e.getDecorator();
1480
+ if (await o.onSwipeEnd(a, g(a), {
1481
+ animate: v,
1482
+ currentScreen: c,
1483
+ prevScreen: t,
1484
+ onStart: (e) => {
1485
+ u?.onSwipeEnd?.(e, {
1486
+ animate: q,
1487
+ currentDecorator: l,
1488
+ prevDecorator: n
1489
+ }), S("end", e, 0);
1490
+ }
1491
+ })) {
1492
+ c?.setAttribute(Fe, "true"), l?.setAttribute(Fe, "true");
1493
+ for (let e of r.current) e.style.removeProperty("will-change");
1494
+ for (let e of r.prev) K(e), e.style.removeProperty("will-change");
1495
+ r = {
1496
+ current: [],
1497
+ prev: []
1498
+ };
1499
+ for (let e of i.prev) K(e);
1500
+ i = {
1501
+ current: [],
1502
+ prev: []
1503
+ }, e.back();
1504
+ } else c && K(c), t && K(t), l && K(l), n && K(n), b(), C(), e.setDragStatus("IDLE");
1505
+ };
1506
+ return {
1507
+ pointerDown: (t) => {
1508
+ e.isReadyForDrag() && (f = X(t.target, {
1509
+ direction: "x",
1510
+ verifyByScroll: !0
1511
+ }), p = X(t.target, {
1512
+ direction: "y",
1513
+ verifyByScroll: !0
1514
+ }), m = t.clientX, h = t.clientY, (!f.element && !p.element || f.element || p.element) && (a = !0));
1515
+ },
1516
+ pointerMove: (t) => {
1517
+ if (e.getViewportScrollHeight() > 10) return;
1518
+ if (s) {
1519
+ ee(t);
1520
+ return;
1521
+ }
1522
+ let n = e.getTransition().swipeDirection, r = !f.element && !p.element;
1523
+ if (a && r) {
1524
+ a = !1, o = !0;
1525
+ let e = t.clientY - h, r = t.clientX - m;
1526
+ (n === "y" && e > 0 || n === "x" && r > 0) && w(t);
1527
+ } else if (a && !r) {
1528
+ let e = t.clientX - m, r = t.clientY - h, i = p.element && p.element.scrollTop <= 0, s = f.element && f.element.scrollLeft <= 0 && f.hasMarker;
1529
+ (n === "y" && (i || f.element) && r > 0 && Math.abs(e) < 2 || n === "x" && (s || p.element) && e > 0 && Math.abs(r) < 2) && (a = !1, o = !0, w(t));
1530
+ }
1531
+ },
1532
+ pointerUp: (e) => {
1533
+ a = !1, o = !1, s && T(e);
1534
+ },
1535
+ shouldPreventTouch: () => o
1536
+ };
1537
+ }
1538
+ //#endregion
1539
+ //#region src/core/engine/barRiding.ts
1540
+ var $ = "data-flemo-bar-riding";
1541
+ function Le(e) {
1542
+ let { topBar: t, navBar: n } = e;
1543
+ if (!t && !n) return () => {};
1544
+ let r = () => {
1545
+ let r = e.getStatus();
1546
+ if (!(r === "PUSHING" || r === "POPPING" || r === "REPLACING") || !e.isTopOrTopPrev) {
1547
+ t?.removeAttribute($), n?.removeAttribute($);
1548
+ return;
1549
+ }
1550
+ let i = e.getHistories(), a = e.isActive ? i[e.index - 1]?.id : i[e.index]?.id, o = a ? e.getSharedBars()[a] : void 0, s = e.hasTopBar && !o?.topBar, c = e.hasNavBar && !o?.bottomBar;
1551
+ t && t.setAttribute($, s ? "true" : "false"), n && n.setAttribute($, c ? "true" : "false");
1552
+ };
1553
+ r();
1554
+ let i = e.subscribeStatus(r), a = e.subscribeSharedBars(r);
1555
+ return () => {
1556
+ i(), a(), t?.removeAttribute($), n?.removeAttribute($);
1557
+ };
1558
+ }
1559
+ //#endregion
1560
+ export { J as SKIP_ANIMATION_ATTR, r as TaskManger, q as animateInline, H as animationName, Ae as applyTransitionStyles, Q as canProgrammaticallyScroll, K as clearInlineAnimation, L as collectAnimatedProperties, De as compileTransitionStyles, ee as computeScreenFreeze, h as consumeSelfInducedPop, d as createBrowserHistoryDriver, O as createDecorator, i as createHistoryStore, g as createHistorySync, _ as createMemoryHistoryDriver, v as createNavigateStore, S as createNavigationController, ue as createPartTransition, ce as createRawDecorator, de as createRawPartTransition, te as createRawTransition, w as createScreenSelector, C as createScreenStore, f as createSelfPopGuard, Ie as createSwipeController, T as createTransition, Ne as createTransitionEngine, se as createTransitionStore, E as cupertino, A as decoratorMap, Le as driveBarRiding, B as easingToCss, l as ensureWindowHistoryState, X as findScrollable, a as getMatchedPathPattern, o as getParams, c as isServer, ie as layout, m as markSelfInducedPop, ae as material, oe as none, Z as overflowsAxis, le as overlay, j as partTransitionMap, s as seedInitialHistory, R as targetToDecls, D as transitionMap, Oe as variantHasAnimation };