@ionic/react-router 7.5.3-dev.11698858201.14165f23 → 7.5.3-dev.11699994454.1cbf1283

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.
@@ -1,250 +0,0 @@
1
- "use strict";
2
- import { LocationHistory, NavManager, RouteManagerContext, generateId, getConfig } from "@ionic/react";
3
- import React from "react";
4
- import { withRouter } from "react-router-dom";
5
- import { IonRouteInner } from "./IonRouteInner";
6
- import { ReactRouterViewStack } from "./ReactRouterViewStack";
7
- import StackManager from "./StackManager";
8
- class IonRouterInner extends React.PureComponent {
9
- constructor(props) {
10
- super(props);
11
- this.exitViewFromOtherOutletHandlers = [];
12
- this.locationHistory = new LocationHistory();
13
- this.viewStack = new ReactRouterViewStack();
14
- this.routeMangerContextState = {
15
- canGoBack: () => this.locationHistory.canGoBack(),
16
- clearOutlet: this.viewStack.clear,
17
- findViewItemByPathname: this.viewStack.findViewItemByPathname,
18
- getChildrenToRender: this.viewStack.getChildrenToRender,
19
- goBack: () => this.handleNavigateBack(),
20
- createViewItem: this.viewStack.createViewItem,
21
- findViewItemByRouteInfo: this.viewStack.findViewItemByRouteInfo,
22
- findLeavingViewItemByRouteInfo: this.viewStack.findLeavingViewItemByRouteInfo,
23
- addViewItem: this.viewStack.add,
24
- unMountViewItem: this.viewStack.remove
25
- };
26
- const routeInfo = {
27
- id: generateId("routeInfo"),
28
- pathname: this.props.location.pathname,
29
- search: this.props.location.search
30
- };
31
- this.locationHistory.add(routeInfo);
32
- this.handleChangeTab = this.handleChangeTab.bind(this);
33
- this.handleResetTab = this.handleResetTab.bind(this);
34
- this.handleNativeBack = this.handleNativeBack.bind(this);
35
- this.handleNavigate = this.handleNavigate.bind(this);
36
- this.handleNavigateBack = this.handleNavigateBack.bind(this);
37
- this.props.registerHistoryListener(this.handleHistoryChange.bind(this));
38
- this.handleSetCurrentTab = this.handleSetCurrentTab.bind(this);
39
- this.state = {
40
- routeInfo
41
- };
42
- }
43
- handleChangeTab(tab, path, routeOptions) {
44
- if (!path) {
45
- return;
46
- }
47
- const routeInfo = this.locationHistory.getCurrentRouteInfoForTab(tab);
48
- const [pathname, search] = path.split("?");
49
- if (routeInfo) {
50
- this.incomingRouteParams = { ...routeInfo, routeAction: "push", routeDirection: "none" };
51
- if (routeInfo.pathname === pathname) {
52
- this.incomingRouteParams.routeOptions = routeOptions;
53
- this.props.history.push(routeInfo.pathname + (routeInfo.search || ""));
54
- } else {
55
- this.incomingRouteParams.pathname = pathname;
56
- this.incomingRouteParams.search = search ? "?" + search : void 0;
57
- this.incomingRouteParams.routeOptions = routeOptions;
58
- this.props.history.push(pathname + (search ? "?" + search : ""));
59
- }
60
- } else {
61
- this.handleNavigate(pathname, "push", "none", void 0, routeOptions, tab);
62
- }
63
- }
64
- handleHistoryChange(location, action) {
65
- let leavingLocationInfo;
66
- if (this.incomingRouteParams) {
67
- if (this.incomingRouteParams.routeAction === "replace") {
68
- leavingLocationInfo = this.locationHistory.previous();
69
- } else {
70
- leavingLocationInfo = this.locationHistory.current();
71
- }
72
- } else {
73
- leavingLocationInfo = this.locationHistory.current();
74
- }
75
- const leavingUrl = leavingLocationInfo.pathname + leavingLocationInfo.search;
76
- if (leavingUrl !== location.pathname) {
77
- if (!this.incomingRouteParams) {
78
- if (action === "REPLACE") {
79
- this.incomingRouteParams = {
80
- routeAction: "replace",
81
- routeDirection: "none",
82
- tab: this.currentTab
83
- };
84
- }
85
- if (action === "POP") {
86
- const currentRoute = this.locationHistory.current();
87
- if (currentRoute && currentRoute.pushedByRoute) {
88
- const prevInfo = this.locationHistory.findLastLocation(currentRoute);
89
- this.incomingRouteParams = { ...prevInfo, routeAction: "pop", routeDirection: "back" };
90
- } else {
91
- this.incomingRouteParams = {
92
- routeAction: "pop",
93
- routeDirection: "none",
94
- tab: this.currentTab
95
- };
96
- }
97
- }
98
- if (!this.incomingRouteParams) {
99
- this.incomingRouteParams = {
100
- routeAction: "push",
101
- routeDirection: location.state?.direction || "forward",
102
- routeOptions: location.state?.routerOptions,
103
- tab: this.currentTab
104
- };
105
- }
106
- }
107
- let routeInfo;
108
- if (this.incomingRouteParams?.id) {
109
- routeInfo = {
110
- ...this.incomingRouteParams,
111
- lastPathname: leavingLocationInfo.pathname
112
- };
113
- this.locationHistory.add(routeInfo);
114
- } else {
115
- const isPushed = this.incomingRouteParams.routeAction === "push" && this.incomingRouteParams.routeDirection === "forward";
116
- routeInfo = {
117
- id: generateId("routeInfo"),
118
- ...this.incomingRouteParams,
119
- lastPathname: leavingLocationInfo.pathname,
120
- pathname: location.pathname,
121
- search: location.search,
122
- params: this.props.match.params,
123
- prevRouteLastPathname: leavingLocationInfo.lastPathname
124
- };
125
- if (isPushed) {
126
- routeInfo.tab = leavingLocationInfo.tab;
127
- routeInfo.pushedByRoute = leavingLocationInfo.pathname;
128
- } else if (routeInfo.routeAction === "pop") {
129
- const r = this.locationHistory.findLastLocation(routeInfo);
130
- routeInfo.pushedByRoute = r?.pushedByRoute;
131
- } else if (routeInfo.routeAction === "push" && routeInfo.tab !== leavingLocationInfo.tab) {
132
- const lastRoute = this.locationHistory.getCurrentRouteInfoForTab(routeInfo.tab);
133
- routeInfo.pushedByRoute = lastRoute?.pushedByRoute;
134
- } else if (routeInfo.routeAction === "replace") {
135
- const currentRouteInfo = this.locationHistory.current();
136
- const currentPushedBy = currentRouteInfo?.pushedByRoute;
137
- const pushedByRoute = currentPushedBy !== void 0 && currentPushedBy !== routeInfo.pathname ? currentPushedBy : routeInfo.pushedByRoute;
138
- routeInfo.lastPathname = currentRouteInfo?.pathname || routeInfo.lastPathname;
139
- routeInfo.prevRouteLastPathname = currentRouteInfo?.lastPathname;
140
- routeInfo.pushedByRoute = pushedByRoute;
141
- routeInfo.routeDirection = currentRouteInfo?.routeDirection || routeInfo.routeDirection;
142
- routeInfo.routeAnimation = currentRouteInfo?.routeAnimation || routeInfo.routeAnimation;
143
- }
144
- this.locationHistory.add(routeInfo);
145
- }
146
- this.setState({
147
- routeInfo
148
- });
149
- }
150
- this.incomingRouteParams = void 0;
151
- }
152
- /**
153
- * history@4.x uses goBack(), history@5.x uses back()
154
- * TODO: If support for React Router <=5 is dropped
155
- * this logic is no longer needed. We can just
156
- * assume back() is available.
157
- */
158
- handleNativeBack() {
159
- const history = this.props.history;
160
- const goBack = history.goBack || history.back;
161
- goBack();
162
- }
163
- handleNavigate(path, routeAction, routeDirection, routeAnimation, routeOptions, tab) {
164
- this.incomingRouteParams = Object.assign(this.incomingRouteParams || {}, {
165
- routeAction,
166
- routeDirection,
167
- routeOptions,
168
- routeAnimation,
169
- tab
170
- });
171
- if (routeAction === "push") {
172
- this.props.history.push(path);
173
- } else {
174
- this.props.history.replace(path);
175
- }
176
- }
177
- handleNavigateBack(defaultHref = "/", routeAnimation) {
178
- const config = getConfig();
179
- defaultHref = defaultHref ? defaultHref : config && config.get("backButtonDefaultHref");
180
- const routeInfo = this.locationHistory.current();
181
- if (routeInfo && routeInfo.pushedByRoute) {
182
- const prevInfo = this.locationHistory.findLastLocation(routeInfo);
183
- if (prevInfo) {
184
- this.incomingRouteParams = {
185
- ...prevInfo,
186
- routeAction: "pop",
187
- routeDirection: "back",
188
- routeAnimation: routeAnimation || routeInfo.routeAnimation
189
- };
190
- if (routeInfo.lastPathname === routeInfo.pushedByRoute || /**
191
- * We need to exclude tab switches/tab
192
- * context changes here because tabbed
193
- * navigation is not linear, but router.back()
194
- * will go back in a linear fashion.
195
- */
196
- prevInfo.pathname === routeInfo.pushedByRoute && routeInfo.tab === "" && prevInfo.tab === "") {
197
- const history = this.props.history;
198
- const goBack = history.goBack || history.back;
199
- goBack();
200
- } else {
201
- this.handleNavigate(prevInfo.pathname + (prevInfo.search || ""), "pop", "back", routeAnimation);
202
- }
203
- } else {
204
- this.handleNavigate(defaultHref, "pop", "back", routeAnimation);
205
- }
206
- } else {
207
- this.handleNavigate(defaultHref, "pop", "back", routeAnimation);
208
- }
209
- }
210
- handleResetTab(tab, originalHref, originalRouteOptions) {
211
- const routeInfo = this.locationHistory.getFirstRouteInfoForTab(tab);
212
- if (routeInfo) {
213
- const newRouteInfo = { ...routeInfo };
214
- newRouteInfo.pathname = originalHref;
215
- newRouteInfo.routeOptions = originalRouteOptions;
216
- this.incomingRouteParams = { ...newRouteInfo, routeAction: "pop", routeDirection: "back" };
217
- this.props.history.push(newRouteInfo.pathname + (newRouteInfo.search || ""));
218
- }
219
- }
220
- handleSetCurrentTab(tab) {
221
- this.currentTab = tab;
222
- const ri = { ...this.locationHistory.current() };
223
- if (ri.tab !== tab) {
224
- ri.tab = tab;
225
- this.locationHistory.update(ri);
226
- }
227
- }
228
- render() {
229
- return /* @__PURE__ */ React.createElement(RouteManagerContext.Provider, { value: this.routeMangerContextState }, /* @__PURE__ */ React.createElement(
230
- NavManager,
231
- {
232
- ionRoute: IonRouteInner,
233
- ionRedirect: {},
234
- stackManager: StackManager,
235
- routeInfo: this.state.routeInfo,
236
- onNativeBack: this.handleNativeBack,
237
- onNavigateBack: this.handleNavigateBack,
238
- onNavigate: this.handleNavigate,
239
- onSetCurrentTab: this.handleSetCurrentTab,
240
- onChangeTab: this.handleChangeTab,
241
- onResetTab: this.handleResetTab,
242
- locationHistory: this.locationHistory
243
- },
244
- this.props.children
245
- ));
246
- }
247
- }
248
- export const IonRouter = withRouter(IonRouterInner);
249
- IonRouter.displayName = "IonRouter";
250
- //# sourceMappingURL=IonRouter.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/ReactRouter/IonRouter.tsx"],
4
- "sourcesContent": ["import type {\n AnimationBuilder,\n RouteAction,\n RouteInfo,\n RouteManagerContextState,\n RouterDirection,\n ViewItem,\n} from '@ionic/react';\nimport { LocationHistory, NavManager, RouteManagerContext, generateId, getConfig } from '@ionic/react';\nimport type { Action as HistoryAction, Location as HistoryLocation } from 'history';\nimport React from 'react';\nimport type { RouteComponentProps } from 'react-router-dom';\nimport { withRouter } from 'react-router-dom';\n\nimport { IonRouteInner } from './IonRouteInner';\nimport { ReactRouterViewStack } from './ReactRouterViewStack';\nimport StackManager from './StackManager';\n\nexport interface LocationState {\n direction?: RouterDirection;\n routerOptions?: { as?: string; unmount?: boolean };\n}\n\ninterface IonRouteProps extends RouteComponentProps<{}, {}, LocationState> {\n registerHistoryListener: (cb: (location: HistoryLocation<any>, action: HistoryAction) => void) => void;\n}\n\ninterface IonRouteState {\n routeInfo: RouteInfo;\n}\n\nclass IonRouterInner extends React.PureComponent<IonRouteProps, IonRouteState> {\n currentTab?: string;\n exitViewFromOtherOutletHandlers: ((pathname: string) => ViewItem | undefined)[] = [];\n incomingRouteParams?: Partial<RouteInfo>;\n locationHistory = new LocationHistory();\n viewStack = new ReactRouterViewStack();\n routeMangerContextState: RouteManagerContextState = {\n canGoBack: () => this.locationHistory.canGoBack(),\n clearOutlet: this.viewStack.clear,\n findViewItemByPathname: this.viewStack.findViewItemByPathname,\n getChildrenToRender: this.viewStack.getChildrenToRender,\n goBack: () => this.handleNavigateBack(),\n createViewItem: this.viewStack.createViewItem,\n findViewItemByRouteInfo: this.viewStack.findViewItemByRouteInfo,\n findLeavingViewItemByRouteInfo: this.viewStack.findLeavingViewItemByRouteInfo,\n addViewItem: this.viewStack.add,\n unMountViewItem: this.viewStack.remove,\n };\n\n constructor(props: IonRouteProps) {\n super(props);\n\n const routeInfo = {\n id: generateId('routeInfo'),\n pathname: this.props.location.pathname,\n search: this.props.location.search,\n };\n\n this.locationHistory.add(routeInfo);\n this.handleChangeTab = this.handleChangeTab.bind(this);\n this.handleResetTab = this.handleResetTab.bind(this);\n this.handleNativeBack = this.handleNativeBack.bind(this);\n this.handleNavigate = this.handleNavigate.bind(this);\n this.handleNavigateBack = this.handleNavigateBack.bind(this);\n this.props.registerHistoryListener(this.handleHistoryChange.bind(this));\n this.handleSetCurrentTab = this.handleSetCurrentTab.bind(this);\n\n this.state = {\n routeInfo,\n };\n }\n\n handleChangeTab(tab: string, path?: string, routeOptions?: any) {\n if (!path) {\n return;\n }\n\n const routeInfo = this.locationHistory.getCurrentRouteInfoForTab(tab);\n const [pathname, search] = path.split('?');\n if (routeInfo) {\n this.incomingRouteParams = { ...routeInfo, routeAction: 'push', routeDirection: 'none' };\n if (routeInfo.pathname === pathname) {\n this.incomingRouteParams.routeOptions = routeOptions;\n this.props.history.push(routeInfo.pathname + (routeInfo.search || ''));\n } else {\n this.incomingRouteParams.pathname = pathname;\n this.incomingRouteParams.search = search ? '?' + search : undefined;\n this.incomingRouteParams.routeOptions = routeOptions;\n this.props.history.push(pathname + (search ? '?' + search : ''));\n }\n } else {\n this.handleNavigate(pathname, 'push', 'none', undefined, routeOptions, tab);\n }\n }\n\n handleHistoryChange(location: HistoryLocation<LocationState>, action: HistoryAction) {\n let leavingLocationInfo: RouteInfo;\n if (this.incomingRouteParams) {\n if (this.incomingRouteParams.routeAction === 'replace') {\n leavingLocationInfo = this.locationHistory.previous();\n } else {\n leavingLocationInfo = this.locationHistory.current();\n }\n } else {\n leavingLocationInfo = this.locationHistory.current();\n }\n\n const leavingUrl = leavingLocationInfo.pathname + leavingLocationInfo.search;\n if (leavingUrl !== location.pathname) {\n if (!this.incomingRouteParams) {\n if (action === 'REPLACE') {\n this.incomingRouteParams = {\n routeAction: 'replace',\n routeDirection: 'none',\n tab: this.currentTab,\n };\n }\n if (action === 'POP') {\n const currentRoute = this.locationHistory.current();\n if (currentRoute && currentRoute.pushedByRoute) {\n const prevInfo = this.locationHistory.findLastLocation(currentRoute);\n this.incomingRouteParams = { ...prevInfo, routeAction: 'pop', routeDirection: 'back' };\n } else {\n this.incomingRouteParams = {\n routeAction: 'pop',\n routeDirection: 'none',\n tab: this.currentTab,\n };\n }\n }\n if (!this.incomingRouteParams) {\n this.incomingRouteParams = {\n routeAction: 'push',\n routeDirection: location.state?.direction || 'forward',\n routeOptions: location.state?.routerOptions,\n tab: this.currentTab,\n };\n }\n }\n\n let routeInfo: RouteInfo;\n\n if (this.incomingRouteParams?.id) {\n routeInfo = {\n ...(this.incomingRouteParams as RouteInfo),\n lastPathname: leavingLocationInfo.pathname,\n };\n this.locationHistory.add(routeInfo);\n } else {\n const isPushed =\n this.incomingRouteParams.routeAction === 'push' && this.incomingRouteParams.routeDirection === 'forward';\n routeInfo = {\n id: generateId('routeInfo'),\n ...this.incomingRouteParams,\n lastPathname: leavingLocationInfo.pathname,\n pathname: location.pathname,\n search: location.search,\n params: this.props.match.params,\n prevRouteLastPathname: leavingLocationInfo.lastPathname,\n };\n if (isPushed) {\n routeInfo.tab = leavingLocationInfo.tab;\n routeInfo.pushedByRoute = leavingLocationInfo.pathname;\n } else if (routeInfo.routeAction === 'pop') {\n const r = this.locationHistory.findLastLocation(routeInfo);\n routeInfo.pushedByRoute = r?.pushedByRoute;\n } else if (routeInfo.routeAction === 'push' && routeInfo.tab !== leavingLocationInfo.tab) {\n // If we are switching tabs grab the last route info for the tab and use its pushedByRoute\n const lastRoute = this.locationHistory.getCurrentRouteInfoForTab(routeInfo.tab);\n routeInfo.pushedByRoute = lastRoute?.pushedByRoute;\n } else if (routeInfo.routeAction === 'replace') {\n // Make sure to set the lastPathname, etc.. to the current route so the page transitions out\n const currentRouteInfo = this.locationHistory.current();\n\n /**\n * If going from /home to /child, then replacing from\n * /child to /home, we don't want the route info to\n * say that /home was pushed by /home which is not correct.\n */\n const currentPushedBy = currentRouteInfo?.pushedByRoute;\n const pushedByRoute =\n currentPushedBy !== undefined && currentPushedBy !== routeInfo.pathname\n ? currentPushedBy\n : routeInfo.pushedByRoute;\n\n routeInfo.lastPathname = currentRouteInfo?.pathname || routeInfo.lastPathname;\n routeInfo.prevRouteLastPathname = currentRouteInfo?.lastPathname;\n routeInfo.pushedByRoute = pushedByRoute;\n routeInfo.routeDirection = currentRouteInfo?.routeDirection || routeInfo.routeDirection;\n routeInfo.routeAnimation = currentRouteInfo?.routeAnimation || routeInfo.routeAnimation;\n }\n\n this.locationHistory.add(routeInfo);\n }\n\n this.setState({\n routeInfo,\n });\n }\n\n this.incomingRouteParams = undefined;\n }\n\n /**\n * history@4.x uses goBack(), history@5.x uses back()\n * TODO: If support for React Router <=5 is dropped\n * this logic is no longer needed. We can just\n * assume back() is available.\n */\n handleNativeBack() {\n const history = this.props.history as any;\n const goBack = history.goBack || history.back;\n goBack();\n }\n\n handleNavigate(\n path: string,\n routeAction: RouteAction,\n routeDirection?: RouterDirection,\n routeAnimation?: AnimationBuilder,\n routeOptions?: any,\n tab?: string\n ) {\n this.incomingRouteParams = Object.assign(this.incomingRouteParams || {}, {\n routeAction,\n routeDirection,\n routeOptions,\n routeAnimation,\n tab,\n });\n\n if (routeAction === 'push') {\n this.props.history.push(path);\n } else {\n this.props.history.replace(path);\n }\n }\n\n handleNavigateBack(defaultHref: string | RouteInfo = '/', routeAnimation?: AnimationBuilder) {\n const config = getConfig();\n defaultHref = defaultHref ? defaultHref : config && config.get('backButtonDefaultHref' as any);\n const routeInfo = this.locationHistory.current();\n if (routeInfo && routeInfo.pushedByRoute) {\n const prevInfo = this.locationHistory.findLastLocation(routeInfo);\n if (prevInfo) {\n this.incomingRouteParams = {\n ...prevInfo,\n routeAction: 'pop',\n routeDirection: 'back',\n routeAnimation: routeAnimation || routeInfo.routeAnimation,\n };\n if (\n routeInfo.lastPathname === routeInfo.pushedByRoute ||\n /**\n * We need to exclude tab switches/tab\n * context changes here because tabbed\n * navigation is not linear, but router.back()\n * will go back in a linear fashion.\n */\n (prevInfo.pathname === routeInfo.pushedByRoute && routeInfo.tab === '' && prevInfo.tab === '')\n ) {\n /**\n * history@4.x uses goBack(), history@5.x uses back()\n * TODO: If support for React Router <=5 is dropped\n * this logic is no longer needed. We can just\n * assume back() is available.\n */\n const history = this.props.history as any;\n const goBack = history.goBack || history.back;\n goBack();\n } else {\n this.handleNavigate(prevInfo.pathname + (prevInfo.search || ''), 'pop', 'back', routeAnimation);\n }\n } else {\n this.handleNavigate(defaultHref as string, 'pop', 'back', routeAnimation);\n }\n } else {\n this.handleNavigate(defaultHref as string, 'pop', 'back', routeAnimation);\n }\n }\n\n handleResetTab(tab: string, originalHref: string, originalRouteOptions: any) {\n const routeInfo = this.locationHistory.getFirstRouteInfoForTab(tab);\n if (routeInfo) {\n const newRouteInfo = { ...routeInfo };\n newRouteInfo.pathname = originalHref;\n newRouteInfo.routeOptions = originalRouteOptions;\n this.incomingRouteParams = { ...newRouteInfo, routeAction: 'pop', routeDirection: 'back' };\n this.props.history.push(newRouteInfo.pathname + (newRouteInfo.search || ''));\n }\n }\n\n handleSetCurrentTab(tab: string) {\n this.currentTab = tab;\n const ri = { ...this.locationHistory.current() };\n if (ri.tab !== tab) {\n ri.tab = tab;\n this.locationHistory.update(ri);\n }\n }\n\n render() {\n return (\n <RouteManagerContext.Provider value={this.routeMangerContextState}>\n <NavManager\n ionRoute={IonRouteInner}\n ionRedirect={{}}\n stackManager={StackManager}\n routeInfo={this.state.routeInfo!}\n onNativeBack={this.handleNativeBack}\n onNavigateBack={this.handleNavigateBack}\n onNavigate={this.handleNavigate}\n onSetCurrentTab={this.handleSetCurrentTab}\n onChangeTab={this.handleChangeTab}\n onResetTab={this.handleResetTab}\n locationHistory={this.locationHistory}\n >\n {this.props.children}\n </NavManager>\n </RouteManagerContext.Provider>\n );\n }\n}\n\nexport const IonRouter = withRouter(IonRouterInner);\nIonRouter.displayName = 'IonRouter';\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,160 +0,0 @@
1
- "use strict";
2
- import { IonRoute, ViewLifeCycleManager, ViewStacks, generateId } from "@ionic/react";
3
- import React from "react";
4
- import { matchPath } from "react-router";
5
- export class ReactRouterViewStack extends ViewStacks {
6
- constructor() {
7
- super();
8
- this.createViewItem = this.createViewItem.bind(this);
9
- this.findViewItemByRouteInfo = this.findViewItemByRouteInfo.bind(this);
10
- this.findLeavingViewItemByRouteInfo = this.findLeavingViewItemByRouteInfo.bind(this);
11
- this.getChildrenToRender = this.getChildrenToRender.bind(this);
12
- this.findViewItemByPathname = this.findViewItemByPathname.bind(this);
13
- }
14
- createViewItem(outletId, reactElement, routeInfo, page) {
15
- const viewItem = {
16
- id: generateId("viewItem"),
17
- outletId,
18
- ionPageElement: page,
19
- reactElement,
20
- mount: true,
21
- ionRoute: false
22
- };
23
- const matchProps = {
24
- exact: reactElement.props.exact,
25
- path: reactElement.props.path || reactElement.props.from,
26
- component: reactElement.props.component
27
- };
28
- const match = matchPath(routeInfo.pathname, matchProps);
29
- if (reactElement.type === IonRoute) {
30
- viewItem.ionRoute = true;
31
- viewItem.disableIonPageManagement = reactElement.props.disableIonPageManagement;
32
- }
33
- viewItem.routeData = {
34
- match,
35
- childProps: reactElement.props
36
- };
37
- return viewItem;
38
- }
39
- getChildrenToRender(outletId, ionRouterOutlet, routeInfo) {
40
- const viewItems = this.getViewItemsForOutlet(outletId);
41
- React.Children.forEach(ionRouterOutlet.props.children, (child) => {
42
- const viewItem = viewItems.find((v) => {
43
- return matchComponent(child, v.routeData.childProps.path || v.routeData.childProps.from);
44
- });
45
- if (viewItem) {
46
- viewItem.reactElement = child;
47
- }
48
- });
49
- const children = viewItems.map((viewItem) => {
50
- let clonedChild;
51
- if (viewItem.ionRoute && !viewItem.disableIonPageManagement) {
52
- clonedChild = /* @__PURE__ */ React.createElement(
53
- ViewLifeCycleManager,
54
- {
55
- key: `view-${viewItem.id}`,
56
- mount: viewItem.mount,
57
- removeView: () => this.remove(viewItem)
58
- },
59
- React.cloneElement(viewItem.reactElement, {
60
- computedMatch: viewItem.routeData.match
61
- })
62
- );
63
- } else {
64
- const match = matchComponent(viewItem.reactElement, routeInfo.pathname);
65
- clonedChild = /* @__PURE__ */ React.createElement(
66
- ViewLifeCycleManager,
67
- {
68
- key: `view-${viewItem.id}`,
69
- mount: viewItem.mount,
70
- removeView: () => this.remove(viewItem)
71
- },
72
- React.cloneElement(viewItem.reactElement, {
73
- computedMatch: viewItem.routeData.match
74
- })
75
- );
76
- if (!match && viewItem.routeData.match) {
77
- viewItem.routeData.match = void 0;
78
- viewItem.mount = false;
79
- }
80
- }
81
- return clonedChild;
82
- });
83
- return children;
84
- }
85
- findViewItemByRouteInfo(routeInfo, outletId, updateMatch) {
86
- const { viewItem, match } = this.findViewItemByPath(routeInfo.pathname, outletId);
87
- const shouldUpdateMatch = updateMatch === void 0 || updateMatch === true;
88
- if (shouldUpdateMatch && viewItem && match) {
89
- viewItem.routeData.match = match;
90
- }
91
- return viewItem;
92
- }
93
- findLeavingViewItemByRouteInfo(routeInfo, outletId, mustBeIonRoute = true) {
94
- const { viewItem } = this.findViewItemByPath(routeInfo.lastPathname, outletId, false, mustBeIonRoute);
95
- return viewItem;
96
- }
97
- findViewItemByPathname(pathname, outletId) {
98
- const { viewItem } = this.findViewItemByPath(pathname, outletId);
99
- return viewItem;
100
- }
101
- findViewItemByPath(pathname, outletId, forceExact, mustBeIonRoute) {
102
- let viewItem;
103
- let match;
104
- let viewStack;
105
- if (outletId) {
106
- viewStack = this.getViewItemsForOutlet(outletId);
107
- viewStack.some(matchView);
108
- if (!viewItem) {
109
- viewStack.some(matchDefaultRoute);
110
- }
111
- } else {
112
- const viewItems = this.getAllViewItems();
113
- viewItems.some(matchView);
114
- if (!viewItem) {
115
- viewItems.some(matchDefaultRoute);
116
- }
117
- }
118
- return { viewItem, match };
119
- function matchView(v) {
120
- if (mustBeIonRoute && !v.ionRoute) {
121
- return false;
122
- }
123
- const matchProps = {
124
- exact: forceExact ? true : v.routeData.childProps.exact,
125
- path: v.routeData.childProps.path || v.routeData.childProps.from,
126
- component: v.routeData.childProps.component
127
- };
128
- const myMatch = matchPath(pathname, matchProps);
129
- if (myMatch) {
130
- viewItem = v;
131
- match = myMatch;
132
- return true;
133
- }
134
- return false;
135
- }
136
- function matchDefaultRoute(v) {
137
- if (!v.routeData.childProps.path && !v.routeData.childProps.from) {
138
- match = {
139
- path: pathname,
140
- url: pathname,
141
- isExact: true,
142
- params: {}
143
- };
144
- viewItem = v;
145
- return true;
146
- }
147
- return false;
148
- }
149
- }
150
- }
151
- function matchComponent(node, pathname, forceExact) {
152
- const matchProps = {
153
- exact: forceExact ? true : node.props.exact,
154
- path: node.props.path || node.props.from,
155
- component: node.props.component
156
- };
157
- const match = matchPath(pathname, matchProps);
158
- return match;
159
- }
160
- //# sourceMappingURL=ReactRouterViewStack.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/ReactRouter/ReactRouterViewStack.tsx"],
4
- "sourcesContent": ["import type { RouteInfo, ViewItem } from '@ionic/react';\nimport { IonRoute, ViewLifeCycleManager, ViewStacks, generateId } from '@ionic/react';\nimport React from 'react';\nimport { matchPath } from 'react-router';\n\nexport class ReactRouterViewStack extends ViewStacks {\n constructor() {\n super();\n this.createViewItem = this.createViewItem.bind(this);\n this.findViewItemByRouteInfo = this.findViewItemByRouteInfo.bind(this);\n this.findLeavingViewItemByRouteInfo = this.findLeavingViewItemByRouteInfo.bind(this);\n this.getChildrenToRender = this.getChildrenToRender.bind(this);\n this.findViewItemByPathname = this.findViewItemByPathname.bind(this);\n }\n\n createViewItem(outletId: string, reactElement: React.ReactElement, routeInfo: RouteInfo, page?: HTMLElement) {\n const viewItem: ViewItem = {\n id: generateId('viewItem'),\n outletId,\n ionPageElement: page,\n reactElement,\n mount: true,\n ionRoute: false,\n };\n\n const matchProps = {\n exact: reactElement.props.exact,\n path: reactElement.props.path || reactElement.props.from,\n component: reactElement.props.component,\n };\n\n const match = matchPath(routeInfo.pathname, matchProps);\n\n if (reactElement.type === IonRoute) {\n viewItem.ionRoute = true;\n viewItem.disableIonPageManagement = reactElement.props.disableIonPageManagement;\n }\n\n viewItem.routeData = {\n match,\n childProps: reactElement.props,\n };\n\n return viewItem;\n }\n\n getChildrenToRender(outletId: string, ionRouterOutlet: React.ReactElement, routeInfo: RouteInfo) {\n const viewItems = this.getViewItemsForOutlet(outletId);\n\n // Sync latest routes with viewItems\n React.Children.forEach(ionRouterOutlet.props.children, (child: React.ReactElement) => {\n const viewItem = viewItems.find((v) => {\n return matchComponent(child, v.routeData.childProps.path || v.routeData.childProps.from);\n });\n if (viewItem) {\n viewItem.reactElement = child;\n }\n });\n\n const children = viewItems.map((viewItem) => {\n let clonedChild;\n if (viewItem.ionRoute && !viewItem.disableIonPageManagement) {\n clonedChild = (\n <ViewLifeCycleManager\n key={`view-${viewItem.id}`}\n mount={viewItem.mount}\n removeView={() => this.remove(viewItem)}\n >\n {React.cloneElement(viewItem.reactElement, {\n computedMatch: viewItem.routeData.match,\n })}\n </ViewLifeCycleManager>\n );\n } else {\n const match = matchComponent(viewItem.reactElement, routeInfo.pathname);\n clonedChild = (\n <ViewLifeCycleManager\n key={`view-${viewItem.id}`}\n mount={viewItem.mount}\n removeView={() => this.remove(viewItem)}\n >\n {React.cloneElement(viewItem.reactElement, {\n computedMatch: viewItem.routeData.match,\n })}\n </ViewLifeCycleManager>\n );\n\n if (!match && viewItem.routeData.match) {\n viewItem.routeData.match = undefined;\n viewItem.mount = false;\n }\n }\n\n return clonedChild;\n });\n return children;\n }\n\n findViewItemByRouteInfo(routeInfo: RouteInfo, outletId?: string, updateMatch?: boolean) {\n const { viewItem, match } = this.findViewItemByPath(routeInfo.pathname, outletId);\n const shouldUpdateMatch = updateMatch === undefined || updateMatch === true;\n if (shouldUpdateMatch && viewItem && match) {\n viewItem.routeData.match = match;\n }\n return viewItem;\n }\n\n findLeavingViewItemByRouteInfo(routeInfo: RouteInfo, outletId?: string, mustBeIonRoute = true) {\n const { viewItem } = this.findViewItemByPath(routeInfo.lastPathname!, outletId, false, mustBeIonRoute);\n return viewItem;\n }\n\n findViewItemByPathname(pathname: string, outletId?: string) {\n const { viewItem } = this.findViewItemByPath(pathname, outletId);\n return viewItem;\n }\n\n private findViewItemByPath(pathname: string, outletId?: string, forceExact?: boolean, mustBeIonRoute?: boolean) {\n let viewItem: ViewItem | undefined;\n let match: ReturnType<typeof matchPath> | undefined;\n let viewStack: ViewItem[];\n\n if (outletId) {\n viewStack = this.getViewItemsForOutlet(outletId);\n viewStack.some(matchView);\n if (!viewItem) {\n viewStack.some(matchDefaultRoute);\n }\n } else {\n const viewItems = this.getAllViewItems();\n viewItems.some(matchView);\n if (!viewItem) {\n viewItems.some(matchDefaultRoute);\n }\n }\n\n return { viewItem, match };\n\n function matchView(v: ViewItem) {\n if (mustBeIonRoute && !v.ionRoute) {\n return false;\n }\n const matchProps = {\n exact: forceExact ? true : v.routeData.childProps.exact,\n path: v.routeData.childProps.path || v.routeData.childProps.from,\n component: v.routeData.childProps.component,\n };\n const myMatch = matchPath(pathname, matchProps);\n if (myMatch) {\n viewItem = v;\n match = myMatch;\n return true;\n }\n return false;\n }\n\n function matchDefaultRoute(v: ViewItem) {\n // try to find a route that doesn't have a path or from prop, that will be our default route\n if (!v.routeData.childProps.path && !v.routeData.childProps.from) {\n match = {\n path: pathname,\n url: pathname,\n isExact: true,\n params: {},\n };\n viewItem = v;\n return true;\n }\n return false;\n }\n }\n}\n\nfunction matchComponent(node: React.ReactElement, pathname: string, forceExact?: boolean) {\n const matchProps = {\n exact: forceExact ? true : node.props.exact,\n path: node.props.path || node.props.from,\n component: node.props.component,\n };\n const match = matchPath(pathname, matchProps);\n\n return match;\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }