@react-motion-router/stack 2.0.0-beta.sha-bcb6b06 → 2.0.0-beta.sha-7a69b61

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/build/Screen.d.ts CHANGED
@@ -2,16 +2,16 @@ import { ScreenBase, PlainObject, ScreenBaseProps, ScreenBaseState, ScreenBaseCo
2
2
  import { Navigation } from './Navigation';
3
3
  import { RouteProp, SwipeDirection } from './common/types';
4
4
  import { Router } from './Router';
5
- export type ScreenComponentProps<T extends PlainObject> = ScreenBaseComponentProps<RouteProp<T>, Navigation>;
5
+ export type ScreenComponentProps<T extends PlainObject = object> = ScreenBaseComponentProps<RouteProp<T>, Navigation>;
6
6
  export interface ScreenConfig extends ScreenBaseConfig<RouteProp> {
7
- title?: string;
8
- presentation?: 'default' | 'dialog' | 'modal';
9
- keepAlive?: boolean;
10
- gestureDirection?: SwipeDirection;
11
- gestureAreaWidth?: number;
12
- gestureMinFlingVelocity?: number;
13
- gestureHysteresis?: number;
14
- gestureDisabled?: boolean;
7
+ readonly title?: string;
8
+ readonly presentation?: 'default' | 'dialog' | 'modal';
9
+ readonly keepAlive?: boolean;
10
+ readonly gestureDirection?: SwipeDirection;
11
+ readonly gestureAreaWidth?: number;
12
+ readonly gestureMinFlingVelocity?: number;
13
+ readonly gestureHysteresis?: number;
14
+ readonly gestureDisabled?: boolean;
15
15
  }
16
16
  export interface ScreenProps extends ScreenBaseProps {
17
17
  config?: ScreenConfig;
@@ -0,0 +1 @@
1
+ export {};
package/build/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { NavigationBase as ht, resolveBaseURLFromPattern as dt, matchRoute as Y, ScreenBase as ft, RouterBase as vt, cloneAndInject as gt, includesRoute as pt, useNavigationBase as mt, useRouterBase as yt, useRouteBase as wt, useParamsBase as Et } from "@react-motion-router/core";
2
- import { createRef as Pt, startTransition as N, useDebugValue as j, useEffect as X, useState as St, useRef as $, useCallback as bt } from "react";
2
+ import { createRef as Pt, startTransition as N, useDebugValue as j, useEffect as C, useState as St, useRef as $, useCallback as bt } from "react";
3
3
  import { GestureTimeline as _t, springToLinear as Lt, easingToLinear as A } from "web-animations-extension";
4
4
  import { jsx as ut } from "react/jsx-runtime";
5
5
  var g = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, Tt = {}, T = {};
@@ -43,13 +43,13 @@ var q = {}, Ft = g && g.__importDefault || function(n) {
43
43
  return n && n.__esModule ? n : { default: n };
44
44
  };
45
45
  Object.defineProperty(q, "__esModule", { value: !0 });
46
- const Dt = Ft(T);
47
- class Ot extends Dt.default {
46
+ const Ot = Ft(T);
47
+ class Dt extends Ot.default {
48
48
  constructor(t) {
49
49
  super("tap", t), this.duration = 0;
50
50
  }
51
51
  }
52
- q.default = Ot;
52
+ q.default = Dt;
53
53
  var G = {}, Kt = g && g.__importDefault || function(n) {
54
54
  return n && n.__esModule ? n : { default: n };
55
55
  };
@@ -66,12 +66,12 @@ var F = {}, Yt = g && g.__importDefault || function(n) {
66
66
  };
67
67
  Object.defineProperty(F, "__esModule", { value: !0 });
68
68
  F.SwipeEndEvent = F.SwipeStartEvent = void 0;
69
- const Xt = Yt(T);
69
+ const Ct = Yt(T);
70
70
  var st;
71
71
  (function(n) {
72
72
  n[n.start = 0] = "start", n[n.end = 1] = "end";
73
73
  })(st || (st = {}));
74
- class z extends Xt.default {
74
+ class z extends Ct.default {
75
75
  constructor(t, e, r) {
76
76
  let s;
77
77
  switch (r) {
@@ -87,12 +87,12 @@ class z extends Xt.default {
87
87
  super(s, t), this.velocity = e.velocity, this.direction = e.direction;
88
88
  }
89
89
  }
90
- class Ct extends z {
90
+ class Xt extends z {
91
91
  constructor(t, e) {
92
92
  super(t, e);
93
93
  }
94
94
  }
95
- F.default = Ct;
95
+ F.default = Xt;
96
96
  class jt extends z {
97
97
  constructor(t, e) {
98
98
  super(t, e, "start");
@@ -105,11 +105,11 @@ class Ht extends z {
105
105
  }
106
106
  }
107
107
  F.SwipeEndEvent = Ht;
108
- var D = {}, Ut = g && g.__importDefault || function(n) {
108
+ var O = {}, Ut = g && g.__importDefault || function(n) {
109
109
  return n && n.__esModule ? n : { default: n };
110
110
  };
111
- Object.defineProperty(D, "__esModule", { value: !0 });
112
- D.PanEndEvent = D.PanStartEvent = void 0;
111
+ Object.defineProperty(O, "__esModule", { value: !0 });
112
+ O.PanEndEvent = O.PanStartEvent = void 0;
113
113
  const Nt = Ut(T);
114
114
  var it;
115
115
  (function(n) {
@@ -143,24 +143,24 @@ class Vt extends Z {
143
143
  super(t, e);
144
144
  }
145
145
  }
146
- D.default = Vt;
146
+ O.default = Vt;
147
147
  class $t extends Z {
148
148
  constructor(t, e) {
149
149
  super(t, e, "start");
150
150
  }
151
151
  }
152
- D.PanStartEvent = $t;
152
+ O.PanStartEvent = $t;
153
153
  class At extends Z {
154
154
  constructor(t, e) {
155
155
  super(t, e, "end");
156
156
  }
157
157
  }
158
- D.PanEndEvent = At;
159
- var O = {}, Wt = g && g.__importDefault || function(n) {
158
+ O.PanEndEvent = At;
159
+ var D = {}, Wt = g && g.__importDefault || function(n) {
160
160
  return n && n.__esModule ? n : { default: n };
161
161
  };
162
- Object.defineProperty(O, "__esModule", { value: !0 });
163
- O.PinchEndEvent = O.PinchStartEvent = void 0;
162
+ Object.defineProperty(D, "__esModule", { value: !0 });
163
+ D.PinchEndEvent = D.PinchStartEvent = void 0;
164
164
  const qt = Wt(T);
165
165
  var at;
166
166
  (function(n) {
@@ -190,19 +190,19 @@ class Gt extends J {
190
190
  super(t, e);
191
191
  }
192
192
  }
193
- O.default = Gt;
193
+ D.default = Gt;
194
194
  class zt extends J {
195
195
  constructor(t, e) {
196
196
  super(t, e, "start");
197
197
  }
198
198
  }
199
- O.PinchStartEvent = zt;
199
+ D.PinchStartEvent = zt;
200
200
  class Zt extends J {
201
201
  constructor(t, e) {
202
202
  super(t, e, "end");
203
203
  }
204
204
  }
205
- O.PinchEndEvent = Zt;
205
+ D.PinchEndEvent = Zt;
206
206
  var K = {}, Jt = g && g.__importDefault || function(n) {
207
207
  return n && n.__esModule ? n : { default: n };
208
208
  };
@@ -352,13 +352,13 @@ R.closest = ie;
352
352
  } }), Object.defineProperty(n, "SwipeStartEvent", { enumerable: !0, get: function() {
353
353
  return f.SwipeStartEvent;
354
354
  } });
355
- const d = r(D);
355
+ const d = r(O);
356
356
  n.PanEvent = d.default, Object.defineProperty(n, "PanEndEvent", { enumerable: !0, get: function() {
357
357
  return d.PanEndEvent;
358
358
  } }), Object.defineProperty(n, "PanStartEvent", { enumerable: !0, get: function() {
359
359
  return d.PanStartEvent;
360
360
  } });
361
- const P = r(O);
361
+ const P = r(D);
362
362
  n.PinchEvent = P.default, Object.defineProperty(n, "PinchEndEvent", { enumerable: !0, get: function() {
363
363
  return P.PinchEndEvent;
364
364
  } }), Object.defineProperty(n, "PinchStartEvent", { enumerable: !0, get: function() {
@@ -494,7 +494,7 @@ R.closest = ie;
494
494
  y: E.y / b
495
495
  }, S = Math.atan2(k.y, k.x);
496
496
  this.octant = Math.round(4 * S / (2 * Math.PI) + 4) % 4;
497
- const C = (a.timeStamp - this.touchStart.timeStamp) / 1e3, M = E.magnitude / C;
497
+ const X = (a.timeStamp - this.touchStart.timeStamp) / 1e3, M = E.magnitude / X;
498
498
  if (this.isSwiping) {
499
499
  const _ = new f.default(a, {
500
500
  direction: p[(0, v.closest)(this.octant, [0, 1, 2, 3])],
@@ -808,7 +808,26 @@ class Je extends ft {
808
808
  super.setParams(t), this.setHistoryState(({ params: e }) => ({ params: { ...e, ...t } }));
809
809
  }
810
810
  setConfig(t) {
811
- super.setConfig(t), delete t.footer, delete t.header, delete t.onEnter, delete t.onEntered, delete t.onExit, delete t.onExited, delete t.animation, console.log(t), this.setHistoryState(({ config: e }) => ({ config: { ...e, ...t } }));
811
+ super.setConfig(t), this.setHistoryState(({ config: e }) => {
812
+ const r = /* @__PURE__ */ new Set([
813
+ "footer",
814
+ "header",
815
+ "onEnter",
816
+ "onEntered",
817
+ "onExit",
818
+ "onExited",
819
+ "onLoad",
820
+ "animation"
821
+ ]);
822
+ return {
823
+ config: {
824
+ ...e,
825
+ ...Object.fromEntries(
826
+ Object.entries(t).filter(([s]) => !r.has(s))
827
+ )
828
+ }
829
+ };
830
+ });
812
831
  }
813
832
  get router() {
814
833
  return this.context;
@@ -1382,7 +1401,7 @@ function Te(n, t = {}) {
1382
1401
  },
1383
1402
  [n]
1384
1403
  );
1385
- return X(() => {
1404
+ return C(() => {
1386
1405
  const s = new IntersectionObserver(r, t), i = e.current;
1387
1406
  return i && s.observe(i), () => {
1388
1407
  i && s.unobserve(i);
@@ -1390,7 +1409,7 @@ function Te(n, t = {}) {
1390
1409
  }, [r, t]), e;
1391
1410
  }
1392
1411
  function ct(n, t, e, r) {
1393
- X(() => {
1412
+ C(() => {
1394
1413
  const s = n.current;
1395
1414
  if (s)
1396
1415
  return s.addEventListener(t, e, r), () => {
@@ -1430,16 +1449,16 @@ function rn({
1430
1449
  },
1431
1450
  w ? c : {}
1432
1451
  );
1433
- X(() => {
1452
+ C(() => {
1434
1453
  !n || !v || d.preload(s, { params: e });
1435
1454
  }, [n, s, d, v, e]);
1436
1455
  const [u, a] = St(void 0), h = d?.routerId, E = !u?.includes(window.location.origin) ? "noopener noreferrer" : t ? "prev" : "next";
1437
- X(() => {
1456
+ C(() => {
1438
1457
  if (t && d.canGoBack())
1439
1458
  a(d.previous.url?.href);
1440
1459
  else if (s) {
1441
- const S = ge(e), C = new URL(s, d.baseURL);
1442
- C.search = S, a(C.href);
1460
+ const S = ge(e), X = new URL(s, d.baseURL);
1461
+ X.search = S, a(X.href);
1443
1462
  }
1444
1463
  }, [s, e, d, t]);
1445
1464
  const b = (S) => {
@@ -1532,7 +1551,7 @@ const sn = [
1532
1551
  {
1533
1552
  transform: "translateY(0vh)"
1534
1553
  }
1535
- ], De = [
1554
+ ], Oe = [
1536
1555
  {
1537
1556
  transform: "translateY(100vh)"
1538
1557
  },
@@ -1592,7 +1611,7 @@ const sn = [
1592
1611
  {
1593
1612
  opacity: 0
1594
1613
  }
1595
- ], Oe = [
1614
+ ], De = [
1596
1615
  {
1597
1616
  opacity: 0,
1598
1617
  transform: "translateY(calc(100vh * 0.08))"
@@ -1641,7 +1660,7 @@ const sn = [
1641
1660
  {
1642
1661
  transform: "translateY(-2vh)"
1643
1662
  }
1644
- ], Xe = [
1663
+ ], Ce = [
1645
1664
  {
1646
1665
  transform: "scale(0.85)",
1647
1666
  opacity: 0
@@ -1658,7 +1677,7 @@ const sn = [
1658
1677
  transform: "scale(1)",
1659
1678
  opacity: 1
1660
1679
  }
1661
- ], Ce = [
1680
+ ], Xe = [
1662
1681
  {
1663
1682
  transform: "scale(1)",
1664
1683
  opacity: 1
@@ -1743,7 +1762,7 @@ function yn({ ref: n, direction: t, playbackRate: e, index: r }) {
1743
1762
  return t === "reverse" && (i = i.toReversed()), new KeyframeEffect(n, i, o);
1744
1763
  }
1745
1764
  function wn({ ref: n, direction: t, playbackRate: e }) {
1746
- let r = De;
1765
+ let r = Oe;
1747
1766
  const s = {
1748
1767
  playbackRate: e,
1749
1768
  fill: "forwards",
@@ -1752,7 +1771,7 @@ function wn({ ref: n, direction: t, playbackRate: e }) {
1752
1771
  return t === "reverse" && (r = r.toReversed()), new KeyframeEffect(n, r, s);
1753
1772
  }
1754
1773
  function En({ ref: n, direction: t, playbackRate: e }) {
1755
- let r = Oe;
1774
+ let r = De;
1756
1775
  const s = {
1757
1776
  playbackRate: e,
1758
1777
  fill: "forwards",
@@ -1799,8 +1818,8 @@ function bn({ ref: n, direction: t, index: e, playbackRate: r }) {
1799
1818
  }
1800
1819
  function _n({ ref: n, direction: t, index: e, playbackRate: r }) {
1801
1820
  const i = [
1802
- Ce,
1803
- Xe
1821
+ Xe,
1822
+ Ce
1804
1823
  ][e], o = {
1805
1824
  direction: t,
1806
1825
  playbackRate: r,
@@ -1811,7 +1830,7 @@ function _n({ ref: n, direction: t, index: e, playbackRate: r }) {
1811
1830
  }
1812
1831
  function Ln({ disabled: n, children: t, ...e }) {
1813
1832
  const r = $(null);
1814
- return X(() => {
1833
+ return C(() => {
1815
1834
  if (n)
1816
1835
  return;
1817
1836
  const s = (i) => {
@@ -1855,7 +1874,7 @@ export {
1855
1874
  We as androidBottomSheetSlideOutOptions,
1856
1875
  Ye as androidConcealToBottomKeyframes,
1857
1876
  En as androidFadeInFromBottom,
1858
- Oe as androidFadeInFromBottomKeyframes,
1877
+ De as androidFadeInFromBottomKeyframes,
1859
1878
  lt as androidFadeInFromBottomOptions,
1860
1879
  Pn as androidFadeInFromBottomSheet,
1861
1880
  je as androidFadeInFromBottomSheetKeyframes,
@@ -1867,12 +1886,12 @@ export {
1867
1886
  Be as androidRevealFromBottomKeyframes,
1868
1887
  Ve as androidRevealFromBottomOptions,
1869
1888
  _n as androidScaleFromCentre,
1870
- Xe as androidScaleFromCentreKeyframes,
1889
+ Ce as androidScaleFromCentreKeyframes,
1871
1890
  $e as androidScaleFromCentreOptions,
1872
- Ce as androidScaleToCentreKeyframes,
1891
+ Xe as androidScaleToCentreKeyframes,
1873
1892
  tt as iOSKeyframeOptions,
1874
1893
  wn as iOSSlideInFromBottom,
1875
- De as iOSSlideInFromBottomKeyframes,
1894
+ Oe as iOSSlideInFromBottomKeyframes,
1876
1895
  yn as iOSSlideInFromLeft,
1877
1896
  xe as iOSSlideInFromLeftKeyframes,
1878
1897
  mn as iOSSlideInFromRight,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/web-gesture-events/Gestures/GestureEvent.js","../../../node_modules/web-gesture-events/Gestures/LongPressEvent.js","../../../node_modules/web-gesture-events/Gestures/TapEvent.js","../../../node_modules/web-gesture-events/Gestures/DoubleTapEvent.js","../../../node_modules/web-gesture-events/Gestures/SwipeEvent.js","../../../node_modules/web-gesture-events/Gestures/PanEvent.js","../../../node_modules/web-gesture-events/Gestures/PinchEvent.js","../../../node_modules/web-gesture-events/Gestures/RotateEvent.js","../../../node_modules/web-gesture-events/utils.js","../../../node_modules/web-gesture-events/index.js","../src/common/events.ts","../src/HistoryEntry.ts","../src/Navigation.ts","../src/common/utils.ts","../src/Screen.tsx","../src/common/types.ts","../src/common/constants.ts","../src/common/promise-wrapper.ts","../src/Router.tsx","../src/common/hooks.ts","../src/Anchor.tsx","../src/animation-configs/keyframe-presets.ts","../src/animation-configs/keyframe-options-presets.ts","../src/animation-configs/animation-presets.ts","../src/GestureRegion.tsx"],"sourcesContent":["\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar GestureEventTypeEnum;\r\n(function (GestureEventTypeEnum) {\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"tap\"] = 0] = \"tap\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"longpress\"] = 1] = \"longpress\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"pinchstart\"] = 2] = \"pinchstart\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"pinch\"] = 3] = \"pinch\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"pinchend\"] = 4] = \"pinchend\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"rotatestart\"] = 5] = \"rotatestart\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"rotate\"] = 6] = \"rotate\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"rotateend\"] = 7] = \"rotateend\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"swipestart\"] = 8] = \"swipestart\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"swipe\"] = 9] = \"swipe\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"swipeend\"] = 10] = \"swipeend\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"panstart\"] = 11] = \"panstart\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"pan\"] = 12] = \"pan\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"panend\"] = 13] = \"panend\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"doubletap\"] = 14] = \"doubletap\";\r\n})(GestureEventTypeEnum || (GestureEventTypeEnum = {}));\r\nclass GestureEvent extends TouchEvent {\r\n constructor(type, touchEvent) {\r\n super(type, {\r\n touches: Array.from(touchEvent.touches),\r\n targetTouches: Array.from(touchEvent.targetTouches),\r\n changedTouches: Array.from(touchEvent.changedTouches),\r\n ctrlKey: touchEvent.ctrlKey,\r\n shiftKey: touchEvent.shiftKey,\r\n altKey: touchEvent.altKey,\r\n metaKey: touchEvent.metaKey,\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n if (type.includes(\"end\") || touchEvent.type.includes(\"end\")) {\r\n this.gestureTarget = touchEvent.changedTouches[0].target;\r\n this.x = touchEvent.changedTouches[0].clientX;\r\n this.y = touchEvent.changedTouches[0].clientY;\r\n return;\r\n }\r\n this.gestureTarget = touchEvent.touches[0].target;\r\n this.x = touchEvent.touches[0].clientX;\r\n this.y = touchEvent.touches[0].clientY;\r\n }\r\n}\r\nexports.default = GestureEvent;\r\n//# sourceMappingURL=GestureEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nclass LongPressEvent extends GestureEvent_1.default {\r\n constructor(touchEvent, duration) {\r\n super('longpress', touchEvent);\r\n this.duration = 0;\r\n this.duration = duration;\r\n }\r\n}\r\nexports.default = LongPressEvent;\r\n//# sourceMappingURL=LongPressEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nclass TapEvent extends GestureEvent_1.default {\r\n constructor(touchEvent) {\r\n super('tap', touchEvent);\r\n this.duration = 0;\r\n }\r\n}\r\nexports.default = TapEvent;\r\n//# sourceMappingURL=TapEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nclass DoubleTapEvent extends GestureEvent_1.default {\r\n constructor(touchEvent) {\r\n super('doubletap', touchEvent);\r\n }\r\n}\r\nexports.default = DoubleTapEvent;\r\n//# sourceMappingURL=DoubleTapEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwipeEndEvent = exports.SwipeStartEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nvar SwipeLifecycleStateEnum;\r\n(function (SwipeLifecycleStateEnum) {\r\n SwipeLifecycleStateEnum[SwipeLifecycleStateEnum[\"start\"] = 0] = \"start\";\r\n SwipeLifecycleStateEnum[SwipeLifecycleStateEnum[\"end\"] = 1] = \"end\";\r\n})(SwipeLifecycleStateEnum || (SwipeLifecycleStateEnum = {}));\r\nclass SwipeEventBase extends GestureEvent_1.default {\r\n constructor(touchEvent, swipeData, state) {\r\n let eventType;\r\n switch (state) {\r\n case \"start\":\r\n eventType = \"swipestart\";\r\n break;\r\n case \"end\":\r\n eventType = \"swipeend\";\r\n break;\r\n default:\r\n eventType = \"swipe\";\r\n }\r\n super(eventType, touchEvent);\r\n this.velocity = swipeData.velocity;\r\n this.direction = swipeData.direction;\r\n }\r\n}\r\nclass SwipeEvent extends SwipeEventBase {\r\n constructor(touchEvent, swipeData) {\r\n super(touchEvent, swipeData);\r\n }\r\n}\r\nexports.default = SwipeEvent;\r\nclass SwipeStartEvent extends SwipeEventBase {\r\n constructor(touchEvent, swipeData) {\r\n super(touchEvent, swipeData, \"start\");\r\n }\r\n}\r\nexports.SwipeStartEvent = SwipeStartEvent;\r\nclass SwipeEndEvent extends SwipeEventBase {\r\n constructor(touchEvent, swipeData) {\r\n super(touchEvent, swipeData, \"end\");\r\n }\r\n}\r\nexports.SwipeEndEvent = SwipeEndEvent;\r\n//# sourceMappingURL=SwipeEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PanEndEvent = exports.PanStartEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nvar PanLifecycleStateEnum;\r\n(function (PanLifecycleStateEnum) {\r\n PanLifecycleStateEnum[PanLifecycleStateEnum[\"start\"] = 0] = \"start\";\r\n PanLifecycleStateEnum[PanLifecycleStateEnum[\"end\"] = 1] = \"end\";\r\n})(PanLifecycleStateEnum || (PanLifecycleStateEnum = {}));\r\nclass PanEventBase extends GestureEvent_1.default {\r\n constructor(touchEvent, panData, state) {\r\n let eventType;\r\n switch (state) {\r\n case \"start\":\r\n eventType = \"panstart\";\r\n break;\r\n case \"end\":\r\n eventType = \"panend\";\r\n break;\r\n default:\r\n eventType = \"pan\";\r\n }\r\n super(eventType, touchEvent);\r\n this.velocity = panData.velocity;\r\n this.translation = {\r\n x: panData.translation.x,\r\n y: panData.translation.y,\r\n magnitude: panData.translation.magnitude,\r\n clientX: panData.translation.clientX,\r\n clientY: panData.translation.clientY,\r\n clientMagnitude: panData.translation.clientMagnitude\r\n };\r\n }\r\n}\r\nclass PanEvent extends PanEventBase {\r\n constructor(touchEvent, panData) {\r\n super(touchEvent, panData);\r\n }\r\n}\r\nexports.default = PanEvent;\r\nclass PanStartEvent extends PanEventBase {\r\n constructor(touchEvent, panData) {\r\n super(touchEvent, panData, \"start\");\r\n }\r\n}\r\nexports.PanStartEvent = PanStartEvent;\r\nclass PanEndEvent extends PanEventBase {\r\n constructor(touchEvent, panData) {\r\n super(touchEvent, panData, \"end\");\r\n }\r\n}\r\nexports.PanEndEvent = PanEndEvent;\r\n//# sourceMappingURL=PanEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PinchEndEvent = exports.PinchStartEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nvar PinchLifecycleStateEnum;\r\n(function (PinchLifecycleStateEnum) {\r\n PinchLifecycleStateEnum[PinchLifecycleStateEnum[\"start\"] = 0] = \"start\";\r\n PinchLifecycleStateEnum[PinchLifecycleStateEnum[\"end\"] = 1] = \"end\";\r\n})(PinchLifecycleStateEnum || (PinchLifecycleStateEnum = {}));\r\nclass PinchEventBase extends GestureEvent_1.default {\r\n constructor(touchEvent, pinchData, state) {\r\n let eventType;\r\n switch (state) {\r\n case \"start\":\r\n eventType = \"pinchstart\";\r\n break;\r\n case \"end\":\r\n eventType = \"pinchend\";\r\n break;\r\n default:\r\n eventType = \"pinch\";\r\n }\r\n super(eventType, touchEvent);\r\n Object.defineProperty(this, 'scale', {\r\n value: pinchData.scale,\r\n writable: false\r\n });\r\n }\r\n}\r\nclass PinchEvent extends PinchEventBase {\r\n constructor(touchEvent, pinchData) {\r\n super(touchEvent, pinchData);\r\n }\r\n}\r\nexports.default = PinchEvent;\r\nclass PinchStartEvent extends PinchEventBase {\r\n constructor(touchEvent, pinchData) {\r\n super(touchEvent, pinchData, \"start\");\r\n }\r\n}\r\nexports.PinchStartEvent = PinchStartEvent;\r\nclass PinchEndEvent extends PinchEventBase {\r\n constructor(touchEvent, pinchData) {\r\n super(touchEvent, pinchData, \"end\");\r\n }\r\n}\r\nexports.PinchEndEvent = PinchEndEvent;\r\n//# sourceMappingURL=PinchEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RotateEndEvent = exports.RotateStartEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nvar RotateLifecycleStateEnum;\r\n(function (RotateLifecycleStateEnum) {\r\n RotateLifecycleStateEnum[RotateLifecycleStateEnum[\"start\"] = 0] = \"start\";\r\n RotateLifecycleStateEnum[RotateLifecycleStateEnum[\"end\"] = 1] = \"end\";\r\n})(RotateLifecycleStateEnum || (RotateLifecycleStateEnum = {}));\r\nclass RotateEventBase extends GestureEvent_1.default {\r\n constructor(touchEvent, rotationData, state) {\r\n let eventType;\r\n switch (state) {\r\n case \"start\":\r\n eventType = \"rotatestart\";\r\n break;\r\n case \"end\":\r\n eventType = \"rotateend\";\r\n break;\r\n default:\r\n eventType = \"rotate\";\r\n }\r\n super(eventType, touchEvent);\r\n this.anchor = {\r\n x: rotationData.anchor.x,\r\n y: rotationData.anchor.y,\r\n clientX: rotationData.anchor.clientX,\r\n clientY: rotationData.anchor.clientY\r\n };\r\n Object.defineProperty(this, 'rotation', {\r\n value: rotationData.rotation,\r\n writable: false\r\n });\r\n this.rotationDeg = rotationData.rotationDeg;\r\n }\r\n}\r\nclass RotateEvent extends RotateEventBase {\r\n constructor(touchEvent, rotationData) {\r\n super(touchEvent, rotationData);\r\n }\r\n}\r\nexports.default = RotateEvent;\r\nclass RotateStartEvent extends RotateEventBase {\r\n constructor(touchEvent, rotationData) {\r\n super(touchEvent, rotationData, \"start\");\r\n }\r\n}\r\nexports.RotateStartEvent = RotateStartEvent;\r\nclass RotateEndEvent extends RotateEventBase {\r\n constructor(touchEvent, rotationData) {\r\n super(touchEvent, rotationData, \"end\");\r\n }\r\n}\r\nexports.RotateEndEvent = RotateEndEvent;\r\n//# sourceMappingURL=RotateEvent.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.closest = exports.Vec2 = exports.assert = void 0;\r\nfunction assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n}\r\nexports.assert = assert;\r\nclass Vec2 {\r\n constructor(_x, _y) {\r\n this._x = 0;\r\n this._y = 0;\r\n this._clientX = 0;\r\n this._clientY = 0;\r\n this._clientX = _x;\r\n this._clientY = _y;\r\n this._x = this.translateX(_x);\r\n this._y = this.translateY(_y);\r\n }\r\n translateY(_y) {\r\n return -(_y - window.innerHeight / 2);\r\n }\r\n translateX(_x) {\r\n return _x - window.innerWidth / 2;\r\n }\r\n get x() {\r\n return this._x;\r\n }\r\n get y() {\r\n return this._y;\r\n }\r\n get clientX() {\r\n return this._clientX;\r\n }\r\n get clientY() {\r\n return this._clientY;\r\n }\r\n set x(_x) {\r\n this._clientX = _x;\r\n this._x = this.translateX(_x);\r\n }\r\n set y(_y) {\r\n this._clientY = _y;\r\n this._y = this.translateY(_y);\r\n }\r\n add(vector) {\r\n this._x += vector.x;\r\n this._y += vector.y;\r\n this._clientX += vector.clientX;\r\n this._clientY += vector.clientY;\r\n return this;\r\n }\r\n substract(vector) {\r\n this._x -= vector.x;\r\n this._y -= vector.y;\r\n this._clientX -= vector.clientX;\r\n this._clientY -= vector.clientY;\r\n return this;\r\n }\r\n dot(vector) {\r\n const scalar = (this._x * vector.x) + (this._y * vector.y);\r\n return scalar;\r\n }\r\n get magnitude() {\r\n return Math.sqrt(Math.pow(this._x, 2) + Math.pow(this._y, 2));\r\n }\r\n get clientMagnitude() {\r\n return Math.sqrt(Math.pow(this._clientX, 2) + Math.pow(this._clientY, 2));\r\n }\r\n}\r\nexports.Vec2 = Vec2;\r\nfunction closest(needle, haystack) {\r\n return haystack.reduce((a, b) => {\r\n let a_diff = Math.abs(a - needle);\r\n let b_diff = Math.abs(b - needle);\r\n if (a_diff === b_diff) {\r\n return a > b ? a : b;\r\n }\r\n else {\r\n return b_diff < a_diff ? b : a;\r\n }\r\n });\r\n}\r\nexports.closest = closest;\r\n//# sourceMappingURL=utils.js.map","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RotateEndEvent = exports.RotateEvent = exports.RotateStartEvent = exports.PinchEndEvent = exports.PinchEvent = exports.PinchStartEvent = exports.PanEndEvent = exports.PanEvent = exports.PanStartEvent = exports.SwipeEndEvent = exports.SwipeEvent = exports.SwipeStartEvent = exports.DoubleTapEvent = exports.LongPressEvent = exports.GestureEvent = exports.TapEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./Gestures/GestureEvent\"));\r\nexports.GestureEvent = GestureEvent_1.default;\r\nconst LongPressEvent_1 = __importDefault(require(\"./Gestures/LongPressEvent\"));\r\nexports.LongPressEvent = LongPressEvent_1.default;\r\nconst TapEvent_1 = __importDefault(require(\"./Gestures/TapEvent\"));\r\nexports.TapEvent = TapEvent_1.default;\r\nconst DoubleTapEvent_1 = __importDefault(require(\"./Gestures/DoubleTapEvent\"));\r\nexports.DoubleTapEvent = DoubleTapEvent_1.default;\r\nconst SwipeEvent_1 = __importStar(require(\"./Gestures/SwipeEvent\"));\r\nexports.SwipeEvent = SwipeEvent_1.default;\r\nObject.defineProperty(exports, \"SwipeEndEvent\", { enumerable: true, get: function () { return SwipeEvent_1.SwipeEndEvent; } });\r\nObject.defineProperty(exports, \"SwipeStartEvent\", { enumerable: true, get: function () { return SwipeEvent_1.SwipeStartEvent; } });\r\nconst PanEvent_1 = __importStar(require(\"./Gestures/PanEvent\"));\r\nexports.PanEvent = PanEvent_1.default;\r\nObject.defineProperty(exports, \"PanEndEvent\", { enumerable: true, get: function () { return PanEvent_1.PanEndEvent; } });\r\nObject.defineProperty(exports, \"PanStartEvent\", { enumerable: true, get: function () { return PanEvent_1.PanStartEvent; } });\r\nconst PinchEvent_1 = __importStar(require(\"./Gestures/PinchEvent\"));\r\nexports.PinchEvent = PinchEvent_1.default;\r\nObject.defineProperty(exports, \"PinchEndEvent\", { enumerable: true, get: function () { return PinchEvent_1.PinchEndEvent; } });\r\nObject.defineProperty(exports, \"PinchStartEvent\", { enumerable: true, get: function () { return PinchEvent_1.PinchStartEvent; } });\r\nconst RotateEvent_1 = __importStar(require(\"./Gestures/RotateEvent\"));\r\nexports.RotateEvent = RotateEvent_1.default;\r\nObject.defineProperty(exports, \"RotateEndEvent\", { enumerable: true, get: function () { return RotateEvent_1.RotateEndEvent; } });\r\nObject.defineProperty(exports, \"RotateStartEvent\", { enumerable: true, get: function () { return RotateEvent_1.RotateStartEvent; } });\r\nconst utils_1 = require(\"./utils\");\r\nvar CartesianDirectionEnum;\r\n(function (CartesianDirectionEnum) {\r\n CartesianDirectionEnum[CartesianDirectionEnum[\"right\"] = 0] = \"right\";\r\n CartesianDirectionEnum[CartesianDirectionEnum[\"up\"] = 1] = \"up\";\r\n CartesianDirectionEnum[CartesianDirectionEnum[\"left\"] = 2] = \"left\";\r\n CartesianDirectionEnum[CartesianDirectionEnum[\"down\"] = 3] = \"down\";\r\n})(CartesianDirectionEnum || (CartesianDirectionEnum = {}));\r\nclass GestureProvider {\r\n constructor() {\r\n this.touchStart = new TouchEvent('touchstart') || {};\r\n this.touchMove = new TouchEvent('touchmove') || {};\r\n this.touchEnd = new TouchEvent('touchend') || {};\r\n this.touchCancel = new TouchEvent('touchcancel') || {};\r\n this.velocity = 0;\r\n this.dxDy = new utils_1.Vec2(0, 0);\r\n this.scale = 1;\r\n this.rotation = 0;\r\n this.rotationDeg = 0;\r\n this.anchor = new utils_1.Vec2(0, 0);\r\n this.octant = 0;\r\n this.isPanning = false;\r\n this.isPinching = false;\r\n this.isSwiping = false;\r\n this.isRotating = false;\r\n this.touchStartTime = 0;\r\n this.touchEndTime = 0;\r\n this.lastTouchTime = 0;\r\n this.taps = 0;\r\n this.scaleBase = 0;\r\n this.touchMoved = false;\r\n this.touchDown = false;\r\n this.shouldFire = false;\r\n this.pointers = 0;\r\n this.isLongPress = false;\r\n this.longPressTimeout = 0;\r\n this.touchStartListener = this.onTouchStart.bind(this);\r\n this.touchMoveListener = this.onTouchMove.bind(this);\r\n this.touchEndListener = this.onTouchEnd.bind(this);\r\n this.touchCancelListener = this.onTouchCancel.bind(this);\r\n this.currentTarget = window;\r\n this.config = {\r\n longPressDuration: 500,\r\n tapDelay: 500,\r\n minPointers: 1,\r\n numberOfTaps: 0\r\n };\r\n if (!GestureProvider.listening) {\r\n if (TouchEvent)\r\n window.addEventListener('touchstart', this.touchStartListener, true);\r\n GestureProvider.listening = true;\r\n }\r\n }\r\n bind(target) {\r\n this.unbind(this.currentTarget);\r\n target.addEventListener('touchmove', this.touchMoveListener, true);\r\n target.addEventListener('touchend', this.touchEndListener, true);\r\n target.addEventListener('touchcancel', this.touchCancelListener, true);\r\n this.currentTarget = target;\r\n }\r\n unbind(target) {\r\n target.removeEventListener('touchmove', this.touchMoveListener);\r\n target.removeEventListener('touchend', this.touchEndListener);\r\n target.removeEventListener('touchcancel', this.touchCancelListener);\r\n }\r\n clean() {\r\n this.touchMoved = false;\r\n this.touchStartTime = 0;\r\n this.touchDown = false;\r\n this.scaleBase = 0;\r\n if (this.longPressTimeout && !this.isLongPress) {\r\n clearTimeout(this.longPressTimeout);\r\n this.longPressTimeout = 0;\r\n }\r\n this.isLongPress = false;\r\n }\r\n onPointerLeave(touchEnd) {\r\n if (!touchEnd.touches.length) {\r\n if (this.isSwiping) {\r\n const swipeEndEvent = new SwipeEvent_1.SwipeEndEvent(touchEnd, {\r\n velocity: this.velocity,\r\n direction: CartesianDirectionEnum[(0, utils_1.closest)(this.octant, [0, 1, 2, 3])]\r\n });\r\n this.dispatchEvent(swipeEndEvent);\r\n this.isSwiping = false;\r\n }\r\n if (this.isPanning) {\r\n const panEndEvent = new PanEvent_1.PanEndEvent(touchEnd, {\r\n translation: this.dxDy,\r\n velocity: this.velocity\r\n });\r\n this.dispatchEvent(panEndEvent);\r\n this.isPanning = false;\r\n }\r\n }\r\n if (touchEnd.touches.length === 1) {\r\n this.scaleBase = 0;\r\n if (this.isPinching) {\r\n const pinchEndEvent = new PinchEvent_1.PinchEndEvent(touchEnd, {\r\n scale: this.scale\r\n });\r\n this.dispatchEvent(pinchEndEvent);\r\n this.isPinching = false;\r\n }\r\n if (this.isRotating) {\r\n const rotateEndEvent = new RotateEvent_1.RotateEndEvent(touchEnd, {\r\n rotation: this.rotation,\r\n rotationDeg: this.rotationDeg,\r\n anchor: this.anchor\r\n });\r\n this.dispatchEvent(rotateEndEvent);\r\n this.isRotating = false;\r\n }\r\n }\r\n }\r\n dispatchEvent(gestureEvent) {\r\n queueMicrotask(() => {\r\n this.currentTarget.dispatchEvent(gestureEvent);\r\n });\r\n }\r\n onTouchStart(touchStart) {\r\n if (this.currentTarget !== touchStart.touches[0].target) {\r\n this.clean();\r\n this.unbind(this.currentTarget);\r\n this.pointers = this.touchEnd.touches.length;\r\n this.taps = 0;\r\n }\r\n this.touchStart = touchStart;\r\n const minPointers = parseInt(touchStart.touches[0].target.dataset.minpointers || '0') || this.config.minPointers;\r\n if (this.touchStart.touches.length < minPointers) {\r\n this.shouldFire = false;\r\n return;\r\n }\r\n this.shouldFire = true;\r\n this.touchStartTime = touchStart.timeStamp;\r\n this.touchDown = true;\r\n if (!this.pointers)\r\n this.bind(touchStart.touches[0].target);\r\n this.pointers = this.touchStart.touches.length;\r\n const longPressDuration = parseFloat(this.currentTarget.dataset.longpressduration || '0') || this.config.longPressDuration;\r\n if (!this.longPressTimeout) {\r\n this.longPressTimeout = setTimeout(() => {\r\n if (!this.touchMoved && this.touchDown) {\r\n const touchDuration = Date.now() - this.touchStartTime;\r\n const longPressEvent = new LongPressEvent_1.default(this.touchStart, touchDuration);\r\n this.dispatchEvent(longPressEvent);\r\n this.isLongPress = true;\r\n this.longPressTimeout = 0;\r\n }\r\n }, longPressDuration);\r\n }\r\n if (this.touchStart.touches.length > 1) {\r\n const originPointerPrimary = new utils_1.Vec2(this.touchStart.touches[0].clientX, this.touchStart.touches[0].clientY);\r\n const originPointerSecondary = new utils_1.Vec2(this.touchStart.touches[1].clientX, this.touchStart.touches[1].clientY);\r\n this.scaleBase = originPointerPrimary.substract(originPointerSecondary).magnitude;\r\n }\r\n else\r\n this.scaleBase = 0;\r\n }\r\n onTouchMove(touchMove) {\r\n if (!this.shouldFire)\r\n return;\r\n this.touchMoved = true;\r\n this.touchMove = touchMove;\r\n if (touchMove.touches.length > 1 && this.touchStart.touches.length > 1) {\r\n if (touchMove.touches[1].clientX !== this.touchStart.touches[1].clientX\r\n || touchMove.touches[1].clientY !== this.touchStart.touches[1].clientY) {\r\n const currentPointerPrimary = new utils_1.Vec2(this.touchMove.touches[0].clientX, this.touchMove.touches[0].clientY);\r\n const currentPointerSecondary = new utils_1.Vec2(this.touchMove.touches[1].clientX, this.touchMove.touches[1].clientY);\r\n const originPointerPrimary = new utils_1.Vec2(this.touchStart.touches[0].clientX, this.touchStart.touches[0].clientY);\r\n const distance = currentPointerPrimary.substract(currentPointerSecondary);\r\n if (this.scaleBase && Math.abs(this.scaleBase - distance.magnitude) > 10) {\r\n const scaleFactor = distance.magnitude / this.scaleBase;\r\n this.scale = scaleFactor;\r\n if (this.isPinching) {\r\n const pinchEvent = new PinchEvent_1.default(touchMove, {\r\n scale: scaleFactor\r\n });\r\n this.dispatchEvent(pinchEvent);\r\n }\r\n else {\r\n const pinchStartEvent = new PinchEvent_1.PinchStartEvent(touchMove, {\r\n scale: scaleFactor\r\n });\r\n this.dispatchEvent(pinchStartEvent);\r\n this.isPinching = true;\r\n }\r\n }\r\n this.anchor = currentPointerPrimary;\r\n let rotationAngle = Math.atan2((originPointerPrimary.clientY - currentPointerSecondary.clientY), (originPointerPrimary.clientX - currentPointerSecondary.clientX));\r\n rotationAngle < 0 ? rotationAngle += 1.5708 : rotationAngle -= 1.5708;\r\n this.rotation = rotationAngle;\r\n this.rotationDeg = rotationAngle * 180 / Math.PI;\r\n this.anchor = this.anchor;\r\n if (this.isRotating) {\r\n const rotateEvent = new RotateEvent_1.default(touchMove, {\r\n anchor: this.anchor,\r\n rotation: this.rotation,\r\n rotationDeg: this.rotationDeg\r\n });\r\n this.dispatchEvent(rotateEvent);\r\n }\r\n else {\r\n const rotateStartEvent = new RotateEvent_1.RotateStartEvent(touchMove, {\r\n anchor: this.anchor,\r\n rotation: this.rotation,\r\n rotationDeg: this.rotationDeg\r\n });\r\n this.dispatchEvent(rotateStartEvent);\r\n this.isRotating = true;\r\n }\r\n }\r\n }\r\n const origin = new utils_1.Vec2(this.touchStart.touches[0].clientX, this.touchStart.touches[0].clientY);\r\n const currentPosition = new utils_1.Vec2(this.touchMove.touches[0].clientX, this.touchMove.touches[0].clientY);\r\n const dxDy = currentPosition.substract(origin);\r\n const length = dxDy.magnitude;\r\n const normalised = {\r\n x: dxDy.x / length,\r\n y: dxDy.y / length\r\n };\r\n const angle = Math.atan2(normalised.y, normalised.x);\r\n this.octant = Math.round(4 * angle / (2 * Math.PI) + 4) % 4;\r\n const dt = (touchMove.timeStamp - this.touchStart.timeStamp) / 1000;\r\n const velocity = dxDy.magnitude / dt;\r\n if (this.isSwiping) {\r\n const swipeEvent = new SwipeEvent_1.default(touchMove, {\r\n direction: CartesianDirectionEnum[(0, utils_1.closest)(this.octant, [0, 1, 2, 3])],\r\n velocity: velocity\r\n });\r\n this.dispatchEvent(swipeEvent);\r\n }\r\n else {\r\n const swipeStartEvent = new SwipeEvent_1.SwipeStartEvent(touchMove, {\r\n direction: CartesianDirectionEnum[(0, utils_1.closest)(this.octant, [0, 1, 2, 3])],\r\n velocity: velocity\r\n });\r\n this.dispatchEvent(swipeStartEvent);\r\n this.isSwiping = true;\r\n }\r\n this.dxDy = dxDy;\r\n this.velocity = velocity;\r\n if (this.isPanning) {\r\n const panEvent = new PanEvent_1.default(touchMove, {\r\n translation: dxDy,\r\n velocity: velocity\r\n });\r\n this.dispatchEvent(panEvent);\r\n }\r\n else {\r\n const panStartEvent = new PanEvent_1.PanStartEvent(touchMove, {\r\n translation: dxDy,\r\n velocity: velocity\r\n });\r\n this.dispatchEvent(panStartEvent);\r\n this.isPanning = true;\r\n }\r\n }\r\n onTouchEnd(touchEnd) {\r\n const numberOfTaps = parseInt(this.currentTarget.dataset.numberoftaps || '0') || this.config.numberOfTaps;\r\n this.taps++;\r\n this.shouldFire = Boolean(this.taps > numberOfTaps);\r\n if (this.shouldFire) {\r\n this.touchEnd = touchEnd;\r\n this.touchEndTime = touchEnd.timeStamp;\r\n const maxTapDelay = parseFloat(this.currentTarget.dataset.tapdelay || '0') || this.config.tapDelay;\r\n if (!this.touchMoved && !this.isLongPress) {\r\n if (this.taps === 1 || (this.touchEndTime - this.lastTouchTime) < maxTapDelay) {\r\n if (this.taps % 2 === numberOfTaps) {\r\n const doubleTapEvent = new DoubleTapEvent_1.default(touchEnd);\r\n this.dispatchEvent(doubleTapEvent);\r\n this.taps = 0;\r\n }\r\n const tapEvent = new TapEvent_1.default(touchEnd);\r\n this.dispatchEvent(tapEvent);\r\n }\r\n else {\r\n this.taps = 0;\r\n }\r\n }\r\n }\r\n this.pointers = this.touchEnd.touches.length;\r\n this.lastTouchTime = this.touchEndTime;\r\n this.onPointerLeave(touchEnd);\r\n this.unbind(this.currentTarget);\r\n this.clean();\r\n }\r\n onTouchCancel(touchCancel) {\r\n if (!this.shouldFire)\r\n return;\r\n this.touchCancel = touchCancel;\r\n this.unbind(this.currentTarget);\r\n this.clean();\r\n }\r\n}\r\nexports.default = GestureProvider;\r\nGestureProvider.listening = false;\r\nif (TouchEvent)\r\n window.gestureProvider = new GestureProvider();\r\n//# sourceMappingURL=index.js.map","import { GestureEvent } from \"web-gesture-events\";\nimport { NavigateOptions, NavigationProps } from \"./types\";\n\nexport class NavigateEvent extends Event {\n\treadonly routerId: string;\n\treadonly route: string;\n\treadonly props: NavigationProps;\n\treadonly navigationType: NonNullable<NavigateOptions[\"type\"]>;\n\treadonly signal: AbortSignal;\n\treadonly committed: Promise<NavigationHistoryEntry>;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(\n\t\trouterId: string,\n\t\troute: string,\n\t\tprops: NavigationProps,\n\t\ttype: NavigateOptions[\"type\"],\n\t\tsignal: AbortSignal,\n\t\tcommitted: Promise<NavigationHistoryEntry>,\n\t\ttransition: NavigationTransition\n\t) {\n\t\tsuper('navigate');\n\t\tthis.routerId = routerId;\n\t\tthis.route = route;\n\t\tthis.props = props;\n\t\tthis.navigationType = type ?? \"push\";\n\t\tthis.signal = signal;\n\t\tthis.committed = committed;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class BackEvent extends Event {\n\treadonly routerId: string;\n\treadonly signal: AbortSignal;\n\treadonly committed: Promise<NavigationHistoryEntry>;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(routerId: string, signal: AbortSignal, committed: Promise<NavigationHistoryEntry>, transition: NavigationTransition) {\n\t\tsuper('back');\n\t\tthis.routerId = routerId;\n\t\tthis.signal = signal;\n\t\tthis.committed = committed;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class ForwardEvent extends Event {\n\treadonly routerId: string;\n\treadonly signal: AbortSignal;\n\treadonly committed: Promise<NavigationHistoryEntry>;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(routerId: string, signal: AbortSignal, committed: Promise<NavigationHistoryEntry>, transition: NavigationTransition) {\n\t\tsuper('forward');\n\t\tthis.routerId = routerId;\n\t\tthis.signal = signal;\n\t\tthis.committed = committed;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class GestureStartEvent extends Event {\n\treadonly source: GestureEvent;\n\n\tconstructor(source: GestureEvent) {\n\t\tsuper('gesture-start');\n\t\tthis.source = source;\n\t}\n}\n\nexport class GestureEndEvent extends Event {\n\treadonly source: GestureEvent;\n\n\tconstructor(source: GestureEvent) {\n\t\tsuper('gesture-end');\n\t\tthis.source = source;\n\t}\n}\n\nexport class GestureCancelEvent extends Event {\n\tconstructor() {\n\t\tsuper('gesture-cancel');\n\t}\n}","export class HistoryEntry implements Omit<NavigationHistoryEntry, 'url'> {\n\treadonly routerId: string;\n\t#nativeEntry: NavigationHistoryEntry;\n\treadonly index: number;\n\n\tconstructor(nativeEntry: NavigationHistoryEntry, routerId: string, index: number) {\n\t\tthis.#nativeEntry = nativeEntry;\n\t\tthis.routerId = routerId;\n\t\tthis.index = index;\n\t}\n\n\tset ondispose(handler: ((this: NavigationHistoryEntry, ev: Event) => any) | null) {\n\t\tthis.#nativeEntry.ondispose = handler;\n\t}\n\n\tget ondispose() {\n\t\treturn this.#nativeEntry.ondispose;\n\t}\n\n\tget id() {\n\t\treturn this.#nativeEntry.id;\n\t}\n\n\tget globalIndex() {\n\t\treturn this.#nativeEntry.index;\n\t}\n\n\tget url() {\n\t\tif (!this.#nativeEntry.url) return null;\n\t\treturn new URL(this.#nativeEntry.url);\n\t}\n\n\tget key() {\n\t\treturn this.#nativeEntry.key;\n\t}\n\n\tget sameDocument() {\n\t\treturn this.#nativeEntry.sameDocument;\n\t}\n\n\taddEventListener<K extends keyof NavigationHistoryEntryEventMap>(type: K, listener: (this: NavigationHistoryEntry, ev: NavigationHistoryEntryEventMap[K]) => any, options?: boolean | AddEventListenerOptions): () => void;\n\taddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): () => void;\n\taddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): () => void {\n\t\tthis.#nativeEntry.addEventListener(type, listener, options);\n\n\t\treturn () => this.#nativeEntry.removeEventListener(type, listener, options);\n\t}\n\n\tremoveEventListener<K extends keyof NavigationHistoryEntryEventMap>(type: K, listener: (this: NavigationHistoryEntry, ev: NavigationHistoryEntryEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n\tremoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n\tremoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void {\n\t\tthis.#nativeEntry.addEventListener(type, listener, options);\n\t}\n\n\tdispatchEvent(event: Event): boolean {\n\t\treturn this.#nativeEntry.dispatchEvent(event);\n\t}\n\n\tgetState<T>() {\n\t\treturn this.#nativeEntry.getState() as T;\n\t}\n}","import {\n NavigationBase,\n PathPattern,\n includesRoute,\n matchRoute,\n resolveBaseURLFromPattern\n} from '@react-motion-router/core';\nimport { GoBackOptions, GoForwardOptions, NavigateOptions, NavigationBaseOptions, NavigationProps, RouterEventMap } from './common/types';\nimport { BackEvent, ForwardEvent, NavigateEvent } from './common/events';\nimport { HistoryEntry } from './HistoryEntry';\nimport { Router } from './Router';\n\nexport class Navigation extends NavigationBase<RouterEventMap> {\n protected readonly router: Router;\n\n constructor(router: Router) {\n super();\n this.router = router;\n }\n\n preload(route: string, props: NavigationProps = {}, options: NavigationBaseOptions = {}) {\n return this.router.preload(route, props, options);\n }\n\n replace(route: string, props: NavigationProps = {}, options: NavigationBaseOptions = {}) {\n return this.navigate(route, props, { ...options, type: 'replace' });\n }\n\n push(route: string, props: NavigationProps = {}, options: NavigationBaseOptions = {}) {\n return this.navigate(route, props, { ...options, type: 'push' });\n }\n\n reload(props: NavigationProps = {}) {\n return window.navigation.reload({ state: props });\n }\n\n traverseTo(key: string, options: NavigationBaseOptions = {}) {\n const result = window.navigation.traverseTo(key);\n const transition = window.navigation.transition!;\n\n const fromIndex = transition.from.index;\n const destinationIndex = window.navigation.entries().findIndex(entry => entry.key === key);\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.traverseTo(transition.from.key), { once: true });\n options.signal?.addEventListener('abort', controller.abort, { once: true });\n\n let event;\n if (fromIndex > destinationIndex) {\n event = this.createBackEvent(controller.signal, result.committed, transition);\n } else {\n event = this.createForwardEvent(controller.signal, result.committed, transition);\n }\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n navigate(\n route: string,\n props: NavigationProps = {},\n options: NavigateOptions = {}\n ) {\n const { type: history = 'push' } = options;\n\n const url = new URL(route, this.baseURL);\n const result = window.navigation.navigate(url.href, { history, state: props });\n const transition = window.navigation.transition!;\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.goBack(), { once: true });\n options.signal?.addEventListener('abort', controller.abort, { once: true });\n\n const event = this.createNavigateEvent(route, props, history, controller.signal, result.committed, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n goBack(options: GoBackOptions = {}) {\n if (!this.canGoBack()) return;\n\n const result = window.navigation.traverseTo(this.previous.key);\n const transition = window.navigation.transition!;\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.goForward(), { once: true });\n options.signal?.addEventListener('abort', controller.abort, { once: true });\n\n const event = this.createBackEvent(controller.signal, result.committed, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n goForward(options: GoForwardOptions = {}) {\n if (!this.canGoForward()) return;\n\n const result = window.navigation.traverseTo(this.next.key);\n const transition = window.navigation.transition!;\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.goBack(), { once: true });\n options.signal?.addEventListener('abort', controller.abort, { once: true });\n\n const event = this.createForwardEvent(controller.signal, result.committed, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n private createBackEvent(\n signal: AbortSignal,\n committed: Promise<NavigationHistoryEntry>,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error('Router ID is not set');\n return new BackEvent(this.routerId, signal, committed, transition);\n }\n\n private createForwardEvent(\n signal: AbortSignal,\n committed: Promise<NavigationHistoryEntry>,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error('Router ID is not set');\n return new ForwardEvent(this.routerId, signal, committed, transition);\n }\n\n private createNavigateEvent(\n route: string,\n props: NavigationProps,\n type: NavigateOptions['type'],\n signal: AbortSignal,\n committed: Promise<NavigationHistoryEntry>,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error('Router ID is not set');\n return new NavigateEvent(\n this.routerId,\n route,\n props,\n type,\n signal,\n committed,\n transition\n );\n }\n\n get committed() {\n return this.router.committed;\n }\n\n get transition() {\n return this.router.state.transition;\n }\n\n get globalEntries() {\n return window.navigation.entries();\n }\n\n public get entries() {\n const nestedPathPatterns = this.router.pathPatterns.filter(({ pattern }) => pattern.endsWith('**'));\n let nestedScopePathPattern: PathPattern | null = null;\n let nestedBoundaryReached = false;\n return this.globalEntries\n .filter(entry => {\n if (!entry.url) return false;\n const url = new URL(entry.url);\n const resolvedBaseURL = resolveBaseURLFromPattern(this.baseURLPattern.pathname, url.pathname);\n if (!resolvedBaseURL)\n return false;\n\n if (nestedScopePathPattern) {\n // we're in a nested scope, check if the current URL is also apart of the same scope and exit.\n const nestedBaseURLPattern = new URLPattern(nestedScopePathPattern.pattern, resolvedBaseURL.href);\n if (\n matchRoute(\n url.pathname,\n url.pathname,\n nestedBaseURLPattern.pathname,\n nestedScopePathPattern.caseSensitive\n )\n || nestedBoundaryReached\n ) {\n // contiguous nested router entries found, short circuit\n nestedBoundaryReached = true;\n return false;\n }\n }\n\n nestedScopePathPattern = nestedPathPatterns.find(\n ({ pattern, caseSensitive }) => (\n matchRoute(\n pattern,\n url.pathname,\n this.baseURLPattern.pathname,\n caseSensitive\n )\n )\n ) ?? null;\n return true;\n })\n .map((entry, index) => {\n return new HistoryEntry(entry, this.routerId, index);\n });\n }\n\n get index() {\n const globalCurrentIndex = window.navigation.currentEntry?.index ?? -1;\n const firstEntryGlobalIndex = this.entries.at(0)?.globalIndex ?? -1;\n const lastEntryGlobalIndex = this.entries.at(-1)?.globalIndex ?? -1;\n if (globalCurrentIndex <= firstEntryGlobalIndex)\n return 0;\n else if (globalCurrentIndex >= lastEntryGlobalIndex)\n return this.entries.length - 1;\n else {\n const scopedEntries = this.globalEntries.slice(firstEntryGlobalIndex, globalCurrentIndex + 1);\n return this.entries.findLastIndex(entry => {\n return scopedEntries.findLastIndex(globalEntry => entry.key === globalEntry.key) > -1;\n });\n }\n }\n\n get previous(): HistoryEntry | null {\n return this.entries[this.index - 1] ?? null;\n }\n\n get next(): HistoryEntry | null {\n return this.entries[this.index + 1] ?? null;\n }\n\n get current() {\n return this.entries[this.index];\n }\n\n canGoBack(this: Navigation): this is Navigation & { previous: HistoryEntry } {\n return Boolean(this.previous?.sameDocument);\n }\n\n canGoForward(this: Navigation): this is Navigation & { next: HistoryEntry } {\n return Boolean(this.next?.sameDocument);\n }\n}","export function searchParamsToObject(searchParams: URLSearchParams) {\n\treturn Object.fromEntries(searchParams.entries());\n}\n\nexport function searchParamsFromObject(params: { [key: string]: any }) {\n\treturn new URLSearchParams(params).toString();\n}\n\nexport function isGesture(info?: unknown) {\n\tif (info && typeof info === 'object' && 'gesture' in info)\n\t\treturn Boolean(info.gesture);\n\treturn false;\n}\n\nexport function isRollback(info?: unknown) {\n\tif (info && typeof info === 'object' && 'rollback' in info)\n\t\treturn Boolean(info.rollback);\n\treturn false;\n}\n\nexport function deepEquals<T>(obj1: T, obj2: T): boolean {\n\tif (obj1 === obj2) {\n\t\treturn true;\n\t}\n\n\tif (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst keys1 = Object.keys(obj1) as (keyof T)[];\n\tconst keys2 = Object.keys(obj2) as (keyof T)[];\n\n\tif (keys1.length !== keys2.length) {\n\t\treturn false;\n\t}\n\n\tfor (let key of keys1) {\n\t\tif (!keys2.includes(key) || !deepEquals(obj1[key], obj2[key])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}","import { matchRoute, ScreenBase } from '@react-motion-router/core';\nimport type { PlainObject, ScreenBaseProps, ScreenBaseState, ScreenBaseComponentProps, ScreenBaseConfig } from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { HistoryEntryState, RouteProp, ScreenInternalProps, SwipeDirection } from './common/types';\nimport { Router } from './Router';\nimport { searchParamsToObject } from './common/utils';\nimport { HistoryEntry } from './HistoryEntry';\n\nexport type ScreenComponentProps<T extends PlainObject> = ScreenBaseComponentProps<RouteProp<T>, Navigation>;\n\nexport interface ScreenConfig extends ScreenBaseConfig<RouteProp> {\n title?: string;\n presentation?: 'default' | 'dialog' | 'modal';\n keepAlive?: boolean;\n gestureDirection?: SwipeDirection;\n gestureAreaWidth?: number;\n gestureMinFlingVelocity?: number;\n gestureHysteresis?: number;\n gestureDisabled?: boolean;\n}\n\nexport interface ScreenProps extends ScreenBaseProps {\n config?: ScreenConfig;\n}\n\nexport class Screen extends ScreenBase<ScreenProps, ScreenBaseState, RouteProp> {\n readonly #historyEntry: HistoryEntry;\n\n constructor(props: ScreenProps, router: Router) {\n super(props, router);\n\n const id = this.internalProps.id;\n const historyEntry = router.navigation.entries.find(entry => entry.key === id);\n if (!historyEntry)\n throw new Error(`No history entry found for: ${id}`);\n this.#historyEntry = historyEntry;\n }\n\n public static getDerivedStateFromProps(props: ScreenProps) {\n if (\n props.config?.presentation === 'dialog'\n || props.config?.presentation === 'modal'\n )\n return { elementType: 'dialog' };\n else\n return { elementType: 'div' };\n }\n\n protected setParams(newParams: PlainObject): void {\n super.setParams(newParams);\n this.setHistoryState(({ params }) => ({ params: { ...params, ...newParams } }));\n }\n\n protected setConfig(newConfig: NonNullable<ScreenProps['config']>): void {\n super.setConfig(newConfig);\n // navigation history state can only accept structured cloneable objects.\n // a lot of the config options are function which cannot be structured cloned.\n delete newConfig.footer;\n delete newConfig.header;\n delete newConfig.onEnter;\n delete newConfig.onEntered;\n delete newConfig.onExit;\n delete newConfig.onExited;\n delete newConfig.animation;\n console.log(newConfig)\n this.setHistoryState(({ config }) => ({ config: { ...config, ...newConfig } }));\n }\n\n protected get router() {\n return this.context as Router;\n }\n\n private get internalProps() {\n return this.props as unknown as ScreenInternalProps;\n }\n\n public get resolvedPathname() {\n return this.internalProps.resolvedPathname;\n }\n\n private get historyEntryState() {\n const entry = this.#historyEntry;\n if (entry?.url) {\n const state = entry.getState<HistoryEntryState>() ?? {};\n const queryParams = searchParamsToObject(entry.url.searchParams);\n const pathParams = matchRoute(\n this.props.path,\n entry.url.pathname,\n this.context.baseURLPattern.pathname,\n this.props.caseSensitive\n )?.params;\n state.params = {\n ...state.params,\n ...queryParams,\n ...pathParams,\n };\n\n return state;\n }\n return {};\n }\n\n public get id() {\n return this.internalProps.id.toString();\n }\n\n public get params() {\n return {\n ...this.props.defaultParams,\n ...this.historyEntryState.params,\n ...this.state.params,\n };\n }\n\n public get config() {\n return {\n ...this.props.config,\n ...this.historyEntryState.config,\n ...this.state.config,\n };\n }\n\n protected get routeProp() {\n const setParams = this.setParams.bind(this);\n const setConfig = this.setConfig.bind(this);\n const{ path } = this.props;\n const { focused } = this.state;\n const { params, config, resolvedPathname } = this;\n return {\n setParams,\n setConfig,\n path,\n resolvedPathname,\n focused,\n params,\n config,\n };\n }\n\n protected setHistoryState(newState: PlainObject | ((prevState: PlainObject) => PlainObject)) {\n if (!this.state.focused) return;\n const prevState = this.#historyEntry.getState<HistoryEntryState>() ?? {};\n if (newState instanceof Function) {\n newState = newState(prevState);\n }\n const state = {\n ...prevState ?? {},\n ...newState,\n };\n window.navigation.updateCurrentEntry({ state });\n }\n\n private onClickOutside(e: MouseEvent) {\n if (!this.transitionProvider.current?.ref.current) return;\n const navigation = this.context?.navigation as Navigation | undefined;\n const rect = this.transitionProvider.current.ref.current.getBoundingClientRect();\n const isInDialog = (\n rect.top <= e.clientY\n && e.clientY <= rect.top + rect.height\n && rect.left <= e.clientX\n && e.clientX <= rect.left + rect.width\n );\n if (!isInDialog)\n navigation?.goBack();\n }\n\n public onEnter(signal: AbortSignal) {\n if (\n this.transitionProvider.current?.ref.current instanceof HTMLDialogElement\n && this.transitionProvider.current.ref.current.open === false\n ) {\n const navigation = this.context?.navigation as Navigation | undefined;\n if (this.props.config?.presentation === 'modal') {\n this.transitionProvider.current.ref.current.showModal();\n } else {\n this.transitionProvider.current.ref.current.show();\n }\n this.transitionProvider.current.ref.current.style.maxHeight = 'unset';\n this.transitionProvider.current.ref.current.style.maxWidth = 'unset';\n this.transitionProvider.current.ref.current.style.width = 'max-content';\n this.transitionProvider.current.ref.current.style.height = 'max-content';\n\n const onClickOutside = this.onClickOutside.bind(this);\n\n // closed by form submit or ESC key\n this.transitionProvider.current?.ref.current.addEventListener('close', function () {\n if (this.returnValue !== 'screen-exit') {\n this.style.display = 'block';\n navigation?.goBack();\n }\n\n navigation?.removeEventListener('click', onClickOutside);\n }, { once: true });\n\n navigation?.addEventListener('click', onClickOutside);\n }\n\n return super.onEnter(signal);\n };\n\n public onExited(signal: AbortSignal) {\n if (this.transitionProvider.current?.ref.current instanceof HTMLDialogElement) {\n this.transitionProvider.current.ref.current.close('screen-exit');\n }\n\n return super.onExited(signal);\n }\n}","import { PlainObject, RoutePropBase, RouterBaseEventMap } from \"@react-motion-router/core\";\nimport { ScreenProps } from \"../Screen\";\nimport { RefObject } from \"react\";\nimport { BackEvent, ForwardEvent, GestureCancelEvent, GestureEndEvent, GestureStartEvent, NavigateEvent } from \"./events\";\n\nexport interface NavigationBaseOptions {\n\tsignal?: AbortSignal;\n}\n\nexport interface NavigateOptions extends NavigationBaseOptions {\n\ttype?: \"push\" | \"replace\";\n}\n\nexport interface GoBackOptions extends NavigationBaseOptions { }\nexport interface GoForwardOptions extends NavigationBaseOptions { }\n\nexport interface NavigationProps {\n\tparams?: Record<any, any>;\n\tconfig?: ScreenProps[\"config\"]\n}\n\nexport type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };\n\nexport type XOR<T, U> = (T | U) extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;\n\nexport interface HistoryEntryState {\n\tconfig?: ScreenProps[\"config\"];\n\tparams?: PlainObject;\n}\n\nexport function isRefObject<T>(value?: React.LegacyRef<T>): value is RefObject<T> {\n\tif (\n\t\tvalue !== null\n\t\t&& typeof value === 'object'\n\t\t&& value.hasOwnProperty('current')\n\t) return true;\n\treturn false;\n}\n\nexport interface RouterEventMap extends RouterBaseEventMap {\n\t\"navigate\": NavigateEvent;\n\t\"back\": BackEvent;\n\t\"forward\": ForwardEvent;\n\t\"gesture-start\": GestureStartEvent;\n\t\"gesture-end\": GestureEndEvent;\n\t\"gesture-cancel\": GestureCancelEvent;\n}\n\nexport interface RouteProp<T extends PlainObject = {}> extends RoutePropBase<ScreenProps[\"config\"], T> { }\n\nexport type SwipeDirection = 'up' | 'down' | 'left' | 'right' | 'horizontal' | 'vertical';\nexport type Direction = Exclude<SwipeDirection, \"horizontal\" | \"vertical\">;\n\nconst directions: Record<SwipeDirection, Direction[]> = {\n\t\"horizontal\": [\"left\", \"right\"] as const,\n\t\"vertical\": [\"up\", \"down\"] as const,\n\t\"up\": [\"up\"] as const,\n\t\"down\": [\"down\"] as const,\n\t\"left\": [\"left\"] as const,\n\t\"right\": [\"right\"] as const\n};\nexport function isSupportedDirection(direction: Exclude<SwipeDirection, \"horizontal\" | \"vertical\">, supported: SwipeDirection) {\n\treturn directions[supported].includes(direction);\n}\n\nexport function isOutOfBounds(direction: SwipeDirection, { x, y }: { x: number, y: number }, clientRect: DOMRect, gestureAreaWidth: number) {\n\tif (direction === \"right\" && Math.abs(x - clientRect.left) >= gestureAreaWidth) return false;\n\tif (direction === \"left\" && Math.abs(x - clientRect.right) >= gestureAreaWidth) return false;\n\tif (direction === \"down\" && Math.abs(y - clientRect.top) >= gestureAreaWidth) return false;\n\tif (direction === \"up\" && Math.abs(y - clientRect.bottom) >= gestureAreaWidth) return false;\n}\n\nexport function isHorizontalDirection(direction: SwipeDirection): direction is 'left' | 'right' | 'horizontal' {\n\treturn direction === 'left' || direction === 'right' || direction === 'horizontal';\n}\n\nexport interface ScreenInternalProps {\n resolvedPathname: string;\n id: React.Key;\n}","export const DEFAULT_GESTURE_CONFIG = {\n gestureHysteresis: 0.5,\n gestureMinFlingVelocity: 400,\n gestureAreaWidth: 100,\n gestureDirection: 'right',\n gestureDisabled: false,\n} as const;\n\nexport const DEFAULT_PRELOAD_FORCE_THRESHOLD = 0.5;","export class PromiseWrapper<T> {\n\tpromise: Promise<T>;\n\tstate: 'pending' | 'resolved' | 'rejected';\n\tnativeResolve: ((value: T | PromiseLike<T>) => void) | null;\n\tnativeReject: ((reason: any) => void) | null;\n constructor() {\n this.state = 'pending';\n this.nativeResolve = this.nativeReject = null;\n this.promise = new Promise((resolve, reject) => {\n this.nativeResolve = resolve;\n this.nativeReject = reject;\n });\n }\n\n resolve(value: T) {\n this.state = 'resolved';\n this.nativeResolve?.(value);\n }\n\n reject(reason: any) {\n this.state = 'rejected';\n // Do not report unhandled promise rejections.\n this.promise.catch(() => {});\n this.nativeReject?.(reason);\n }\n}","import {\n RouterBase,\n cloneAndInject,\n includesRoute,\n isValidScreenChild,\n matchRoute\n} from '@react-motion-router/core';\nimport type {\n ClonedElementType,\n LoadEvent,\n NestedRouterContext,\n RouterBaseConfig,\n RouterBaseProps,\n RouterBaseState,\n ScreenChild\n} from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { ScreenProps, Screen, ScreenConfig } from './Screen';\nimport {\n HistoryEntryState,\n isHorizontalDirection,\n isOutOfBounds,\n isRefObject,\n isSupportedDirection,\n NavigationBaseOptions,\n NavigationProps,\n RouteProp,\n RouterEventMap,\n ScreenInternalProps,\n SwipeDirection\n} from './common/types';\nimport { Children, createRef, startTransition } from 'react';\nimport { SwipeStartEvent, SwipeEndEvent } from 'web-gesture-events';\nimport { GestureTimeline } from 'web-animations-extension';\nimport { deepEquals, isGesture, isRollback } from './common/utils';\nimport {\n GestureCancelEvent,\n GestureEndEvent,\n GestureStartEvent\n} from './common/events';\nimport { DEFAULT_GESTURE_CONFIG } from './common/constants';\nimport { PromiseWrapper } from './common/promise-wrapper';\n\nexport interface RouterConfig extends RouterBaseConfig {\n screenConfig?: ScreenConfig;\n disableBrowserRouting?: boolean;\n initialPathname?: string;\n shouldIntercept?(navigateEvent: NavigateEvent): boolean;\n onIntercept?(navigateEvent: NavigateEvent): void;\n}\n\nexport interface RouterProps extends RouterBaseProps<Screen> {\n config?: RouterConfig;\n}\n\ntype InjectedScreenProps = Pick<ScreenProps, 'config' | 'defaultParams'> &\n ScreenInternalProps;\nexport interface RouterState extends RouterBaseState {\n transition: NavigationTransition | LoadEvent['transition'] | null;\n screenStack: ClonedElementType<ScreenChild<Screen>, InjectedScreenProps>[];\n gestureDirection: SwipeDirection;\n gestureAreaWidth: number;\n gestureMinFlingVelocity: number;\n gestureHysteresis: number;\n gestureDisabled: boolean;\n fromKey: React.Key | null;\n destinationKey: React.Key | null;\n documentTitle?: string;\n controller: AbortController | null;\n}\n\nexport class Router extends RouterBase<\n RouterProps,\n RouterState,\n RouterEventMap\n> {\n public readonly navigation = new Navigation(this);\n #committed: PromiseWrapper<NavigationHistoryEntry> | null = null;\n\n constructor(\n props: RouterProps,\n context: React.ContextType<typeof NestedRouterContext>\n ) {\n super(props, context);\n const {\n gestureAreaWidth = DEFAULT_GESTURE_CONFIG.gestureAreaWidth,\n gestureDirection = DEFAULT_GESTURE_CONFIG.gestureDirection,\n gestureDisabled = DEFAULT_GESTURE_CONFIG.gestureDisabled,\n gestureHysteresis = DEFAULT_GESTURE_CONFIG.gestureHysteresis,\n gestureMinFlingVelocity = DEFAULT_GESTURE_CONFIG.gestureMinFlingVelocity,\n } = props.config?.screenConfig ?? {};\n \n this.state = {\n screenStack: [],\n gestureDirection,\n gestureAreaWidth,\n gestureHysteresis,\n gestureDisabled,\n gestureMinFlingVelocity,\n transition: null,\n documentTitle: document.title,\n fromKey: null,\n destinationKey: null,\n controller: null,\n };\n }\n\n public static getDerivedStateFromProps(_: RouterProps, state: RouterState) {\n const config = state.screenStack.find(\n (screen) => isRefObject(screen.ref) && screen.ref.current?.focused\n )?.props.config;\n document.title = config?.title ?? document.title;\n return {\n gestureDirection:\n config?.gestureDirection ?? DEFAULT_GESTURE_CONFIG.gestureDirection,\n gestureAreaWidth:\n config?.gestureAreaWidth ?? DEFAULT_GESTURE_CONFIG.gestureAreaWidth,\n gestureMinFlingVelocity:\n config?.gestureMinFlingVelocity\n ?? DEFAULT_GESTURE_CONFIG.gestureMinFlingVelocity,\n gestureHysteresis:\n config?.gestureHysteresis ?? DEFAULT_GESTURE_CONFIG.gestureHysteresis,\n gestureDisabled:\n config?.gestureDisabled ?? DEFAULT_GESTURE_CONFIG.gestureDisabled,\n documentTitle: config?.title,\n };\n }\n\n public componentDidMount(): void {\n super.componentDidMount();\n this.ref.current?.addEventListener('swipestart', this.onSwipeStart);\n this.ref.current?.addEventListener('swipeend', this.onSwipeEnd);\n window.navigation.addEventListener(\n 'currententrychange',\n this.onCurrentEntryChange\n );\n window.navigation.addEventListener('navigate', this.onNavigate);\n window.navigation.addEventListener(\n 'navigatesuccess',\n this.onNavigateSuccess\n );\n window.navigation.addEventListener('navigateerror', this.onNavigateError);\n }\n\n public shouldComponentUpdate(\n nextProps: Readonly<RouterProps>,\n nextState: Readonly<RouterState>\n ): boolean {\n return (\n !deepEquals(this.props.config, nextProps.config)\n || !deepEquals(this.state, nextState)\n || this.props.id !== nextProps.id\n );\n }\n\n public componentWillUnmount(): void {\n this.ref.current?.removeEventListener('swipestart', this.onSwipeStart);\n this.ref.current?.removeEventListener('swipeend', this.onSwipeEnd);\n window.navigation.removeEventListener(\n 'currententrychange',\n this.onCurrentEntryChange\n );\n window.navigation.removeEventListener('navigate', this.onNavigate);\n window.navigation.removeEventListener(\n 'navigatesuccess',\n this.onNavigateSuccess\n );\n window.navigation.removeEventListener(\n 'navigateerror',\n this.onNavigateError\n );\n }\n\n private readonly onNavigate = () => {\n this.#committed = new PromiseWrapper();\n };\n\n private readonly onCurrentEntryChange = () => {\n this.#committed?.nativeResolve?.(window.navigation.currentEntry!);\n };\n\n private readonly onNavigateSuccess = () => {\n this.#committed = null;\n };\n\n private readonly onNavigateError = ({ error }: ErrorEvent) => {\n if (this.#committed?.state === 'pending')\n this.#committed.nativeReject?.(error); // TODO: find out what the spec does for cancelled navigations\n this.#committed = null;\n };\n\n private readonly onGestureCancel = () => {\n if (!this.state.transition)\n throw new Error('Rollback failed, transition is null');\n window.navigation.traverseTo(this.state.transition.from.key, {\n info: { rollback: true },\n });\n };\n\n private canGestureNavigate(e: SwipeStartEvent) {\n if (!this.ref.current) return false;\n if (this.state.gestureDisabled) return false;\n const clientRect = this.ref.current.getBoundingClientRect();\n const { direction } = e;\n if (\n (direction === 'down' || direction === 'right')\n && !this.navigation.canGoBack()\n )\n return false;\n if (\n (direction === 'up' || direction === 'left')\n && !this.navigation.canGoForward()\n )\n return false;\n if (isOutOfBounds(direction, e, clientRect, this.state.gestureAreaWidth))\n return false;\n\n return isSupportedDirection(direction, this.state.gestureDirection);\n }\n\n private readonly onSwipeStart = (e: SwipeStartEvent) => {\n if (!this.canGestureNavigate(e)) return;\n if (!this.ref.current || !this.screenTransitionLayer.current) return;\n const { direction } = e;\n\n const axis: 'x' | 'y' = isHorizontalDirection(direction) ? 'x' : 'y';\n let rangeStart;\n let rangeEnd;\n switch (direction) {\n case 'right':\n rangeStart = 0;\n rangeEnd = this.ref.current.clientWidth;\n break;\n case 'left':\n rangeStart = this.ref.current.clientWidth;\n rangeEnd = 0;\n break;\n case 'down':\n rangeStart = 0;\n rangeEnd = this.ref.current.clientHeight;\n break;\n case 'up':\n rangeStart = this.ref.current.clientHeight;\n rangeEnd = 0;\n break;\n }\n this.screenTransitionLayer.current.animation.timeline = new GestureTimeline(\n {\n source: this.ref.current,\n type: 'swipe',\n axis,\n rangeStart,\n rangeEnd,\n }\n );\n const gesture = true;\n if (direction === 'down' || direction === 'right')\n window.navigation.traverseTo(this.navigation.previous!.key, {\n info: { gesture },\n });\n else\n window.navigation.traverseTo(this.navigation.next!.key, {\n info: { gesture },\n });\n\n this.dispatchEvent(new GestureStartEvent(e));\n };\n\n private readonly onSwipeEnd = (e: SwipeEndEvent) => {\n if (!this.screenTransitionLayer.current) return;\n const progress =\n this.screenTransitionLayer.current.animation.effect?.getComputedTiming()\n .progress ?? 0;\n const playbackRate =\n this.screenTransitionLayer.current.animation.playbackRate;\n this.screenTransitionLayer.current.animation.timeline = document.timeline;\n const hysteresisReached =\n playbackRate > 0\n ? progress > this.state.gestureHysteresis\n : progress < this.state.gestureHysteresis;\n let gestureCancelled = false;\n if (e.velocity < this.state.gestureMinFlingVelocity && !hysteresisReached) {\n gestureCancelled = true;\n this.screenTransitionLayer.current.animation.reverse();\n this.dispatchEvent(new GestureCancelEvent());\n } else {\n this.dispatchEvent(new GestureEndEvent(e));\n }\n if (gestureCancelled) {\n this.screenTransitionLayer.current.animation.finished.then(() => {\n this.state.controller?.abort('gesture-cancel');\n });\n }\n };\n\n public get committed() {\n return this.#committed?.promise ?? null;\n }\n\n private get backNavigating() {\n const fromIndex = this.state.screenStack.findIndex(\n (screen) => screen.key === this.state.fromKey\n );\n const destinationIndex = this.state.screenStack.findIndex(\n (screen) => screen.key === this.state.destinationKey\n );\n\n return destinationIndex >= 0 && destinationIndex < fromIndex;\n }\n\n protected get screens() {\n const screenStack = this.state.screenStack;\n return screenStack.filter((screen, index) => {\n const currentScreenRef = screen.ref ?? null;\n const nextScreenRef = screenStack.at(index + 1)?.ref;\n return (\n (isRefObject(currentScreenRef)\n && currentScreenRef.current?.config.keepAlive)\n || (isRefObject(nextScreenRef)\n && nextScreenRef.current?.config.presentation === 'modal')\n || (isRefObject(nextScreenRef)\n && nextScreenRef.current?.config.presentation === 'dialog')\n || screen.key === this.navigation.current?.key\n || screen.key === this.state.fromKey\n || screen.key === this.state.destinationKey\n );\n });\n }\n\n public async preload(\n pathname: string,\n props: NavigationProps = {},\n options: NavigationBaseOptions = {}\n ) {\n const { child, matchInfo } = this.screenChildFromPathname(pathname) ?? {};\n if (!child) return Promise.resolve(false);\n const { navigation } = this;\n const { signal } = options;\n const { path } = child.props;\n await Promise.all([\n this.preloadScreen(child),\n child.props.config?.onLoad?.({\n navigation,\n signal,\n preloading: true,\n route: {\n focused: false,\n path,\n resolvedPathname: pathname,\n config: {\n ...this.props.config?.screenConfig,\n ...child.props.config,\n ...props.config,\n },\n params: {\n ...child.props.defaultParams,\n ...matchInfo?.params,\n ...props.params,\n },\n },\n }),\n ]);\n return true;\n }\n\n private cloneScreenChildFromPathname(\n pathname: string,\n key: React.Key | null\n ) {\n const { child } = this.screenChildFromPathname(pathname) ?? {};\n\n if (!child) return null;\n key ??= crypto.randomUUID();\n return cloneAndInject(child, {\n config: {\n title: document.title,\n ...this.props.config?.screenConfig,\n ...child.props.config,\n },\n id: key,\n resolvedPathname: pathname,\n key,\n ref: createRef<Screen>(),\n } as InjectedScreenProps);\n }\n\n private getScreenRefByKey(key: string) {\n const screen = this.state.screenStack.find(\n (screen) => screen.key === key\n )?.ref;\n if (isRefObject(screen)) return screen;\n return null;\n }\n\n protected canIntercept(e: NavigateEvent): boolean {\n const pathname = new URL(e.destination.url).pathname;\n const baseURLPattern = this.baseURLPattern.pathname;\n return (\n this.mounted\n && this.shouldIntercept(e)\n && includesRoute(this.pathPatterns, pathname, baseURLPattern)\n );\n }\n\n protected shouldIntercept(e: NavigateEvent): boolean {\n const shouldIntercept =\n e.canIntercept && !e.formData && !e.hashChange && !e.downloadRequest;\n return shouldIntercept || Boolean(this.props.config?.shouldIntercept?.(e));\n }\n\n protected intercept(e: NavigateEvent | LoadEvent): void {\n if (e.navigationType !== 'load') this.props.config?.onIntercept?.(e);\n if (e.defaultPrevented) return;\n\n switch (e.navigationType) {\n case 'load':\n this.handleLoad(e);\n break;\n\n case 'reload':\n case 'replace':\n this.handleReplace(e);\n break;\n\n default:\n this.handleDefault(e);\n break;\n }\n }\n\n private handleLoad(e: LoadEvent) {\n const handler = () => {\n const fromKey = e.transition?.from?.key ?? null;\n const destinationKey = e.destination.key;\n const transition = e.transition;\n const screenStack: RouterState['screenStack'] = [];\n const entries = this.navigation.entries;\n entries.forEach((entry) => {\n if (!entry.url) return null;\n const screen = this.cloneScreenChildFromPathname(\n entry.url.pathname,\n entry.key\n );\n if (!screen) return null;\n screenStack.push(screen);\n });\n\n return new Promise<void>((resolve, reject) =>\n startTransition(() => {\n this.setState(\n { screenStack, fromKey, transition, destinationKey },\n async () => {\n const { initialPathname } = this.props.config ?? {};\n const [firstEntry] = entries;\n if (\n initialPathname\n && entries.length === 1\n && firstEntry.url\n && !matchRoute(\n initialPathname,\n firstEntry.url.pathname,\n this.baseURLPattern.pathname\n )\n ) {\n const transitionFinished =\n window.navigation.transition?.finished ?? Promise.resolve();\n transitionFinished.then(() => {\n this.navigation.replace(initialPathname).finished.then(() => {\n const state =\n (e.destination.getState() as HistoryEntryState) ?? {};\n this.navigation.push(e.destination.url, state);\n });\n });\n return resolve();\n }\n const signal = e.signal;\n if (this.navigation.current?.key === undefined)\n reject(new Error('Current key is undefined'));\n\n const currentScreen = this.getScreenRefByKey(\n this.navigation.current.key\n );\n await this.dispatchLifecycleHandlers(\n currentScreen,\n null,\n signal\n ).catch(reject);\n this.setState(\n { destinationKey: null, fromKey: null, transition: null },\n resolve\n );\n }\n );\n })\n );\n };\n\n e.intercept({ handler });\n }\n\n private handleReplace(e: NavigateEvent) {\n const screenStack = this.state.screenStack;\n const destination = e.destination;\n const destinationPathname = new URL(destination.url).pathname;\n const destinationKey =\n window.navigation.currentEntry?.key ?? destination.key;\n const destinationScreen = this.cloneScreenChildFromPathname(\n destinationPathname,\n destinationKey\n );\n if (!destinationScreen) return e.preventDefault();\n const handler = () => {\n const isHotReplace = this.state.transition !== null;\n const transition = this.state.transition ?? window.navigation.transition;\n const fromKey = transition?.from?.key ?? null;\n const currentIndex = screenStack.findIndex(\n (screen) => screen.key === this.navigation.current?.key\n );\n screenStack.splice(currentIndex, 1, destinationScreen);\n\n return new Promise<void>((resolve, reject) =>\n startTransition(() => {\n this.setState(\n { destinationKey, fromKey, transition, screenStack },\n async () => {\n const signal = e.signal;\n const outgoingScreen = this.getScreenRefByKey(String(fromKey));\n const incomingScreen = this.getScreenRefByKey(\n String(destinationKey)\n );\n const pendingLifecycleHandlers = this.dispatchLifecycleHandlers(\n incomingScreen,\n null,\n signal\n ).catch(reject);\n if (isHotReplace) {\n const currentTime =\n this.screenTransitionLayer.current?.animation.currentTime\n ?? 0;\n this.screenTransitionLayer.current?.animation.cancel();\n await new Promise(requestAnimationFrame);\n const animation = this.screenTransition(\n incomingScreen,\n outgoingScreen\n );\n if (animation) {\n animation.currentTime = currentTime;\n }\n animation?.updatePlaybackRate(1);\n await animation?.finished.catch(reject);\n }\n await pendingLifecycleHandlers;\n this.setState(\n { destinationKey: null, fromKey: null, transition: null },\n resolve\n );\n }\n );\n })\n );\n };\n\n e.intercept({ handler });\n }\n\n private handleDefault(e: NavigateEvent) {\n const screenStack = this.state.screenStack;\n const destination = e.destination;\n const destinationPathname = new URL(destination.url).pathname;\n if (!this.screenChildFromPathname(destinationPathname))\n return e.preventDefault();\n const handler = () => {\n if (isRollback(e.info)) return Promise.resolve();\n const transition = window.navigation.transition;\n let fromIndex = screenStack.findIndex(\n (screen) => screen.key === transition?.from.key\n );\n // if navigating from a nested screen the first lookup won't work since entries are scoped\n if (fromIndex === -1 && e.navigationType === 'traverse') {\n fromIndex = screenStack.findIndex((screen) => {\n if (!transition?.from.url) return false;\n return matchRoute(\n screen.props.path,\n new URL(transition.from.url).pathname,\n this.baseURLPattern.pathname,\n screen.props.caseSensitive\n );\n });\n }\n const fromKey =\n (screenStack[fromIndex]?.key || transition?.from.key) ?? null;\n const destinationIndex = screenStack.findIndex(\n (screen) => screen.key === e.destination.key\n );\n const destinationKey =\n (screenStack[destinationIndex]?.key\n || window.navigation.currentEntry?.key)\n ?? null;\n if (e.navigationType === 'push') {\n const destinationPathname = new URL(destination.url).pathname;\n const destinationScreen = this.cloneScreenChildFromPathname(\n destinationPathname,\n destinationKey\n );\n if (!destinationScreen) return Promise.resolve();\n screenStack.splice(\n fromIndex + 1,\n Infinity, // Remove all screens after current\n destinationScreen\n );\n }\n\n const controller = new AbortController();\n return new Promise<void>((resolve, reject) =>\n startTransition(() => {\n this.setState(\n { controller, destinationKey, fromKey, transition, screenStack },\n async () => {\n controller.signal.onabort = reject;\n const signal = e.signal;\n const outgoingScreen = this.getScreenRefByKey(String(fromKey));\n const incomingScreen = this.getScreenRefByKey(\n String(destinationKey)\n );\n const pendingLifecycleHandlers = this.dispatchLifecycleHandlers(\n incomingScreen,\n outgoingScreen,\n signal\n ).catch(reject);\n const animation = this.screenTransition(\n incomingScreen,\n outgoingScreen\n );\n animation?.updatePlaybackRate(1);\n animation?.finished.catch(reject);\n await pendingLifecycleHandlers;\n this.setState(\n {\n destinationKey: null,\n fromKey: null,\n transition: null,\n controller: null,\n },\n resolve\n );\n }\n );\n })\n );\n };\n\n let commit;\n if (isGesture(e.info)) {\n commit = 'after-transition';\n this.addEventListener('gesture-end', () => e.commit?.(), { once: true });\n this.addEventListener('gesture-cancel', this.onGestureCancel, {\n once: true,\n });\n } else {\n commit = 'immediate';\n }\n const options = { handler, commit };\n e.intercept(options);\n }\n\n private async dispatchLifecycleHandlers(\n incomingScreen: React.RefObject<Screen> | null,\n outgoingScreen: React.RefObject<Screen> | null,\n signal: AbortSignal\n ) {\n let animationStarted = false;\n this.addEventListener('transition-start', () => (animationStarted = true), {\n once: true,\n });\n\n await Promise.all([\n outgoingScreen?.current?.onExit(signal),\n incomingScreen?.current?.onEnter(signal),\n incomingScreen?.current?.load(signal),\n ]);\n\n if (animationStarted)\n await new Promise((resolve) =>\n this.addEventListener('transition-end', resolve, { once: true })\n );\n\n // if gesture navigation cancelled then exit here\n if (this.state.controller?.signal.aborted) return;\n\n await Promise.all([\n outgoingScreen?.current\n ?.onExited(signal)\n .then(() => outgoingScreen.current?.blur()),\n incomingScreen?.current\n ?.onEntered(signal)\n .then(() => incomingScreen.current?.focus()),\n ]);\n }\n\n private screenTransition(\n incomingScreen: React.RefObject<Screen> | null,\n outgoingScreen: React.RefObject<Screen> | null\n ) {\n const { backNavigating } = this;\n if (\n this.screenTransitionLayer.current\n && incomingScreen\n && outgoingScreen\n ) {\n this.screenTransitionLayer.current.direction = backNavigating\n ? 'reverse'\n : 'normal';\n if (incomingScreen.current?.transitionProvider.current) {\n incomingScreen.current.transitionProvider.current.exiting = false;\n }\n if (outgoingScreen.current?.transitionProvider.current) {\n outgoingScreen.current.transitionProvider.current.exiting = true;\n }\n if (\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current\n ) {\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current.outgoingScreen =\n outgoingScreen;\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current.incomingScreen =\n incomingScreen;\n }\n const topScreenIndex = this.screens.findIndex(\n (screen) =>\n screen.ref === (backNavigating ? outgoingScreen : incomingScreen)\n );\n this.screenTransitionLayer.current.screens = this.screens\n .map((screen, index) => {\n // normalise indices making incoming screen index 1 and preceding screens index 0...-n\n index = index - topScreenIndex + 1;\n if (\n isRefObject(screen.ref)\n && screen.ref.current?.transitionProvider.current\n ) {\n screen.ref.current.transitionProvider.current.index = index;\n return screen.ref;\n }\n return null;\n })\n .filter(isRefObject);\n\n return this.screenTransitionLayer.current.transition();\n }\n }\n}\n","import { PlainObject, useNavigationBase, useParamsBase, useRouteBase, useRouterBase } from \"@react-motion-router/core\";\nimport { Navigation } from \"../Navigation\";\nimport { Router } from \"../Router\";\nimport { RouteProp } from \"./types\";\nimport { useDebugValue } from \"react\";\n\nexport function useNavigation() {\n\tuseDebugValue(\"Stack.Navigation\");\n\treturn useNavigationBase<Navigation>();\n}\n\nexport function useRouter() {\n\tuseDebugValue(\"Stack.Router\");\n\treturn useRouterBase<Router>();\n}\n\nexport function useRoute<T extends PlainObject = PlainObject>() {\n\tuseDebugValue(\"Stack.Route\");\n\treturn useRouteBase<RouteProp<T>>();\n}\n\nexport function useParams<K extends string, S>(key: K, initialParams: S | (() => S)) {\n\tuseDebugValue(\"Stack.Params\");\n\treturn useParamsBase(key, initialParams);\n}","import { PlainObject } from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { NavigateOptions, XOR } from './common/types';\nimport { useState, useEffect, useRef, useCallback, RefObject } from 'react';\nimport { useNavigation } from './common/hooks';\nimport { searchParamsFromObject } from './common/utils';\nimport { DEFAULT_PRELOAD_FORCE_THRESHOLD } from './common/constants';\n\ninterface BaseAnchorProps\n extends React.DetailedHTMLProps<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n HTMLAnchorElement\n > {\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n navigation?: Navigation | null;\n}\n\ninterface OnSightPreloadBehaviour extends UseIntersectionOptions {\n type: 'onsight';\n}\n\ninterface OnHoverPreloadBehaviour {\n type: 'onhover';\n forceThreshold?: number;\n}\n\ninterface ForwardAnchorProps extends BaseAnchorProps {\n params?: PlainObject<string | boolean | number>;\n href: string;\n type?: NavigateOptions['type'];\n preload?: boolean;\n preloadBehaviour?:\n | OnSightPreloadBehaviour\n | OnHoverPreloadBehaviour\n | { type: 'force' };\n}\n\ninterface BackAnchorProps extends BaseAnchorProps {\n goBack: boolean;\n}\n\ntype AnchorProps = XOR<ForwardAnchorProps, BackAnchorProps>;\n\nfunction useNavigationOrDefault(navigation?: Navigation | null) {\n const defaultNavigation = useNavigation();\n return navigation ?? defaultNavigation;\n}\n\ninterface UseIntersectionOptions {\n root?: Element | null;\n rootMargin?: string;\n threshold?: number | number[];\n}\nfunction useIntersection<T extends HTMLElement>(\n callback: (entry: IntersectionObserverEntry) => void,\n options: UseIntersectionOptions = {}\n) {\n const targetRef = useRef<T>(null);\n\n const observerCallback = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n callback(entry);\n }\n });\n },\n [callback]\n );\n\n useEffect(() => {\n const observer = new IntersectionObserver(observerCallback, options);\n const element = targetRef.current;\n\n if (element) {\n observer.observe(element);\n }\n\n return () => {\n if (element) {\n observer.unobserve(element);\n }\n };\n }, [observerCallback, options]);\n\n return targetRef;\n}\n\ntype EventListenerOptions = boolean | AddEventListenerOptions;\n\nfunction useEventListener<K extends keyof HTMLElementEventMap>(\n ref: RefObject<HTMLElement>,\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n options?: EventListenerOptions\n) {\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n element.addEventListener(eventName, handler, options);\n\n return () => {\n element.removeEventListener(eventName, handler, options);\n };\n }, [ref, eventName, handler, options]);\n}\n\ntype UseHoverOptions = {\n forceThreshold?: number; // Threshold for touch pressure to count as \"hover\" (0 to 1 range)\n};\n\ntype UseHoverCallback = (isHovered: boolean) => void;\nfunction useHover<T extends HTMLElement>(\n hoverCallback: UseHoverCallback,\n { forceThreshold = DEFAULT_PRELOAD_FORCE_THRESHOLD }: UseHoverOptions = {}\n) {\n const targetRef = useRef<T | null>(null);\n\n const handleMouseEnter = () => hoverCallback(true);\n\n const handleTouchStart = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch && touch.force >= forceThreshold) {\n hoverCallback(true);\n }\n };\n\n useEventListener(targetRef, 'mouseenter', handleMouseEnter);\n useEventListener(targetRef, 'touchstart', handleTouchStart);\n\n return targetRef;\n}\n\nexport function Anchor({\n preload,\n goBack,\n params = {},\n type = 'push',\n href: hrefProp,\n navigation: navigationProp,\n onClick: onClickProp,\n preloadBehaviour = {\n type: 'onsight',\n },\n children,\n ...aProps\n}: AnchorProps) {\n const navigation = useNavigationOrDefault(navigationProp);\n const isOnSightPreload = preloadBehaviour?.type === 'onsight';\n const isOnHoverPreload = preloadBehaviour?.type === 'onhover';\n const isForcePreload = preloadBehaviour?.type === 'force';\n\n /// Intersection preload behaviour\n const intersectionRef = useIntersection<HTMLAnchorElement>(\n (entry) => {\n if (!entry.isIntersecting || !preload) return;\n navigation.preload(hrefProp, { params });\n },\n isOnSightPreload ? preloadBehaviour : {}\n );\n /// Intersection preload behaviour\n\n /// Hover preload behaviour\n const hoverRef = useHover<HTMLAnchorElement>(\n (hovered) => {\n if (!hovered || !preload) return;\n navigation.preload(hrefProp, { params });\n },\n isOnHoverPreload ? preloadBehaviour : {}\n );\n /// Hover preload behaviour\n\n /// Force preload behaviour\n useEffect(() => {\n if (!preload || !isForcePreload) return;\n navigation.preload(hrefProp, { params });\n }, [preload, hrefProp, navigation, isForcePreload, params]);\n /// Force preload behaviour\n\n const [href, setHref] = useState<string | undefined>(undefined);\n const routerId = navigation?.routerId;\n const isExternal = !href?.includes(window.location.origin);\n const rel = isExternal ? 'noopener noreferrer' : goBack ? 'prev' : 'next';\n\n useEffect(() => {\n if (goBack && navigation.canGoBack()) {\n setHref(navigation.previous.url?.href);\n } else if (hrefProp) {\n const search = searchParamsFromObject(params);\n const uri = new URL(hrefProp, navigation.baseURL);\n uri.search = search;\n setHref(uri.href);\n }\n }, [hrefProp, params, navigation, goBack]);\n\n const onClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (goBack) {\n e.preventDefault();\n navigation.goBack();\n } else if (type === 'replace' && hrefProp) {\n e.preventDefault();\n navigation.replace(hrefProp);\n }\n onClickProp?.(e);\n };\n\n let ref;\n switch (preloadBehaviour?.type) {\n case 'onhover':\n ref = hoverRef;\n break;\n case 'onsight':\n ref = intersectionRef;\n break;\n default:\n ref = null;\n }\n\n return (\n <a\n href={href}\n data-router-id={routerId}\n onClick={onClick}\n rel={rel}\n ref={ref}\n {...aProps}\n >\n {children}\n </a>\n );\n}\n","export const SlideInFromRightKeyframes: Keyframe[] = [\n {\n transform: 'translateX(100vw)',\n },\n {\n transform: 'translateX(0vw)',\n },\n];\n\nexport const iOSSlideInFromRightKeyframes: Keyframe[] = [\n {\n transform: 'translateX(100vw)',\n },\n {\n transform: 'translateX(0vw)',\n },\n];\n\nexport const SlideOutToLeftKeyframes: Keyframe[] = [\n {\n transform: 'translateX(0vw)',\n },\n {\n transform: 'translateX(-50vw)',\n },\n];\n\nexport const iOSSlideOutToLeftKeyframes: Keyframe[] = [\n {\n transform: 'translateX(0vw)',\n },\n {\n transform: 'translateX(calc(100vw * -0.3))',\n },\n];\n\nexport const SlideInFromLeftKeyframes: Keyframe[] = [\n {\n transform: 'translateX(-100vw)',\n },\n {\n transform: 'translateX(0vw)',\n },\n];\n\nexport const iOSSlideInFromLeftKeyframes: Keyframe[] = [\n {\n transform: 'translateX(-100vw)',\n },\n {\n transform: 'translateX(0vw)',\n },\n];\n\nexport const SlideOutToRightKeyframes: Keyframe[] = [\n {\n transform: 'translateX(0vw)',\n },\n {\n transform: 'translateX(50vw)',\n },\n];\n\nexport const iOSSlideOutToRightKeyframes: Keyframe[] = [\n {\n transform: 'translateX(0vw)',\n },\n {\n transform: 'translateX(calc(100vw * 0.3))',\n },\n];\n\nexport const SlideInFromBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(100vh)',\n },\n {\n transform: 'translateY(0vh)',\n },\n];\n\nexport const iOSSlideInFromBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(100vh)',\n },\n {\n transform: 'translateY(0vh)',\n },\n];\n\nexport const SlideOutToTopKeyframes: Keyframe[] = [\n {\n transform: 'translateY(0vh)',\n },\n {\n transform: 'translateY(-50vh)',\n },\n];\n\nexport const SlideInFromTopKeyframes: Keyframe[] = [\n {\n transform: 'translateY(-100vh)',\n },\n {\n transform: 'translateY(0vh)',\n },\n];\n\nexport const SlideOutToBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(0vh)',\n },\n {\n transform: 'translateY(50vh)',\n },\n];\n\nexport const ZoomInKeyframes: Keyframe[] = [\n {\n transform: 'scale(0.85)',\n opacity: 0,\n },\n {\n transform: 'scale(1)',\n opacity: 1,\n },\n];\n\nexport const ZoomOutKeyframes: Keyframe[] = [\n {\n transform: 'scale(1)',\n opacity: 1,\n },\n {\n transform: 'scale(1.15)',\n opacity: 0,\n },\n];\n\nexport const FadeInKeyframes: Keyframe[] = [\n {\n opacity: 0,\n },\n {\n opacity: 1,\n },\n];\n\nexport const FadeOutKeyframes: Keyframe[] = [\n {\n opacity: 1,\n },\n {\n opacity: 0,\n },\n];\n\nexport const androidFadeInFromBottomKeyframes: Keyframe[] = [\n {\n opacity: 0,\n transform: 'translateY(calc(100vh * 0.08))',\n },\n {\n opacity: 0.25,\n offset: 0.5,\n },\n {\n opacity: 0.7,\n offset: 0.9,\n },\n {\n opacity: 1,\n transform: 'translateY(0vh)',\n },\n];\n\nexport const androidFadeInFromRightKeyframes: Keyframe[] = [\n {\n opacity: 0,\n transform: 'translateY(96vw)',\n },\n {\n opacity: 1,\n transform: 'translateY(0vw)',\n },\n];\n\nexport const androidFadeOutToLeftKeyframes: Keyframe[] = [\n {\n opacity: 0,\n transform: 'translateY(0vw)',\n },\n {\n opacity: 1,\n transform: 'translateY(-96vw)',\n },\n];\n\nexport const androidRevealFromBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(100vh)',\n },\n {\n transform: 'translateY(0vh)',\n },\n];\n\nexport const androidConcealToBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(0vh)',\n },\n {\n transform: 'translateY(-2vh)',\n },\n];\n\nexport const androidScaleFromCentreKeyframes: Keyframe[] = [\n {\n transform: 'scale(0.85)',\n opacity: 0,\n },\n {\n opacity: 0,\n offset: 0.75,\n },\n {\n opacity: 1,\n offset: 0.875,\n },\n {\n transform: 'scale(1)',\n opacity: 1,\n },\n];\n\nexport const androidScaleToCentreKeyframes: Keyframe[] = [\n {\n transform: 'scale(1)',\n opacity: 1,\n },\n {\n opacity: 1,\n offset: 0.0825,\n },\n {\n opacity: 1,\n offset: 0.2075,\n },\n {\n transform: 'scale(1.075)',\n opacity: 0,\n },\n];\n\nexport const androidFadeInFromBottomSheetKeyframes: Keyframe[] = [\n {\n transform: 'translateY(calc(100vh * 0.8))',\n opacity: 0,\n },\n {\n transform: 'translateY(0vh)',\n opacity: 1,\n },\n];","import { easingToLinear, springToLinear } from \"web-animations-extension\";\n\nfunction easingOut(easing: (t: number) => number): (t: number) => number {\n\treturn t => 1 - easing(1 - t);\n}\n\nfunction easingPoly(n: number): (t: number) => number {\n\treturn (t: number) => Math.pow(t, n);\n}\n\nexport const iOSKeyframeOptions: KeyframeEffectOptions = {\n\t...springToLinear({\n\t\tmass: 3,\n\t\tstiffness: 1000,\n\t\tdamping: 500,\n\t\tvelocity: 0,\n\t\tsteps: 200\n\t})\n};\n\nexport const androidFadeInFromBottomOptions: KeyframeAnimationOptions = {\n\tduration: 350,\n\teasing: easingToLinear(easingOut(easingPoly(5)))\n};\n\nexport const androidFadeOutToBottomOptions: KeyframeAnimationOptions = {\n\tduration: 150,\n\teasing: 'linear'\n};\n\nexport const androidRevealFromBottomOptions: KeyframeAnimationOptions = {\n\tduration: 425,\n\teasing: 'cubic-bezier(0.35, 0.45, 0, 1)'\n};\n\nexport const androidScaleFromCentreOptions: KeyframeAnimationOptions = {\n\tduration: 400,\n\teasing: 'cubic-bezier(0.35, 0.45, 0, 1)'\n};\n\nexport const androidBottomSheetSlideInOptions: KeyframeAnimationOptions = {\n\tduration: 250,\n\teasing: easingToLinear(t => Math.cos((t + 1) * Math.PI) / 2.0 + 0.5)\n};\n\nexport const androidBottomSheetSlideOutOptions: KeyframeAnimationOptions = {\n\tduration: 200,\n\teasing: easingToLinear(t => (t === 1.0 ? 1 : Math.pow(t, 2)))\n};","import { AnimationEffectFactoryProps } from '@react-motion-router/core';\nimport {\n androidBottomSheetSlideInOptions,\n androidBottomSheetSlideOutOptions,\n androidFadeInFromBottomOptions,\n androidFadeOutToBottomOptions,\n androidRevealFromBottomOptions,\n androidScaleFromCentreOptions,\n iOSKeyframeOptions\n} from './keyframe-options-presets';\nimport {\n androidConcealToBottomKeyframes,\n androidFadeInFromBottomKeyframes,\n androidFadeInFromBottomSheetKeyframes,\n androidFadeInFromRightKeyframes,\n androidFadeOutToLeftKeyframes,\n androidRevealFromBottomKeyframes,\n androidScaleFromCentreKeyframes,\n androidScaleToCentreKeyframes,\n iOSSlideInFromBottomKeyframes,\n iOSSlideInFromLeftKeyframes,\n iOSSlideInFromRightKeyframes,\n iOSSlideOutToLeftKeyframes,\n iOSSlideOutToRightKeyframes\n} from './keyframe-presets';\n\nexport function iOSSlideInFromRight({ ref, direction, playbackRate, index }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n iOSSlideOutToLeftKeyframes,\n iOSSlideInFromRightKeyframes,\n ];\n\n let keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...iOSKeyframeOptions,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function iOSSlideInFromLeft({ ref, direction, playbackRate, index }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n iOSSlideOutToRightKeyframes,\n iOSSlideInFromLeftKeyframes,\n ];\n\n let keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...iOSKeyframeOptions,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function iOSSlideInFromBottom({ ref, direction, playbackRate }: AnimationEffectFactoryProps) {\n let keyframes = iOSSlideInFromBottomKeyframes;\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...iOSKeyframeOptions,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromBottom({ ref, direction, playbackRate }: AnimationEffectFactoryProps) {\n let keyframes = androidFadeInFromBottomKeyframes;\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...androidFadeInFromBottomOptions,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromBottomSheet({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n let keyframes = androidFadeInFromBottomSheetKeyframes;\n let timing;\n if (index === 0)\n timing = androidBottomSheetSlideOutOptions;\n else\n timing = androidBottomSheetSlideInOptions;\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...timing,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidRevealFromBottom({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n androidConcealToBottomKeyframes,\n androidRevealFromBottomKeyframes,\n ];\n\n const keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n direction,\n playbackRate,\n fill: 'forwards' as const,\n ...androidRevealFromBottomOptions,\n };\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromRight({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n androidFadeOutToLeftKeyframes,\n androidFadeInFromRightKeyframes,\n ];\n let timing;\n if (index === 0)\n timing = androidFadeOutToBottomOptions;\n else\n timing = androidFadeInFromBottomOptions;\n\n let keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...timing,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidScaleFromCentre({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n androidScaleToCentreKeyframes,\n androidScaleFromCentreKeyframes,\n ];\n\n const keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n direction,\n playbackRate,\n fill: 'forwards' as const,\n ...androidScaleFromCentreOptions,\n };\n\n return new KeyframeEffect(ref, keyframes, options);\n}","import { useRef, useEffect } from 'react';\nimport { SwipeStartEvent } from 'web-gesture-events';\n\ninterface GestureRegionProps extends React.HTMLAttributes<HTMLDivElement> {\n disabled?: boolean;\n}\nexport function GestureRegion({disabled, children, ...props}: GestureRegionProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (disabled) return;\n const onSwipeStart = (e: SwipeStartEvent) => {\n e.stopPropagation();\n e.preventDefault();\n }\n\n ref.current?.addEventListener('swipestart', onSwipeStart);\n\n return () => {\n ref.current?.removeEventListener('swipestart', onSwipeStart);\n }\n }, [ref, disabled]);\n\n return (\n <div\n ref={ref}\n className=\"gesture-region\"\n data-disabled={disabled}\n style={{display: 'contents'}}\n {...props}\n >\n {children}\n </div>\n );\n}"],"names":["GestureEvent_1","GestureEventTypeEnum","GestureEvent","type","touchEvent","__importDefault","this","mod","LongPressEvent_1","require$$0","LongPressEvent","duration","TapEvent_1","TapEvent","DoubleTapEvent_1","DoubleTapEvent","SwipeEvent_1","SwipeLifecycleStateEnum","SwipeEventBase","swipeData","state","eventType","SwipeEvent","SwipeStartEvent","SwipeEndEvent","PanEvent_1","PanLifecycleStateEnum","PanEventBase","panData","PanEvent","PanStartEvent","PanEndEvent","PinchEvent_1","PinchLifecycleStateEnum","PinchEventBase","pinchData","PinchEvent","PinchStartEvent","PinchEndEvent","RotateEvent_1","RotateLifecycleStateEnum","RotateEventBase","rotationData","RotateEvent","RotateStartEvent","RotateEndEvent","utils","assert","condition","message","Vec2","_x","_y","vector","closest","needle","haystack","a","b","a_diff","b_diff","__createBinding","o","m","k","k2","__setModuleDefault","v","__importStar","result","exports","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","utils_1","require$$8","CartesianDirectionEnum","GestureProvider","target","touchEnd","swipeEndEvent","panEndEvent","pinchEndEvent","rotateEndEvent","gestureEvent","touchStart","minPointers","longPressDuration","touchDuration","longPressEvent","originPointerPrimary","originPointerSecondary","touchMove","currentPointerPrimary","currentPointerSecondary","distance","scaleFactor","pinchEvent","pinchStartEvent","rotationAngle","rotateEvent","rotateStartEvent","origin","dxDy","length","normalised","angle","dt","velocity","swipeEvent","swipeStartEvent","panEvent","panStartEvent","numberOfTaps","maxTapDelay","doubleTapEvent","tapEvent","touchCancel","NavigateEvent","routerId","route","props","signal","committed","transition","BackEvent","ForwardEvent","GestureStartEvent","source","GestureEndEvent","GestureCancelEvent","HistoryEntry","#nativeEntry","nativeEntry","index","handler","listener","options","event","Navigation","NavigationBase","router","key","fromIndex","destinationIndex","entry","controller","history","url","nestedPathPatterns","pattern","nestedScopePathPattern","nestedBoundaryReached","resolvedBaseURL","resolveBaseURLFromPattern","nestedBaseURLPattern","matchRoute","caseSensitive","globalCurrentIndex","firstEntryGlobalIndex","lastEntryGlobalIndex","scopedEntries","globalEntry","searchParamsToObject","searchParams","searchParamsFromObject","params","isGesture","info","isRollback","deepEquals","obj1","obj2","keys1","keys2","Screen","ScreenBase","#historyEntry","id","historyEntry","newParams","newConfig","config","queryParams","pathParams","setParams","setConfig","path","focused","resolvedPathname","newState","prevState","e","navigation","rect","onClickOutside","isRefObject","value","directions","isSupportedDirection","direction","supported","isOutOfBounds","x","y","clientRect","gestureAreaWidth","isHorizontalDirection","DEFAULT_GESTURE_CONFIG","DEFAULT_PRELOAD_FORCE_THRESHOLD","PromiseWrapper","resolve","reject","reason","Router","RouterBase","#committed","context","gestureDirection","gestureDisabled","gestureHysteresis","gestureMinFlingVelocity","_","screen","nextProps","nextState","error","axis","rangeStart","rangeEnd","GestureTimeline","gesture","progress","playbackRate","hysteresisReached","gestureCancelled","screenStack","currentScreenRef","nextScreenRef","pathname","child","matchInfo","cloneAndInject","createRef","baseURLPattern","includesRoute","fromKey","destinationKey","entries","startTransition","initialPathname","firstEntry","currentScreen","destination","destinationPathname","destinationScreen","isHotReplace","currentIndex","outgoingScreen","incomingScreen","pendingLifecycleHandlers","currentTime","animation","commit","animationStarted","backNavigating","topScreenIndex","useNavigation","useDebugValue","useNavigationBase","useRouter","useRouterBase","useRoute","useRouteBase","useParams","initialParams","useParamsBase","useNavigationOrDefault","defaultNavigation","useIntersection","callback","targetRef","useRef","observerCallback","useCallback","useEffect","observer","element","useEventListener","ref","eventName","useHover","hoverCallback","forceThreshold","handleMouseEnter","handleTouchStart","touch","Anchor","preload","goBack","hrefProp","navigationProp","onClickProp","preloadBehaviour","children","aProps","isOnSightPreload","isOnHoverPreload","isForcePreload","intersectionRef","hoverRef","hovered","href","setHref","useState","rel","search","uri","onClick","jsx","SlideInFromRightKeyframes","iOSSlideInFromRightKeyframes","SlideOutToLeftKeyframes","iOSSlideOutToLeftKeyframes","SlideInFromLeftKeyframes","iOSSlideInFromLeftKeyframes","SlideOutToRightKeyframes","iOSSlideOutToRightKeyframes","SlideInFromBottomKeyframes","iOSSlideInFromBottomKeyframes","SlideOutToTopKeyframes","SlideInFromTopKeyframes","SlideOutToBottomKeyframes","ZoomInKeyframes","ZoomOutKeyframes","FadeInKeyframes","FadeOutKeyframes","androidFadeInFromBottomKeyframes","androidFadeInFromRightKeyframes","androidFadeOutToLeftKeyframes","androidRevealFromBottomKeyframes","androidConcealToBottomKeyframes","androidScaleFromCentreKeyframes","androidScaleToCentreKeyframes","androidFadeInFromBottomSheetKeyframes","easingOut","easing","easingPoly","iOSKeyframeOptions","springToLinear","androidFadeInFromBottomOptions","easingToLinear","androidFadeOutToBottomOptions","androidRevealFromBottomOptions","androidScaleFromCentreOptions","androidBottomSheetSlideInOptions","t","androidBottomSheetSlideOutOptions","iOSSlideInFromRight","keyframes","iOSSlideInFromLeft","iOSSlideInFromBottom","androidFadeInFromBottom","androidFadeInFromBottomSheet","timing","androidRevealFromBottom","androidFadeInFromRight","keyframesPresets","androidScaleFromCentre","GestureRegion","disabled","onSwipeStart"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/web-gesture-events/Gestures/GestureEvent.js","../../../node_modules/web-gesture-events/Gestures/LongPressEvent.js","../../../node_modules/web-gesture-events/Gestures/TapEvent.js","../../../node_modules/web-gesture-events/Gestures/DoubleTapEvent.js","../../../node_modules/web-gesture-events/Gestures/SwipeEvent.js","../../../node_modules/web-gesture-events/Gestures/PanEvent.js","../../../node_modules/web-gesture-events/Gestures/PinchEvent.js","../../../node_modules/web-gesture-events/Gestures/RotateEvent.js","../../../node_modules/web-gesture-events/utils.js","../../../node_modules/web-gesture-events/index.js","../src/common/events.ts","../src/HistoryEntry.ts","../src/Navigation.ts","../src/common/utils.ts","../src/Screen.tsx","../src/common/types.ts","../src/common/constants.ts","../src/common/promise-wrapper.ts","../src/Router.tsx","../src/common/hooks.ts","../src/Anchor.tsx","../src/animation-configs/keyframe-presets.ts","../src/animation-configs/keyframe-options-presets.ts","../src/animation-configs/animation-presets.ts","../src/GestureRegion.tsx"],"sourcesContent":["\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar GestureEventTypeEnum;\r\n(function (GestureEventTypeEnum) {\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"tap\"] = 0] = \"tap\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"longpress\"] = 1] = \"longpress\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"pinchstart\"] = 2] = \"pinchstart\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"pinch\"] = 3] = \"pinch\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"pinchend\"] = 4] = \"pinchend\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"rotatestart\"] = 5] = \"rotatestart\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"rotate\"] = 6] = \"rotate\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"rotateend\"] = 7] = \"rotateend\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"swipestart\"] = 8] = \"swipestart\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"swipe\"] = 9] = \"swipe\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"swipeend\"] = 10] = \"swipeend\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"panstart\"] = 11] = \"panstart\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"pan\"] = 12] = \"pan\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"panend\"] = 13] = \"panend\";\r\n GestureEventTypeEnum[GestureEventTypeEnum[\"doubletap\"] = 14] = \"doubletap\";\r\n})(GestureEventTypeEnum || (GestureEventTypeEnum = {}));\r\nclass GestureEvent extends TouchEvent {\r\n constructor(type, touchEvent) {\r\n super(type, {\r\n touches: Array.from(touchEvent.touches),\r\n targetTouches: Array.from(touchEvent.targetTouches),\r\n changedTouches: Array.from(touchEvent.changedTouches),\r\n ctrlKey: touchEvent.ctrlKey,\r\n shiftKey: touchEvent.shiftKey,\r\n altKey: touchEvent.altKey,\r\n metaKey: touchEvent.metaKey,\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n if (type.includes(\"end\") || touchEvent.type.includes(\"end\")) {\r\n this.gestureTarget = touchEvent.changedTouches[0].target;\r\n this.x = touchEvent.changedTouches[0].clientX;\r\n this.y = touchEvent.changedTouches[0].clientY;\r\n return;\r\n }\r\n this.gestureTarget = touchEvent.touches[0].target;\r\n this.x = touchEvent.touches[0].clientX;\r\n this.y = touchEvent.touches[0].clientY;\r\n }\r\n}\r\nexports.default = GestureEvent;\r\n//# sourceMappingURL=GestureEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nclass LongPressEvent extends GestureEvent_1.default {\r\n constructor(touchEvent, duration) {\r\n super('longpress', touchEvent);\r\n this.duration = 0;\r\n this.duration = duration;\r\n }\r\n}\r\nexports.default = LongPressEvent;\r\n//# sourceMappingURL=LongPressEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nclass TapEvent extends GestureEvent_1.default {\r\n constructor(touchEvent) {\r\n super('tap', touchEvent);\r\n this.duration = 0;\r\n }\r\n}\r\nexports.default = TapEvent;\r\n//# sourceMappingURL=TapEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nclass DoubleTapEvent extends GestureEvent_1.default {\r\n constructor(touchEvent) {\r\n super('doubletap', touchEvent);\r\n }\r\n}\r\nexports.default = DoubleTapEvent;\r\n//# sourceMappingURL=DoubleTapEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwipeEndEvent = exports.SwipeStartEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nvar SwipeLifecycleStateEnum;\r\n(function (SwipeLifecycleStateEnum) {\r\n SwipeLifecycleStateEnum[SwipeLifecycleStateEnum[\"start\"] = 0] = \"start\";\r\n SwipeLifecycleStateEnum[SwipeLifecycleStateEnum[\"end\"] = 1] = \"end\";\r\n})(SwipeLifecycleStateEnum || (SwipeLifecycleStateEnum = {}));\r\nclass SwipeEventBase extends GestureEvent_1.default {\r\n constructor(touchEvent, swipeData, state) {\r\n let eventType;\r\n switch (state) {\r\n case \"start\":\r\n eventType = \"swipestart\";\r\n break;\r\n case \"end\":\r\n eventType = \"swipeend\";\r\n break;\r\n default:\r\n eventType = \"swipe\";\r\n }\r\n super(eventType, touchEvent);\r\n this.velocity = swipeData.velocity;\r\n this.direction = swipeData.direction;\r\n }\r\n}\r\nclass SwipeEvent extends SwipeEventBase {\r\n constructor(touchEvent, swipeData) {\r\n super(touchEvent, swipeData);\r\n }\r\n}\r\nexports.default = SwipeEvent;\r\nclass SwipeStartEvent extends SwipeEventBase {\r\n constructor(touchEvent, swipeData) {\r\n super(touchEvent, swipeData, \"start\");\r\n }\r\n}\r\nexports.SwipeStartEvent = SwipeStartEvent;\r\nclass SwipeEndEvent extends SwipeEventBase {\r\n constructor(touchEvent, swipeData) {\r\n super(touchEvent, swipeData, \"end\");\r\n }\r\n}\r\nexports.SwipeEndEvent = SwipeEndEvent;\r\n//# sourceMappingURL=SwipeEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PanEndEvent = exports.PanStartEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nvar PanLifecycleStateEnum;\r\n(function (PanLifecycleStateEnum) {\r\n PanLifecycleStateEnum[PanLifecycleStateEnum[\"start\"] = 0] = \"start\";\r\n PanLifecycleStateEnum[PanLifecycleStateEnum[\"end\"] = 1] = \"end\";\r\n})(PanLifecycleStateEnum || (PanLifecycleStateEnum = {}));\r\nclass PanEventBase extends GestureEvent_1.default {\r\n constructor(touchEvent, panData, state) {\r\n let eventType;\r\n switch (state) {\r\n case \"start\":\r\n eventType = \"panstart\";\r\n break;\r\n case \"end\":\r\n eventType = \"panend\";\r\n break;\r\n default:\r\n eventType = \"pan\";\r\n }\r\n super(eventType, touchEvent);\r\n this.velocity = panData.velocity;\r\n this.translation = {\r\n x: panData.translation.x,\r\n y: panData.translation.y,\r\n magnitude: panData.translation.magnitude,\r\n clientX: panData.translation.clientX,\r\n clientY: panData.translation.clientY,\r\n clientMagnitude: panData.translation.clientMagnitude\r\n };\r\n }\r\n}\r\nclass PanEvent extends PanEventBase {\r\n constructor(touchEvent, panData) {\r\n super(touchEvent, panData);\r\n }\r\n}\r\nexports.default = PanEvent;\r\nclass PanStartEvent extends PanEventBase {\r\n constructor(touchEvent, panData) {\r\n super(touchEvent, panData, \"start\");\r\n }\r\n}\r\nexports.PanStartEvent = PanStartEvent;\r\nclass PanEndEvent extends PanEventBase {\r\n constructor(touchEvent, panData) {\r\n super(touchEvent, panData, \"end\");\r\n }\r\n}\r\nexports.PanEndEvent = PanEndEvent;\r\n//# sourceMappingURL=PanEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PinchEndEvent = exports.PinchStartEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nvar PinchLifecycleStateEnum;\r\n(function (PinchLifecycleStateEnum) {\r\n PinchLifecycleStateEnum[PinchLifecycleStateEnum[\"start\"] = 0] = \"start\";\r\n PinchLifecycleStateEnum[PinchLifecycleStateEnum[\"end\"] = 1] = \"end\";\r\n})(PinchLifecycleStateEnum || (PinchLifecycleStateEnum = {}));\r\nclass PinchEventBase extends GestureEvent_1.default {\r\n constructor(touchEvent, pinchData, state) {\r\n let eventType;\r\n switch (state) {\r\n case \"start\":\r\n eventType = \"pinchstart\";\r\n break;\r\n case \"end\":\r\n eventType = \"pinchend\";\r\n break;\r\n default:\r\n eventType = \"pinch\";\r\n }\r\n super(eventType, touchEvent);\r\n Object.defineProperty(this, 'scale', {\r\n value: pinchData.scale,\r\n writable: false\r\n });\r\n }\r\n}\r\nclass PinchEvent extends PinchEventBase {\r\n constructor(touchEvent, pinchData) {\r\n super(touchEvent, pinchData);\r\n }\r\n}\r\nexports.default = PinchEvent;\r\nclass PinchStartEvent extends PinchEventBase {\r\n constructor(touchEvent, pinchData) {\r\n super(touchEvent, pinchData, \"start\");\r\n }\r\n}\r\nexports.PinchStartEvent = PinchStartEvent;\r\nclass PinchEndEvent extends PinchEventBase {\r\n constructor(touchEvent, pinchData) {\r\n super(touchEvent, pinchData, \"end\");\r\n }\r\n}\r\nexports.PinchEndEvent = PinchEndEvent;\r\n//# sourceMappingURL=PinchEvent.js.map","\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RotateEndEvent = exports.RotateStartEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./GestureEvent\"));\r\nvar RotateLifecycleStateEnum;\r\n(function (RotateLifecycleStateEnum) {\r\n RotateLifecycleStateEnum[RotateLifecycleStateEnum[\"start\"] = 0] = \"start\";\r\n RotateLifecycleStateEnum[RotateLifecycleStateEnum[\"end\"] = 1] = \"end\";\r\n})(RotateLifecycleStateEnum || (RotateLifecycleStateEnum = {}));\r\nclass RotateEventBase extends GestureEvent_1.default {\r\n constructor(touchEvent, rotationData, state) {\r\n let eventType;\r\n switch (state) {\r\n case \"start\":\r\n eventType = \"rotatestart\";\r\n break;\r\n case \"end\":\r\n eventType = \"rotateend\";\r\n break;\r\n default:\r\n eventType = \"rotate\";\r\n }\r\n super(eventType, touchEvent);\r\n this.anchor = {\r\n x: rotationData.anchor.x,\r\n y: rotationData.anchor.y,\r\n clientX: rotationData.anchor.clientX,\r\n clientY: rotationData.anchor.clientY\r\n };\r\n Object.defineProperty(this, 'rotation', {\r\n value: rotationData.rotation,\r\n writable: false\r\n });\r\n this.rotationDeg = rotationData.rotationDeg;\r\n }\r\n}\r\nclass RotateEvent extends RotateEventBase {\r\n constructor(touchEvent, rotationData) {\r\n super(touchEvent, rotationData);\r\n }\r\n}\r\nexports.default = RotateEvent;\r\nclass RotateStartEvent extends RotateEventBase {\r\n constructor(touchEvent, rotationData) {\r\n super(touchEvent, rotationData, \"start\");\r\n }\r\n}\r\nexports.RotateStartEvent = RotateStartEvent;\r\nclass RotateEndEvent extends RotateEventBase {\r\n constructor(touchEvent, rotationData) {\r\n super(touchEvent, rotationData, \"end\");\r\n }\r\n}\r\nexports.RotateEndEvent = RotateEndEvent;\r\n//# sourceMappingURL=RotateEvent.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.closest = exports.Vec2 = exports.assert = void 0;\r\nfunction assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n}\r\nexports.assert = assert;\r\nclass Vec2 {\r\n constructor(_x, _y) {\r\n this._x = 0;\r\n this._y = 0;\r\n this._clientX = 0;\r\n this._clientY = 0;\r\n this._clientX = _x;\r\n this._clientY = _y;\r\n this._x = this.translateX(_x);\r\n this._y = this.translateY(_y);\r\n }\r\n translateY(_y) {\r\n return -(_y - window.innerHeight / 2);\r\n }\r\n translateX(_x) {\r\n return _x - window.innerWidth / 2;\r\n }\r\n get x() {\r\n return this._x;\r\n }\r\n get y() {\r\n return this._y;\r\n }\r\n get clientX() {\r\n return this._clientX;\r\n }\r\n get clientY() {\r\n return this._clientY;\r\n }\r\n set x(_x) {\r\n this._clientX = _x;\r\n this._x = this.translateX(_x);\r\n }\r\n set y(_y) {\r\n this._clientY = _y;\r\n this._y = this.translateY(_y);\r\n }\r\n add(vector) {\r\n this._x += vector.x;\r\n this._y += vector.y;\r\n this._clientX += vector.clientX;\r\n this._clientY += vector.clientY;\r\n return this;\r\n }\r\n substract(vector) {\r\n this._x -= vector.x;\r\n this._y -= vector.y;\r\n this._clientX -= vector.clientX;\r\n this._clientY -= vector.clientY;\r\n return this;\r\n }\r\n dot(vector) {\r\n const scalar = (this._x * vector.x) + (this._y * vector.y);\r\n return scalar;\r\n }\r\n get magnitude() {\r\n return Math.sqrt(Math.pow(this._x, 2) + Math.pow(this._y, 2));\r\n }\r\n get clientMagnitude() {\r\n return Math.sqrt(Math.pow(this._clientX, 2) + Math.pow(this._clientY, 2));\r\n }\r\n}\r\nexports.Vec2 = Vec2;\r\nfunction closest(needle, haystack) {\r\n return haystack.reduce((a, b) => {\r\n let a_diff = Math.abs(a - needle);\r\n let b_diff = Math.abs(b - needle);\r\n if (a_diff === b_diff) {\r\n return a > b ? a : b;\r\n }\r\n else {\r\n return b_diff < a_diff ? b : a;\r\n }\r\n });\r\n}\r\nexports.closest = closest;\r\n//# sourceMappingURL=utils.js.map","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RotateEndEvent = exports.RotateEvent = exports.RotateStartEvent = exports.PinchEndEvent = exports.PinchEvent = exports.PinchStartEvent = exports.PanEndEvent = exports.PanEvent = exports.PanStartEvent = exports.SwipeEndEvent = exports.SwipeEvent = exports.SwipeStartEvent = exports.DoubleTapEvent = exports.LongPressEvent = exports.GestureEvent = exports.TapEvent = void 0;\r\nconst GestureEvent_1 = __importDefault(require(\"./Gestures/GestureEvent\"));\r\nexports.GestureEvent = GestureEvent_1.default;\r\nconst LongPressEvent_1 = __importDefault(require(\"./Gestures/LongPressEvent\"));\r\nexports.LongPressEvent = LongPressEvent_1.default;\r\nconst TapEvent_1 = __importDefault(require(\"./Gestures/TapEvent\"));\r\nexports.TapEvent = TapEvent_1.default;\r\nconst DoubleTapEvent_1 = __importDefault(require(\"./Gestures/DoubleTapEvent\"));\r\nexports.DoubleTapEvent = DoubleTapEvent_1.default;\r\nconst SwipeEvent_1 = __importStar(require(\"./Gestures/SwipeEvent\"));\r\nexports.SwipeEvent = SwipeEvent_1.default;\r\nObject.defineProperty(exports, \"SwipeEndEvent\", { enumerable: true, get: function () { return SwipeEvent_1.SwipeEndEvent; } });\r\nObject.defineProperty(exports, \"SwipeStartEvent\", { enumerable: true, get: function () { return SwipeEvent_1.SwipeStartEvent; } });\r\nconst PanEvent_1 = __importStar(require(\"./Gestures/PanEvent\"));\r\nexports.PanEvent = PanEvent_1.default;\r\nObject.defineProperty(exports, \"PanEndEvent\", { enumerable: true, get: function () { return PanEvent_1.PanEndEvent; } });\r\nObject.defineProperty(exports, \"PanStartEvent\", { enumerable: true, get: function () { return PanEvent_1.PanStartEvent; } });\r\nconst PinchEvent_1 = __importStar(require(\"./Gestures/PinchEvent\"));\r\nexports.PinchEvent = PinchEvent_1.default;\r\nObject.defineProperty(exports, \"PinchEndEvent\", { enumerable: true, get: function () { return PinchEvent_1.PinchEndEvent; } });\r\nObject.defineProperty(exports, \"PinchStartEvent\", { enumerable: true, get: function () { return PinchEvent_1.PinchStartEvent; } });\r\nconst RotateEvent_1 = __importStar(require(\"./Gestures/RotateEvent\"));\r\nexports.RotateEvent = RotateEvent_1.default;\r\nObject.defineProperty(exports, \"RotateEndEvent\", { enumerable: true, get: function () { return RotateEvent_1.RotateEndEvent; } });\r\nObject.defineProperty(exports, \"RotateStartEvent\", { enumerable: true, get: function () { return RotateEvent_1.RotateStartEvent; } });\r\nconst utils_1 = require(\"./utils\");\r\nvar CartesianDirectionEnum;\r\n(function (CartesianDirectionEnum) {\r\n CartesianDirectionEnum[CartesianDirectionEnum[\"right\"] = 0] = \"right\";\r\n CartesianDirectionEnum[CartesianDirectionEnum[\"up\"] = 1] = \"up\";\r\n CartesianDirectionEnum[CartesianDirectionEnum[\"left\"] = 2] = \"left\";\r\n CartesianDirectionEnum[CartesianDirectionEnum[\"down\"] = 3] = \"down\";\r\n})(CartesianDirectionEnum || (CartesianDirectionEnum = {}));\r\nclass GestureProvider {\r\n constructor() {\r\n this.touchStart = new TouchEvent('touchstart') || {};\r\n this.touchMove = new TouchEvent('touchmove') || {};\r\n this.touchEnd = new TouchEvent('touchend') || {};\r\n this.touchCancel = new TouchEvent('touchcancel') || {};\r\n this.velocity = 0;\r\n this.dxDy = new utils_1.Vec2(0, 0);\r\n this.scale = 1;\r\n this.rotation = 0;\r\n this.rotationDeg = 0;\r\n this.anchor = new utils_1.Vec2(0, 0);\r\n this.octant = 0;\r\n this.isPanning = false;\r\n this.isPinching = false;\r\n this.isSwiping = false;\r\n this.isRotating = false;\r\n this.touchStartTime = 0;\r\n this.touchEndTime = 0;\r\n this.lastTouchTime = 0;\r\n this.taps = 0;\r\n this.scaleBase = 0;\r\n this.touchMoved = false;\r\n this.touchDown = false;\r\n this.shouldFire = false;\r\n this.pointers = 0;\r\n this.isLongPress = false;\r\n this.longPressTimeout = 0;\r\n this.touchStartListener = this.onTouchStart.bind(this);\r\n this.touchMoveListener = this.onTouchMove.bind(this);\r\n this.touchEndListener = this.onTouchEnd.bind(this);\r\n this.touchCancelListener = this.onTouchCancel.bind(this);\r\n this.currentTarget = window;\r\n this.config = {\r\n longPressDuration: 500,\r\n tapDelay: 500,\r\n minPointers: 1,\r\n numberOfTaps: 0\r\n };\r\n if (!GestureProvider.listening) {\r\n if (TouchEvent)\r\n window.addEventListener('touchstart', this.touchStartListener, true);\r\n GestureProvider.listening = true;\r\n }\r\n }\r\n bind(target) {\r\n this.unbind(this.currentTarget);\r\n target.addEventListener('touchmove', this.touchMoveListener, true);\r\n target.addEventListener('touchend', this.touchEndListener, true);\r\n target.addEventListener('touchcancel', this.touchCancelListener, true);\r\n this.currentTarget = target;\r\n }\r\n unbind(target) {\r\n target.removeEventListener('touchmove', this.touchMoveListener);\r\n target.removeEventListener('touchend', this.touchEndListener);\r\n target.removeEventListener('touchcancel', this.touchCancelListener);\r\n }\r\n clean() {\r\n this.touchMoved = false;\r\n this.touchStartTime = 0;\r\n this.touchDown = false;\r\n this.scaleBase = 0;\r\n if (this.longPressTimeout && !this.isLongPress) {\r\n clearTimeout(this.longPressTimeout);\r\n this.longPressTimeout = 0;\r\n }\r\n this.isLongPress = false;\r\n }\r\n onPointerLeave(touchEnd) {\r\n if (!touchEnd.touches.length) {\r\n if (this.isSwiping) {\r\n const swipeEndEvent = new SwipeEvent_1.SwipeEndEvent(touchEnd, {\r\n velocity: this.velocity,\r\n direction: CartesianDirectionEnum[(0, utils_1.closest)(this.octant, [0, 1, 2, 3])]\r\n });\r\n this.dispatchEvent(swipeEndEvent);\r\n this.isSwiping = false;\r\n }\r\n if (this.isPanning) {\r\n const panEndEvent = new PanEvent_1.PanEndEvent(touchEnd, {\r\n translation: this.dxDy,\r\n velocity: this.velocity\r\n });\r\n this.dispatchEvent(panEndEvent);\r\n this.isPanning = false;\r\n }\r\n }\r\n if (touchEnd.touches.length === 1) {\r\n this.scaleBase = 0;\r\n if (this.isPinching) {\r\n const pinchEndEvent = new PinchEvent_1.PinchEndEvent(touchEnd, {\r\n scale: this.scale\r\n });\r\n this.dispatchEvent(pinchEndEvent);\r\n this.isPinching = false;\r\n }\r\n if (this.isRotating) {\r\n const rotateEndEvent = new RotateEvent_1.RotateEndEvent(touchEnd, {\r\n rotation: this.rotation,\r\n rotationDeg: this.rotationDeg,\r\n anchor: this.anchor\r\n });\r\n this.dispatchEvent(rotateEndEvent);\r\n this.isRotating = false;\r\n }\r\n }\r\n }\r\n dispatchEvent(gestureEvent) {\r\n queueMicrotask(() => {\r\n this.currentTarget.dispatchEvent(gestureEvent);\r\n });\r\n }\r\n onTouchStart(touchStart) {\r\n if (this.currentTarget !== touchStart.touches[0].target) {\r\n this.clean();\r\n this.unbind(this.currentTarget);\r\n this.pointers = this.touchEnd.touches.length;\r\n this.taps = 0;\r\n }\r\n this.touchStart = touchStart;\r\n const minPointers = parseInt(touchStart.touches[0].target.dataset.minpointers || '0') || this.config.minPointers;\r\n if (this.touchStart.touches.length < minPointers) {\r\n this.shouldFire = false;\r\n return;\r\n }\r\n this.shouldFire = true;\r\n this.touchStartTime = touchStart.timeStamp;\r\n this.touchDown = true;\r\n if (!this.pointers)\r\n this.bind(touchStart.touches[0].target);\r\n this.pointers = this.touchStart.touches.length;\r\n const longPressDuration = parseFloat(this.currentTarget.dataset.longpressduration || '0') || this.config.longPressDuration;\r\n if (!this.longPressTimeout) {\r\n this.longPressTimeout = setTimeout(() => {\r\n if (!this.touchMoved && this.touchDown) {\r\n const touchDuration = Date.now() - this.touchStartTime;\r\n const longPressEvent = new LongPressEvent_1.default(this.touchStart, touchDuration);\r\n this.dispatchEvent(longPressEvent);\r\n this.isLongPress = true;\r\n this.longPressTimeout = 0;\r\n }\r\n }, longPressDuration);\r\n }\r\n if (this.touchStart.touches.length > 1) {\r\n const originPointerPrimary = new utils_1.Vec2(this.touchStart.touches[0].clientX, this.touchStart.touches[0].clientY);\r\n const originPointerSecondary = new utils_1.Vec2(this.touchStart.touches[1].clientX, this.touchStart.touches[1].clientY);\r\n this.scaleBase = originPointerPrimary.substract(originPointerSecondary).magnitude;\r\n }\r\n else\r\n this.scaleBase = 0;\r\n }\r\n onTouchMove(touchMove) {\r\n if (!this.shouldFire)\r\n return;\r\n this.touchMoved = true;\r\n this.touchMove = touchMove;\r\n if (touchMove.touches.length > 1 && this.touchStart.touches.length > 1) {\r\n if (touchMove.touches[1].clientX !== this.touchStart.touches[1].clientX\r\n || touchMove.touches[1].clientY !== this.touchStart.touches[1].clientY) {\r\n const currentPointerPrimary = new utils_1.Vec2(this.touchMove.touches[0].clientX, this.touchMove.touches[0].clientY);\r\n const currentPointerSecondary = new utils_1.Vec2(this.touchMove.touches[1].clientX, this.touchMove.touches[1].clientY);\r\n const originPointerPrimary = new utils_1.Vec2(this.touchStart.touches[0].clientX, this.touchStart.touches[0].clientY);\r\n const distance = currentPointerPrimary.substract(currentPointerSecondary);\r\n if (this.scaleBase && Math.abs(this.scaleBase - distance.magnitude) > 10) {\r\n const scaleFactor = distance.magnitude / this.scaleBase;\r\n this.scale = scaleFactor;\r\n if (this.isPinching) {\r\n const pinchEvent = new PinchEvent_1.default(touchMove, {\r\n scale: scaleFactor\r\n });\r\n this.dispatchEvent(pinchEvent);\r\n }\r\n else {\r\n const pinchStartEvent = new PinchEvent_1.PinchStartEvent(touchMove, {\r\n scale: scaleFactor\r\n });\r\n this.dispatchEvent(pinchStartEvent);\r\n this.isPinching = true;\r\n }\r\n }\r\n this.anchor = currentPointerPrimary;\r\n let rotationAngle = Math.atan2((originPointerPrimary.clientY - currentPointerSecondary.clientY), (originPointerPrimary.clientX - currentPointerSecondary.clientX));\r\n rotationAngle < 0 ? rotationAngle += 1.5708 : rotationAngle -= 1.5708;\r\n this.rotation = rotationAngle;\r\n this.rotationDeg = rotationAngle * 180 / Math.PI;\r\n this.anchor = this.anchor;\r\n if (this.isRotating) {\r\n const rotateEvent = new RotateEvent_1.default(touchMove, {\r\n anchor: this.anchor,\r\n rotation: this.rotation,\r\n rotationDeg: this.rotationDeg\r\n });\r\n this.dispatchEvent(rotateEvent);\r\n }\r\n else {\r\n const rotateStartEvent = new RotateEvent_1.RotateStartEvent(touchMove, {\r\n anchor: this.anchor,\r\n rotation: this.rotation,\r\n rotationDeg: this.rotationDeg\r\n });\r\n this.dispatchEvent(rotateStartEvent);\r\n this.isRotating = true;\r\n }\r\n }\r\n }\r\n const origin = new utils_1.Vec2(this.touchStart.touches[0].clientX, this.touchStart.touches[0].clientY);\r\n const currentPosition = new utils_1.Vec2(this.touchMove.touches[0].clientX, this.touchMove.touches[0].clientY);\r\n const dxDy = currentPosition.substract(origin);\r\n const length = dxDy.magnitude;\r\n const normalised = {\r\n x: dxDy.x / length,\r\n y: dxDy.y / length\r\n };\r\n const angle = Math.atan2(normalised.y, normalised.x);\r\n this.octant = Math.round(4 * angle / (2 * Math.PI) + 4) % 4;\r\n const dt = (touchMove.timeStamp - this.touchStart.timeStamp) / 1000;\r\n const velocity = dxDy.magnitude / dt;\r\n if (this.isSwiping) {\r\n const swipeEvent = new SwipeEvent_1.default(touchMove, {\r\n direction: CartesianDirectionEnum[(0, utils_1.closest)(this.octant, [0, 1, 2, 3])],\r\n velocity: velocity\r\n });\r\n this.dispatchEvent(swipeEvent);\r\n }\r\n else {\r\n const swipeStartEvent = new SwipeEvent_1.SwipeStartEvent(touchMove, {\r\n direction: CartesianDirectionEnum[(0, utils_1.closest)(this.octant, [0, 1, 2, 3])],\r\n velocity: velocity\r\n });\r\n this.dispatchEvent(swipeStartEvent);\r\n this.isSwiping = true;\r\n }\r\n this.dxDy = dxDy;\r\n this.velocity = velocity;\r\n if (this.isPanning) {\r\n const panEvent = new PanEvent_1.default(touchMove, {\r\n translation: dxDy,\r\n velocity: velocity\r\n });\r\n this.dispatchEvent(panEvent);\r\n }\r\n else {\r\n const panStartEvent = new PanEvent_1.PanStartEvent(touchMove, {\r\n translation: dxDy,\r\n velocity: velocity\r\n });\r\n this.dispatchEvent(panStartEvent);\r\n this.isPanning = true;\r\n }\r\n }\r\n onTouchEnd(touchEnd) {\r\n const numberOfTaps = parseInt(this.currentTarget.dataset.numberoftaps || '0') || this.config.numberOfTaps;\r\n this.taps++;\r\n this.shouldFire = Boolean(this.taps > numberOfTaps);\r\n if (this.shouldFire) {\r\n this.touchEnd = touchEnd;\r\n this.touchEndTime = touchEnd.timeStamp;\r\n const maxTapDelay = parseFloat(this.currentTarget.dataset.tapdelay || '0') || this.config.tapDelay;\r\n if (!this.touchMoved && !this.isLongPress) {\r\n if (this.taps === 1 || (this.touchEndTime - this.lastTouchTime) < maxTapDelay) {\r\n if (this.taps % 2 === numberOfTaps) {\r\n const doubleTapEvent = new DoubleTapEvent_1.default(touchEnd);\r\n this.dispatchEvent(doubleTapEvent);\r\n this.taps = 0;\r\n }\r\n const tapEvent = new TapEvent_1.default(touchEnd);\r\n this.dispatchEvent(tapEvent);\r\n }\r\n else {\r\n this.taps = 0;\r\n }\r\n }\r\n }\r\n this.pointers = this.touchEnd.touches.length;\r\n this.lastTouchTime = this.touchEndTime;\r\n this.onPointerLeave(touchEnd);\r\n this.unbind(this.currentTarget);\r\n this.clean();\r\n }\r\n onTouchCancel(touchCancel) {\r\n if (!this.shouldFire)\r\n return;\r\n this.touchCancel = touchCancel;\r\n this.unbind(this.currentTarget);\r\n this.clean();\r\n }\r\n}\r\nexports.default = GestureProvider;\r\nGestureProvider.listening = false;\r\nif (TouchEvent)\r\n window.gestureProvider = new GestureProvider();\r\n//# sourceMappingURL=index.js.map","import { GestureEvent } from \"web-gesture-events\";\nimport { NavigateOptions, NavigationProps } from \"./types\";\n\nexport class NavigateEvent extends Event {\n\treadonly routerId: string;\n\treadonly route: string;\n\treadonly props: NavigationProps;\n\treadonly navigationType: NonNullable<NavigateOptions[\"type\"]>;\n\treadonly signal: AbortSignal;\n\treadonly committed: Promise<NavigationHistoryEntry>;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(\n\t\trouterId: string,\n\t\troute: string,\n\t\tprops: NavigationProps,\n\t\ttype: NavigateOptions[\"type\"],\n\t\tsignal: AbortSignal,\n\t\tcommitted: Promise<NavigationHistoryEntry>,\n\t\ttransition: NavigationTransition\n\t) {\n\t\tsuper('navigate');\n\t\tthis.routerId = routerId;\n\t\tthis.route = route;\n\t\tthis.props = props;\n\t\tthis.navigationType = type ?? \"push\";\n\t\tthis.signal = signal;\n\t\tthis.committed = committed;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class BackEvent extends Event {\n\treadonly routerId: string;\n\treadonly signal: AbortSignal;\n\treadonly committed: Promise<NavigationHistoryEntry>;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(routerId: string, signal: AbortSignal, committed: Promise<NavigationHistoryEntry>, transition: NavigationTransition) {\n\t\tsuper('back');\n\t\tthis.routerId = routerId;\n\t\tthis.signal = signal;\n\t\tthis.committed = committed;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class ForwardEvent extends Event {\n\treadonly routerId: string;\n\treadonly signal: AbortSignal;\n\treadonly committed: Promise<NavigationHistoryEntry>;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(routerId: string, signal: AbortSignal, committed: Promise<NavigationHistoryEntry>, transition: NavigationTransition) {\n\t\tsuper('forward');\n\t\tthis.routerId = routerId;\n\t\tthis.signal = signal;\n\t\tthis.committed = committed;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class GestureStartEvent extends Event {\n\treadonly source: GestureEvent;\n\n\tconstructor(source: GestureEvent) {\n\t\tsuper('gesture-start');\n\t\tthis.source = source;\n\t}\n}\n\nexport class GestureEndEvent extends Event {\n\treadonly source: GestureEvent;\n\n\tconstructor(source: GestureEvent) {\n\t\tsuper('gesture-end');\n\t\tthis.source = source;\n\t}\n}\n\nexport class GestureCancelEvent extends Event {\n\tconstructor() {\n\t\tsuper('gesture-cancel');\n\t}\n}","export class HistoryEntry implements Omit<NavigationHistoryEntry, 'url'> {\n\treadonly routerId: string;\n\t#nativeEntry: NavigationHistoryEntry;\n\treadonly index: number;\n\n\tconstructor(nativeEntry: NavigationHistoryEntry, routerId: string, index: number) {\n\t\tthis.#nativeEntry = nativeEntry;\n\t\tthis.routerId = routerId;\n\t\tthis.index = index;\n\t}\n\n\tset ondispose(handler: ((this: NavigationHistoryEntry, ev: Event) => any) | null) {\n\t\tthis.#nativeEntry.ondispose = handler;\n\t}\n\n\tget ondispose() {\n\t\treturn this.#nativeEntry.ondispose;\n\t}\n\n\tget id() {\n\t\treturn this.#nativeEntry.id;\n\t}\n\n\tget globalIndex() {\n\t\treturn this.#nativeEntry.index;\n\t}\n\n\tget url() {\n\t\tif (!this.#nativeEntry.url) return null;\n\t\treturn new URL(this.#nativeEntry.url);\n\t}\n\n\tget key() {\n\t\treturn this.#nativeEntry.key;\n\t}\n\n\tget sameDocument() {\n\t\treturn this.#nativeEntry.sameDocument;\n\t}\n\n\taddEventListener<K extends keyof NavigationHistoryEntryEventMap>(type: K, listener: (this: NavigationHistoryEntry, ev: NavigationHistoryEntryEventMap[K]) => any, options?: boolean | AddEventListenerOptions): () => void;\n\taddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): () => void;\n\taddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): () => void {\n\t\tthis.#nativeEntry.addEventListener(type, listener, options);\n\n\t\treturn () => this.#nativeEntry.removeEventListener(type, listener, options);\n\t}\n\n\tremoveEventListener<K extends keyof NavigationHistoryEntryEventMap>(type: K, listener: (this: NavigationHistoryEntry, ev: NavigationHistoryEntryEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n\tremoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n\tremoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void {\n\t\tthis.#nativeEntry.addEventListener(type, listener, options);\n\t}\n\n\tdispatchEvent(event: Event): boolean {\n\t\treturn this.#nativeEntry.dispatchEvent(event);\n\t}\n\n\tgetState<T>() {\n\t\treturn this.#nativeEntry.getState() as T;\n\t}\n}","import {\n NavigationBase,\n PathPattern,\n includesRoute,\n matchRoute,\n resolveBaseURLFromPattern\n} from '@react-motion-router/core';\nimport { GoBackOptions, GoForwardOptions, NavigateOptions, NavigationBaseOptions, NavigationProps, RouterEventMap } from './common/types';\nimport { BackEvent, ForwardEvent, NavigateEvent } from './common/events';\nimport { HistoryEntry } from './HistoryEntry';\nimport { Router } from './Router';\n\nexport class Navigation extends NavigationBase<RouterEventMap> {\n protected readonly router: Router;\n\n constructor(router: Router) {\n super();\n this.router = router;\n }\n\n preload(route: string, props: NavigationProps = {}, options: NavigationBaseOptions = {}) {\n return this.router.preload(route, props, options);\n }\n\n replace(route: string, props: NavigationProps = {}, options: NavigationBaseOptions = {}) {\n return this.navigate(route, props, { ...options, type: 'replace' });\n }\n\n push(route: string, props: NavigationProps = {}, options: NavigationBaseOptions = {}) {\n return this.navigate(route, props, { ...options, type: 'push' });\n }\n\n reload(props: NavigationProps = {}) {\n return window.navigation.reload({ state: props });\n }\n\n traverseTo(key: string, options: NavigationBaseOptions = {}) {\n const result = window.navigation.traverseTo(key);\n const transition = window.navigation.transition!;\n\n const fromIndex = transition.from.index;\n const destinationIndex = window.navigation.entries().findIndex(entry => entry.key === key);\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.traverseTo(transition.from.key), { once: true });\n options.signal?.addEventListener('abort', controller.abort, { once: true });\n\n let event;\n if (fromIndex > destinationIndex) {\n event = this.createBackEvent(controller.signal, result.committed, transition);\n } else {\n event = this.createForwardEvent(controller.signal, result.committed, transition);\n }\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n navigate(\n route: string,\n props: NavigationProps = {},\n options: NavigateOptions = {}\n ) {\n const { type: history = 'push' } = options;\n\n const url = new URL(route, this.baseURL);\n const result = window.navigation.navigate(url.href, { history, state: props });\n const transition = window.navigation.transition!;\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.goBack(), { once: true });\n options.signal?.addEventListener('abort', controller.abort, { once: true });\n\n const event = this.createNavigateEvent(route, props, history, controller.signal, result.committed, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n goBack(options: GoBackOptions = {}) {\n if (!this.canGoBack()) return;\n\n const result = window.navigation.traverseTo(this.previous.key);\n const transition = window.navigation.transition!;\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.goForward(), { once: true });\n options.signal?.addEventListener('abort', controller.abort, { once: true });\n\n const event = this.createBackEvent(controller.signal, result.committed, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n goForward(options: GoForwardOptions = {}) {\n if (!this.canGoForward()) return;\n\n const result = window.navigation.traverseTo(this.next.key);\n const transition = window.navigation.transition!;\n\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => this.goBack(), { once: true });\n options.signal?.addEventListener('abort', controller.abort, { once: true });\n\n const event = this.createForwardEvent(controller.signal, result.committed, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n private createBackEvent(\n signal: AbortSignal,\n committed: Promise<NavigationHistoryEntry>,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error('Router ID is not set');\n return new BackEvent(this.routerId, signal, committed, transition);\n }\n\n private createForwardEvent(\n signal: AbortSignal,\n committed: Promise<NavigationHistoryEntry>,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error('Router ID is not set');\n return new ForwardEvent(this.routerId, signal, committed, transition);\n }\n\n private createNavigateEvent(\n route: string,\n props: NavigationProps,\n type: NavigateOptions['type'],\n signal: AbortSignal,\n committed: Promise<NavigationHistoryEntry>,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error('Router ID is not set');\n return new NavigateEvent(\n this.routerId,\n route,\n props,\n type,\n signal,\n committed,\n transition\n );\n }\n\n get committed() {\n return this.router.committed;\n }\n\n get transition() {\n return this.router.state.transition;\n }\n\n get globalEntries() {\n return window.navigation.entries();\n }\n\n public get entries() {\n const nestedPathPatterns = this.router.pathPatterns.filter(({ pattern }) => pattern.endsWith('**'));\n let nestedScopePathPattern: PathPattern | null = null;\n let nestedBoundaryReached = false;\n return this.globalEntries\n .filter(entry => {\n if (!entry.url) return false;\n const url = new URL(entry.url);\n const resolvedBaseURL = resolveBaseURLFromPattern(this.baseURLPattern.pathname, url.pathname);\n if (!resolvedBaseURL)\n return false;\n\n if (nestedScopePathPattern) {\n // we're in a nested scope, check if the current URL is also apart of the same scope and exit.\n const nestedBaseURLPattern = new URLPattern(nestedScopePathPattern.pattern, resolvedBaseURL.href);\n if (\n matchRoute(\n url.pathname,\n url.pathname,\n nestedBaseURLPattern.pathname,\n nestedScopePathPattern.caseSensitive\n )\n || nestedBoundaryReached\n ) {\n // contiguous nested router entries found, short circuit\n nestedBoundaryReached = true;\n return false;\n }\n }\n\n nestedScopePathPattern = nestedPathPatterns.find(\n ({ pattern, caseSensitive }) => (\n matchRoute(\n pattern,\n url.pathname,\n this.baseURLPattern.pathname,\n caseSensitive\n )\n )\n ) ?? null;\n return true;\n })\n .map((entry, index) => {\n return new HistoryEntry(entry, this.routerId, index);\n });\n }\n\n get index() {\n const globalCurrentIndex = window.navigation.currentEntry?.index ?? -1;\n const firstEntryGlobalIndex = this.entries.at(0)?.globalIndex ?? -1;\n const lastEntryGlobalIndex = this.entries.at(-1)?.globalIndex ?? -1;\n if (globalCurrentIndex <= firstEntryGlobalIndex)\n return 0;\n else if (globalCurrentIndex >= lastEntryGlobalIndex)\n return this.entries.length - 1;\n else {\n const scopedEntries = this.globalEntries.slice(firstEntryGlobalIndex, globalCurrentIndex + 1);\n return this.entries.findLastIndex(entry => {\n return scopedEntries.findLastIndex(globalEntry => entry.key === globalEntry.key) > -1;\n });\n }\n }\n\n get previous(): HistoryEntry | null {\n return this.entries[this.index - 1] ?? null;\n }\n\n get next(): HistoryEntry | null {\n return this.entries[this.index + 1] ?? null;\n }\n\n get current() {\n return this.entries[this.index];\n }\n\n canGoBack(this: Navigation): this is Navigation & { previous: HistoryEntry } {\n return Boolean(this.previous?.sameDocument);\n }\n\n canGoForward(this: Navigation): this is Navigation & { next: HistoryEntry } {\n return Boolean(this.next?.sameDocument);\n }\n}","export function searchParamsToObject(searchParams: URLSearchParams) {\n\treturn Object.fromEntries(searchParams.entries());\n}\n\nexport function searchParamsFromObject(params: { [key: string]: any }) {\n\treturn new URLSearchParams(params).toString();\n}\n\nexport function isGesture(info?: unknown) {\n\tif (info && typeof info === 'object' && 'gesture' in info)\n\t\treturn Boolean(info.gesture);\n\treturn false;\n}\n\nexport function isRollback(info?: unknown) {\n\tif (info && typeof info === 'object' && 'rollback' in info)\n\t\treturn Boolean(info.rollback);\n\treturn false;\n}\n\nexport function deepEquals<T>(obj1: T, obj2: T): boolean {\n\tif (obj1 === obj2) {\n\t\treturn true;\n\t}\n\n\tif (obj1 === null || obj2 === null || typeof obj1 !== 'object' || typeof obj2 !== 'object') {\n\t\treturn false;\n\t}\n\n\tconst keys1 = Object.keys(obj1) as (keyof T)[];\n\tconst keys2 = Object.keys(obj2) as (keyof T)[];\n\n\tif (keys1.length !== keys2.length) {\n\t\treturn false;\n\t}\n\n\tfor (let key of keys1) {\n\t\tif (!keys2.includes(key) || !deepEquals(obj1[key], obj2[key])) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}","import { matchRoute, ScreenBase } from '@react-motion-router/core';\nimport type { PlainObject, ScreenBaseProps, ScreenBaseState, ScreenBaseComponentProps, ScreenBaseConfig } from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { HistoryEntryState, RouteProp, ScreenInternalProps, SwipeDirection } from './common/types';\nimport { Router } from './Router';\nimport { searchParamsToObject } from './common/utils';\nimport { HistoryEntry } from './HistoryEntry';\n\nexport type ScreenComponentProps<T extends PlainObject = object> = ScreenBaseComponentProps<RouteProp<T>, Navigation>;\n\nexport interface ScreenConfig extends ScreenBaseConfig<RouteProp> {\n readonly title?: string;\n readonly presentation?: 'default' | 'dialog' | 'modal';\n readonly keepAlive?: boolean;\n readonly gestureDirection?: SwipeDirection;\n readonly gestureAreaWidth?: number;\n readonly gestureMinFlingVelocity?: number;\n readonly gestureHysteresis?: number;\n readonly gestureDisabled?: boolean;\n}\n\nexport interface ScreenProps extends ScreenBaseProps {\n config?: ScreenConfig;\n}\n\nexport class Screen extends ScreenBase<ScreenProps, ScreenBaseState, RouteProp> {\n readonly #historyEntry: HistoryEntry;\n\n constructor(props: ScreenProps, router: Router) {\n super(props, router);\n\n const id = this.internalProps.id;\n const historyEntry = router.navigation.entries.find(entry => entry.key === id);\n if (!historyEntry)\n throw new Error(`No history entry found for: ${id}`);\n this.#historyEntry = historyEntry;\n }\n\n public static getDerivedStateFromProps(props: ScreenProps) {\n if (\n props.config?.presentation === 'dialog'\n || props.config?.presentation === 'modal'\n )\n return { elementType: 'dialog' };\n else\n return { elementType: 'div' };\n }\n\n protected setParams(newParams: PlainObject): void {\n super.setParams(newParams);\n this.setHistoryState(({ params }) => ({ params: { ...params, ...newParams } }));\n }\n\n protected setConfig(newConfig: NonNullable<ScreenProps['config']>): void {\n super.setConfig(newConfig);\n this.setHistoryState(({ config }) => {\n // navigation history state can only accept structured cloneable objects.\n // a lot of the config options are function which cannot be structured cloned.\n const unsafe = new Set([\n 'footer', 'header',\n 'onEnter', 'onEntered',\n 'onExit', 'onExited',\n 'onLoad',\n 'animation',\n ]);\n return {\n config: {\n ...config,\n ...Object.fromEntries(\n Object.entries(newConfig).filter(([key]) => !unsafe.has(key))\n ),\n },\n };\n });\n }\n\n protected get router() {\n return this.context as Router;\n }\n\n private get internalProps() {\n return this.props as unknown as ScreenInternalProps;\n }\n\n public get resolvedPathname() {\n return this.internalProps.resolvedPathname;\n }\n\n private get historyEntryState() {\n const entry = this.#historyEntry;\n if (entry?.url) {\n const state = entry.getState<HistoryEntryState>() ?? {};\n const queryParams = searchParamsToObject(entry.url.searchParams);\n const pathParams = matchRoute(\n this.props.path,\n entry.url.pathname,\n this.context.baseURLPattern.pathname,\n this.props.caseSensitive\n )?.params;\n state.params = {\n ...state.params,\n ...queryParams,\n ...pathParams,\n };\n\n return state;\n }\n return {};\n }\n\n public get id() {\n return this.internalProps.id.toString();\n }\n\n public get params() {\n return {\n ...this.props.defaultParams,\n ...this.historyEntryState.params,\n ...this.state.params,\n };\n }\n\n public get config() {\n return {\n ...this.props.config,\n ...this.historyEntryState.config,\n ...this.state.config,\n };\n }\n\n protected get routeProp() {\n const setParams = this.setParams.bind(this);\n const setConfig = this.setConfig.bind(this);\n const{ path } = this.props;\n const { focused } = this.state;\n const { params, config, resolvedPathname } = this;\n return {\n setParams,\n setConfig,\n path,\n resolvedPathname,\n focused,\n params,\n config,\n };\n }\n\n protected setHistoryState(newState: PlainObject | ((prevState: PlainObject) => PlainObject)) {\n if (!this.state.focused) return;\n const prevState = this.#historyEntry.getState<HistoryEntryState>() ?? {};\n if (newState instanceof Function) {\n newState = newState(prevState);\n }\n const state = {\n ...prevState ?? {},\n ...newState,\n };\n window.navigation.updateCurrentEntry({ state });\n }\n\n private onClickOutside(e: MouseEvent) {\n if (!this.transitionProvider.current?.ref.current) return;\n const navigation = this.context?.navigation as Navigation | undefined;\n const rect = this.transitionProvider.current.ref.current.getBoundingClientRect();\n const isInDialog = (\n rect.top <= e.clientY\n && e.clientY <= rect.top + rect.height\n && rect.left <= e.clientX\n && e.clientX <= rect.left + rect.width\n );\n if (!isInDialog)\n navigation?.goBack();\n }\n\n public onEnter(signal: AbortSignal) {\n if (\n this.transitionProvider.current?.ref.current instanceof HTMLDialogElement\n && this.transitionProvider.current.ref.current.open === false\n ) {\n const navigation = this.context?.navigation as Navigation | undefined;\n if (this.props.config?.presentation === 'modal') {\n this.transitionProvider.current.ref.current.showModal();\n } else {\n this.transitionProvider.current.ref.current.show();\n }\n this.transitionProvider.current.ref.current.style.maxHeight = 'unset';\n this.transitionProvider.current.ref.current.style.maxWidth = 'unset';\n this.transitionProvider.current.ref.current.style.width = 'max-content';\n this.transitionProvider.current.ref.current.style.height = 'max-content';\n\n const onClickOutside = this.onClickOutside.bind(this);\n\n // closed by form submit or ESC key\n this.transitionProvider.current?.ref.current.addEventListener('close', function () {\n if (this.returnValue !== 'screen-exit') {\n this.style.display = 'block';\n navigation?.goBack();\n }\n\n navigation?.removeEventListener('click', onClickOutside);\n }, { once: true });\n\n navigation?.addEventListener('click', onClickOutside);\n }\n\n return super.onEnter(signal);\n };\n\n public onExited(signal: AbortSignal) {\n if (this.transitionProvider.current?.ref.current instanceof HTMLDialogElement) {\n this.transitionProvider.current.ref.current.close('screen-exit');\n }\n\n return super.onExited(signal);\n }\n}","import { PlainObject, RoutePropBase, RouterBaseEventMap } from \"@react-motion-router/core\";\nimport { ScreenProps } from \"../Screen\";\nimport { RefObject } from \"react\";\nimport { BackEvent, ForwardEvent, GestureCancelEvent, GestureEndEvent, GestureStartEvent, NavigateEvent } from \"./events\";\n\nexport interface NavigationBaseOptions {\n\tsignal?: AbortSignal;\n}\n\nexport interface NavigateOptions extends NavigationBaseOptions {\n\ttype?: \"push\" | \"replace\";\n}\n\nexport interface GoBackOptions extends NavigationBaseOptions { }\nexport interface GoForwardOptions extends NavigationBaseOptions { }\n\nexport interface NavigationProps {\n\tparams?: Record<any, any>;\n\tconfig?: ScreenProps[\"config\"]\n}\n\nexport type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };\n\nexport type XOR<T, U> = (T | U) extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;\n\nexport interface HistoryEntryState {\n\tconfig?: ScreenProps[\"config\"];\n\tparams?: PlainObject;\n}\n\nexport function isRefObject<T>(value?: React.LegacyRef<T>): value is RefObject<T> {\n\tif (\n\t\tvalue !== null\n\t\t&& typeof value === 'object'\n\t\t&& value.hasOwnProperty('current')\n\t) return true;\n\treturn false;\n}\n\nexport interface RouterEventMap extends RouterBaseEventMap {\n\t\"navigate\": NavigateEvent;\n\t\"back\": BackEvent;\n\t\"forward\": ForwardEvent;\n\t\"gesture-start\": GestureStartEvent;\n\t\"gesture-end\": GestureEndEvent;\n\t\"gesture-cancel\": GestureCancelEvent;\n}\n\nexport interface RouteProp<T extends PlainObject = {}> extends RoutePropBase<ScreenProps[\"config\"], T> { }\n\nexport type SwipeDirection = 'up' | 'down' | 'left' | 'right' | 'horizontal' | 'vertical';\nexport type Direction = Exclude<SwipeDirection, \"horizontal\" | \"vertical\">;\n\nconst directions: Record<SwipeDirection, Direction[]> = {\n\t\"horizontal\": [\"left\", \"right\"] as const,\n\t\"vertical\": [\"up\", \"down\"] as const,\n\t\"up\": [\"up\"] as const,\n\t\"down\": [\"down\"] as const,\n\t\"left\": [\"left\"] as const,\n\t\"right\": [\"right\"] as const\n};\nexport function isSupportedDirection(direction: Exclude<SwipeDirection, \"horizontal\" | \"vertical\">, supported: SwipeDirection) {\n\treturn directions[supported].includes(direction);\n}\n\nexport function isOutOfBounds(direction: SwipeDirection, { x, y }: { x: number, y: number }, clientRect: DOMRect, gestureAreaWidth: number) {\n\tif (direction === \"right\" && Math.abs(x - clientRect.left) >= gestureAreaWidth) return false;\n\tif (direction === \"left\" && Math.abs(x - clientRect.right) >= gestureAreaWidth) return false;\n\tif (direction === \"down\" && Math.abs(y - clientRect.top) >= gestureAreaWidth) return false;\n\tif (direction === \"up\" && Math.abs(y - clientRect.bottom) >= gestureAreaWidth) return false;\n}\n\nexport function isHorizontalDirection(direction: SwipeDirection): direction is 'left' | 'right' | 'horizontal' {\n\treturn direction === 'left' || direction === 'right' || direction === 'horizontal';\n}\n\nexport interface ScreenInternalProps {\n resolvedPathname: string;\n id: React.Key;\n}","export const DEFAULT_GESTURE_CONFIG = {\n gestureHysteresis: 0.5,\n gestureMinFlingVelocity: 400,\n gestureAreaWidth: 100,\n gestureDirection: 'right',\n gestureDisabled: false,\n} as const;\n\nexport const DEFAULT_PRELOAD_FORCE_THRESHOLD = 0.5;","export class PromiseWrapper<T> {\n\tpromise: Promise<T>;\n\tstate: 'pending' | 'resolved' | 'rejected';\n\tnativeResolve: ((value: T | PromiseLike<T>) => void) | null;\n\tnativeReject: ((reason: any) => void) | null;\n constructor() {\n this.state = 'pending';\n this.nativeResolve = this.nativeReject = null;\n this.promise = new Promise((resolve, reject) => {\n this.nativeResolve = resolve;\n this.nativeReject = reject;\n });\n }\n\n resolve(value: T) {\n this.state = 'resolved';\n this.nativeResolve?.(value);\n }\n\n reject(reason: any) {\n this.state = 'rejected';\n // Do not report unhandled promise rejections.\n this.promise.catch(() => {});\n this.nativeReject?.(reason);\n }\n}","import {\n RouterBase,\n cloneAndInject,\n includesRoute,\n isValidScreenChild,\n matchRoute\n} from '@react-motion-router/core';\nimport type {\n ClonedElementType,\n LoadEvent,\n NestedRouterContext,\n RouterBaseConfig,\n RouterBaseProps,\n RouterBaseState,\n ScreenChild\n} from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { ScreenProps, Screen, ScreenConfig } from './Screen';\nimport {\n HistoryEntryState,\n isHorizontalDirection,\n isOutOfBounds,\n isRefObject,\n isSupportedDirection,\n NavigationBaseOptions,\n NavigationProps,\n RouteProp,\n RouterEventMap,\n ScreenInternalProps,\n SwipeDirection\n} from './common/types';\nimport { Children, createRef, startTransition } from 'react';\nimport { SwipeStartEvent, SwipeEndEvent } from 'web-gesture-events';\nimport { GestureTimeline } from 'web-animations-extension';\nimport { deepEquals, isGesture, isRollback } from './common/utils';\nimport {\n GestureCancelEvent,\n GestureEndEvent,\n GestureStartEvent\n} from './common/events';\nimport { DEFAULT_GESTURE_CONFIG } from './common/constants';\nimport { PromiseWrapper } from './common/promise-wrapper';\n\nexport interface RouterConfig extends RouterBaseConfig {\n screenConfig?: ScreenConfig;\n disableBrowserRouting?: boolean;\n initialPathname?: string;\n shouldIntercept?(navigateEvent: NavigateEvent): boolean;\n onIntercept?(navigateEvent: NavigateEvent): void;\n}\n\nexport interface RouterProps extends RouterBaseProps<Screen> {\n config?: RouterConfig;\n}\n\ntype InjectedScreenProps = Pick<ScreenProps, 'config' | 'defaultParams'> &\n ScreenInternalProps;\nexport interface RouterState extends RouterBaseState {\n transition: NavigationTransition | LoadEvent['transition'] | null;\n screenStack: ClonedElementType<ScreenChild<Screen>, InjectedScreenProps>[];\n gestureDirection: SwipeDirection;\n gestureAreaWidth: number;\n gestureMinFlingVelocity: number;\n gestureHysteresis: number;\n gestureDisabled: boolean;\n fromKey: React.Key | null;\n destinationKey: React.Key | null;\n documentTitle?: string;\n controller: AbortController | null;\n}\n\nexport class Router extends RouterBase<\n RouterProps,\n RouterState,\n RouterEventMap\n> {\n public readonly navigation = new Navigation(this);\n #committed: PromiseWrapper<NavigationHistoryEntry> | null = null;\n\n constructor(\n props: RouterProps,\n context: React.ContextType<typeof NestedRouterContext>\n ) {\n super(props, context);\n const {\n gestureAreaWidth = DEFAULT_GESTURE_CONFIG.gestureAreaWidth,\n gestureDirection = DEFAULT_GESTURE_CONFIG.gestureDirection,\n gestureDisabled = DEFAULT_GESTURE_CONFIG.gestureDisabled,\n gestureHysteresis = DEFAULT_GESTURE_CONFIG.gestureHysteresis,\n gestureMinFlingVelocity = DEFAULT_GESTURE_CONFIG.gestureMinFlingVelocity,\n } = props.config?.screenConfig ?? {};\n \n this.state = {\n screenStack: [],\n gestureDirection,\n gestureAreaWidth,\n gestureHysteresis,\n gestureDisabled,\n gestureMinFlingVelocity,\n transition: null,\n documentTitle: document.title,\n fromKey: null,\n destinationKey: null,\n controller: null,\n };\n }\n\n public static getDerivedStateFromProps(_: RouterProps, state: RouterState) {\n const config = state.screenStack.find(\n (screen) => isRefObject(screen.ref) && screen.ref.current?.focused\n )?.props.config;\n document.title = config?.title ?? document.title;\n return {\n gestureDirection:\n config?.gestureDirection ?? DEFAULT_GESTURE_CONFIG.gestureDirection,\n gestureAreaWidth:\n config?.gestureAreaWidth ?? DEFAULT_GESTURE_CONFIG.gestureAreaWidth,\n gestureMinFlingVelocity:\n config?.gestureMinFlingVelocity\n ?? DEFAULT_GESTURE_CONFIG.gestureMinFlingVelocity,\n gestureHysteresis:\n config?.gestureHysteresis ?? DEFAULT_GESTURE_CONFIG.gestureHysteresis,\n gestureDisabled:\n config?.gestureDisabled ?? DEFAULT_GESTURE_CONFIG.gestureDisabled,\n documentTitle: config?.title,\n };\n }\n\n public componentDidMount(): void {\n super.componentDidMount();\n this.ref.current?.addEventListener('swipestart', this.onSwipeStart);\n this.ref.current?.addEventListener('swipeend', this.onSwipeEnd);\n window.navigation.addEventListener(\n 'currententrychange',\n this.onCurrentEntryChange\n );\n window.navigation.addEventListener('navigate', this.onNavigate);\n window.navigation.addEventListener(\n 'navigatesuccess',\n this.onNavigateSuccess\n );\n window.navigation.addEventListener('navigateerror', this.onNavigateError);\n }\n\n public shouldComponentUpdate(\n nextProps: Readonly<RouterProps>,\n nextState: Readonly<RouterState>\n ): boolean {\n return (\n !deepEquals(this.props.config, nextProps.config)\n || !deepEquals(this.state, nextState)\n || this.props.id !== nextProps.id\n );\n }\n\n public componentWillUnmount(): void {\n this.ref.current?.removeEventListener('swipestart', this.onSwipeStart);\n this.ref.current?.removeEventListener('swipeend', this.onSwipeEnd);\n window.navigation.removeEventListener(\n 'currententrychange',\n this.onCurrentEntryChange\n );\n window.navigation.removeEventListener('navigate', this.onNavigate);\n window.navigation.removeEventListener(\n 'navigatesuccess',\n this.onNavigateSuccess\n );\n window.navigation.removeEventListener(\n 'navigateerror',\n this.onNavigateError\n );\n }\n\n private readonly onNavigate = () => {\n this.#committed = new PromiseWrapper();\n };\n\n private readonly onCurrentEntryChange = () => {\n this.#committed?.nativeResolve?.(window.navigation.currentEntry!);\n };\n\n private readonly onNavigateSuccess = () => {\n this.#committed = null;\n };\n\n private readonly onNavigateError = ({ error }: ErrorEvent) => {\n if (this.#committed?.state === 'pending')\n this.#committed.nativeReject?.(error); // TODO: find out what the spec does for cancelled navigations\n this.#committed = null;\n };\n\n private readonly onGestureCancel = () => {\n if (!this.state.transition)\n throw new Error('Rollback failed, transition is null');\n window.navigation.traverseTo(this.state.transition.from.key, {\n info: { rollback: true },\n });\n };\n\n private canGestureNavigate(e: SwipeStartEvent) {\n if (!this.ref.current) return false;\n if (this.state.gestureDisabled) return false;\n const clientRect = this.ref.current.getBoundingClientRect();\n const { direction } = e;\n if (\n (direction === 'down' || direction === 'right')\n && !this.navigation.canGoBack()\n )\n return false;\n if (\n (direction === 'up' || direction === 'left')\n && !this.navigation.canGoForward()\n )\n return false;\n if (isOutOfBounds(direction, e, clientRect, this.state.gestureAreaWidth))\n return false;\n\n return isSupportedDirection(direction, this.state.gestureDirection);\n }\n\n private readonly onSwipeStart = (e: SwipeStartEvent) => {\n if (!this.canGestureNavigate(e)) return;\n if (!this.ref.current || !this.screenTransitionLayer.current) return;\n const { direction } = e;\n\n const axis: 'x' | 'y' = isHorizontalDirection(direction) ? 'x' : 'y';\n let rangeStart;\n let rangeEnd;\n switch (direction) {\n case 'right':\n rangeStart = 0;\n rangeEnd = this.ref.current.clientWidth;\n break;\n case 'left':\n rangeStart = this.ref.current.clientWidth;\n rangeEnd = 0;\n break;\n case 'down':\n rangeStart = 0;\n rangeEnd = this.ref.current.clientHeight;\n break;\n case 'up':\n rangeStart = this.ref.current.clientHeight;\n rangeEnd = 0;\n break;\n }\n this.screenTransitionLayer.current.animation.timeline = new GestureTimeline(\n {\n source: this.ref.current,\n type: 'swipe',\n axis,\n rangeStart,\n rangeEnd,\n }\n );\n const gesture = true;\n if (direction === 'down' || direction === 'right')\n window.navigation.traverseTo(this.navigation.previous!.key, {\n info: { gesture },\n });\n else\n window.navigation.traverseTo(this.navigation.next!.key, {\n info: { gesture },\n });\n\n this.dispatchEvent(new GestureStartEvent(e));\n };\n\n private readonly onSwipeEnd = (e: SwipeEndEvent) => {\n if (!this.screenTransitionLayer.current) return;\n const progress =\n this.screenTransitionLayer.current.animation.effect?.getComputedTiming()\n .progress ?? 0;\n const playbackRate =\n this.screenTransitionLayer.current.animation.playbackRate;\n this.screenTransitionLayer.current.animation.timeline = document.timeline;\n const hysteresisReached =\n playbackRate > 0\n ? progress > this.state.gestureHysteresis\n : progress < this.state.gestureHysteresis;\n let gestureCancelled = false;\n if (e.velocity < this.state.gestureMinFlingVelocity && !hysteresisReached) {\n gestureCancelled = true;\n this.screenTransitionLayer.current.animation.reverse();\n this.dispatchEvent(new GestureCancelEvent());\n } else {\n this.dispatchEvent(new GestureEndEvent(e));\n }\n if (gestureCancelled) {\n this.screenTransitionLayer.current.animation.finished.then(() => {\n this.state.controller?.abort('gesture-cancel');\n });\n }\n };\n\n public get committed() {\n return this.#committed?.promise ?? null;\n }\n\n private get backNavigating() {\n const fromIndex = this.state.screenStack.findIndex(\n (screen) => screen.key === this.state.fromKey\n );\n const destinationIndex = this.state.screenStack.findIndex(\n (screen) => screen.key === this.state.destinationKey\n );\n\n return destinationIndex >= 0 && destinationIndex < fromIndex;\n }\n\n protected get screens() {\n const screenStack = this.state.screenStack;\n return screenStack.filter((screen, index) => {\n const currentScreenRef = screen.ref ?? null;\n const nextScreenRef = screenStack.at(index + 1)?.ref;\n return (\n (isRefObject(currentScreenRef)\n && currentScreenRef.current?.config.keepAlive)\n || (isRefObject(nextScreenRef)\n && nextScreenRef.current?.config.presentation === 'modal')\n || (isRefObject(nextScreenRef)\n && nextScreenRef.current?.config.presentation === 'dialog')\n || screen.key === this.navigation.current?.key\n || screen.key === this.state.fromKey\n || screen.key === this.state.destinationKey\n );\n });\n }\n\n public async preload(\n pathname: string,\n props: NavigationProps = {},\n options: NavigationBaseOptions = {}\n ) {\n const { child, matchInfo } = this.screenChildFromPathname(pathname) ?? {};\n if (!child) return Promise.resolve(false);\n const { navigation } = this;\n const { signal } = options;\n const { path } = child.props;\n await Promise.all([\n this.preloadScreen(child),\n child.props.config?.onLoad?.({\n navigation,\n signal,\n preloading: true,\n route: {\n focused: false,\n path,\n resolvedPathname: pathname,\n config: {\n ...this.props.config?.screenConfig,\n ...child.props.config,\n ...props.config,\n },\n params: {\n ...child.props.defaultParams,\n ...matchInfo?.params,\n ...props.params,\n },\n },\n }),\n ]);\n return true;\n }\n\n private cloneScreenChildFromPathname(\n pathname: string,\n key: React.Key | null\n ) {\n const { child } = this.screenChildFromPathname(pathname) ?? {};\n\n if (!child) return null;\n key ??= crypto.randomUUID();\n return cloneAndInject(child, {\n config: {\n title: document.title,\n ...this.props.config?.screenConfig,\n ...child.props.config,\n },\n id: key,\n resolvedPathname: pathname,\n key,\n ref: createRef<Screen>(),\n } as InjectedScreenProps);\n }\n\n private getScreenRefByKey(key: string) {\n const screen = this.state.screenStack.find(\n (screen) => screen.key === key\n )?.ref;\n if (isRefObject(screen)) return screen;\n return null;\n }\n\n protected canIntercept(e: NavigateEvent): boolean {\n const pathname = new URL(e.destination.url).pathname;\n const baseURLPattern = this.baseURLPattern.pathname;\n return (\n this.mounted\n && this.shouldIntercept(e)\n && includesRoute(this.pathPatterns, pathname, baseURLPattern)\n );\n }\n\n protected shouldIntercept(e: NavigateEvent): boolean {\n const shouldIntercept =\n e.canIntercept && !e.formData && !e.hashChange && !e.downloadRequest;\n return shouldIntercept || Boolean(this.props.config?.shouldIntercept?.(e));\n }\n\n protected intercept(e: NavigateEvent | LoadEvent): void {\n if (e.navigationType !== 'load') this.props.config?.onIntercept?.(e);\n if (e.defaultPrevented) return;\n\n switch (e.navigationType) {\n case 'load':\n this.handleLoad(e);\n break;\n\n case 'reload':\n case 'replace':\n this.handleReplace(e);\n break;\n\n default:\n this.handleDefault(e);\n break;\n }\n }\n\n private handleLoad(e: LoadEvent) {\n const handler = () => {\n const fromKey = e.transition?.from?.key ?? null;\n const destinationKey = e.destination.key;\n const transition = e.transition;\n const screenStack: RouterState['screenStack'] = [];\n const entries = this.navigation.entries;\n entries.forEach((entry) => {\n if (!entry.url) return null;\n const screen = this.cloneScreenChildFromPathname(\n entry.url.pathname,\n entry.key\n );\n if (!screen) return null;\n screenStack.push(screen);\n });\n\n return new Promise<void>((resolve, reject) =>\n startTransition(() => {\n this.setState(\n { screenStack, fromKey, transition, destinationKey },\n async () => {\n const { initialPathname } = this.props.config ?? {};\n const [firstEntry] = entries;\n if (\n initialPathname\n && entries.length === 1\n && firstEntry.url\n && !matchRoute(\n initialPathname,\n firstEntry.url.pathname,\n this.baseURLPattern.pathname\n )\n ) {\n const transitionFinished =\n window.navigation.transition?.finished ?? Promise.resolve();\n transitionFinished.then(() => {\n this.navigation.replace(initialPathname).finished.then(() => {\n const state =\n (e.destination.getState() as HistoryEntryState) ?? {};\n this.navigation.push(e.destination.url, state);\n });\n });\n return resolve();\n }\n const signal = e.signal;\n if (this.navigation.current?.key === undefined)\n reject(new Error('Current key is undefined'));\n\n const currentScreen = this.getScreenRefByKey(\n this.navigation.current.key\n );\n await this.dispatchLifecycleHandlers(\n currentScreen,\n null,\n signal\n ).catch(reject);\n this.setState(\n { destinationKey: null, fromKey: null, transition: null },\n resolve\n );\n }\n );\n })\n );\n };\n\n e.intercept({ handler });\n }\n\n private handleReplace(e: NavigateEvent) {\n const screenStack = this.state.screenStack;\n const destination = e.destination;\n const destinationPathname = new URL(destination.url).pathname;\n const destinationKey =\n window.navigation.currentEntry?.key ?? destination.key;\n const destinationScreen = this.cloneScreenChildFromPathname(\n destinationPathname,\n destinationKey\n );\n if (!destinationScreen) return e.preventDefault();\n const handler = () => {\n const isHotReplace = this.state.transition !== null;\n const transition = this.state.transition ?? window.navigation.transition;\n const fromKey = transition?.from?.key ?? null;\n const currentIndex = screenStack.findIndex(\n (screen) => screen.key === this.navigation.current?.key\n );\n screenStack.splice(currentIndex, 1, destinationScreen);\n\n return new Promise<void>((resolve, reject) =>\n startTransition(() => {\n this.setState(\n { destinationKey, fromKey, transition, screenStack },\n async () => {\n const signal = e.signal;\n const outgoingScreen = this.getScreenRefByKey(String(fromKey));\n const incomingScreen = this.getScreenRefByKey(\n String(destinationKey)\n );\n const pendingLifecycleHandlers = this.dispatchLifecycleHandlers(\n incomingScreen,\n null,\n signal\n ).catch(reject);\n if (isHotReplace) {\n const currentTime =\n this.screenTransitionLayer.current?.animation.currentTime\n ?? 0;\n this.screenTransitionLayer.current?.animation.cancel();\n await new Promise(requestAnimationFrame);\n const animation = this.screenTransition(\n incomingScreen,\n outgoingScreen\n );\n if (animation) {\n animation.currentTime = currentTime;\n }\n animation?.updatePlaybackRate(1);\n await animation?.finished.catch(reject);\n }\n await pendingLifecycleHandlers;\n this.setState(\n { destinationKey: null, fromKey: null, transition: null },\n resolve\n );\n }\n );\n })\n );\n };\n\n e.intercept({ handler });\n }\n\n private handleDefault(e: NavigateEvent) {\n const screenStack = this.state.screenStack;\n const destination = e.destination;\n const destinationPathname = new URL(destination.url).pathname;\n if (!this.screenChildFromPathname(destinationPathname))\n return e.preventDefault();\n const handler = () => {\n if (isRollback(e.info)) return Promise.resolve();\n const transition = window.navigation.transition;\n let fromIndex = screenStack.findIndex(\n (screen) => screen.key === transition?.from.key\n );\n // if navigating from a nested screen the first lookup won't work since entries are scoped\n if (fromIndex === -1 && e.navigationType === 'traverse') {\n fromIndex = screenStack.findIndex((screen) => {\n if (!transition?.from.url) return false;\n return matchRoute(\n screen.props.path,\n new URL(transition.from.url).pathname,\n this.baseURLPattern.pathname,\n screen.props.caseSensitive\n );\n });\n }\n const fromKey =\n (screenStack[fromIndex]?.key || transition?.from.key) ?? null;\n const destinationIndex = screenStack.findIndex(\n (screen) => screen.key === e.destination.key\n );\n const destinationKey =\n (screenStack[destinationIndex]?.key\n || window.navigation.currentEntry?.key)\n ?? null;\n if (e.navigationType === 'push') {\n const destinationPathname = new URL(destination.url).pathname;\n const destinationScreen = this.cloneScreenChildFromPathname(\n destinationPathname,\n destinationKey\n );\n if (!destinationScreen) return Promise.resolve();\n screenStack.splice(\n fromIndex + 1,\n Infinity, // Remove all screens after current\n destinationScreen\n );\n }\n\n const controller = new AbortController();\n return new Promise<void>((resolve, reject) =>\n startTransition(() => {\n this.setState(\n { controller, destinationKey, fromKey, transition, screenStack },\n async () => {\n controller.signal.onabort = reject;\n const signal = e.signal;\n const outgoingScreen = this.getScreenRefByKey(String(fromKey));\n const incomingScreen = this.getScreenRefByKey(\n String(destinationKey)\n );\n const pendingLifecycleHandlers = this.dispatchLifecycleHandlers(\n incomingScreen,\n outgoingScreen,\n signal\n ).catch(reject);\n const animation = this.screenTransition(\n incomingScreen,\n outgoingScreen\n );\n animation?.updatePlaybackRate(1);\n animation?.finished.catch(reject);\n await pendingLifecycleHandlers;\n this.setState(\n {\n destinationKey: null,\n fromKey: null,\n transition: null,\n controller: null,\n },\n resolve\n );\n }\n );\n })\n );\n };\n\n let commit;\n if (isGesture(e.info)) {\n commit = 'after-transition';\n this.addEventListener('gesture-end', () => e.commit?.(), { once: true });\n this.addEventListener('gesture-cancel', this.onGestureCancel, {\n once: true,\n });\n } else {\n commit = 'immediate';\n }\n const options = { handler, commit };\n e.intercept(options);\n }\n\n private async dispatchLifecycleHandlers(\n incomingScreen: React.RefObject<Screen> | null,\n outgoingScreen: React.RefObject<Screen> | null,\n signal: AbortSignal\n ) {\n let animationStarted = false;\n this.addEventListener('transition-start', () => (animationStarted = true), {\n once: true,\n });\n\n await Promise.all([\n outgoingScreen?.current?.onExit(signal),\n incomingScreen?.current?.onEnter(signal),\n incomingScreen?.current?.load(signal),\n ]);\n\n if (animationStarted)\n await new Promise((resolve) =>\n this.addEventListener('transition-end', resolve, { once: true })\n );\n\n // if gesture navigation cancelled then exit here\n if (this.state.controller?.signal.aborted) return;\n\n await Promise.all([\n outgoingScreen?.current\n ?.onExited(signal)\n .then(() => outgoingScreen.current?.blur()),\n incomingScreen?.current\n ?.onEntered(signal)\n .then(() => incomingScreen.current?.focus()),\n ]);\n }\n\n private screenTransition(\n incomingScreen: React.RefObject<Screen> | null,\n outgoingScreen: React.RefObject<Screen> | null\n ) {\n const { backNavigating } = this;\n if (\n this.screenTransitionLayer.current\n && incomingScreen\n && outgoingScreen\n ) {\n this.screenTransitionLayer.current.direction = backNavigating\n ? 'reverse'\n : 'normal';\n if (incomingScreen.current?.transitionProvider.current) {\n incomingScreen.current.transitionProvider.current.exiting = false;\n }\n if (outgoingScreen.current?.transitionProvider.current) {\n outgoingScreen.current.transitionProvider.current.exiting = true;\n }\n if (\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current\n ) {\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current.outgoingScreen =\n outgoingScreen;\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current.incomingScreen =\n incomingScreen;\n }\n const topScreenIndex = this.screens.findIndex(\n (screen) =>\n screen.ref === (backNavigating ? outgoingScreen : incomingScreen)\n );\n this.screenTransitionLayer.current.screens = this.screens\n .map((screen, index) => {\n // normalise indices making incoming screen index 1 and preceding screens index 0...-n\n index = index - topScreenIndex + 1;\n if (\n isRefObject(screen.ref)\n && screen.ref.current?.transitionProvider.current\n ) {\n screen.ref.current.transitionProvider.current.index = index;\n return screen.ref;\n }\n return null;\n })\n .filter(isRefObject);\n\n return this.screenTransitionLayer.current.transition();\n }\n }\n}\n","import { PlainObject, useNavigationBase, useParamsBase, useRouteBase, useRouterBase } from \"@react-motion-router/core\";\nimport { Navigation } from \"../Navigation\";\nimport { Router } from \"../Router\";\nimport { RouteProp } from \"./types\";\nimport { useDebugValue } from \"react\";\n\nexport function useNavigation() {\n\tuseDebugValue(\"Stack.Navigation\");\n\treturn useNavigationBase<Navigation>();\n}\n\nexport function useRouter() {\n\tuseDebugValue(\"Stack.Router\");\n\treturn useRouterBase<Router>();\n}\n\nexport function useRoute<T extends PlainObject = PlainObject>() {\n\tuseDebugValue(\"Stack.Route\");\n\treturn useRouteBase<RouteProp<T>>();\n}\n\nexport function useParams<K extends string, S>(key: K, initialParams: S | (() => S)) {\n\tuseDebugValue(\"Stack.Params\");\n\treturn useParamsBase(key, initialParams);\n}","import { PlainObject } from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { NavigateOptions, XOR } from './common/types';\nimport { useState, useEffect, useRef, useCallback, RefObject } from 'react';\nimport { useNavigation } from './common/hooks';\nimport { searchParamsFromObject } from './common/utils';\nimport { DEFAULT_PRELOAD_FORCE_THRESHOLD } from './common/constants';\n\ninterface BaseAnchorProps\n extends React.DetailedHTMLProps<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n HTMLAnchorElement\n > {\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n navigation?: Navigation | null;\n}\n\ninterface OnSightPreloadBehaviour extends UseIntersectionOptions {\n type: 'onsight';\n}\n\ninterface OnHoverPreloadBehaviour {\n type: 'onhover';\n forceThreshold?: number;\n}\n\ninterface ForwardAnchorProps extends BaseAnchorProps {\n params?: PlainObject<string | boolean | number>;\n href: string;\n type?: NavigateOptions['type'];\n preload?: boolean;\n preloadBehaviour?:\n | OnSightPreloadBehaviour\n | OnHoverPreloadBehaviour\n | { type: 'force' };\n}\n\ninterface BackAnchorProps extends BaseAnchorProps {\n goBack: boolean;\n}\n\ntype AnchorProps = XOR<ForwardAnchorProps, BackAnchorProps>;\n\nfunction useNavigationOrDefault(navigation?: Navigation | null) {\n const defaultNavigation = useNavigation();\n return navigation ?? defaultNavigation;\n}\n\ninterface UseIntersectionOptions {\n root?: Element | null;\n rootMargin?: string;\n threshold?: number | number[];\n}\nfunction useIntersection<T extends HTMLElement>(\n callback: (entry: IntersectionObserverEntry) => void,\n options: UseIntersectionOptions = {}\n) {\n const targetRef = useRef<T>(null);\n\n const observerCallback = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n callback(entry);\n }\n });\n },\n [callback]\n );\n\n useEffect(() => {\n const observer = new IntersectionObserver(observerCallback, options);\n const element = targetRef.current;\n\n if (element) {\n observer.observe(element);\n }\n\n return () => {\n if (element) {\n observer.unobserve(element);\n }\n };\n }, [observerCallback, options]);\n\n return targetRef;\n}\n\ntype EventListenerOptions = boolean | AddEventListenerOptions;\n\nfunction useEventListener<K extends keyof HTMLElementEventMap>(\n ref: RefObject<HTMLElement>,\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n options?: EventListenerOptions\n) {\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n element.addEventListener(eventName, handler, options);\n\n return () => {\n element.removeEventListener(eventName, handler, options);\n };\n }, [ref, eventName, handler, options]);\n}\n\ntype UseHoverOptions = {\n forceThreshold?: number; // Threshold for touch pressure to count as \"hover\" (0 to 1 range)\n};\n\ntype UseHoverCallback = (isHovered: boolean) => void;\nfunction useHover<T extends HTMLElement>(\n hoverCallback: UseHoverCallback,\n { forceThreshold = DEFAULT_PRELOAD_FORCE_THRESHOLD }: UseHoverOptions = {}\n) {\n const targetRef = useRef<T | null>(null);\n\n const handleMouseEnter = () => hoverCallback(true);\n\n const handleTouchStart = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch && touch.force >= forceThreshold) {\n hoverCallback(true);\n }\n };\n\n useEventListener(targetRef, 'mouseenter', handleMouseEnter);\n useEventListener(targetRef, 'touchstart', handleTouchStart);\n\n return targetRef;\n}\n\nexport function Anchor({\n preload,\n goBack,\n params = {},\n type = 'push',\n href: hrefProp,\n navigation: navigationProp,\n onClick: onClickProp,\n preloadBehaviour = {\n type: 'onsight',\n },\n children,\n ...aProps\n}: AnchorProps) {\n const navigation = useNavigationOrDefault(navigationProp);\n const isOnSightPreload = preloadBehaviour?.type === 'onsight';\n const isOnHoverPreload = preloadBehaviour?.type === 'onhover';\n const isForcePreload = preloadBehaviour?.type === 'force';\n\n /// Intersection preload behaviour\n const intersectionRef = useIntersection<HTMLAnchorElement>(\n (entry) => {\n if (!entry.isIntersecting || !preload) return;\n navigation.preload(hrefProp, { params });\n },\n isOnSightPreload ? preloadBehaviour : {}\n );\n /// Intersection preload behaviour\n\n /// Hover preload behaviour\n const hoverRef = useHover<HTMLAnchorElement>(\n (hovered) => {\n if (!hovered || !preload) return;\n navigation.preload(hrefProp, { params });\n },\n isOnHoverPreload ? preloadBehaviour : {}\n );\n /// Hover preload behaviour\n\n /// Force preload behaviour\n useEffect(() => {\n if (!preload || !isForcePreload) return;\n navigation.preload(hrefProp, { params });\n }, [preload, hrefProp, navigation, isForcePreload, params]);\n /// Force preload behaviour\n\n const [href, setHref] = useState<string | undefined>(undefined);\n const routerId = navigation?.routerId;\n const isExternal = !href?.includes(window.location.origin);\n const rel = isExternal ? 'noopener noreferrer' : goBack ? 'prev' : 'next';\n\n useEffect(() => {\n if (goBack && navigation.canGoBack()) {\n setHref(navigation.previous.url?.href);\n } else if (hrefProp) {\n const search = searchParamsFromObject(params);\n const uri = new URL(hrefProp, navigation.baseURL);\n uri.search = search;\n setHref(uri.href);\n }\n }, [hrefProp, params, navigation, goBack]);\n\n const onClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (goBack) {\n e.preventDefault();\n navigation.goBack();\n } else if (type === 'replace' && hrefProp) {\n e.preventDefault();\n navigation.replace(hrefProp);\n }\n onClickProp?.(e);\n };\n\n let ref;\n switch (preloadBehaviour?.type) {\n case 'onhover':\n ref = hoverRef;\n break;\n case 'onsight':\n ref = intersectionRef;\n break;\n default:\n ref = null;\n }\n\n return (\n <a\n href={href}\n data-router-id={routerId}\n onClick={onClick}\n rel={rel}\n ref={ref}\n {...aProps}\n >\n {children}\n </a>\n );\n}\n","export const SlideInFromRightKeyframes: Keyframe[] = [\n {\n transform: 'translateX(100vw)',\n },\n {\n transform: 'translateX(0vw)',\n },\n];\n\nexport const iOSSlideInFromRightKeyframes: Keyframe[] = [\n {\n transform: 'translateX(100vw)',\n },\n {\n transform: 'translateX(0vw)',\n },\n];\n\nexport const SlideOutToLeftKeyframes: Keyframe[] = [\n {\n transform: 'translateX(0vw)',\n },\n {\n transform: 'translateX(-50vw)',\n },\n];\n\nexport const iOSSlideOutToLeftKeyframes: Keyframe[] = [\n {\n transform: 'translateX(0vw)',\n },\n {\n transform: 'translateX(calc(100vw * -0.3))',\n },\n];\n\nexport const SlideInFromLeftKeyframes: Keyframe[] = [\n {\n transform: 'translateX(-100vw)',\n },\n {\n transform: 'translateX(0vw)',\n },\n];\n\nexport const iOSSlideInFromLeftKeyframes: Keyframe[] = [\n {\n transform: 'translateX(-100vw)',\n },\n {\n transform: 'translateX(0vw)',\n },\n];\n\nexport const SlideOutToRightKeyframes: Keyframe[] = [\n {\n transform: 'translateX(0vw)',\n },\n {\n transform: 'translateX(50vw)',\n },\n];\n\nexport const iOSSlideOutToRightKeyframes: Keyframe[] = [\n {\n transform: 'translateX(0vw)',\n },\n {\n transform: 'translateX(calc(100vw * 0.3))',\n },\n];\n\nexport const SlideInFromBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(100vh)',\n },\n {\n transform: 'translateY(0vh)',\n },\n];\n\nexport const iOSSlideInFromBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(100vh)',\n },\n {\n transform: 'translateY(0vh)',\n },\n];\n\nexport const SlideOutToTopKeyframes: Keyframe[] = [\n {\n transform: 'translateY(0vh)',\n },\n {\n transform: 'translateY(-50vh)',\n },\n];\n\nexport const SlideInFromTopKeyframes: Keyframe[] = [\n {\n transform: 'translateY(-100vh)',\n },\n {\n transform: 'translateY(0vh)',\n },\n];\n\nexport const SlideOutToBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(0vh)',\n },\n {\n transform: 'translateY(50vh)',\n },\n];\n\nexport const ZoomInKeyframes: Keyframe[] = [\n {\n transform: 'scale(0.85)',\n opacity: 0,\n },\n {\n transform: 'scale(1)',\n opacity: 1,\n },\n];\n\nexport const ZoomOutKeyframes: Keyframe[] = [\n {\n transform: 'scale(1)',\n opacity: 1,\n },\n {\n transform: 'scale(1.15)',\n opacity: 0,\n },\n];\n\nexport const FadeInKeyframes: Keyframe[] = [\n {\n opacity: 0,\n },\n {\n opacity: 1,\n },\n];\n\nexport const FadeOutKeyframes: Keyframe[] = [\n {\n opacity: 1,\n },\n {\n opacity: 0,\n },\n];\n\nexport const androidFadeInFromBottomKeyframes: Keyframe[] = [\n {\n opacity: 0,\n transform: 'translateY(calc(100vh * 0.08))',\n },\n {\n opacity: 0.25,\n offset: 0.5,\n },\n {\n opacity: 0.7,\n offset: 0.9,\n },\n {\n opacity: 1,\n transform: 'translateY(0vh)',\n },\n];\n\nexport const androidFadeInFromRightKeyframes: Keyframe[] = [\n {\n opacity: 0,\n transform: 'translateY(96vw)',\n },\n {\n opacity: 1,\n transform: 'translateY(0vw)',\n },\n];\n\nexport const androidFadeOutToLeftKeyframes: Keyframe[] = [\n {\n opacity: 0,\n transform: 'translateY(0vw)',\n },\n {\n opacity: 1,\n transform: 'translateY(-96vw)',\n },\n];\n\nexport const androidRevealFromBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(100vh)',\n },\n {\n transform: 'translateY(0vh)',\n },\n];\n\nexport const androidConcealToBottomKeyframes: Keyframe[] = [\n {\n transform: 'translateY(0vh)',\n },\n {\n transform: 'translateY(-2vh)',\n },\n];\n\nexport const androidScaleFromCentreKeyframes: Keyframe[] = [\n {\n transform: 'scale(0.85)',\n opacity: 0,\n },\n {\n opacity: 0,\n offset: 0.75,\n },\n {\n opacity: 1,\n offset: 0.875,\n },\n {\n transform: 'scale(1)',\n opacity: 1,\n },\n];\n\nexport const androidScaleToCentreKeyframes: Keyframe[] = [\n {\n transform: 'scale(1)',\n opacity: 1,\n },\n {\n opacity: 1,\n offset: 0.0825,\n },\n {\n opacity: 1,\n offset: 0.2075,\n },\n {\n transform: 'scale(1.075)',\n opacity: 0,\n },\n];\n\nexport const androidFadeInFromBottomSheetKeyframes: Keyframe[] = [\n {\n transform: 'translateY(calc(100vh * 0.8))',\n opacity: 0,\n },\n {\n transform: 'translateY(0vh)',\n opacity: 1,\n },\n];","import { easingToLinear, springToLinear } from \"web-animations-extension\";\n\nfunction easingOut(easing: (t: number) => number): (t: number) => number {\n\treturn t => 1 - easing(1 - t);\n}\n\nfunction easingPoly(n: number): (t: number) => number {\n\treturn (t: number) => Math.pow(t, n);\n}\n\nexport const iOSKeyframeOptions: KeyframeEffectOptions = {\n\t...springToLinear({\n\t\tmass: 3,\n\t\tstiffness: 1000,\n\t\tdamping: 500,\n\t\tvelocity: 0,\n\t\tsteps: 200\n\t})\n};\n\nexport const androidFadeInFromBottomOptions: KeyframeAnimationOptions = {\n\tduration: 350,\n\teasing: easingToLinear(easingOut(easingPoly(5)))\n};\n\nexport const androidFadeOutToBottomOptions: KeyframeAnimationOptions = {\n\tduration: 150,\n\teasing: 'linear'\n};\n\nexport const androidRevealFromBottomOptions: KeyframeAnimationOptions = {\n\tduration: 425,\n\teasing: 'cubic-bezier(0.35, 0.45, 0, 1)'\n};\n\nexport const androidScaleFromCentreOptions: KeyframeAnimationOptions = {\n\tduration: 400,\n\teasing: 'cubic-bezier(0.35, 0.45, 0, 1)'\n};\n\nexport const androidBottomSheetSlideInOptions: KeyframeAnimationOptions = {\n\tduration: 250,\n\teasing: easingToLinear(t => Math.cos((t + 1) * Math.PI) / 2.0 + 0.5)\n};\n\nexport const androidBottomSheetSlideOutOptions: KeyframeAnimationOptions = {\n\tduration: 200,\n\teasing: easingToLinear(t => (t === 1.0 ? 1 : Math.pow(t, 2)))\n};","import { AnimationEffectFactoryProps } from '@react-motion-router/core';\nimport {\n androidBottomSheetSlideInOptions,\n androidBottomSheetSlideOutOptions,\n androidFadeInFromBottomOptions,\n androidFadeOutToBottomOptions,\n androidRevealFromBottomOptions,\n androidScaleFromCentreOptions,\n iOSKeyframeOptions\n} from './keyframe-options-presets';\nimport {\n androidConcealToBottomKeyframes,\n androidFadeInFromBottomKeyframes,\n androidFadeInFromBottomSheetKeyframes,\n androidFadeInFromRightKeyframes,\n androidFadeOutToLeftKeyframes,\n androidRevealFromBottomKeyframes,\n androidScaleFromCentreKeyframes,\n androidScaleToCentreKeyframes,\n iOSSlideInFromBottomKeyframes,\n iOSSlideInFromLeftKeyframes,\n iOSSlideInFromRightKeyframes,\n iOSSlideOutToLeftKeyframes,\n iOSSlideOutToRightKeyframes\n} from './keyframe-presets';\n\nexport function iOSSlideInFromRight({ ref, direction, playbackRate, index }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n iOSSlideOutToLeftKeyframes,\n iOSSlideInFromRightKeyframes,\n ];\n\n let keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...iOSKeyframeOptions,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function iOSSlideInFromLeft({ ref, direction, playbackRate, index }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n iOSSlideOutToRightKeyframes,\n iOSSlideInFromLeftKeyframes,\n ];\n\n let keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...iOSKeyframeOptions,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function iOSSlideInFromBottom({ ref, direction, playbackRate }: AnimationEffectFactoryProps) {\n let keyframes = iOSSlideInFromBottomKeyframes;\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...iOSKeyframeOptions,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromBottom({ ref, direction, playbackRate }: AnimationEffectFactoryProps) {\n let keyframes = androidFadeInFromBottomKeyframes;\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...androidFadeInFromBottomOptions,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromBottomSheet({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n let keyframes = androidFadeInFromBottomSheetKeyframes;\n let timing;\n if (index === 0)\n timing = androidBottomSheetSlideOutOptions;\n else\n timing = androidBottomSheetSlideInOptions;\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...timing,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidRevealFromBottom({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n androidConcealToBottomKeyframes,\n androidRevealFromBottomKeyframes,\n ];\n\n const keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n direction,\n playbackRate,\n fill: 'forwards' as const,\n ...androidRevealFromBottomOptions,\n };\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromRight({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n androidFadeOutToLeftKeyframes,\n androidFadeInFromRightKeyframes,\n ];\n let timing;\n if (index === 0)\n timing = androidFadeOutToBottomOptions;\n else\n timing = androidFadeInFromBottomOptions;\n\n let keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n playbackRate,\n fill: 'forwards' as const,\n ...timing,\n };\n\n if (direction === 'reverse')\n keyframes = keyframes.toReversed();\n\n return new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidScaleFromCentre({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n const keyframesPresets = [\n androidScaleToCentreKeyframes,\n androidScaleFromCentreKeyframes,\n ];\n\n const keyframes = keyframesPresets[index];\n const options: KeyframeEffectOptions = {\n direction,\n playbackRate,\n fill: 'forwards' as const,\n ...androidScaleFromCentreOptions,\n };\n\n return new KeyframeEffect(ref, keyframes, options);\n}","import { useRef, useEffect } from 'react';\nimport { SwipeStartEvent } from 'web-gesture-events';\n\ninterface GestureRegionProps extends React.HTMLAttributes<HTMLDivElement> {\n disabled?: boolean;\n}\nexport function GestureRegion({disabled, children, ...props}: GestureRegionProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (disabled) return;\n const onSwipeStart = (e: SwipeStartEvent) => {\n e.stopPropagation();\n e.preventDefault();\n }\n\n ref.current?.addEventListener('swipestart', onSwipeStart);\n\n return () => {\n ref.current?.removeEventListener('swipestart', onSwipeStart);\n }\n }, [ref, disabled]);\n\n return (\n <div\n ref={ref}\n className=\"gesture-region\"\n data-disabled={disabled}\n style={{display: 'contents'}}\n {...props}\n >\n {children}\n </div>\n );\n}"],"names":["GestureEvent_1","GestureEventTypeEnum","GestureEvent","type","touchEvent","__importDefault","this","mod","LongPressEvent_1","require$$0","LongPressEvent","duration","TapEvent_1","TapEvent","DoubleTapEvent_1","DoubleTapEvent","SwipeEvent_1","SwipeLifecycleStateEnum","SwipeEventBase","swipeData","state","eventType","SwipeEvent","SwipeStartEvent","SwipeEndEvent","PanEvent_1","PanLifecycleStateEnum","PanEventBase","panData","PanEvent","PanStartEvent","PanEndEvent","PinchEvent_1","PinchLifecycleStateEnum","PinchEventBase","pinchData","PinchEvent","PinchStartEvent","PinchEndEvent","RotateEvent_1","RotateLifecycleStateEnum","RotateEventBase","rotationData","RotateEvent","RotateStartEvent","RotateEndEvent","utils","assert","condition","message","Vec2","_x","_y","vector","closest","needle","haystack","a","b","a_diff","b_diff","__createBinding","o","m","k","k2","__setModuleDefault","v","__importStar","result","exports","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","utils_1","require$$8","CartesianDirectionEnum","GestureProvider","target","touchEnd","swipeEndEvent","panEndEvent","pinchEndEvent","rotateEndEvent","gestureEvent","touchStart","minPointers","longPressDuration","touchDuration","longPressEvent","originPointerPrimary","originPointerSecondary","touchMove","currentPointerPrimary","currentPointerSecondary","distance","scaleFactor","pinchEvent","pinchStartEvent","rotationAngle","rotateEvent","rotateStartEvent","origin","dxDy","length","normalised","angle","dt","velocity","swipeEvent","swipeStartEvent","panEvent","panStartEvent","numberOfTaps","maxTapDelay","doubleTapEvent","tapEvent","touchCancel","NavigateEvent","routerId","route","props","signal","committed","transition","BackEvent","ForwardEvent","GestureStartEvent","source","GestureEndEvent","GestureCancelEvent","HistoryEntry","#nativeEntry","nativeEntry","index","handler","listener","options","event","Navigation","NavigationBase","router","key","fromIndex","destinationIndex","entry","controller","history","url","nestedPathPatterns","pattern","nestedScopePathPattern","nestedBoundaryReached","resolvedBaseURL","resolveBaseURLFromPattern","nestedBaseURLPattern","matchRoute","caseSensitive","globalCurrentIndex","firstEntryGlobalIndex","lastEntryGlobalIndex","scopedEntries","globalEntry","searchParamsToObject","searchParams","searchParamsFromObject","params","isGesture","info","isRollback","deepEquals","obj1","obj2","keys1","keys2","Screen","ScreenBase","#historyEntry","id","historyEntry","newParams","newConfig","config","unsafe","queryParams","pathParams","setParams","setConfig","path","focused","resolvedPathname","newState","prevState","e","navigation","rect","onClickOutside","isRefObject","value","directions","isSupportedDirection","direction","supported","isOutOfBounds","x","y","clientRect","gestureAreaWidth","isHorizontalDirection","DEFAULT_GESTURE_CONFIG","DEFAULT_PRELOAD_FORCE_THRESHOLD","PromiseWrapper","resolve","reject","reason","Router","RouterBase","#committed","context","gestureDirection","gestureDisabled","gestureHysteresis","gestureMinFlingVelocity","_","screen","nextProps","nextState","error","axis","rangeStart","rangeEnd","GestureTimeline","gesture","progress","playbackRate","hysteresisReached","gestureCancelled","screenStack","currentScreenRef","nextScreenRef","pathname","child","matchInfo","cloneAndInject","createRef","baseURLPattern","includesRoute","fromKey","destinationKey","entries","startTransition","initialPathname","firstEntry","currentScreen","destination","destinationPathname","destinationScreen","isHotReplace","currentIndex","outgoingScreen","incomingScreen","pendingLifecycleHandlers","currentTime","animation","commit","animationStarted","backNavigating","topScreenIndex","useNavigation","useDebugValue","useNavigationBase","useRouter","useRouterBase","useRoute","useRouteBase","useParams","initialParams","useParamsBase","useNavigationOrDefault","defaultNavigation","useIntersection","callback","targetRef","useRef","observerCallback","useCallback","useEffect","observer","element","useEventListener","ref","eventName","useHover","hoverCallback","forceThreshold","handleMouseEnter","handleTouchStart","touch","Anchor","preload","goBack","hrefProp","navigationProp","onClickProp","preloadBehaviour","children","aProps","isOnSightPreload","isOnHoverPreload","isForcePreload","intersectionRef","hoverRef","hovered","href","setHref","useState","rel","search","uri","onClick","jsx","SlideInFromRightKeyframes","iOSSlideInFromRightKeyframes","SlideOutToLeftKeyframes","iOSSlideOutToLeftKeyframes","SlideInFromLeftKeyframes","iOSSlideInFromLeftKeyframes","SlideOutToRightKeyframes","iOSSlideOutToRightKeyframes","SlideInFromBottomKeyframes","iOSSlideInFromBottomKeyframes","SlideOutToTopKeyframes","SlideInFromTopKeyframes","SlideOutToBottomKeyframes","ZoomInKeyframes","ZoomOutKeyframes","FadeInKeyframes","FadeOutKeyframes","androidFadeInFromBottomKeyframes","androidFadeInFromRightKeyframes","androidFadeOutToLeftKeyframes","androidRevealFromBottomKeyframes","androidConcealToBottomKeyframes","androidScaleFromCentreKeyframes","androidScaleToCentreKeyframes","androidFadeInFromBottomSheetKeyframes","easingOut","easing","easingPoly","iOSKeyframeOptions","springToLinear","androidFadeInFromBottomOptions","easingToLinear","androidFadeOutToBottomOptions","androidRevealFromBottomOptions","androidScaleFromCentreOptions","androidBottomSheetSlideInOptions","t","androidBottomSheetSlideOutOptions","iOSSlideInFromRight","keyframes","iOSSlideInFromLeft","iOSSlideInFromBottom","androidFadeInFromBottom","androidFadeInFromBottomSheet","timing","androidRevealFromBottom","androidFadeInFromRight","keyframesPresets","androidScaleFromCentre","GestureRegion","disabled","onSwipeStart"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-motion-router/stack",
3
- "version": "2.0.0-beta.sha-bcb6b06",
3
+ "version": "2.0.0-beta.sha-7a69b61",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -33,5 +33,5 @@
33
33
  "react": "^18.0.0 || ^19.0.0-0",
34
34
  "web-animations-extension": "*"
35
35
  },
36
- "gitHead": "bcb6b06aae3814b9f2e02ee1ac2044aadcfca0b1"
36
+ "gitHead": "7a69b61cb16c6dffe6e6e000f954094b156a71ea"
37
37
  }