@react-motion-router/stack 2.0.0-beta.sha-dfc284b → 2.0.0-beta.sha-c42ac88
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/Router.d.ts +3 -2
- package/build/index.js +48 -67
- package/build/index.js.map +1 -1
- package/package.json +2 -2
package/build/Router.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface RouterProps extends RouterBaseProps<Screen> {
|
|
|
15
15
|
export interface RouterState extends RouterBaseState {
|
|
16
16
|
backNavigating: boolean;
|
|
17
17
|
transition: NavigationTransition | LoadEvent["transition"] | null;
|
|
18
|
-
screenStack: ScreenChild<
|
|
18
|
+
screenStack: ScreenChild<Screen>[];
|
|
19
19
|
gestureDirection: SwipeDirection;
|
|
20
20
|
gestureAreaWidth: number;
|
|
21
21
|
gestureMinFlingVelocity: number;
|
|
@@ -43,8 +43,9 @@ export declare class Router extends RouterBase<RouterProps, RouterState> {
|
|
|
43
43
|
private canGestureNavigate;
|
|
44
44
|
private onSwipeStart;
|
|
45
45
|
private onSwipeEnd;
|
|
46
|
-
protected get screens():
|
|
46
|
+
protected get screens(): import("react").CElement<ScreenProps, Screen>[];
|
|
47
47
|
private screenChildFromPathname;
|
|
48
|
+
private getScreenChildByPathname;
|
|
48
49
|
private getScreenRefByKey;
|
|
49
50
|
protected canIntercept(e: NavigateEvent): boolean;
|
|
50
51
|
protected shouldIntercept(e: NavigateEvent): boolean;
|
package/build/index.js
CHANGED
|
@@ -1560,7 +1560,32 @@ class Router extends core_namespaceObject.RouterBase {
|
|
|
1560
1560
|
|| screen.key === this.state.destinationKey;
|
|
1561
1561
|
});
|
|
1562
1562
|
}
|
|
1563
|
-
screenChildFromPathname(pathname) {
|
|
1563
|
+
screenChildFromPathname(pathname, key, config, params) {
|
|
1564
|
+
const screenChild = external_react_.Children.toArray(this.props.children)
|
|
1565
|
+
.find(child => {
|
|
1566
|
+
if (!(0,core_namespaceObject.isValidScreenChild)(child))
|
|
1567
|
+
return;
|
|
1568
|
+
return (0,core_namespaceObject.matchRoute)(child.props.path, pathname, this.baseURLPattern.pathname, child.props.caseSensitive);
|
|
1569
|
+
});
|
|
1570
|
+
if (!(0,core_namespaceObject.isValidScreenChild)(screenChild))
|
|
1571
|
+
return null;
|
|
1572
|
+
return (0,external_react_.cloneElement)(screenChild, {
|
|
1573
|
+
config: {
|
|
1574
|
+
title: document.title,
|
|
1575
|
+
...this.props.config.screenConfig,
|
|
1576
|
+
...screenChild.props.config,
|
|
1577
|
+
...config
|
|
1578
|
+
},
|
|
1579
|
+
defaultParams: {
|
|
1580
|
+
...screenChild.props.defaultParams,
|
|
1581
|
+
...params
|
|
1582
|
+
},
|
|
1583
|
+
resolvedPathname: pathname,
|
|
1584
|
+
key,
|
|
1585
|
+
ref: (0,external_react_.createRef)()
|
|
1586
|
+
});
|
|
1587
|
+
}
|
|
1588
|
+
getScreenChildByPathname(pathname) {
|
|
1564
1589
|
return external_react_.Children.toArray(this.props.children)
|
|
1565
1590
|
.find(child => {
|
|
1566
1591
|
if (!(0,core_namespaceObject.isValidScreenChild)(child))
|
|
@@ -1616,27 +1641,12 @@ class Router extends core_namespaceObject.RouterBase {
|
|
|
1616
1641
|
entries.forEach((entry) => {
|
|
1617
1642
|
if (!entry.url)
|
|
1618
1643
|
return null;
|
|
1619
|
-
const screen = this.screenChildFromPathname(entry.url.pathname);
|
|
1620
|
-
if (!(0,core_namespaceObject.isValidScreenChild)(screen))
|
|
1621
|
-
return null;
|
|
1622
1644
|
const { params, config } = entry.getState() ?? {};
|
|
1623
1645
|
const queryParams = searchParamsToObject(entry.url.search);
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
...screen.props.config,
|
|
1629
|
-
...config
|
|
1630
|
-
},
|
|
1631
|
-
defaultParams: {
|
|
1632
|
-
...screen.props.defaultParams,
|
|
1633
|
-
...queryParams,
|
|
1634
|
-
...params
|
|
1635
|
-
},
|
|
1636
|
-
resolvedPathname: entry.url.pathname,
|
|
1637
|
-
key: entry.key,
|
|
1638
|
-
ref: (0,external_react_.createRef)()
|
|
1639
|
-
}));
|
|
1646
|
+
const screen = this.screenChildFromPathname(entry.url.pathname, entry.key, config, { ...queryParams, ...params });
|
|
1647
|
+
if (!screen)
|
|
1648
|
+
return null;
|
|
1649
|
+
screenStack.push(screen);
|
|
1640
1650
|
});
|
|
1641
1651
|
return new Promise((resolve, reject) => (0,external_react_.startTransition)(() => {
|
|
1642
1652
|
this.setState({ screenStack, fromKey, transition, destinationKey }, async () => {
|
|
@@ -1668,37 +1678,21 @@ class Router extends core_namespaceObject.RouterBase {
|
|
|
1668
1678
|
}
|
|
1669
1679
|
handleReplace(e) {
|
|
1670
1680
|
const screenStack = this.state.screenStack;
|
|
1671
|
-
const
|
|
1672
|
-
const
|
|
1673
|
-
|
|
1681
|
+
const destination = e.destination;
|
|
1682
|
+
const destinationPathname = new URL(destination.url).pathname;
|
|
1683
|
+
const { params, config } = destination.getState() ?? {};
|
|
1684
|
+
const queryParams = searchParamsToObject(new URL(destination.url).search);
|
|
1685
|
+
const destinationKey = window.navigation.currentEntry?.key ?? destination.key;
|
|
1686
|
+
const destinationScreen = this.screenChildFromPathname(destinationPathname, destinationKey, config, { ...queryParams, ...params });
|
|
1687
|
+
if (!destinationScreen)
|
|
1674
1688
|
return e.preventDefault();
|
|
1675
1689
|
const handler = () => {
|
|
1676
|
-
const { params, config } = e.destination.getState() ?? {};
|
|
1677
|
-
const destination = e.destination;
|
|
1678
1690
|
const isHotReplace = this.state.transition !== null;
|
|
1679
1691
|
const transition = this.state.transition ?? window.navigation.transition;
|
|
1680
1692
|
const fromKey = transition?.from?.key ?? null;
|
|
1681
|
-
const destinationKey = window.navigation.currentEntry?.key ?? destination.key;
|
|
1682
|
-
const resolvedPathname = new URL(e.destination.url).pathname;
|
|
1683
|
-
const queryParams = searchParamsToObject(new URL(destination.url).search);
|
|
1684
1693
|
const currentIndex = screenStack.findIndex(screen => screen.key === this.navigation.current?.key);
|
|
1685
1694
|
const backNavigating = this.state.backNavigating;
|
|
1686
|
-
screenStack.splice(currentIndex, 1,
|
|
1687
|
-
config: {
|
|
1688
|
-
title: document.title,
|
|
1689
|
-
...this.props.config.screenConfig,
|
|
1690
|
-
...destinationScreen.props.config,
|
|
1691
|
-
...config
|
|
1692
|
-
},
|
|
1693
|
-
defaultParams: {
|
|
1694
|
-
...destinationScreen.props.defaultParams,
|
|
1695
|
-
...queryParams,
|
|
1696
|
-
...params,
|
|
1697
|
-
},
|
|
1698
|
-
resolvedPathname,
|
|
1699
|
-
key: destinationKey,
|
|
1700
|
-
ref: (0,external_react_.createRef)()
|
|
1701
|
-
}));
|
|
1695
|
+
screenStack.splice(currentIndex, 1, destinationScreen);
|
|
1702
1696
|
return new Promise((resolve, reject) => (0,external_react_.startTransition)(() => {
|
|
1703
1697
|
this.setState({ destinationKey, fromKey, transition, screenStack }, async () => {
|
|
1704
1698
|
const signal = e.signal;
|
|
@@ -1725,15 +1719,12 @@ class Router extends core_namespaceObject.RouterBase {
|
|
|
1725
1719
|
}
|
|
1726
1720
|
handleDefault(e) {
|
|
1727
1721
|
const screenStack = this.state.screenStack;
|
|
1728
|
-
const
|
|
1729
|
-
const
|
|
1730
|
-
if (!(0,core_namespaceObject.isValidScreenChild)(
|
|
1722
|
+
const destination = e.destination;
|
|
1723
|
+
const destinationPathname = new URL(destination.url).pathname;
|
|
1724
|
+
if (!(0,core_namespaceObject.isValidScreenChild)(this.getScreenChildByPathname(destinationPathname)))
|
|
1731
1725
|
return e.preventDefault();
|
|
1732
1726
|
const handler = () => {
|
|
1733
|
-
const { params, config } = e.destination.getState() ?? {};
|
|
1734
1727
|
const transition = window.navigation.transition;
|
|
1735
|
-
const destination = e.destination;
|
|
1736
|
-
const resolvedPathname = new URL(e.destination.url).pathname;
|
|
1737
1728
|
let fromIndex = screenStack.findIndex(screen => screen.key === transition?.from.key);
|
|
1738
1729
|
if (fromIndex === -1 && e.navigationType === "traverse") {
|
|
1739
1730
|
fromIndex = screenStack.findIndex(screen => {
|
|
@@ -1744,29 +1735,19 @@ class Router extends core_namespaceObject.RouterBase {
|
|
|
1744
1735
|
return pathnameMatched && patternMatched;
|
|
1745
1736
|
});
|
|
1746
1737
|
}
|
|
1747
|
-
const destinationIndex = screenStack.findIndex(screen => screen.key === e.destination.key);
|
|
1748
1738
|
const fromKey = (screenStack[fromIndex]?.key || transition?.from.key) ?? null;
|
|
1739
|
+
const destinationIndex = screenStack.findIndex(screen => screen.key === e.destination.key);
|
|
1749
1740
|
const destinationKey = (screenStack[destinationIndex]?.key || window.navigation.currentEntry?.key) ?? null;
|
|
1750
1741
|
const backNavigating = destinationIndex >= 0 && destinationIndex < fromIndex;
|
|
1751
1742
|
if (e.navigationType === "push") {
|
|
1743
|
+
const { params, config } = destination.getState() ?? {};
|
|
1744
|
+
const destinationPathname = new URL(destination.url).pathname;
|
|
1752
1745
|
const queryParams = searchParamsToObject(new URL(destination.url).search);
|
|
1746
|
+
const destinationScreen = this.screenChildFromPathname(destinationPathname, destinationKey, config, { ...queryParams, ...params });
|
|
1747
|
+
if (!destinationScreen)
|
|
1748
|
+
return Promise.resolve();
|
|
1753
1749
|
screenStack.splice(fromIndex + 1, Infinity, // Remove all screens after current
|
|
1754
|
-
|
|
1755
|
-
config: {
|
|
1756
|
-
title: document.title,
|
|
1757
|
-
...this.props.config.screenConfig,
|
|
1758
|
-
...destinationScreen.props.config,
|
|
1759
|
-
...config
|
|
1760
|
-
},
|
|
1761
|
-
defaultParams: {
|
|
1762
|
-
...destinationScreen.props.defaultParams,
|
|
1763
|
-
...queryParams,
|
|
1764
|
-
...params,
|
|
1765
|
-
},
|
|
1766
|
-
resolvedPathname,
|
|
1767
|
-
key: window.navigation.currentEntry?.key,
|
|
1768
|
-
ref: (0,external_react_.createRef)()
|
|
1769
|
-
}));
|
|
1750
|
+
destinationScreen);
|
|
1770
1751
|
}
|
|
1771
1752
|
return new Promise((resolve, reject) => (0,external_react_.startTransition)(() => {
|
|
1772
1753
|
this.setState({ destinationKey, fromKey, transition, screenStack, backNavigating }, async () => {
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACa,MAAM,mBAAO,CAAC,GAAO,6KAA6K;AAC/M,kBAAkB,UAAU,eAAe,qBAAqB,6BAA6B,0BAA0B,0DAA0D,4EAA4E,OAAO,wDAAwD,yBAAgB,GAAG,WAAW,GAAG,yBAAY;;;;;;;;ACV5V;;AAEb,IAAI,IAAqC;AACzC,EAAE,yCAAqE;AACvE,EAAE,KAAK,EAEN;;;;;;;;ACNY;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;;;;;;;ACZa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;;;;;;;AC7Ca;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;;;;;;;ACda;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB,GAAG,qBAAqB;AAC3C,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;;;;;;ACvDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,qBAAqB,GAAG,uBAAuB;AAC/C,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;;;;;AClDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB,GAAG,wBAAwB;AACjD,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;;;;;ACzDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,qBAAqB,GAAG,uBAAuB;AAC/C,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;;;;;AChDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;;;;;;;ACba;AACb;AACA;AACA,mCAAmC,oCAAoC,gBAAgB;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,oBAAoB,GAAG,gBAAgB;AAClX,uCAAuC,mBAAO,CAAC,GAAyB;AACxE,oBAAoB;AACpB,yCAAyC,mBAAO,CAAC,GAA2B;AAC5E,sBAAsB;AACtB,mCAAmC,mBAAO,CAAC,EAAqB;AAChE,gBAAgB;AAChB,yCAAyC,mBAAO,CAAC,GAA2B;AAC5E,sBAAsB;AACtB,kCAAkC,mBAAO,CAAC,GAAuB;AACjE,kBAAkB;AAClB,iDAAgD,EAAE,qCAAqC,sCAAsC,EAAC;AAC9H,mDAAkD,EAAE,qCAAqC,wCAAwC,EAAC;AAClI,gCAAgC,mBAAO,CAAC,GAAqB;AAC7D,gBAAgB;AAChB,+CAA8C,EAAE,qCAAqC,kCAAkC,EAAC;AACxH,iDAAgD,EAAE,qCAAqC,oCAAoC,EAAC;AAC5H,kCAAkC,mBAAO,CAAC,GAAuB;AACjE,kBAAkB;AAClB,iDAAgD,EAAE,qCAAqC,sCAAsC,EAAC;AAC9H,mDAAkD,EAAE,qCAAqC,wCAAwC,EAAC;AAClI,mCAAmC,mBAAO,CAAC,GAAwB;AACnE,mBAAmB;AACnB,kDAAiD,EAAE,qCAAqC,wCAAwC,EAAC;AACjI,oDAAmD,EAAE,qCAAqC,0CAA0C,EAAC;AACrI,gBAAgB,mBAAO,CAAC,EAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;;;;;;;AC5Va;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,YAAY,GAAG,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe;AACf;;;;;;;ACrFA,eAAe,YAAY,6BAA6B;AACxD;AACA;;;;;;SCFA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,eAAe,YAAY,6BAA6B;AACx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","sources":["webpack://@react-motion-router/stack/../../node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@react-motion-router/stack/../../node_modules/react/jsx-runtime.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/DoubleTapEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/GestureEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/LongPressEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/PanEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/PinchEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/RotateEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/SwipeEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/TapEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/index.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/utils.js","webpack://@react-motion-router/stack/external module \"react\"","webpack://@react-motion-router/stack/webpack/bootstrap","webpack://@react-motion-router/stack/webpack/runtime/define property getters","webpack://@react-motion-router/stack/webpack/runtime/hasOwnProperty shorthand","webpack://@react-motion-router/stack/external module \"@react-motion-router/core\"","webpack://@react-motion-router/stack/./src/common/events.ts","webpack://@react-motion-router/stack/./src/HistoryEntry.ts","webpack://@react-motion-router/stack/./src/Navigation.ts","webpack://@react-motion-router/stack/./src/Screen.tsx","webpack://@react-motion-router/stack/./src/common/types.ts","webpack://@react-motion-router/stack/external module \"web-animations-extension\"","webpack://@react-motion-router/stack/./src/common/utils.ts","webpack://@react-motion-router/stack/./src/common/constants.ts","webpack://@react-motion-router/stack/./src/Router.tsx","webpack://@react-motion-router/stack/./src/common/hooks.ts","webpack://@react-motion-router/stack/./src/Anchor.tsx","webpack://@react-motion-router/stack/./src/animation-configs/keyframe-presets.ts","webpack://@react-motion-router/stack/./src/animation-configs/keyframe-options-presets.ts","webpack://@react-motion-router/stack/./src/animation-configs/animation-presets.ts","webpack://@react-motion-router/stack/./src/GestureRegion.tsx","webpack://@react-motion-router/stack/./src/index.ts"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"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\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\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\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\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 __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","\"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","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_react__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"NavigationBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.NavigationBase, [\"RouterBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.RouterBase, [\"ScreenBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.ScreenBase, [\"includesRoute\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.includesRoute, [\"isValidScreenChild\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.isValidScreenChild, [\"matchRoute\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.matchRoute, [\"resolveBaseURLFromPattern\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.resolveBaseURLFromPattern, [\"useNavigationBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.useNavigationBase, [\"useRouteBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.useRouteBase, [\"useRouterBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.useRouterBase });","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 result: NavigationResult;\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\tresult: NavigationResult,\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.result = result;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class BackEvent extends Event {\n\treadonly routerId: string;\n\treadonly signal: AbortSignal;\n\treadonly result: NavigationResult;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(routerId: string, signal: AbortSignal, result: NavigationResult, transition: NavigationTransition) {\n\t\tsuper('back');\n\t\tthis.routerId = routerId;\n\t\tthis.signal = signal;\n\t\tthis.result = result;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class ForwardEvent extends Event {\n\treadonly routerId: string;\n\treadonly signal: AbortSignal;\n\treadonly result: NavigationResult;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(routerId: string, signal: AbortSignal, result: NavigationResult, transition: NavigationTransition) {\n\t\tsuper('forward');\n\t\tthis.routerId = routerId;\n\t\tthis.signal = signal;\n\t\tthis.result = result;\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 includesRoute,\n resolveBaseURLFromPattern,\n} from '@react-motion-router/core';\nimport { GoBackOptions, GoForwardOptions, NavigateOptions, NavigationBaseOptions, NavigationProps, StackRouterEventMap } from './common/types';\nimport { BackEvent, ForwardEvent, NavigateEvent } from './common/events';\nimport { HistoryEntry } from './HistoryEntry';\nimport { Router } from './Router';\n\nexport class Navigation extends NavigationBase<StackRouterEventMap> {\n protected readonly router: Router;\n\n constructor(router: Router) {\n super(router);\n this.router = router;\n }\n\n traverseTo(key: string) {\n return window.navigation.traverseTo(key);\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 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, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n goBack(options: GoBackOptions = {}) {\n if (!this.canGoBack) return;\n\n const previous = this.previous!;\n const result = window.navigation.traverseTo(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, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n goForward(options: GoForwardOptions = {}) {\n if (!this.canGoForward) return;\n\n const next = this.next!;\n const result = window.navigation.traverseTo(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, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n private createBackEvent(\n signal: AbortSignal,\n result: NavigationResult,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error(\"Router ID is not set\");\n return new BackEvent(this.routerId, signal, result, transition);\n }\n\n private createForwardEvent(\n signal: AbortSignal,\n result: NavigationResult,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error(\"Router ID is not set\");\n return new ForwardEvent(this.routerId, signal, result, transition);\n }\n\n private createNavigateEvent(\n route: string,\n props: NavigationProps,\n type: NavigateOptions[\"type\"],\n signal: AbortSignal,\n result: NavigationResult,\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 result,\n transition\n );\n }\n\n get transition() {\n return this.router.state.transition;\n }\n\n get globalEntries() {\n return window.navigation.entries();\n }\n\n get entries() {\n const nestedPathPatterns = this.router.pathPatterns.filter(({ pattern }) => pattern.endsWith(\"**\"));\n let inNestedScope = false;\n return this.globalEntries\n .filter(entry => {\n if (!entry.url) return false;\n const url = new URL(entry.url);\n if (!resolveBaseURLFromPattern(this.baseURLPattern.pathname, url.pathname))\n return false;\n\n if (includesRoute(nestedPathPatterns, url.pathname, this.baseURLPattern.pathname)) {\n if (inNestedScope)\n return false;\n\n return inNestedScope = true; // technically in nested scope but include the first entry (the entry intercepted by the parent router)\n } else {\n inNestedScope = false;\n return true; // not in nested scope, so include\n }\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 get canGoBack() {\n return Boolean(this.previous?.sameDocument);\n }\n\n get canGoForward() {\n return Boolean(this.next?.sameDocument);\n }\n}","import { ScreenBase } from '@react-motion-router/core';\nimport type { PlainObject, RouterContext, ScreenBaseProps, ScreenBaseState, ScreenBaseComponentProps } from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { RouteProp, SwipeDirection } from './common/types';\nimport { Router } from './Router';\n\nexport interface ScreenComponentProps<T extends PlainObject = {}> extends ScreenBaseComponentProps<RouteProp<T>, Navigation> { }\n\nexport interface ScreenProps extends ScreenBaseProps {\n config?: ScreenBaseProps[\"config\"] & {\n title?: string;\n presentation?: \"default\" | \"dialog\" | \"modal\";\n keepAlive?: boolean;\n gestureDirection?: SwipeDirection;\n gestureAreaWidth?: number;\n gestureMinFlingVelocity?: number;\n gestureHysteresis?: number;\n disableGesture?: boolean;\n }\n}\n\nexport interface ScreenState extends ScreenBaseState { }\n\nexport class Screen extends ScreenBase<ScreenProps, ScreenState> {\n readonly routeProp;\n\n constructor(props: ScreenProps, context: React.ContextType<typeof RouterContext>) {\n super(props, context);\n\n const setParams = this.setParams.bind(this);\n const setConfig = this.setConfig.bind(this);\n const getProps = () => this.props;\n const getState = () => this.state;\n this.routeProp = {\n setParams,\n setConfig,\n get path() {\n return getProps().path;\n },\n get resolvedPathname() {\n return getProps().resolvedPathname;\n },\n get focused() {\n return getState().focused;\n },\n get config() {\n return {\n ...getProps().config,\n ...context.screenState.get(this.path)?.config\n };\n },\n get params() {\n return {\n ...getProps().defaultParams,\n ...context.screenState.get(this.path)?.params\n };\n }\n };\n }\n\n 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 get config() {\n return {\n ...this.props.config,\n ...this.context.screenState.get(this.props.path)?.config\n };\n }\n\n get params() {\n return {\n ...this.props.defaultParams,\n ...this.context.screenState.get(this.props.path)?.params\n };\n }\n\n protected setParams(params: PlainObject): void {\n super.setParams(params);\n if (this.state.focused)\n window.navigation.updateCurrentEntry({ state: { params } });\n }\n\n protected setConfig(config: ScreenProps[\"config\"]): void {\n super.setConfig(config);\n if (this.state.focused)\n window.navigation.updateCurrentEntry({ state: { config } });\n }\n protected get router() {\n return this.context as Router;\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 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 if (this.ref.current) {\n this.ref.current.style.width = 'max-content';\n this.ref.current.style.height = 'max-content';\n }\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 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 StackRouterEventMap 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';\n\nexport function isVerticalDirection(direction: SwipeDirection): direction is 'up' | 'down' | 'vertical' {\n\treturn direction === 'up' || direction === 'down' || direction === 'vertical';\n}\n\nexport function isHorizontalDirection(direction: SwipeDirection): direction is 'left' | 'right' | 'horizontal' {\n\treturn direction === 'left' || direction === 'right' || direction === 'horizontal';\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"GestureTimeline\"]: () => __WEBPACK_EXTERNAL_MODULE_web_animations_extension_74b2916c__.GestureTimeline, [\"easingToLinear\"]: () => __WEBPACK_EXTERNAL_MODULE_web_animations_extension_74b2916c__.easingToLinear, [\"springToLinear\"]: () => __WEBPACK_EXTERNAL_MODULE_web_animations_extension_74b2916c__.springToLinear });","import { PlainObject } from \"@react-motion-router/core\";\n\nexport function searchParamsToObject(searchPart: string) {\n\tconst entries = new URLSearchParams(decodeURI(searchPart)).entries();\n\tconst result: PlainObject<string> = {};\n\n\tfor (const [key, value] of entries) { // each 'entry' is a [key, value] tuple\n\t\tlet parsedValue = '';\n\t\ttry {\n\t\t\tparsedValue = JSON.parse(value);\n\t\t} catch (e) {\n\t\t\tconsole.warn(\"Non JSON serialisable value was passed as URL route param.\");\n\t\t\tparsedValue = value;\n\t\t}\n\t\tresult[key] = parsedValue;\n\t}\n\treturn Object.keys(result).length ? result : undefined;\n}\n\nexport function searchParamsFromObject(params: { [key: string]: any }) {\n\ttry {\n\t\treturn new URLSearchParams(params).toString();\n\t} catch (e) {\n\t\tconsole.error(e);\n\t\tconsole.warn(\"Non JSON serialisable value was passed as query param.\");\n\t}\n\treturn '';\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}","export const DEFAULT_GESTURE_CONFIG = {\n gestureHysteresis: 0.5,\n gestureMinFlingVelocity: 400,\n gestureAreaWidth: 100,\n gestureDirection: 'right',\n disableGesture: false\n} as const;","import { RouterBase, includesRoute, isValidScreenChild, matchRoute } from '@react-motion-router/core';\nimport type { LoadEvent, NestedRouterContext, RouterBaseProps, RouterBaseState, ScreenChild } from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { ScreenProps, Screen } from './Screen';\nimport { HistoryEntryState, isHorizontalDirection, isRefObject, SwipeDirection } from './common/types';\nimport { Children, createRef, cloneElement, startTransition } from 'react';\nimport { SwipeStartEvent, SwipeEndEvent } from 'web-gesture-events';\nimport { GestureTimeline } from 'web-animations-extension';\nimport { deepEquals, isRollback, searchParamsToObject } from './common/utils';\nimport { GestureCancelEvent, GestureEndEvent, GestureStartEvent } from './common/events';\nimport { DEFAULT_GESTURE_CONFIG } from './common/constants';\n\nexport interface RouterProps extends RouterBaseProps<Screen> {\n config: RouterBaseProps[\"config\"] & {\n screenConfig?: ScreenProps[\"config\"];\n disableBrowserRouting?: boolean;\n initialPath?: string;\n shouldIntercept?(navigateEvent: NavigateEvent): boolean;\n onIntercept?(navigateEvent: NavigateEvent): boolean;\n }\n}\n\nexport interface RouterState extends RouterBaseState {\n backNavigating: boolean;\n transition: NavigationTransition | LoadEvent[\"transition\"] | null;\n screenStack: ScreenChild<ScreenProps, Screen>[];\n gestureDirection: SwipeDirection;\n gestureAreaWidth: number;\n gestureMinFlingVelocity: number;\n gestureHysteresis: number;\n disableGesture: boolean;\n fromKey: React.Key | null\n destinationKey: React.Key | null;\n documentTitle?: string;\n}\n\nexport class Router extends RouterBase<RouterProps, RouterState> {\n public readonly navigation = new Navigation(this);\n\n constructor(props: RouterProps, context: React.ContextType<typeof NestedRouterContext>) {\n super(props, context);\n this.state = {\n screenStack: [],\n gestureDirection: \"horizontal\",\n gestureAreaWidth: 50,\n gestureHysteresis: 0.5,\n disableGesture: true,\n gestureMinFlingVelocity: 500,\n transition: null,\n backNavigating: false,\n documentTitle: document.title,\n fromKey: null,\n destinationKey: null\n };\n }\n\n static readonly defaultProps: Partial<RouterProps> = {\n config: {\n screenConfig: {\n ...DEFAULT_GESTURE_CONFIG\n }\n }\n };\n\n static getDerivedStateFromProps(_: RouterProps, state: RouterState) {\n const config = state.screenStack.find(screen => isRefObject(screen.ref) && screen.ref.current?.focused)?.props.config;\n document.title = config?.title ?? document.title;\n return {\n gestureDirection: config?.gestureDirection ?? DEFAULT_GESTURE_CONFIG.gestureDirection,\n gestureAreaWidth: config?.gestureAreaWidth ?? DEFAULT_GESTURE_CONFIG.gestureAreaWidth,\n gestureMinFlingVelocity: config?.gestureMinFlingVelocity ?? DEFAULT_GESTURE_CONFIG.gestureMinFlingVelocity,\n gestureHysteresis: config?.gestureHysteresis ?? DEFAULT_GESTURE_CONFIG.gestureHysteresis,\n disableGesture: config?.disableGesture ?? DEFAULT_GESTURE_CONFIG.disableGesture,\n documentTitle: config?.title\n }\n }\n\n componentDidMount(): void {\n super.componentDidMount();\n this.ref.current?.addEventListener('swipestart', this.onSwipeStart);\n this.ref.current?.addEventListener('swipeend', this.onSwipeEnd);\n }\n\n shouldComponentUpdate(nextProps: Readonly<RouterProps>, nextState: Readonly<RouterState>): 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 componentWillUnmount(): void {\n this.ref.current?.removeEventListener('swipestart', this.onSwipeStart);\n this.ref.current?.removeEventListener('swipeend', this.onSwipeEnd);\n }\n\n private canGestureNavigate(e: SwipeStartEvent) {\n if (!this.ref.current) return false;\n if (this.state.disableGesture) return false;\n const clientRect = this.ref.current.getBoundingClientRect();\n const { direction } = e;\n if ((direction === \"down\" || direction === \"right\") && !this.navigation.canGoBack) return false;\n if ((direction === \"up\" || direction === \"left\") && !this.navigation.canGoForward) return false;\n if (isHorizontalDirection(direction) !== isHorizontalDirection(this.state.gestureDirection)) return false;\n if (direction === \"right\" && Math.abs(e.x - clientRect.left) >= this.state.gestureAreaWidth) return false;\n if (direction === \"left\" && Math.abs(e.x - clientRect.right) >= this.state.gestureAreaWidth) return false;\n if (direction === \"down\" && Math.abs(e.y - clientRect.top) >= this.state.gestureAreaWidth) return false;\n if (direction === \"up\" && Math.abs(e.y - clientRect.bottom) >= this.state.gestureAreaWidth) return false;\n return true;\n }\n\n private onSwipeStart = (e: SwipeStartEvent) => {\n if (!this.canGestureNavigate(e)) return;\n if (!this.ref.current || !this.screenTransitionLayer.current) return;\n const { direction } = e;\n\n let 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 source: this.ref.current,\n type: \"swipe\",\n axis,\n rangeStart,\n rangeEnd\n });\n if (direction === \"down\" || direction === \"right\")\n this.navigation.goBack();\n else\n this.navigation.goForward();\n\n this.dispatchEvent(new GestureStartEvent(e));\n }\n\n private onSwipeEnd = (e: SwipeEndEvent) => {\n if (!this.screenTransitionLayer.current) return;\n const progress = this.screenTransitionLayer.current.animation.effect?.getComputedTiming().progress ?? 0;\n const playbackRate = this.screenTransitionLayer.current.animation.playbackRate;\n this.screenTransitionLayer.current.animation.timeline = document.timeline;\n const hysteresisReached = playbackRate > 0 ? progress > this.state.gestureHysteresis : progress < this.state.gestureHysteresis;\n let rollback = false;\n if (e.velocity < this.state.gestureMinFlingVelocity && !hysteresisReached) {\n this.screenTransitionLayer.current.animation.reverse();\n rollback = true;\n this.dispatchEvent(new GestureCancelEvent());\n } else {\n this.dispatchEvent(new GestureEndEvent(e));\n }\n const { fromKey } = this.state;\n if (rollback && fromKey) {\n this.state.transition?.finished.then(() => {\n window.navigation.traverseTo(fromKey.toString(), { info: { rollback } });\n });\n }\n }\n\n protected get screens() {\n const screenStack = this.state.screenStack;\n return screenStack\n .filter((screen, index) => {\n const currentScreenRef = screen.ref ?? null;\n const nextScreenRef = screenStack.at(index + 1)?.ref;\n return (isRefObject(currentScreenRef) && currentScreenRef.current?.config.keepAlive)\n || (isRefObject(nextScreenRef) && nextScreenRef.current?.config.presentation === \"modal\")\n || (isRefObject(nextScreenRef) && 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 private screenChildFromPathname(pathname: string) {\n return Children.toArray(this.props.children)\n .find(child => {\n if (!isValidScreenChild(child)) return;\n return matchRoute(\n child.props.path,\n pathname,\n this.baseURLPattern.pathname,\n child.props.caseSensitive\n );\n });\n }\n\n private getScreenRefByKey(key: string) {\n const screen = this.state.screenStack.find(screen => screen.key === key)?.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 this.mounted\n && this.shouldIntercept(e)\n && includesRoute(this.pathPatterns, pathname, baseURLPattern);\n }\n\n protected shouldIntercept(e: NavigateEvent): boolean {\n if (this.props.config.shouldIntercept)\n return this.props.config.shouldIntercept(e);\n return e.canIntercept\n && !e.formData\n && !e.hashChange\n && !e.downloadRequest;\n }\n\n protected intercept(e: NavigateEvent | LoadEvent): void {\n if (this.props.config.onIntercept && e.navigationType !== \"load\")\n if (this.props.config.onIntercept(e) || e.defaultPrevented)\n 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 = new Array<ScreenChild<ScreenProps, Screen>>();\n const entries = this.navigation.entries;\n entries.forEach((entry) => {\n if (!entry.url) return null;\n const screen = this.screenChildFromPathname(entry.url.pathname);\n if (!isValidScreenChild<Screen>(screen)) return null;\n const { params, config } = entry.getState<HistoryEntryState>() ?? {};\n const queryParams = searchParamsToObject(entry.url.search);\n screenStack.push(\n cloneElement(screen, {\n config: {\n title: document.title,\n ...this.props.config.screenConfig,\n ...screen.props.config,\n ...config\n },\n defaultParams: {\n ...screen.props.defaultParams,\n ...queryParams,\n ...params\n },\n resolvedPathname: entry.url.pathname,\n key: entry.key,\n ref: createRef<Screen>()\n })\n );\n });\n\n return new Promise<void>((resolve, reject) => startTransition(() => {\n this.setState({ screenStack, fromKey, transition, destinationKey }, async () => {\n const { initialPath } = this.props.config;\n const [firstEntry] = entries;\n if (\n initialPath\n && entries.length === 1\n && firstEntry.url\n && !matchRoute(\n initialPath,\n firstEntry.url.pathname,\n this.baseURLPattern.pathname\n )\n ) {\n const transitionFinished = window.navigation.transition?.finished ?? Promise.resolve();\n transitionFinished.then(() => {\n this.navigation.replace(initialPath).finished.then(() => {\n const state = 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(this.navigation.current.key);\n await this.dispatchLifecycleHandlers(currentScreen, null, signal).catch(reject);\n this.setState({ destinationKey: null, fromKey: null, transition: null }, resolve);\n });\n }));\n }\n\n e.intercept({ handler });\n }\n\n private handleReplace(e: NavigateEvent) {\n const screenStack = this.state.screenStack;\n const destinationPathname = new URL(e.destination.url).pathname;\n const destinationScreen = this.screenChildFromPathname(destinationPathname);\n if (!isValidScreenChild<Screen>(destinationScreen)) return e.preventDefault();\n const handler = () => {\n const { params, config } = e.destination.getState() as HistoryEntryState ?? {};\n const destination = e.destination;\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 destinationKey = window.navigation.currentEntry?.key ?? destination.key;\n const resolvedPathname = new URL(e.destination.url).pathname;\n const queryParams = searchParamsToObject(new URL(destination.url).search);\n const currentIndex = screenStack.findIndex(screen => screen.key === this.navigation.current?.key);\n const backNavigating = this.state.backNavigating;\n screenStack.splice(\n currentIndex,\n 1,\n cloneElement(destinationScreen, {\n config: {\n title: document.title,\n ...this.props.config.screenConfig,\n ...destinationScreen.props.config,\n ...config\n },\n defaultParams: {\n ...destinationScreen.props.defaultParams,\n ...queryParams,\n ...params,\n },\n resolvedPathname,\n key: destinationKey,\n ref: createRef<Screen>()\n })\n );\n\n return new Promise<void>((resolve, reject) => startTransition(() => {\n this.setState({ destinationKey, fromKey, transition, screenStack }, async () => {\n const signal = e.signal;\n const outgoingScreen = this.getScreenRefByKey(String(fromKey));\n const incomingScreen = this.getScreenRefByKey(String(destinationKey));\n const pendingLifecycleHandlers = this.dispatchLifecycleHandlers(incomingScreen, null, signal).catch(reject);\n if (isHotReplace) {\n const currentTime = this.screenTransitionLayer.current?.animation.currentTime ?? 0;\n this.screenTransitionLayer.current?.animation.cancel();\n await new Promise(requestAnimationFrame);\n const animation = this.screenTransition(incomingScreen, outgoingScreen, backNavigating);\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({ destinationKey: null, fromKey: null, transition: null }, resolve);\n });\n }));\n };\n\n e.intercept({ handler });\n }\n\n private handleDefault(e: NavigateEvent) {\n const screenStack = this.state.screenStack;\n const destinationPathname = new URL(e.destination.url).pathname;\n const destinationScreen = this.screenChildFromPathname(destinationPathname);\n if (!isValidScreenChild<Screen>(destinationScreen)) return e.preventDefault();\n const handler = () => {\n const { params, config } = e.destination.getState() as HistoryEntryState ?? {};\n const transition = window.navigation.transition;\n const destination = e.destination;\n const resolvedPathname = new URL(e.destination.url).pathname;\n let fromIndex = screenStack.findIndex(screen => screen.key === transition?.from.key);\n if (fromIndex === -1 && e.navigationType === \"traverse\") {\n fromIndex = screenStack.findIndex(screen => {\n if (!transition?.from.url || !screen.props.resolvedPathname) return false;\n const pathnameMatched = transition.from.url.includes(screen.props.resolvedPathname);\n const patternMatched = matchRoute(\n screen.props.path,\n new URL(transition.from.url).pathname,\n this.baseURLPattern.pathname,\n screen.props.caseSensitive\n );\n return pathnameMatched && patternMatched;\n });\n }\n const destinationIndex = screenStack.findIndex(screen => screen.key === e.destination.key);\n const fromKey = (screenStack[fromIndex]?.key || transition?.from.key) ?? null;\n const destinationKey = (screenStack[destinationIndex]?.key || window.navigation.currentEntry?.key) ?? null;\n const backNavigating = destinationIndex >= 0 && destinationIndex < fromIndex;\n if (e.navigationType === \"push\") {\n const queryParams = searchParamsToObject(new URL(destination.url).search);\n screenStack.splice(\n fromIndex + 1,\n Infinity, // Remove all screens after current\n cloneElement(destinationScreen, {\n config: {\n title: document.title,\n ...this.props.config.screenConfig,\n ...destinationScreen.props.config,\n ...config\n },\n defaultParams: {\n ...destinationScreen.props.defaultParams,\n ...queryParams,\n ...params,\n },\n resolvedPathname,\n key: window.navigation.currentEntry?.key,\n ref: createRef<Screen>()\n })\n );\n }\n\n return new Promise<void>((resolve, reject) => startTransition(() => {\n this.setState({ destinationKey, fromKey, transition, screenStack, backNavigating }, async () => {\n const signal = e.signal;\n const outgoingScreen = this.getScreenRefByKey(String(fromKey));\n const incomingScreen = this.getScreenRefByKey(String(destinationKey));\n const pendingLifecycleHandlers = this.dispatchLifecycleHandlers(incomingScreen, outgoingScreen, signal).catch(reject);\n if (!isRollback(e.info)) {\n const animation = this.screenTransition(incomingScreen, outgoingScreen, backNavigating);\n animation?.updatePlaybackRate(1);\n animation?.finished.catch(reject);\n }\n await pendingLifecycleHandlers;\n this.setState({ destinationKey: null, fromKey: null, transition: null }, resolve);\n });\n }));\n }\n\n e.intercept({ handler });\n }\n\n private async dispatchLifecycleHandlers(incomingScreen: React.RefObject<Screen> | null, outgoingScreen: React.RefObject<Screen> | null, signal: AbortSignal) {\n let animationStarted = false;\n this.addEventListener('transition-start', () => animationStarted = true, { once: true });\n\n await Promise.all([\n outgoingScreen?.current?.onExit(signal).then(() => outgoingScreen.current?.blur()),\n incomingScreen?.current?.onEnter(signal).then(() => incomingScreen.current?.focus()),\n incomingScreen?.current?.load(signal)\n ]);\n\n if (animationStarted)\n await new Promise((resolve) => this.addEventListener('transition-end', resolve, { once: true }));\n\n await Promise.all([\n outgoingScreen?.current?.onExited(signal),\n incomingScreen?.current?.onEntered(signal)\n ]);\n }\n\n private screenTransition(\n incomingScreen: React.RefObject<Screen> | null,\n outgoingScreen: React.RefObject<Screen> | null,\n backNavigating: boolean\n ) {\n if (this.screenTransitionLayer.current && incomingScreen && outgoingScreen) {\n this.screenTransitionLayer.current.direction = backNavigating ? 'reverse' : '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 (this.screenTransitionLayer.current.sharedElementTransitionLayer.current) {\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current.outgoingScreen = outgoingScreen;\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current.incomingScreen = incomingScreen;\n }\n const topScreenIndex = this.screens.findIndex(screen => screen.ref === (backNavigating ? outgoingScreen : incomingScreen));\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 (isRefObject(screen.ref) && screen.ref.current?.transitionProvider.current) {\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}","import { useNavigationBase, 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(\"StackNavigation\");\n\treturn useNavigationBase<Navigation>();\n}\n\nexport function useRouter() {\n\tuseDebugValue(\"StackRouter\");\n\treturn useRouterBase<Router>();\n}\n\nexport function useRoute() {\n\tuseDebugValue(\"StackRoute\");\n\treturn useRouteBase<RouteProp>();\n}","import { PlainObject } from \"@react-motion-router/core\";\nimport { Navigation } from \"./Navigation\";\nimport { NavigateOptions, XOR } from \"./common/types\";\nimport { useState, useEffect } from \"react\";\nimport { useNavigation } from \"./common/hooks\";\nimport { searchParamsFromObject } from \"./common/utils\";\n\ninterface BaseAnchorProps extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n navigation?: Navigation;\n}\n\ninterface ForwardAnchorProps extends BaseAnchorProps {\n params?: PlainObject<string | boolean | number>;\n href: string;\n type?: NavigateOptions[\"type\"];\n preload?: boolean;\n}\n\ninterface BackAnchorProps extends BaseAnchorProps {\n goBack: boolean;\n}\n\ntype AnchorProps = XOR<ForwardAnchorProps, BackAnchorProps>;\n\nfunction useNavigationOrDefault(navigation?: Navigation) {\n const defaultNavigation = useNavigation();\n return navigation ?? defaultNavigation;\n}\n\nexport function Anchor(props: AnchorProps) {\n const {\n preload,\n goBack,\n params = {},\n type = \"push\",\n href: hrefProp,\n onClick: onClickProp,\n ...aProps\n } = props;\n const navigation = useNavigationOrDefault(props.navigation);\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 (!preload || !href) return;\n navigation.preloadRoute(hrefProp);\n }, [preload, hrefProp]);\n\n useEffect(() => {\n if (goBack) {\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]);\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 return (\n <a\n href={href}\n data-router-id={routerId}\n onClick={onClick}\n rel={rel}\n {...aProps}\n >\n {props.children}\n </a>\n );\n}","export const SlideInFromRightKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(100vw)',\n\t},\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t}\n];\n\nexport const iOSSlideInFromRightKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(100vw)',\n\t},\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t}\n];\n\nexport const SlideOutToLeftKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(-50vw)'\n\t}\n];\n\nexport const iOSSlideOutToLeftKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(0vw)',\n\t},\n\t{\n\t\ttransform: 'translateX(calc(100vw * -0.3))'\n\t}\n];\n\nexport const SlideInFromLeftKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(-100vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t}\n];\n\nexport const iOSSlideInFromLeftKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(-100vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t}\n];\n\nexport const SlideOutToRightKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(50vw)'\n\t}\n];\n\nexport const iOSSlideOutToRightKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(calc(100vw * 0.3))'\n\t}\n];\n\nexport const SlideInFromBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(100vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const iOSSlideInFromBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(100vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const SlideOutToTopKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(-50vh)'\n\t}\n];\n\nexport const SlideInFromTopKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(-100vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const SlideOutToBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(50vh)'\n\t}\n];\n\nexport const ZoomInKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'scale(0.85)',\n\t\topacity: 0\n\t},\n\t{\n\t\ttransform: 'scale(1)',\n\t\topacity: 1\n\t}\n];\n\nexport const ZoomOutKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'scale(1)',\n\t\topacity: 1\n\t},\n\t{\n\t\ttransform: 'scale(1.15)',\n\t\topacity: 0\n\t}\n];\n\nexport const FadeInKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 0\n\t},\n\t{\n\t\topacity: 1\n\t}\n];\n\nexport const FadeOutKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 1\n\t},\n\t{\n\t\topacity: 0\n\t}\n];\n\nexport const androidFadeInFromBottomKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 0,\n\t\ttransform: 'translateY(calc(100vh * 0.08))'\n\t},\n\t{\n\t\topacity: 0.25,\n\t\toffset: 0.5\n\t},\n\t{\n\t\topacity: 0.7,\n\t\toffset: 0.9\n\t},\n\t{\n\t\topacity: 1,\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const androidFadeInFromRightKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 0,\n\t\ttransform: 'translateY(96vw)'\n\t},\n\t{\n\t\topacity: 1,\n\t\ttransform: 'translateY(0vw)'\n\t}\n];\n\nexport const androidFadeOutToLeftKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 0,\n\t\ttransform: 'translateY(0vw)'\n\t},\n\t{\n\t\topacity: 1,\n\t\ttransform: 'translateY(-96vw)'\n\t}\n];\n\nexport const androidRevealFromBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(100vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const androidConcealToBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(-2vh)'\n\t}\n];\n\nexport const androidScaleFromCentreKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'scale(0.85)',\n\t\topacity: 0\n\t},\n\t{\n\t\topacity: 0,\n\t\toffset: 0.75\n\t},\n\t{\n\t\topacity: 1,\n\t\toffset: 0.875\n\t},\n\t{\n\t\ttransform: 'scale(1)',\n\t\topacity: 1\n\t}\n];\n\nexport const androidScaleToCentreKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'scale(1)',\n\t\topacity: 1\n\t},\n\t{\n\t\topacity: 1,\n\t\toffset: 0.0825\n\t},\n\t{\n\t\topacity: 1,\n\t\toffset: 0.2075\n\t},\n\t{\n\t\ttransform: 'scale(1.075)',\n\t\topacity: 0\n\t}\n];\n\nexport const androidFadeInFromBottomSheetKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(calc(100vh * 0.8))',\n\t\topacity: 0\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)',\n\t\topacity: 1\n\t}\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\tandroidBottomSheetSlideInOptions,\n\tandroidBottomSheetSlideOutOptions,\n\tandroidFadeInFromBottomOptions,\n\tandroidFadeOutToBottomOptions,\n\tandroidRevealFromBottomOptions,\n\tandroidScaleFromCentreOptions,\n\tiOSKeyframeOptions\n} from \"./keyframe-options-presets\";\nimport {\n\tandroidConcealToBottomKeyframes,\n\tandroidFadeInFromBottomKeyframes,\n\tandroidFadeInFromBottomSheetKeyframes,\n\tandroidFadeInFromRightKeyframes,\n\tandroidFadeOutToLeftKeyframes,\n\tandroidRevealFromBottomKeyframes,\n\tandroidScaleFromCentreKeyframes,\n\tandroidScaleToCentreKeyframes,\n\tiOSSlideInFromBottomKeyframes,\n\tiOSSlideInFromLeftKeyframes,\n\tiOSSlideInFromRightKeyframes,\n\tiOSSlideOutToLeftKeyframes,\n\tiOSSlideOutToRightKeyframes,\n} from \"./keyframe-presets\";\n\nexport function iOSSlideInFromRight({ ref, direction, playbackRate, index }: AnimationEffectFactoryProps) {\n\tconst keyframesPresets = [\n\t\tiOSSlideOutToLeftKeyframes,\n\t\tiOSSlideInFromRightKeyframes\n\t];\n\n\tlet keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...iOSKeyframeOptions\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function iOSSlideInFromLeft({ ref, direction, playbackRate, index }: AnimationEffectFactoryProps) {\n\tconst keyframesPresets = [\n\t\tiOSSlideOutToRightKeyframes,\n\t\tiOSSlideInFromLeftKeyframes\n\t];\n\n\tlet keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...iOSKeyframeOptions\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function iOSSlideInFromBottom({ ref, direction, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframes = iOSSlideInFromBottomKeyframes;\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...iOSKeyframeOptions\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromBottom({ ref, direction, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframes = androidFadeInFromBottomKeyframes;\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...androidFadeInFromBottomOptions\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromBottomSheet({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframes = androidFadeInFromBottomSheetKeyframes;\n\tlet timing;\n\tif (index === 0)\n\t\ttiming = androidBottomSheetSlideOutOptions;\n\telse\n\t\ttiming = androidBottomSheetSlideInOptions;\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...timing\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidRevealFromBottom({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframesPresets = [\n\t\tandroidConcealToBottomKeyframes,\n\t\tandroidRevealFromBottomKeyframes\n\t];\n\n\tconst keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tdirection,\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...androidRevealFromBottomOptions\n\t};\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromRight({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframesPresets = [\n\t\tandroidFadeOutToLeftKeyframes,\n\t\tandroidFadeInFromRightKeyframes\n\t];\n\tlet timing;\n\tif (index === 0)\n\t\ttiming = androidFadeOutToBottomOptions;\n\telse\n\t\ttiming = androidFadeInFromBottomOptions;\n\n\tlet keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...timing\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidScaleFromCentre({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframesPresets = [\n\t\tandroidScaleToCentreKeyframes,\n\t\tandroidScaleFromCentreKeyframes\n\t];\n\n\tconst keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tdirection,\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...androidScaleFromCentreOptions\n\t};\n\n\treturn 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 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]);\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}","/// <reference types=\"urlpattern-polyfill\" />\nimport 'web-gesture-events';\nexport * from './Navigation';\nexport * from './Screen';\nexport * from './Router';\nexport * from './Anchor';\nexport * from './animation-configs/keyframe-presets';\nexport * from './animation-configs/keyframe-options-presets';\nexport * from './animation-configs/animation-presets';\nexport * from './common/hooks';\nexport * from './GestureRegion';"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.js","mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACa,MAAM,mBAAO,CAAC,GAAO,6KAA6K;AAC/M,kBAAkB,UAAU,eAAe,qBAAqB,6BAA6B,0BAA0B,0DAA0D,4EAA4E,OAAO,wDAAwD,yBAAgB,GAAG,WAAW,GAAG,yBAAY;;;;;;;;ACV5V;;AAEb,IAAI,IAAqC;AACzC,EAAE,yCAAqE;AACvE,EAAE,KAAK,EAEN;;;;;;;;ACNY;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;;;;;;;ACZa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;;;;;;;AC7Ca;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;;;;;;;ACda;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,mBAAmB,GAAG,qBAAqB;AAC3C,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;;;;;;ACvDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,qBAAqB,GAAG,uBAAuB;AAC/C,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;;;;;AClDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB,GAAG,wBAAwB;AACjD,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;;;;;;ACzDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,qBAAqB,GAAG,uBAAuB;AAC/C,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA,CAAC,0DAA0D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;;;;;;AChDa;AACb;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,uCAAuC,mBAAO,CAAC,GAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;;;;;;;ACba;AACb;AACA;AACA,mCAAmC,oCAAoC,gBAAgB;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,sBAAsB,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,oBAAoB,GAAG,gBAAgB;AAClX,uCAAuC,mBAAO,CAAC,GAAyB;AACxE,oBAAoB;AACpB,yCAAyC,mBAAO,CAAC,GAA2B;AAC5E,sBAAsB;AACtB,mCAAmC,mBAAO,CAAC,EAAqB;AAChE,gBAAgB;AAChB,yCAAyC,mBAAO,CAAC,GAA2B;AAC5E,sBAAsB;AACtB,kCAAkC,mBAAO,CAAC,GAAuB;AACjE,kBAAkB;AAClB,iDAAgD,EAAE,qCAAqC,sCAAsC,EAAC;AAC9H,mDAAkD,EAAE,qCAAqC,wCAAwC,EAAC;AAClI,gCAAgC,mBAAO,CAAC,GAAqB;AAC7D,gBAAgB;AAChB,+CAA8C,EAAE,qCAAqC,kCAAkC,EAAC;AACxH,iDAAgD,EAAE,qCAAqC,oCAAoC,EAAC;AAC5H,kCAAkC,mBAAO,CAAC,GAAuB;AACjE,kBAAkB;AAClB,iDAAgD,EAAE,qCAAqC,sCAAsC,EAAC;AAC9H,mDAAkD,EAAE,qCAAqC,wCAAwC,EAAC;AAClI,mCAAmC,mBAAO,CAAC,GAAwB;AACnE,mBAAmB;AACnB,kDAAiD,EAAE,qCAAqC,wCAAwC,EAAC;AACjI,oDAAmD,EAAE,qCAAqC,0CAA0C,EAAC;AACrI,gBAAgB,mBAAO,CAAC,EAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;;;;;;;AC5Va;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,eAAe,GAAG,YAAY,GAAG,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe;AACf;;;;;;;ACrFA,eAAe,YAAY,6BAA6B;AACxD;AACA;;;;;;SCFA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,eAAe,YAAY,6BAA6B;AACx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","sources":["webpack://@react-motion-router/stack/../../node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@react-motion-router/stack/../../node_modules/react/jsx-runtime.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/DoubleTapEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/GestureEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/LongPressEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/PanEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/PinchEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/RotateEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/SwipeEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/Gestures/TapEvent.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/index.js","webpack://@react-motion-router/stack/../../node_modules/web-gesture-events/utils.js","webpack://@react-motion-router/stack/external module \"react\"","webpack://@react-motion-router/stack/webpack/bootstrap","webpack://@react-motion-router/stack/webpack/runtime/define property getters","webpack://@react-motion-router/stack/webpack/runtime/hasOwnProperty shorthand","webpack://@react-motion-router/stack/external module \"@react-motion-router/core\"","webpack://@react-motion-router/stack/./src/common/events.ts","webpack://@react-motion-router/stack/./src/HistoryEntry.ts","webpack://@react-motion-router/stack/./src/Navigation.ts","webpack://@react-motion-router/stack/./src/Screen.tsx","webpack://@react-motion-router/stack/./src/common/types.ts","webpack://@react-motion-router/stack/external module \"web-animations-extension\"","webpack://@react-motion-router/stack/./src/common/utils.ts","webpack://@react-motion-router/stack/./src/common/constants.ts","webpack://@react-motion-router/stack/./src/Router.tsx","webpack://@react-motion-router/stack/./src/common/hooks.ts","webpack://@react-motion-router/stack/./src/Anchor.tsx","webpack://@react-motion-router/stack/./src/animation-configs/keyframe-presets.ts","webpack://@react-motion-router/stack/./src/animation-configs/keyframe-options-presets.ts","webpack://@react-motion-router/stack/./src/animation-configs/animation-presets.ts","webpack://@react-motion-router/stack/./src/GestureRegion.tsx","webpack://@react-motion-router/stack/./src/index.ts"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"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\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\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\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\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 __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","\"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","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_react__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"NavigationBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.NavigationBase, [\"RouterBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.RouterBase, [\"ScreenBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.ScreenBase, [\"includesRoute\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.includesRoute, [\"isValidScreenChild\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.isValidScreenChild, [\"matchRoute\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.matchRoute, [\"resolveBaseURLFromPattern\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.resolveBaseURLFromPattern, [\"useNavigationBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.useNavigationBase, [\"useRouteBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.useRouteBase, [\"useRouterBase\"]: () => __WEBPACK_EXTERNAL_MODULE__react_motion_router_core_d1cff82c__.useRouterBase });","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 result: NavigationResult;\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\tresult: NavigationResult,\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.result = result;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class BackEvent extends Event {\n\treadonly routerId: string;\n\treadonly signal: AbortSignal;\n\treadonly result: NavigationResult;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(routerId: string, signal: AbortSignal, result: NavigationResult, transition: NavigationTransition) {\n\t\tsuper('back');\n\t\tthis.routerId = routerId;\n\t\tthis.signal = signal;\n\t\tthis.result = result;\n\t\tthis.transition = transition;\n\t}\n}\n\nexport class ForwardEvent extends Event {\n\treadonly routerId: string;\n\treadonly signal: AbortSignal;\n\treadonly result: NavigationResult;\n\treadonly transition: NavigationTransition;\n\n\tconstructor(routerId: string, signal: AbortSignal, result: NavigationResult, transition: NavigationTransition) {\n\t\tsuper('forward');\n\t\tthis.routerId = routerId;\n\t\tthis.signal = signal;\n\t\tthis.result = result;\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 includesRoute,\n resolveBaseURLFromPattern,\n} from '@react-motion-router/core';\nimport { GoBackOptions, GoForwardOptions, NavigateOptions, NavigationBaseOptions, NavigationProps, StackRouterEventMap } from './common/types';\nimport { BackEvent, ForwardEvent, NavigateEvent } from './common/events';\nimport { HistoryEntry } from './HistoryEntry';\nimport { Router } from './Router';\n\nexport class Navigation extends NavigationBase<StackRouterEventMap> {\n protected readonly router: Router;\n\n constructor(router: Router) {\n super(router);\n this.router = router;\n }\n\n traverseTo(key: string) {\n return window.navigation.traverseTo(key);\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 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, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n goBack(options: GoBackOptions = {}) {\n if (!this.canGoBack) return;\n\n const previous = this.previous!;\n const result = window.navigation.traverseTo(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, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n goForward(options: GoForwardOptions = {}) {\n if (!this.canGoForward) return;\n\n const next = this.next!;\n const result = window.navigation.traverseTo(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, transition);\n this.dispatchEvent?.(event);\n\n return result;\n }\n\n private createBackEvent(\n signal: AbortSignal,\n result: NavigationResult,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error(\"Router ID is not set\");\n return new BackEvent(this.routerId, signal, result, transition);\n }\n\n private createForwardEvent(\n signal: AbortSignal,\n result: NavigationResult,\n transition: NavigationTransition\n ) {\n if (!this.routerId) throw new Error(\"Router ID is not set\");\n return new ForwardEvent(this.routerId, signal, result, transition);\n }\n\n private createNavigateEvent(\n route: string,\n props: NavigationProps,\n type: NavigateOptions[\"type\"],\n signal: AbortSignal,\n result: NavigationResult,\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 result,\n transition\n );\n }\n\n get transition() {\n return this.router.state.transition;\n }\n\n get globalEntries() {\n return window.navigation.entries();\n }\n\n get entries() {\n const nestedPathPatterns = this.router.pathPatterns.filter(({ pattern }) => pattern.endsWith(\"**\"));\n let inNestedScope = false;\n return this.globalEntries\n .filter(entry => {\n if (!entry.url) return false;\n const url = new URL(entry.url);\n if (!resolveBaseURLFromPattern(this.baseURLPattern.pathname, url.pathname))\n return false;\n\n if (includesRoute(nestedPathPatterns, url.pathname, this.baseURLPattern.pathname)) {\n if (inNestedScope)\n return false;\n\n return inNestedScope = true; // technically in nested scope but include the first entry (the entry intercepted by the parent router)\n } else {\n inNestedScope = false;\n return true; // not in nested scope, so include\n }\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 get canGoBack() {\n return Boolean(this.previous?.sameDocument);\n }\n\n get canGoForward() {\n return Boolean(this.next?.sameDocument);\n }\n}","import { ScreenBase } from '@react-motion-router/core';\nimport type { PlainObject, RouterContext, ScreenBaseProps, ScreenBaseState, ScreenBaseComponentProps } from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { RouteProp, SwipeDirection } from './common/types';\nimport { Router } from './Router';\n\nexport interface ScreenComponentProps<T extends PlainObject = {}> extends ScreenBaseComponentProps<RouteProp<T>, Navigation> { }\n\nexport interface ScreenProps extends ScreenBaseProps {\n config?: ScreenBaseProps[\"config\"] & {\n title?: string;\n presentation?: \"default\" | \"dialog\" | \"modal\";\n keepAlive?: boolean;\n gestureDirection?: SwipeDirection;\n gestureAreaWidth?: number;\n gestureMinFlingVelocity?: number;\n gestureHysteresis?: number;\n disableGesture?: boolean;\n }\n}\n\nexport interface ScreenState extends ScreenBaseState { }\n\nexport class Screen extends ScreenBase<ScreenProps, ScreenState> {\n readonly routeProp;\n\n constructor(props: ScreenProps, context: React.ContextType<typeof RouterContext>) {\n super(props, context);\n\n const setParams = this.setParams.bind(this);\n const setConfig = this.setConfig.bind(this);\n const getProps = () => this.props;\n const getState = () => this.state;\n this.routeProp = {\n setParams,\n setConfig,\n get path() {\n return getProps().path;\n },\n get resolvedPathname() {\n return getProps().resolvedPathname;\n },\n get focused() {\n return getState().focused;\n },\n get config() {\n return {\n ...getProps().config,\n ...context.screenState.get(this.path)?.config\n };\n },\n get params() {\n return {\n ...getProps().defaultParams,\n ...context.screenState.get(this.path)?.params\n };\n }\n };\n }\n\n 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 get config() {\n return {\n ...this.props.config,\n ...this.context.screenState.get(this.props.path)?.config\n };\n }\n\n get params() {\n return {\n ...this.props.defaultParams,\n ...this.context.screenState.get(this.props.path)?.params\n };\n }\n\n protected setParams(params: PlainObject): void {\n super.setParams(params);\n if (this.state.focused)\n window.navigation.updateCurrentEntry({ state: { params } });\n }\n\n protected setConfig(config: ScreenProps[\"config\"]): void {\n super.setConfig(config);\n if (this.state.focused)\n window.navigation.updateCurrentEntry({ state: { config } });\n }\n protected get router() {\n return this.context as Router;\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 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 if (this.ref.current) {\n this.ref.current.style.width = 'max-content';\n this.ref.current.style.height = 'max-content';\n }\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 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 StackRouterEventMap 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';\n\nexport function isVerticalDirection(direction: SwipeDirection): direction is 'up' | 'down' | 'vertical' {\n\treturn direction === 'up' || direction === 'down' || direction === 'vertical';\n}\n\nexport function isHorizontalDirection(direction: SwipeDirection): direction is 'left' | 'right' | 'horizontal' {\n\treturn direction === 'left' || direction === 'right' || direction === 'horizontal';\n}","var x = y => { var x = {}; __webpack_require__.d(x, y); return x; }\nvar y = x => () => x\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"GestureTimeline\"]: () => __WEBPACK_EXTERNAL_MODULE_web_animations_extension_74b2916c__.GestureTimeline, [\"easingToLinear\"]: () => __WEBPACK_EXTERNAL_MODULE_web_animations_extension_74b2916c__.easingToLinear, [\"springToLinear\"]: () => __WEBPACK_EXTERNAL_MODULE_web_animations_extension_74b2916c__.springToLinear });","import { PlainObject } from \"@react-motion-router/core\";\n\nexport function searchParamsToObject(searchPart: string) {\n\tconst entries = new URLSearchParams(decodeURI(searchPart)).entries();\n\tconst result: PlainObject<string> = {};\n\n\tfor (const [key, value] of entries) { // each 'entry' is a [key, value] tuple\n\t\tlet parsedValue = '';\n\t\ttry {\n\t\t\tparsedValue = JSON.parse(value);\n\t\t} catch (e) {\n\t\t\tconsole.warn(\"Non JSON serialisable value was passed as URL route param.\");\n\t\t\tparsedValue = value;\n\t\t}\n\t\tresult[key] = parsedValue;\n\t}\n\treturn Object.keys(result).length ? result : undefined;\n}\n\nexport function searchParamsFromObject(params: { [key: string]: any }) {\n\ttry {\n\t\treturn new URLSearchParams(params).toString();\n\t} catch (e) {\n\t\tconsole.error(e);\n\t\tconsole.warn(\"Non JSON serialisable value was passed as query param.\");\n\t}\n\treturn '';\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}","export const DEFAULT_GESTURE_CONFIG = {\n gestureHysteresis: 0.5,\n gestureMinFlingVelocity: 400,\n gestureAreaWidth: 100,\n gestureDirection: 'right',\n disableGesture: false\n} as const;","import { RouterBase, includesRoute, isValidScreenChild, matchRoute } from '@react-motion-router/core';\nimport type { LoadEvent, NestedRouterContext, PlainObject, RouterBaseProps, RouterBaseState, ScreenChild } from '@react-motion-router/core';\nimport { Navigation } from './Navigation';\nimport { ScreenProps, Screen } from './Screen';\nimport { HistoryEntryState, isHorizontalDirection, isRefObject, SwipeDirection } from './common/types';\nimport { Children, createRef, cloneElement, startTransition } from 'react';\nimport { SwipeStartEvent, SwipeEndEvent } from 'web-gesture-events';\nimport { GestureTimeline } from 'web-animations-extension';\nimport { deepEquals, isRollback, searchParamsToObject } from './common/utils';\nimport { GestureCancelEvent, GestureEndEvent, GestureStartEvent } from './common/events';\nimport { DEFAULT_GESTURE_CONFIG } from './common/constants';\n\nexport interface RouterProps extends RouterBaseProps<Screen> {\n config: RouterBaseProps[\"config\"] & {\n screenConfig?: ScreenProps[\"config\"];\n disableBrowserRouting?: boolean;\n initialPath?: string;\n shouldIntercept?(navigateEvent: NavigateEvent): boolean;\n onIntercept?(navigateEvent: NavigateEvent): boolean;\n }\n}\n\nexport interface RouterState extends RouterBaseState {\n backNavigating: boolean;\n transition: NavigationTransition | LoadEvent[\"transition\"] | null;\n screenStack: ScreenChild<Screen>[];\n gestureDirection: SwipeDirection;\n gestureAreaWidth: number;\n gestureMinFlingVelocity: number;\n gestureHysteresis: number;\n disableGesture: boolean;\n fromKey: React.Key | null\n destinationKey: React.Key | null;\n documentTitle?: string;\n}\n\nexport class Router extends RouterBase<RouterProps, RouterState> {\n public readonly navigation = new Navigation(this);\n\n constructor(props: RouterProps, context: React.ContextType<typeof NestedRouterContext>) {\n super(props, context);\n this.state = {\n screenStack: [],\n gestureDirection: \"horizontal\",\n gestureAreaWidth: 50,\n gestureHysteresis: 0.5,\n disableGesture: true,\n gestureMinFlingVelocity: 500,\n transition: null,\n backNavigating: false,\n documentTitle: document.title,\n fromKey: null,\n destinationKey: null\n };\n }\n\n static readonly defaultProps: Partial<RouterProps> = {\n config: {\n screenConfig: {\n ...DEFAULT_GESTURE_CONFIG\n }\n }\n };\n\n static getDerivedStateFromProps(_: RouterProps, state: RouterState) {\n const config = state.screenStack.find(screen => isRefObject(screen.ref) && screen.ref.current?.focused)?.props.config;\n document.title = config?.title ?? document.title;\n return {\n gestureDirection: config?.gestureDirection ?? DEFAULT_GESTURE_CONFIG.gestureDirection,\n gestureAreaWidth: config?.gestureAreaWidth ?? DEFAULT_GESTURE_CONFIG.gestureAreaWidth,\n gestureMinFlingVelocity: config?.gestureMinFlingVelocity ?? DEFAULT_GESTURE_CONFIG.gestureMinFlingVelocity,\n gestureHysteresis: config?.gestureHysteresis ?? DEFAULT_GESTURE_CONFIG.gestureHysteresis,\n disableGesture: config?.disableGesture ?? DEFAULT_GESTURE_CONFIG.disableGesture,\n documentTitle: config?.title\n }\n }\n\n componentDidMount(): void {\n super.componentDidMount();\n this.ref.current?.addEventListener('swipestart', this.onSwipeStart);\n this.ref.current?.addEventListener('swipeend', this.onSwipeEnd);\n }\n\n shouldComponentUpdate(nextProps: Readonly<RouterProps>, nextState: Readonly<RouterState>): 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 componentWillUnmount(): void {\n this.ref.current?.removeEventListener('swipestart', this.onSwipeStart);\n this.ref.current?.removeEventListener('swipeend', this.onSwipeEnd);\n }\n\n private canGestureNavigate(e: SwipeStartEvent) {\n if (!this.ref.current) return false;\n if (this.state.disableGesture) return false;\n const clientRect = this.ref.current.getBoundingClientRect();\n const { direction } = e;\n if ((direction === \"down\" || direction === \"right\") && !this.navigation.canGoBack) return false;\n if ((direction === \"up\" || direction === \"left\") && !this.navigation.canGoForward) return false;\n if (isHorizontalDirection(direction) !== isHorizontalDirection(this.state.gestureDirection)) return false;\n if (direction === \"right\" && Math.abs(e.x - clientRect.left) >= this.state.gestureAreaWidth) return false;\n if (direction === \"left\" && Math.abs(e.x - clientRect.right) >= this.state.gestureAreaWidth) return false;\n if (direction === \"down\" && Math.abs(e.y - clientRect.top) >= this.state.gestureAreaWidth) return false;\n if (direction === \"up\" && Math.abs(e.y - clientRect.bottom) >= this.state.gestureAreaWidth) return false;\n return true;\n }\n\n private onSwipeStart = (e: SwipeStartEvent) => {\n if (!this.canGestureNavigate(e)) return;\n if (!this.ref.current || !this.screenTransitionLayer.current) return;\n const { direction } = e;\n\n let 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 source: this.ref.current,\n type: \"swipe\",\n axis,\n rangeStart,\n rangeEnd\n });\n if (direction === \"down\" || direction === \"right\")\n this.navigation.goBack();\n else\n this.navigation.goForward();\n\n this.dispatchEvent(new GestureStartEvent(e));\n }\n\n private onSwipeEnd = (e: SwipeEndEvent) => {\n if (!this.screenTransitionLayer.current) return;\n const progress = this.screenTransitionLayer.current.animation.effect?.getComputedTiming().progress ?? 0;\n const playbackRate = this.screenTransitionLayer.current.animation.playbackRate;\n this.screenTransitionLayer.current.animation.timeline = document.timeline;\n const hysteresisReached = playbackRate > 0 ? progress > this.state.gestureHysteresis : progress < this.state.gestureHysteresis;\n let rollback = false;\n if (e.velocity < this.state.gestureMinFlingVelocity && !hysteresisReached) {\n this.screenTransitionLayer.current.animation.reverse();\n rollback = true;\n this.dispatchEvent(new GestureCancelEvent());\n } else {\n this.dispatchEvent(new GestureEndEvent(e));\n }\n const { fromKey } = this.state;\n if (rollback && fromKey) {\n this.state.transition?.finished.then(() => {\n window.navigation.traverseTo(fromKey.toString(), { info: { rollback } });\n });\n }\n }\n\n protected get screens() {\n const screenStack = this.state.screenStack;\n return screenStack\n .filter((screen, index) => {\n const currentScreenRef = screen.ref ?? null;\n const nextScreenRef = screenStack.at(index + 1)?.ref;\n return (isRefObject(currentScreenRef) && currentScreenRef.current?.config.keepAlive)\n || (isRefObject(nextScreenRef) && nextScreenRef.current?.config.presentation === \"modal\")\n || (isRefObject(nextScreenRef) && 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 private screenChildFromPathname(pathname: string, key: React.Key | null, config: ScreenProps[\"config\"], params: PlainObject) {\n const screenChild = Children.toArray(this.props.children)\n .find(child => {\n if (!isValidScreenChild(child)) return;\n return matchRoute(\n child.props.path,\n pathname,\n this.baseURLPattern.pathname,\n child.props.caseSensitive\n );\n });\n\n if (!isValidScreenChild(screenChild)) return null;\n\n return cloneElement(screenChild, {\n config: {\n title: document.title,\n ...this.props.config.screenConfig,\n ...screenChild.props.config,\n ...config\n },\n defaultParams: {\n ...screenChild.props.defaultParams,\n ...params\n },\n resolvedPathname: pathname,\n key,\n ref: createRef<Screen>()\n }) as ScreenChild<Screen>;\n }\n\n private getScreenChildByPathname(pathname: string) {\n return Children.toArray(this.props.children)\n .find(child => {\n if (!isValidScreenChild(child)) return;\n return matchRoute(\n child.props.path,\n pathname,\n this.baseURLPattern.pathname,\n child.props.caseSensitive\n );\n });\n }\n\n private getScreenRefByKey(key: string) {\n const screen = this.state.screenStack.find(screen => screen.key === key)?.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 this.mounted\n && this.shouldIntercept(e)\n && includesRoute(this.pathPatterns, pathname, baseURLPattern);\n }\n\n protected shouldIntercept(e: NavigateEvent): boolean {\n if (this.props.config.shouldIntercept)\n return this.props.config.shouldIntercept(e);\n return e.canIntercept\n && !e.formData\n && !e.hashChange\n && !e.downloadRequest;\n }\n\n protected intercept(e: NavigateEvent | LoadEvent): void {\n if (this.props.config.onIntercept && e.navigationType !== \"load\")\n if (this.props.config.onIntercept(e) || e.defaultPrevented)\n 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 = new Array<ScreenChild<Screen>>();\n const entries = this.navigation.entries;\n entries.forEach((entry) => {\n if (!entry.url) return null;\n const { params, config } = entry.getState<HistoryEntryState>() ?? {};\n const queryParams = searchParamsToObject(entry.url.search);\n const screen = this.screenChildFromPathname(entry.url.pathname, entry.key, config, { ...queryParams, ...params });\n if (!screen) return null;\n screenStack.push(screen);\n });\n\n return new Promise<void>((resolve, reject) => startTransition(() => {\n this.setState({ screenStack, fromKey, transition, destinationKey }, async () => {\n const { initialPath } = this.props.config;\n const [firstEntry] = entries;\n if (\n initialPath\n && entries.length === 1\n && firstEntry.url\n && !matchRoute(\n initialPath,\n firstEntry.url.pathname,\n this.baseURLPattern.pathname\n )\n ) {\n const transitionFinished = window.navigation.transition?.finished ?? Promise.resolve();\n transitionFinished.then(() => {\n this.navigation.replace(initialPath).finished.then(() => {\n const state = 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(this.navigation.current.key);\n await this.dispatchLifecycleHandlers(currentScreen, null, signal).catch(reject);\n this.setState({ destinationKey: null, fromKey: null, transition: null }, resolve);\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 { params, config } = destination.getState() as HistoryEntryState ?? {};\n const queryParams = searchParamsToObject(new URL(destination.url).search);\n const destinationKey = window.navigation.currentEntry?.key ?? destination.key;\n const destinationScreen = this.screenChildFromPathname(destinationPathname, destinationKey, config, { ...queryParams, ...params });\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(screen => screen.key === this.navigation.current?.key);\n const backNavigating = this.state.backNavigating;\n screenStack.splice(\n currentIndex,\n 1,\n destinationScreen\n );\n\n return new Promise<void>((resolve, reject) => startTransition(() => {\n this.setState({ destinationKey, fromKey, transition, screenStack }, async () => {\n const signal = e.signal;\n const outgoingScreen = this.getScreenRefByKey(String(fromKey));\n const incomingScreen = this.getScreenRefByKey(String(destinationKey));\n const pendingLifecycleHandlers = this.dispatchLifecycleHandlers(incomingScreen, null, signal).catch(reject);\n if (isHotReplace) {\n const currentTime = this.screenTransitionLayer.current?.animation.currentTime ?? 0;\n this.screenTransitionLayer.current?.animation.cancel();\n await new Promise(requestAnimationFrame);\n const animation = this.screenTransition(incomingScreen, outgoingScreen, backNavigating);\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({ destinationKey: null, fromKey: null, transition: null }, resolve);\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 (!isValidScreenChild<Screen>(this.getScreenChildByPathname(destinationPathname)))\n return e.preventDefault();\n const handler = () => {\n const transition = window.navigation.transition;\n let fromIndex = screenStack.findIndex(screen => screen.key === transition?.from.key);\n if (fromIndex === -1 && e.navigationType === \"traverse\") {\n fromIndex = screenStack.findIndex(screen => {\n if (!transition?.from.url || !screen.props.resolvedPathname) return false;\n const pathnameMatched = transition.from.url.includes(screen.props.resolvedPathname);\n const patternMatched = matchRoute(\n screen.props.path,\n new URL(transition.from.url).pathname,\n this.baseURLPattern.pathname,\n screen.props.caseSensitive\n );\n return pathnameMatched && patternMatched;\n });\n }\n const fromKey = (screenStack[fromIndex]?.key || transition?.from.key) ?? null;\n const destinationIndex = screenStack.findIndex(screen => screen.key === e.destination.key);\n const destinationKey = (screenStack[destinationIndex]?.key || window.navigation.currentEntry?.key) ?? null;\n const backNavigating = destinationIndex >= 0 && destinationIndex < fromIndex;\n if (e.navigationType === \"push\") {\n const { params, config } = destination.getState() as HistoryEntryState ?? {};\n const destinationPathname = new URL(destination.url).pathname;\n const queryParams = searchParamsToObject(new URL(destination.url).search);\n const destinationScreen = this.screenChildFromPathname(destinationPathname, destinationKey, config, { ...queryParams, ...params });\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 return new Promise<void>((resolve, reject) => startTransition(() => {\n this.setState({ destinationKey, fromKey, transition, screenStack, backNavigating }, async () => {\n const signal = e.signal;\n const outgoingScreen = this.getScreenRefByKey(String(fromKey));\n const incomingScreen = this.getScreenRefByKey(String(destinationKey));\n const pendingLifecycleHandlers = this.dispatchLifecycleHandlers(incomingScreen, outgoingScreen, signal).catch(reject);\n if (!isRollback(e.info)) {\n const animation = this.screenTransition(incomingScreen, outgoingScreen, backNavigating);\n animation?.updatePlaybackRate(1);\n animation?.finished.catch(reject);\n }\n await pendingLifecycleHandlers;\n this.setState({ destinationKey: null, fromKey: null, transition: null }, resolve);\n });\n }));\n }\n\n e.intercept({ handler });\n }\n\n private async dispatchLifecycleHandlers(incomingScreen: React.RefObject<Screen> | null, outgoingScreen: React.RefObject<Screen> | null, signal: AbortSignal) {\n let animationStarted = false;\n this.addEventListener('transition-start', () => animationStarted = true, { once: true });\n\n await Promise.all([\n outgoingScreen?.current?.onExit(signal).then(() => outgoingScreen.current?.blur()),\n incomingScreen?.current?.onEnter(signal).then(() => incomingScreen.current?.focus()),\n incomingScreen?.current?.load(signal)\n ]);\n\n if (animationStarted)\n await new Promise((resolve) => this.addEventListener('transition-end', resolve, { once: true }));\n\n await Promise.all([\n outgoingScreen?.current?.onExited(signal),\n incomingScreen?.current?.onEntered(signal)\n ]);\n }\n\n private screenTransition(\n incomingScreen: React.RefObject<Screen> | null,\n outgoingScreen: React.RefObject<Screen> | null,\n backNavigating: boolean\n ) {\n if (this.screenTransitionLayer.current && incomingScreen && outgoingScreen) {\n this.screenTransitionLayer.current.direction = backNavigating ? 'reverse' : '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 (this.screenTransitionLayer.current.sharedElementTransitionLayer.current) {\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current.outgoingScreen = outgoingScreen;\n this.screenTransitionLayer.current.sharedElementTransitionLayer.current.incomingScreen = incomingScreen;\n }\n const topScreenIndex = this.screens.findIndex(screen => screen.ref === (backNavigating ? outgoingScreen : incomingScreen));\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 (isRefObject(screen.ref) && screen.ref.current?.transitionProvider.current) {\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}","import { useNavigationBase, 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(\"StackNavigation\");\n\treturn useNavigationBase<Navigation>();\n}\n\nexport function useRouter() {\n\tuseDebugValue(\"StackRouter\");\n\treturn useRouterBase<Router>();\n}\n\nexport function useRoute() {\n\tuseDebugValue(\"StackRoute\");\n\treturn useRouteBase<RouteProp>();\n}","import { PlainObject } from \"@react-motion-router/core\";\nimport { Navigation } from \"./Navigation\";\nimport { NavigateOptions, XOR } from \"./common/types\";\nimport { useState, useEffect } from \"react\";\nimport { useNavigation } from \"./common/hooks\";\nimport { searchParamsFromObject } from \"./common/utils\";\n\ninterface BaseAnchorProps extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n navigation?: Navigation;\n}\n\ninterface ForwardAnchorProps extends BaseAnchorProps {\n params?: PlainObject<string | boolean | number>;\n href: string;\n type?: NavigateOptions[\"type\"];\n preload?: boolean;\n}\n\ninterface BackAnchorProps extends BaseAnchorProps {\n goBack: boolean;\n}\n\ntype AnchorProps = XOR<ForwardAnchorProps, BackAnchorProps>;\n\nfunction useNavigationOrDefault(navigation?: Navigation) {\n const defaultNavigation = useNavigation();\n return navigation ?? defaultNavigation;\n}\n\nexport function Anchor(props: AnchorProps) {\n const {\n preload,\n goBack,\n params = {},\n type = \"push\",\n href: hrefProp,\n onClick: onClickProp,\n ...aProps\n } = props;\n const navigation = useNavigationOrDefault(props.navigation);\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 (!preload || !href) return;\n navigation.preloadRoute(hrefProp);\n }, [preload, hrefProp]);\n\n useEffect(() => {\n if (goBack) {\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]);\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 return (\n <a\n href={href}\n data-router-id={routerId}\n onClick={onClick}\n rel={rel}\n {...aProps}\n >\n {props.children}\n </a>\n );\n}","export const SlideInFromRightKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(100vw)',\n\t},\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t}\n];\n\nexport const iOSSlideInFromRightKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(100vw)',\n\t},\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t}\n];\n\nexport const SlideOutToLeftKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(-50vw)'\n\t}\n];\n\nexport const iOSSlideOutToLeftKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(0vw)',\n\t},\n\t{\n\t\ttransform: 'translateX(calc(100vw * -0.3))'\n\t}\n];\n\nexport const SlideInFromLeftKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(-100vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t}\n];\n\nexport const iOSSlideInFromLeftKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(-100vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t}\n];\n\nexport const SlideOutToRightKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(50vw)'\n\t}\n];\n\nexport const iOSSlideOutToRightKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateX(0vw)'\n\t},\n\t{\n\t\ttransform: 'translateX(calc(100vw * 0.3))'\n\t}\n];\n\nexport const SlideInFromBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(100vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const iOSSlideInFromBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(100vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const SlideOutToTopKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(-50vh)'\n\t}\n];\n\nexport const SlideInFromTopKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(-100vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const SlideOutToBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(50vh)'\n\t}\n];\n\nexport const ZoomInKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'scale(0.85)',\n\t\topacity: 0\n\t},\n\t{\n\t\ttransform: 'scale(1)',\n\t\topacity: 1\n\t}\n];\n\nexport const ZoomOutKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'scale(1)',\n\t\topacity: 1\n\t},\n\t{\n\t\ttransform: 'scale(1.15)',\n\t\topacity: 0\n\t}\n];\n\nexport const FadeInKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 0\n\t},\n\t{\n\t\topacity: 1\n\t}\n];\n\nexport const FadeOutKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 1\n\t},\n\t{\n\t\topacity: 0\n\t}\n];\n\nexport const androidFadeInFromBottomKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 0,\n\t\ttransform: 'translateY(calc(100vh * 0.08))'\n\t},\n\t{\n\t\topacity: 0.25,\n\t\toffset: 0.5\n\t},\n\t{\n\t\topacity: 0.7,\n\t\toffset: 0.9\n\t},\n\t{\n\t\topacity: 1,\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const androidFadeInFromRightKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 0,\n\t\ttransform: 'translateY(96vw)'\n\t},\n\t{\n\t\topacity: 1,\n\t\ttransform: 'translateY(0vw)'\n\t}\n];\n\nexport const androidFadeOutToLeftKeyframes: Keyframe[] = [\n\t{\n\t\topacity: 0,\n\t\ttransform: 'translateY(0vw)'\n\t},\n\t{\n\t\topacity: 1,\n\t\ttransform: 'translateY(-96vw)'\n\t}\n];\n\nexport const androidRevealFromBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(100vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t}\n];\n\nexport const androidConcealToBottomKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(0vh)'\n\t},\n\t{\n\t\ttransform: 'translateY(-2vh)'\n\t}\n];\n\nexport const androidScaleFromCentreKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'scale(0.85)',\n\t\topacity: 0\n\t},\n\t{\n\t\topacity: 0,\n\t\toffset: 0.75\n\t},\n\t{\n\t\topacity: 1,\n\t\toffset: 0.875\n\t},\n\t{\n\t\ttransform: 'scale(1)',\n\t\topacity: 1\n\t}\n];\n\nexport const androidScaleToCentreKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'scale(1)',\n\t\topacity: 1\n\t},\n\t{\n\t\topacity: 1,\n\t\toffset: 0.0825\n\t},\n\t{\n\t\topacity: 1,\n\t\toffset: 0.2075\n\t},\n\t{\n\t\ttransform: 'scale(1.075)',\n\t\topacity: 0\n\t}\n];\n\nexport const androidFadeInFromBottomSheetKeyframes: Keyframe[] = [\n\t{\n\t\ttransform: 'translateY(calc(100vh * 0.8))',\n\t\topacity: 0\n\t},\n\t{\n\t\ttransform: 'translateY(0vh)',\n\t\topacity: 1\n\t}\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\tandroidBottomSheetSlideInOptions,\n\tandroidBottomSheetSlideOutOptions,\n\tandroidFadeInFromBottomOptions,\n\tandroidFadeOutToBottomOptions,\n\tandroidRevealFromBottomOptions,\n\tandroidScaleFromCentreOptions,\n\tiOSKeyframeOptions\n} from \"./keyframe-options-presets\";\nimport {\n\tandroidConcealToBottomKeyframes,\n\tandroidFadeInFromBottomKeyframes,\n\tandroidFadeInFromBottomSheetKeyframes,\n\tandroidFadeInFromRightKeyframes,\n\tandroidFadeOutToLeftKeyframes,\n\tandroidRevealFromBottomKeyframes,\n\tandroidScaleFromCentreKeyframes,\n\tandroidScaleToCentreKeyframes,\n\tiOSSlideInFromBottomKeyframes,\n\tiOSSlideInFromLeftKeyframes,\n\tiOSSlideInFromRightKeyframes,\n\tiOSSlideOutToLeftKeyframes,\n\tiOSSlideOutToRightKeyframes,\n} from \"./keyframe-presets\";\n\nexport function iOSSlideInFromRight({ ref, direction, playbackRate, index }: AnimationEffectFactoryProps) {\n\tconst keyframesPresets = [\n\t\tiOSSlideOutToLeftKeyframes,\n\t\tiOSSlideInFromRightKeyframes\n\t];\n\n\tlet keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...iOSKeyframeOptions\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function iOSSlideInFromLeft({ ref, direction, playbackRate, index }: AnimationEffectFactoryProps) {\n\tconst keyframesPresets = [\n\t\tiOSSlideOutToRightKeyframes,\n\t\tiOSSlideInFromLeftKeyframes\n\t];\n\n\tlet keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...iOSKeyframeOptions\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function iOSSlideInFromBottom({ ref, direction, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframes = iOSSlideInFromBottomKeyframes;\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...iOSKeyframeOptions\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromBottom({ ref, direction, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframes = androidFadeInFromBottomKeyframes;\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...androidFadeInFromBottomOptions\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromBottomSheet({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframes = androidFadeInFromBottomSheetKeyframes;\n\tlet timing;\n\tif (index === 0)\n\t\ttiming = androidBottomSheetSlideOutOptions;\n\telse\n\t\ttiming = androidBottomSheetSlideInOptions;\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...timing\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidRevealFromBottom({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframesPresets = [\n\t\tandroidConcealToBottomKeyframes,\n\t\tandroidRevealFromBottomKeyframes\n\t];\n\n\tconst keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tdirection,\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...androidRevealFromBottomOptions\n\t};\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidFadeInFromRight({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframesPresets = [\n\t\tandroidFadeOutToLeftKeyframes,\n\t\tandroidFadeInFromRightKeyframes\n\t];\n\tlet timing;\n\tif (index === 0)\n\t\ttiming = androidFadeOutToBottomOptions;\n\telse\n\t\ttiming = androidFadeInFromBottomOptions;\n\n\tlet keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...timing\n\t};\n\n\tif (direction === \"reverse\")\n\t\tkeyframes = keyframes.toReversed();\n\n\treturn new KeyframeEffect(ref, keyframes, options);\n}\n\nexport function androidScaleFromCentre({ ref, direction, index, playbackRate }: AnimationEffectFactoryProps) {\n\tlet keyframesPresets = [\n\t\tandroidScaleToCentreKeyframes,\n\t\tandroidScaleFromCentreKeyframes\n\t];\n\n\tconst keyframes = keyframesPresets[index];\n\tconst options: KeyframeEffectOptions = {\n\t\tdirection,\n\t\tplaybackRate,\n\t\tfill: \"forwards\" as const,\n\t\t...androidScaleFromCentreOptions\n\t};\n\n\treturn 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 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]);\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}","/// <reference types=\"urlpattern-polyfill\" />\nimport 'web-gesture-events';\nexport * from './Navigation';\nexport * from './Screen';\nexport * from './Router';\nexport * from './Anchor';\nexport * from './animation-configs/keyframe-presets';\nexport * from './animation-configs/keyframe-options-presets';\nexport * from './animation-configs/animation-presets';\nexport * from './common/hooks';\nexport * from './GestureRegion';"],"names":[],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-motion-router/stack",
|
|
3
|
-
"version": "2.0.0-beta.sha-
|
|
3
|
+
"version": "2.0.0-beta.sha-c42ac88",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"publishConfig": {
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
"@react-motion-router/core": "*",
|
|
29
29
|
"web-animations-extension": "*"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "c42ac8842df6b42fc07ed9faecb5c0d87cb89861"
|
|
32
32
|
}
|