@ionic/react-router 8.8.17-nightly.20260803 → 8.8.17-nightly.20260805
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/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -637,10 +637,15 @@ class IonRouterInner extends React.PureComponent {
|
|
|
637
637
|
this.props.history.push(routeInfo.pathname + (routeInfo.search || ''));
|
|
638
638
|
}
|
|
639
639
|
else {
|
|
640
|
+
/**
|
|
641
|
+
* The recorded search has to match the URL we push, otherwise
|
|
642
|
+
* handleHistoryChange sees a URL change where there is none.
|
|
643
|
+
*/
|
|
644
|
+
const normalizedSearch = search ? '?' + search : '';
|
|
640
645
|
this.incomingRouteParams.pathname = pathname;
|
|
641
|
-
this.incomingRouteParams.search =
|
|
646
|
+
this.incomingRouteParams.search = normalizedSearch;
|
|
642
647
|
this.incomingRouteParams.routeOptions = routeOptions;
|
|
643
|
-
this.props.history.push(pathname +
|
|
648
|
+
this.props.history.push(pathname + normalizedSearch);
|
|
644
649
|
}
|
|
645
650
|
}
|
|
646
651
|
else {
|
|
@@ -662,7 +667,8 @@ class IonRouterInner extends React.PureComponent {
|
|
|
662
667
|
leavingLocationInfo = this.locationHistory.current();
|
|
663
668
|
}
|
|
664
669
|
const leavingUrl = leavingLocationInfo.pathname + leavingLocationInfo.search;
|
|
665
|
-
|
|
670
|
+
const currentUrl = location.pathname + (location.search || '');
|
|
671
|
+
if (leavingUrl !== currentUrl) {
|
|
666
672
|
if (!this.incomingRouteParams) {
|
|
667
673
|
if (action === 'REPLACE') {
|
|
668
674
|
this.incomingRouteParams = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/ReactRouter/IonRouteInner.tsx","../src/ReactRouter/utils/matchPath.ts","../src/ReactRouter/ReactRouterViewStack.tsx","../src/ReactRouter/clonePageElement.ts","../src/ReactRouter/StackManager.tsx","../src/ReactRouter/IonRouter.tsx","../src/ReactRouter/IonReactRouter.tsx","../src/ReactRouter/IonReactMemoryRouter.tsx","../src/ReactRouter/IonReactHashRouter.tsx"],"sourcesContent":["import type { IonRouteProps } from '@ionic/react';\nimport React from 'react';\nimport { Route } from 'react-router';\n\nexport class IonRouteInner extends React.PureComponent<IonRouteProps> {\n render() {\n return (\n <Route\n path={this.props.path}\n exact={this.props.exact}\n render={this.props.render}\n {\n /**\n * `computedMatch` is a private API in react-router v5 that\n * has been removed in v6.\n *\n * This needs to be removed when we support v6.\n *\n * TODO: FW-647\n */\n ...((this.props as any).computedMatch !== undefined\n ? {\n computedMatch: (this.props as any).computedMatch,\n }\n : {})\n }\n />\n );\n }\n}\n","import { matchPath as reactRouterMatchPath } from 'react-router';\n\ninterface MatchPathOptions {\n /**\n * The pathname to match against.\n */\n pathname: string;\n /**\n * The props to match against, they are identical to the matching props `Route` accepts.\n */\n componentProps: {\n path?: string;\n from?: string;\n component?: any;\n exact?: boolean;\n };\n}\n\n/**\n * @see https://v5.reactrouter.com/web/api/matchPath\n */\nexport const matchPath = ({\n pathname,\n componentProps,\n}: MatchPathOptions): false | ReturnType<typeof reactRouterMatchPath> => {\n const { exact, component } = componentProps;\n\n const path = componentProps.path || componentProps.from;\n /***\n * The props to match against, they are identical\n * to the matching props `Route` accepts. It could also be a string\n * or an array of strings as shortcut for `{ path }`.\n */\n const matchProps = {\n exact,\n path,\n component,\n };\n\n const match = reactRouterMatchPath(pathname, matchProps);\n\n if (!match) {\n return false;\n }\n\n return match;\n};\n","import type { RouteInfo, ViewItem } from '@ionic/react';\nimport { IonRoute, ViewLifeCycleManager, ViewStacks, generateId } from '@ionic/react';\nimport React from 'react';\n\nimport { matchPath } from './utils/matchPath';\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 if (reactElement.type === IonRoute) {\n viewItem.ionRoute = true;\n viewItem.disableIonPageManagement = reactElement.props.disableIonPageManagement;\n }\n\n viewItem.routeData = {\n match: matchPath({\n pathname: routeInfo.pathname,\n componentProps: reactElement.props,\n }),\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, 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 /**\n * Returns the matching view item and the match result for a given pathname.\n */\n private findViewItemByPath(pathname: string, outletId?: string, 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\n match = matchPath({\n pathname,\n componentProps: v.routeData.childProps,\n });\n\n if (match) {\n /**\n * Even though we have a match from react-router, we do not know if the match\n * is for this specific view item.\n *\n * To validate this, we need to check if the path and url match the view item's route data.\n */\n const hasParameter = match.path.includes(':');\n if (!hasParameter || (hasParameter && match.url === v.routeData?.match?.url)) {\n viewItem = v;\n return true;\n }\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) {\n return matchPath({\n pathname,\n componentProps: node.props,\n });\n}\n","export function clonePageElement(leavingViewHtml: string | HTMLElement) {\n let html: string;\n if (typeof leavingViewHtml === 'string') {\n html = leavingViewHtml;\n } else {\n html = leavingViewHtml.outerHTML;\n }\n if (document) {\n const newEl = document.createElement('div');\n newEl.innerHTML = html;\n newEl.style.zIndex = '';\n // Remove an existing back button so the new element doesn't get two of them\n const ionBackButton = newEl.getElementsByTagName('ion-back-button');\n if (ionBackButton[0]) {\n ionBackButton[0].remove();\n }\n return newEl.firstChild as HTMLElement;\n }\n return undefined;\n}\n","import type { RouteInfo, StackContextState, ViewItem } from '@ionic/react';\nimport { RouteManagerContext, StackContext, generateId, getConfig } from '@ionic/react';\nimport React from 'react';\n\nimport { clonePageElement } from './clonePageElement';\nimport { matchPath } from './utils/matchPath';\n\n// TODO(FW-2959): types\n\ninterface StackManagerProps {\n routeInfo: RouteInfo;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface StackManagerState {}\n\nconst isViewVisible = (el: HTMLElement) =>\n !el.classList.contains('ion-page-invisible') && !el.classList.contains('ion-page-hidden');\n\nexport class StackManager extends React.PureComponent<StackManagerProps, StackManagerState> {\n id: string;\n context!: React.ContextType<typeof RouteManagerContext>;\n ionRouterOutlet?: React.ReactElement;\n routerOutletElement: HTMLIonRouterOutletElement | undefined;\n prevProps?: StackManagerProps;\n skipTransition: boolean;\n\n stackContextValue: StackContextState = {\n registerIonPage: this.registerIonPage.bind(this),\n isInOutlet: () => true,\n };\n\n private clearOutletTimeout: any;\n private pendingPageTransition = false;\n\n constructor(props: StackManagerProps) {\n super(props);\n this.registerIonPage = this.registerIonPage.bind(this);\n this.transitionPage = this.transitionPage.bind(this);\n this.handlePageTransition = this.handlePageTransition.bind(this);\n this.id = generateId('routerOutlet');\n this.prevProps = undefined;\n this.skipTransition = false;\n }\n\n componentDidMount() {\n if (this.clearOutletTimeout) {\n /**\n * The clearOutlet integration with React Router is a bit hacky.\n * It uses a timeout to clear the outlet after a transition.\n * In React v18, components are mounted and unmounted in development mode\n * to check for side effects.\n *\n * This clearTimeout prevents the outlet from being cleared when the component is re-mounted,\n * which should only happen in development mode and as a result of a hot reload.\n */\n clearTimeout(this.clearOutletTimeout);\n }\n if (this.routerOutletElement) {\n this.setupRouterOutlet(this.routerOutletElement);\n this.handlePageTransition(this.props.routeInfo);\n }\n }\n\n componentDidUpdate(prevProps: StackManagerProps) {\n const { pathname } = this.props.routeInfo;\n const { pathname: prevPathname } = prevProps.routeInfo;\n\n if (pathname !== prevPathname) {\n this.prevProps = prevProps;\n this.handlePageTransition(this.props.routeInfo);\n } else if (this.pendingPageTransition) {\n this.handlePageTransition(this.props.routeInfo);\n this.pendingPageTransition = false;\n }\n }\n\n componentWillUnmount() {\n this.clearOutletTimeout = this.context.clearOutlet(this.id);\n }\n\n async handlePageTransition(routeInfo: RouteInfo) {\n if (!this.routerOutletElement || !this.routerOutletElement.commit) {\n /**\n * The route outlet has not mounted yet. We need to wait for it to render\n * before we can transition the page.\n *\n * Set a flag to indicate that we should transition the page after\n * the component has updated.\n */\n this.pendingPageTransition = true;\n } else {\n let enteringViewItem = this.context.findViewItemByRouteInfo(routeInfo, this.id);\n let leavingViewItem = this.context.findLeavingViewItemByRouteInfo(routeInfo, this.id);\n\n if (!leavingViewItem && routeInfo.prevRouteLastPathname) {\n leavingViewItem = this.context.findViewItemByPathname(routeInfo.prevRouteLastPathname, this.id);\n }\n\n // Check if leavingViewItem should be unmounted\n if (leavingViewItem) {\n if (routeInfo.routeAction === 'replace') {\n leavingViewItem.mount = false;\n } else if (!(routeInfo.routeAction === 'push' && routeInfo.routeDirection === 'forward')) {\n if (routeInfo.routeDirection !== 'none' && enteringViewItem !== leavingViewItem) {\n leavingViewItem.mount = false;\n }\n } else if (routeInfo.routeOptions?.unmount) {\n leavingViewItem.mount = false;\n }\n }\n\n const enteringRoute = matchRoute(this.ionRouterOutlet?.props.children, routeInfo) as React.ReactElement;\n\n if (enteringViewItem) {\n enteringViewItem.reactElement = enteringRoute;\n } else if (enteringRoute) {\n enteringViewItem = this.context.createViewItem(this.id, enteringRoute, routeInfo);\n this.context.addViewItem(enteringViewItem);\n }\n\n if (enteringViewItem && enteringViewItem.ionPageElement) {\n /**\n * If the entering view item is the same as the leaving view item,\n * then we don't need to transition.\n */\n if (enteringViewItem === leavingViewItem) {\n /**\n * If the entering view item is the same as the leaving view item,\n * we are either transitioning using parameterized routes to the same view\n * or a parent router outlet is re-rendering as a result of React props changing.\n *\n * If the route data does not match the current path, the parent router outlet\n * is attempting to transition and we cancel the operation.\n */\n if (enteringViewItem.routeData.match.url !== routeInfo.pathname) {\n return;\n }\n }\n\n /**\n * If there isn't a leaving view item, but the route info indicates\n * that the user has routed from a previous path, then we need\n * to find the leaving view item to transition between.\n */\n if (!leavingViewItem && this.props.routeInfo.prevRouteLastPathname) {\n leavingViewItem = this.context.findViewItemByPathname(this.props.routeInfo.prevRouteLastPathname, this.id);\n }\n\n /**\n * If the entering view is already visible and the leaving view is not, the transition does not need to occur.\n */\n if (\n isViewVisible(enteringViewItem.ionPageElement) &&\n leavingViewItem !== undefined &&\n !isViewVisible(leavingViewItem.ionPageElement!)\n ) {\n return;\n }\n\n /**\n * The view should only be transitioned in the following cases:\n * 1. Performing a replace or pop action, such as a swipe to go back gesture\n * to animation the leaving view off the screen.\n *\n * 2. Navigating between top-level router outlets, such as /page-1 to /page-2;\n * or navigating within a nested outlet, such as /tabs/tab-1 to /tabs/tab-2.\n *\n * 3. The entering view is an ion-router-outlet containing a page\n * matching the current route and that hasn't already transitioned in.\n *\n * This should only happen when navigating directly to a nested router outlet\n * route or on an initial page load (i.e. refreshing). In cases when loading\n * /tabs/tab-1, we need to transition the /tabs page element into the view.\n */\n this.transitionPage(routeInfo, enteringViewItem, leavingViewItem);\n } else if (leavingViewItem && !enteringRoute && !enteringViewItem) {\n // If we have a leavingView but no entering view/route, we are probably leaving to\n // another outlet, so hide this leavingView. We do it in a timeout to give time for a\n // transition to finish.\n // setTimeout(() => {\n if (leavingViewItem.ionPageElement) {\n leavingViewItem.ionPageElement.classList.add('ion-page-hidden');\n leavingViewItem.ionPageElement.setAttribute('aria-hidden', 'true');\n }\n // }, 250);\n }\n\n this.forceUpdate();\n }\n }\n\n registerIonPage(page: HTMLElement, routeInfo: RouteInfo) {\n const foundView = this.context.findViewItemByRouteInfo(routeInfo, this.id);\n if (foundView) {\n const oldPageElement = foundView.ionPageElement;\n foundView.ionPageElement = page;\n foundView.ionRoute = true;\n\n /**\n * React 18 will unmount and remount IonPage\n * elements in development mode when using createRoot.\n * This can cause duplicate page transitions to occur.\n */\n if (oldPageElement === page) {\n return;\n }\n }\n this.handlePageTransition(routeInfo);\n }\n\n async setupRouterOutlet(routerOutlet: HTMLIonRouterOutletElement) {\n const canStart = () => {\n const config = getConfig();\n const swipeEnabled = config && config.get('swipeBackEnabled', routerOutlet.mode === 'ios');\n if (!swipeEnabled) {\n return false;\n }\n\n const { routeInfo } = this.props;\n\n const propsToUse =\n this.prevProps && this.prevProps.routeInfo.pathname === routeInfo.pushedByRoute\n ? this.prevProps.routeInfo\n : ({ pathname: routeInfo.pushedByRoute || '' } as any);\n const enteringViewItem = this.context.findViewItemByRouteInfo(propsToUse, this.id, false);\n\n return (\n !!enteringViewItem &&\n /**\n * The root url '/' is treated as\n * the first view item (but is never mounted),\n * so we do not want to swipe back to the\n * root url.\n */\n enteringViewItem.mount &&\n /**\n * When on the first page (whatever view\n * you land on after the root url) it\n * is possible for findViewItemByRouteInfo to\n * return the exact same view you are currently on.\n * Make sure that we are not swiping back to the same\n * instances of a view.\n */\n enteringViewItem.routeData.match.path !== routeInfo.pathname\n );\n };\n\n const onStart = async () => {\n const { routeInfo } = this.props;\n\n const propsToUse =\n this.prevProps && this.prevProps.routeInfo.pathname === routeInfo.pushedByRoute\n ? this.prevProps.routeInfo\n : ({ pathname: routeInfo.pushedByRoute || '' } as any);\n const enteringViewItem = this.context.findViewItemByRouteInfo(propsToUse, this.id, false);\n const leavingViewItem = this.context.findViewItemByRouteInfo(routeInfo, this.id, false);\n\n /**\n * When the gesture starts, kick off\n * a transition that is controlled\n * via a swipe gesture.\n */\n if (enteringViewItem && leavingViewItem) {\n await this.transitionPage(routeInfo, enteringViewItem, leavingViewItem, 'back', true);\n }\n\n return Promise.resolve();\n };\n const onEnd = (shouldContinue: boolean) => {\n if (shouldContinue) {\n this.skipTransition = true;\n\n this.context.goBack();\n } else {\n /**\n * In the event that the swipe\n * gesture was aborted, we should\n * re-hide the page that was going to enter.\n */\n const { routeInfo } = this.props;\n\n const propsToUse =\n this.prevProps && this.prevProps.routeInfo.pathname === routeInfo.pushedByRoute\n ? this.prevProps.routeInfo\n : ({ pathname: routeInfo.pushedByRoute || '' } as any);\n const enteringViewItem = this.context.findViewItemByRouteInfo(propsToUse, this.id, false);\n const leavingViewItem = this.context.findViewItemByRouteInfo(routeInfo, this.id, false);\n\n /**\n * Ionic React has a design defect where it\n * a) Unmounts the leaving view item when using parameterized routes\n * b) Considers the current view to be the entering view when using\n * parameterized routes\n *\n * As a result, we should not hide the view item here\n * as it will cause the current view to be hidden.\n */\n if (enteringViewItem !== leavingViewItem && enteringViewItem?.ionPageElement !== undefined) {\n const { ionPageElement } = enteringViewItem;\n ionPageElement.setAttribute('aria-hidden', 'true');\n ionPageElement.classList.add('ion-page-hidden');\n }\n }\n };\n\n routerOutlet.swipeHandler = {\n canStart,\n onStart,\n onEnd,\n };\n }\n\n async transitionPage(\n routeInfo: RouteInfo,\n enteringViewItem: ViewItem,\n leavingViewItem?: ViewItem,\n direction?: 'forward' | 'back',\n progressAnimation = false\n ) {\n const runCommit = async (enteringEl: HTMLElement, leavingEl?: HTMLElement) => {\n const skipTransition = this.skipTransition;\n\n /**\n * If the transition was handled\n * via the swipe to go back gesture,\n * then we do not want to perform\n * another transition.\n *\n * We skip adding ion-page or ion-page-invisible\n * because the entering view already exists in the DOM.\n * If we added the classes, there would be a flicker where\n * the view would be briefly hidden.\n */\n if (skipTransition) {\n /**\n * We need to reset skipTransition before\n * we call routerOutlet.commit otherwise\n * the transition triggered by the swipe\n * to go back gesture would reset it. In\n * that case you would see a duplicate\n * transition triggered by handlePageTransition\n * in componentDidUpdate.\n */\n this.skipTransition = false;\n } else {\n enteringEl.classList.add('ion-page');\n enteringEl.classList.add('ion-page-invisible');\n }\n\n await routerOutlet.commit(enteringEl, leavingEl, {\n duration: skipTransition || directionToUse === undefined ? 0 : undefined,\n direction: directionToUse,\n showGoBack: !!routeInfo.pushedByRoute,\n progressAnimation,\n animationBuilder: routeInfo.routeAnimation,\n });\n };\n\n const routerOutlet = this.routerOutletElement!;\n\n const routeInfoFallbackDirection =\n routeInfo.routeDirection === 'none' || routeInfo.routeDirection === 'root' ? undefined : routeInfo.routeDirection;\n const directionToUse = direction ?? routeInfoFallbackDirection;\n\n if (enteringViewItem && enteringViewItem.ionPageElement && this.routerOutletElement) {\n if (leavingViewItem && leavingViewItem.ionPageElement && enteringViewItem === leavingViewItem) {\n // If a page is transitioning to another version of itself\n // we clone it so we can have an animation to show\n\n const match = matchComponent(leavingViewItem.reactElement, routeInfo.pathname, true);\n if (match) {\n const newLeavingElement = clonePageElement(leavingViewItem.ionPageElement.outerHTML);\n if (newLeavingElement) {\n this.routerOutletElement.appendChild(newLeavingElement);\n await runCommit(enteringViewItem.ionPageElement, newLeavingElement);\n this.routerOutletElement.removeChild(newLeavingElement);\n }\n } else {\n await runCommit(enteringViewItem.ionPageElement, undefined);\n }\n } else {\n await runCommit(enteringViewItem.ionPageElement, leavingViewItem?.ionPageElement);\n if (leavingViewItem && leavingViewItem.ionPageElement && !progressAnimation) {\n leavingViewItem.ionPageElement.classList.add('ion-page-hidden');\n leavingViewItem.ionPageElement.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n\n render() {\n const { children } = this.props;\n const ionRouterOutlet = React.Children.only(children) as React.ReactElement;\n this.ionRouterOutlet = ionRouterOutlet;\n\n const components = this.context.getChildrenToRender(this.id, this.ionRouterOutlet, this.props.routeInfo, () => {\n this.forceUpdate();\n });\n\n return (\n <StackContext.Provider value={this.stackContextValue}>\n {React.cloneElement(\n ionRouterOutlet as any,\n {\n ref: (node: HTMLIonRouterOutletElement) => {\n if (ionRouterOutlet.props.setRef) {\n ionRouterOutlet.props.setRef(node);\n }\n if (ionRouterOutlet.props.forwardedRef) {\n ionRouterOutlet.props.forwardedRef.current = node;\n }\n this.routerOutletElement = node;\n const { ref } = ionRouterOutlet as any;\n if (typeof ref === 'function') {\n ref(node);\n }\n },\n },\n components\n )}\n </StackContext.Provider>\n );\n }\n\n static get contextType() {\n return RouteManagerContext;\n }\n}\n\nexport default StackManager;\n\nfunction matchRoute(node: React.ReactNode, routeInfo: RouteInfo) {\n let matchedNode: React.ReactNode;\n React.Children.forEach(node as React.ReactElement, (child: React.ReactElement) => {\n const match = matchPath({\n pathname: routeInfo.pathname,\n componentProps: child.props,\n });\n if (match) {\n matchedNode = child;\n }\n });\n\n if (matchedNode) {\n return matchedNode;\n }\n // If we haven't found a node\n // try to find one that doesn't have a path or from prop, that will be our not found route\n React.Children.forEach(node as React.ReactElement, (child: React.ReactElement) => {\n if (!(child.props.path || child.props.from)) {\n matchedNode = child;\n }\n });\n\n return matchedNode;\n}\n\nfunction matchComponent(node: React.ReactElement, pathname: string, forceExact?: boolean) {\n return matchPath({\n pathname,\n componentProps: {\n ...node.props,\n exact: forceExact,\n },\n });\n}\n","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\n /**\n * When replacing routes we should still prefer\n * any custom direction/animation that the developer\n * has specified when navigating first instead of relying\n * on previously used directions/animations.\n */\n routeInfo.routeDirection = routeInfo.routeDirection || currentRouteInfo?.routeDirection;\n routeInfo.routeAnimation = routeInfo.routeAnimation || currentRouteInfo?.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 /**\n * This needs to be passed to handleNavigate\n * otherwise incomingRouteParams.routeAnimation\n * will be overridden.\n */\n const incomingAnimation = routeAnimation || routeInfo.routeAnimation;\n this.incomingRouteParams = {\n ...prevInfo,\n routeAction: 'pop',\n routeDirection: 'back',\n routeAnimation: incomingAnimation,\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', incomingAnimation);\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","import type { Action as HistoryAction, History, Location as HistoryLocation } from 'history';\nimport { createBrowserHistory as createHistory } from 'history';\nimport React from 'react';\nimport type { BrowserRouterProps } from 'react-router-dom';\nimport { Router } from 'react-router-dom';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactRouterProps extends BrowserRouterProps {\n history?: History;\n}\n\nexport class IonReactRouter extends React.Component<IonReactRouterProps> {\n historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n history: History;\n\n constructor(props: IonReactRouterProps) {\n super(props);\n const { history, ...rest } = props;\n this.history = history || createHistory(rest);\n this.history.listen(this.handleHistoryChange.bind(this));\n this.registerHistoryListener = this.registerHistoryListener.bind(this);\n }\n\n /**\n * history@4.x passes separate location and action\n * params. history@5.x passes location and action\n * together as a single object.\n * TODO: If support for React Router <=5 is dropped\n * this logic is no longer needed. We can just assume\n * a single object with both location and action.\n */\n handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n const locationValue = (location as any).location || location;\n const actionValue = (location as any).action || action;\n if (this.historyListenHandler) {\n this.historyListenHandler(locationValue, actionValue);\n }\n }\n\n registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n this.historyListenHandler = cb;\n }\n\n render() {\n const { children, ...props } = this.props;\n return (\n <Router history={this.history} {...props}>\n <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n </Router>\n );\n }\n}\n","import type { Action as HistoryAction, Location as HistoryLocation, MemoryHistory } from 'history';\nimport React from 'react';\nimport type { MemoryRouterProps } from 'react-router';\nimport { Router } from 'react-router';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactMemoryRouterProps extends MemoryRouterProps {\n history: MemoryHistory;\n}\n\nexport class IonReactMemoryRouter extends React.Component<IonReactMemoryRouterProps> {\n history: MemoryHistory;\n historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n\n constructor(props: IonReactMemoryRouterProps) {\n super(props);\n this.history = props.history;\n this.history.listen(this.handleHistoryChange.bind(this));\n this.registerHistoryListener = this.registerHistoryListener.bind(this);\n }\n\n /**\n * history@4.x passes separate location and action\n * params. history@5.x passes location and action\n * together as a single object.\n * TODO: If support for React Router <=5 is dropped\n * this logic is no longer needed. We can just assume\n * a single object with both location and action.\n */\n handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n const locationValue = (location as any).location || location;\n const actionValue = (location as any).action || action;\n if (this.historyListenHandler) {\n this.historyListenHandler(locationValue, actionValue);\n }\n }\n\n registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n this.historyListenHandler = cb;\n }\n\n render() {\n const { children, ...props } = this.props;\n return (\n <Router {...props}>\n <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n </Router>\n );\n }\n}\n","import type { Action as HistoryAction, History, Location as HistoryLocation } from 'history';\nimport { createHashHistory as createHistory } from 'history';\nimport React from 'react';\nimport type { BrowserRouterProps } from 'react-router-dom';\nimport { Router } from 'react-router-dom';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactHashRouterProps extends BrowserRouterProps {\n history?: History;\n}\n\nexport class IonReactHashRouter extends React.Component<IonReactHashRouterProps> {\n history: History;\n historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n\n constructor(props: IonReactHashRouterProps) {\n super(props);\n const { history, ...rest } = props;\n this.history = history || createHistory(rest);\n this.history.listen(this.handleHistoryChange.bind(this));\n this.registerHistoryListener = this.registerHistoryListener.bind(this);\n }\n\n /**\n * history@4.x passes separate location and action\n * params. history@5.x passes location and action\n * together as a single object.\n * TODO: If support for React Router <=5 is dropped\n * this logic is no longer needed. We can just assume\n * a single object with both location and action.\n */\n handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n const locationValue = (location as any).location || location;\n const actionValue = (location as any).action || action;\n if (this.historyListenHandler) {\n this.historyListenHandler(locationValue, actionValue);\n }\n }\n\n registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n this.historyListenHandler = cb;\n }\n\n render() {\n const { children, ...props } = this.props;\n return (\n <Router history={this.history} {...props}>\n <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n </Router>\n );\n }\n}\n"],"names":["reactRouterMatchPath","matchComponent","createHistory","Router"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/ReactRouter/IonRouteInner.tsx","../src/ReactRouter/utils/matchPath.ts","../src/ReactRouter/ReactRouterViewStack.tsx","../src/ReactRouter/clonePageElement.ts","../src/ReactRouter/StackManager.tsx","../src/ReactRouter/IonRouter.tsx","../src/ReactRouter/IonReactRouter.tsx","../src/ReactRouter/IonReactMemoryRouter.tsx","../src/ReactRouter/IonReactHashRouter.tsx"],"sourcesContent":["import type { IonRouteProps } from '@ionic/react';\nimport React from 'react';\nimport { Route } from 'react-router';\n\nexport class IonRouteInner extends React.PureComponent<IonRouteProps> {\n render() {\n return (\n <Route\n path={this.props.path}\n exact={this.props.exact}\n render={this.props.render}\n {\n /**\n * `computedMatch` is a private API in react-router v5 that\n * has been removed in v6.\n *\n * This needs to be removed when we support v6.\n *\n * TODO: FW-647\n */\n ...((this.props as any).computedMatch !== undefined\n ? {\n computedMatch: (this.props as any).computedMatch,\n }\n : {})\n }\n />\n );\n }\n}\n","import { matchPath as reactRouterMatchPath } from 'react-router';\n\ninterface MatchPathOptions {\n /**\n * The pathname to match against.\n */\n pathname: string;\n /**\n * The props to match against, they are identical to the matching props `Route` accepts.\n */\n componentProps: {\n path?: string;\n from?: string;\n component?: any;\n exact?: boolean;\n };\n}\n\n/**\n * @see https://v5.reactrouter.com/web/api/matchPath\n */\nexport const matchPath = ({\n pathname,\n componentProps,\n}: MatchPathOptions): false | ReturnType<typeof reactRouterMatchPath> => {\n const { exact, component } = componentProps;\n\n const path = componentProps.path || componentProps.from;\n /***\n * The props to match against, they are identical\n * to the matching props `Route` accepts. It could also be a string\n * or an array of strings as shortcut for `{ path }`.\n */\n const matchProps = {\n exact,\n path,\n component,\n };\n\n const match = reactRouterMatchPath(pathname, matchProps);\n\n if (!match) {\n return false;\n }\n\n return match;\n};\n","import type { RouteInfo, ViewItem } from '@ionic/react';\nimport { IonRoute, ViewLifeCycleManager, ViewStacks, generateId } from '@ionic/react';\nimport React from 'react';\n\nimport { matchPath } from './utils/matchPath';\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 if (reactElement.type === IonRoute) {\n viewItem.ionRoute = true;\n viewItem.disableIonPageManagement = reactElement.props.disableIonPageManagement;\n }\n\n viewItem.routeData = {\n match: matchPath({\n pathname: routeInfo.pathname,\n componentProps: reactElement.props,\n }),\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, 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 /**\n * Returns the matching view item and the match result for a given pathname.\n */\n private findViewItemByPath(pathname: string, outletId?: string, 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\n match = matchPath({\n pathname,\n componentProps: v.routeData.childProps,\n });\n\n if (match) {\n /**\n * Even though we have a match from react-router, we do not know if the match\n * is for this specific view item.\n *\n * To validate this, we need to check if the path and url match the view item's route data.\n */\n const hasParameter = match.path.includes(':');\n if (!hasParameter || (hasParameter && match.url === v.routeData?.match?.url)) {\n viewItem = v;\n return true;\n }\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) {\n return matchPath({\n pathname,\n componentProps: node.props,\n });\n}\n","export function clonePageElement(leavingViewHtml: string | HTMLElement) {\n let html: string;\n if (typeof leavingViewHtml === 'string') {\n html = leavingViewHtml;\n } else {\n html = leavingViewHtml.outerHTML;\n }\n if (document) {\n const newEl = document.createElement('div');\n newEl.innerHTML = html;\n newEl.style.zIndex = '';\n // Remove an existing back button so the new element doesn't get two of them\n const ionBackButton = newEl.getElementsByTagName('ion-back-button');\n if (ionBackButton[0]) {\n ionBackButton[0].remove();\n }\n return newEl.firstChild as HTMLElement;\n }\n return undefined;\n}\n","import type { RouteInfo, StackContextState, ViewItem } from '@ionic/react';\nimport { RouteManagerContext, StackContext, generateId, getConfig } from '@ionic/react';\nimport React from 'react';\n\nimport { clonePageElement } from './clonePageElement';\nimport { matchPath } from './utils/matchPath';\n\n// TODO(FW-2959): types\n\ninterface StackManagerProps {\n routeInfo: RouteInfo;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface StackManagerState {}\n\nconst isViewVisible = (el: HTMLElement) =>\n !el.classList.contains('ion-page-invisible') && !el.classList.contains('ion-page-hidden');\n\nexport class StackManager extends React.PureComponent<StackManagerProps, StackManagerState> {\n id: string;\n context!: React.ContextType<typeof RouteManagerContext>;\n ionRouterOutlet?: React.ReactElement;\n routerOutletElement: HTMLIonRouterOutletElement | undefined;\n prevProps?: StackManagerProps;\n skipTransition: boolean;\n\n stackContextValue: StackContextState = {\n registerIonPage: this.registerIonPage.bind(this),\n isInOutlet: () => true,\n };\n\n private clearOutletTimeout: any;\n private pendingPageTransition = false;\n\n constructor(props: StackManagerProps) {\n super(props);\n this.registerIonPage = this.registerIonPage.bind(this);\n this.transitionPage = this.transitionPage.bind(this);\n this.handlePageTransition = this.handlePageTransition.bind(this);\n this.id = generateId('routerOutlet');\n this.prevProps = undefined;\n this.skipTransition = false;\n }\n\n componentDidMount() {\n if (this.clearOutletTimeout) {\n /**\n * The clearOutlet integration with React Router is a bit hacky.\n * It uses a timeout to clear the outlet after a transition.\n * In React v18, components are mounted and unmounted in development mode\n * to check for side effects.\n *\n * This clearTimeout prevents the outlet from being cleared when the component is re-mounted,\n * which should only happen in development mode and as a result of a hot reload.\n */\n clearTimeout(this.clearOutletTimeout);\n }\n if (this.routerOutletElement) {\n this.setupRouterOutlet(this.routerOutletElement);\n this.handlePageTransition(this.props.routeInfo);\n }\n }\n\n componentDidUpdate(prevProps: StackManagerProps) {\n const { pathname } = this.props.routeInfo;\n const { pathname: prevPathname } = prevProps.routeInfo;\n\n if (pathname !== prevPathname) {\n this.prevProps = prevProps;\n this.handlePageTransition(this.props.routeInfo);\n } else if (this.pendingPageTransition) {\n this.handlePageTransition(this.props.routeInfo);\n this.pendingPageTransition = false;\n }\n }\n\n componentWillUnmount() {\n this.clearOutletTimeout = this.context.clearOutlet(this.id);\n }\n\n async handlePageTransition(routeInfo: RouteInfo) {\n if (!this.routerOutletElement || !this.routerOutletElement.commit) {\n /**\n * The route outlet has not mounted yet. We need to wait for it to render\n * before we can transition the page.\n *\n * Set a flag to indicate that we should transition the page after\n * the component has updated.\n */\n this.pendingPageTransition = true;\n } else {\n let enteringViewItem = this.context.findViewItemByRouteInfo(routeInfo, this.id);\n let leavingViewItem = this.context.findLeavingViewItemByRouteInfo(routeInfo, this.id);\n\n if (!leavingViewItem && routeInfo.prevRouteLastPathname) {\n leavingViewItem = this.context.findViewItemByPathname(routeInfo.prevRouteLastPathname, this.id);\n }\n\n // Check if leavingViewItem should be unmounted\n if (leavingViewItem) {\n if (routeInfo.routeAction === 'replace') {\n leavingViewItem.mount = false;\n } else if (!(routeInfo.routeAction === 'push' && routeInfo.routeDirection === 'forward')) {\n if (routeInfo.routeDirection !== 'none' && enteringViewItem !== leavingViewItem) {\n leavingViewItem.mount = false;\n }\n } else if (routeInfo.routeOptions?.unmount) {\n leavingViewItem.mount = false;\n }\n }\n\n const enteringRoute = matchRoute(this.ionRouterOutlet?.props.children, routeInfo) as React.ReactElement;\n\n if (enteringViewItem) {\n enteringViewItem.reactElement = enteringRoute;\n } else if (enteringRoute) {\n enteringViewItem = this.context.createViewItem(this.id, enteringRoute, routeInfo);\n this.context.addViewItem(enteringViewItem);\n }\n\n if (enteringViewItem && enteringViewItem.ionPageElement) {\n /**\n * If the entering view item is the same as the leaving view item,\n * then we don't need to transition.\n */\n if (enteringViewItem === leavingViewItem) {\n /**\n * If the entering view item is the same as the leaving view item,\n * we are either transitioning using parameterized routes to the same view\n * or a parent router outlet is re-rendering as a result of React props changing.\n *\n * If the route data does not match the current path, the parent router outlet\n * is attempting to transition and we cancel the operation.\n */\n if (enteringViewItem.routeData.match.url !== routeInfo.pathname) {\n return;\n }\n }\n\n /**\n * If there isn't a leaving view item, but the route info indicates\n * that the user has routed from a previous path, then we need\n * to find the leaving view item to transition between.\n */\n if (!leavingViewItem && this.props.routeInfo.prevRouteLastPathname) {\n leavingViewItem = this.context.findViewItemByPathname(this.props.routeInfo.prevRouteLastPathname, this.id);\n }\n\n /**\n * If the entering view is already visible and the leaving view is not, the transition does not need to occur.\n */\n if (\n isViewVisible(enteringViewItem.ionPageElement) &&\n leavingViewItem !== undefined &&\n !isViewVisible(leavingViewItem.ionPageElement!)\n ) {\n return;\n }\n\n /**\n * The view should only be transitioned in the following cases:\n * 1. Performing a replace or pop action, such as a swipe to go back gesture\n * to animation the leaving view off the screen.\n *\n * 2. Navigating between top-level router outlets, such as /page-1 to /page-2;\n * or navigating within a nested outlet, such as /tabs/tab-1 to /tabs/tab-2.\n *\n * 3. The entering view is an ion-router-outlet containing a page\n * matching the current route and that hasn't already transitioned in.\n *\n * This should only happen when navigating directly to a nested router outlet\n * route or on an initial page load (i.e. refreshing). In cases when loading\n * /tabs/tab-1, we need to transition the /tabs page element into the view.\n */\n this.transitionPage(routeInfo, enteringViewItem, leavingViewItem);\n } else if (leavingViewItem && !enteringRoute && !enteringViewItem) {\n // If we have a leavingView but no entering view/route, we are probably leaving to\n // another outlet, so hide this leavingView. We do it in a timeout to give time for a\n // transition to finish.\n // setTimeout(() => {\n if (leavingViewItem.ionPageElement) {\n leavingViewItem.ionPageElement.classList.add('ion-page-hidden');\n leavingViewItem.ionPageElement.setAttribute('aria-hidden', 'true');\n }\n // }, 250);\n }\n\n this.forceUpdate();\n }\n }\n\n registerIonPage(page: HTMLElement, routeInfo: RouteInfo) {\n const foundView = this.context.findViewItemByRouteInfo(routeInfo, this.id);\n if (foundView) {\n const oldPageElement = foundView.ionPageElement;\n foundView.ionPageElement = page;\n foundView.ionRoute = true;\n\n /**\n * React 18 will unmount and remount IonPage\n * elements in development mode when using createRoot.\n * This can cause duplicate page transitions to occur.\n */\n if (oldPageElement === page) {\n return;\n }\n }\n this.handlePageTransition(routeInfo);\n }\n\n async setupRouterOutlet(routerOutlet: HTMLIonRouterOutletElement) {\n const canStart = () => {\n const config = getConfig();\n const swipeEnabled = config && config.get('swipeBackEnabled', routerOutlet.mode === 'ios');\n if (!swipeEnabled) {\n return false;\n }\n\n const { routeInfo } = this.props;\n\n const propsToUse =\n this.prevProps && this.prevProps.routeInfo.pathname === routeInfo.pushedByRoute\n ? this.prevProps.routeInfo\n : ({ pathname: routeInfo.pushedByRoute || '' } as any);\n const enteringViewItem = this.context.findViewItemByRouteInfo(propsToUse, this.id, false);\n\n return (\n !!enteringViewItem &&\n /**\n * The root url '/' is treated as\n * the first view item (but is never mounted),\n * so we do not want to swipe back to the\n * root url.\n */\n enteringViewItem.mount &&\n /**\n * When on the first page (whatever view\n * you land on after the root url) it\n * is possible for findViewItemByRouteInfo to\n * return the exact same view you are currently on.\n * Make sure that we are not swiping back to the same\n * instances of a view.\n */\n enteringViewItem.routeData.match.path !== routeInfo.pathname\n );\n };\n\n const onStart = async () => {\n const { routeInfo } = this.props;\n\n const propsToUse =\n this.prevProps && this.prevProps.routeInfo.pathname === routeInfo.pushedByRoute\n ? this.prevProps.routeInfo\n : ({ pathname: routeInfo.pushedByRoute || '' } as any);\n const enteringViewItem = this.context.findViewItemByRouteInfo(propsToUse, this.id, false);\n const leavingViewItem = this.context.findViewItemByRouteInfo(routeInfo, this.id, false);\n\n /**\n * When the gesture starts, kick off\n * a transition that is controlled\n * via a swipe gesture.\n */\n if (enteringViewItem && leavingViewItem) {\n await this.transitionPage(routeInfo, enteringViewItem, leavingViewItem, 'back', true);\n }\n\n return Promise.resolve();\n };\n const onEnd = (shouldContinue: boolean) => {\n if (shouldContinue) {\n this.skipTransition = true;\n\n this.context.goBack();\n } else {\n /**\n * In the event that the swipe\n * gesture was aborted, we should\n * re-hide the page that was going to enter.\n */\n const { routeInfo } = this.props;\n\n const propsToUse =\n this.prevProps && this.prevProps.routeInfo.pathname === routeInfo.pushedByRoute\n ? this.prevProps.routeInfo\n : ({ pathname: routeInfo.pushedByRoute || '' } as any);\n const enteringViewItem = this.context.findViewItemByRouteInfo(propsToUse, this.id, false);\n const leavingViewItem = this.context.findViewItemByRouteInfo(routeInfo, this.id, false);\n\n /**\n * Ionic React has a design defect where it\n * a) Unmounts the leaving view item when using parameterized routes\n * b) Considers the current view to be the entering view when using\n * parameterized routes\n *\n * As a result, we should not hide the view item here\n * as it will cause the current view to be hidden.\n */\n if (enteringViewItem !== leavingViewItem && enteringViewItem?.ionPageElement !== undefined) {\n const { ionPageElement } = enteringViewItem;\n ionPageElement.setAttribute('aria-hidden', 'true');\n ionPageElement.classList.add('ion-page-hidden');\n }\n }\n };\n\n routerOutlet.swipeHandler = {\n canStart,\n onStart,\n onEnd,\n };\n }\n\n async transitionPage(\n routeInfo: RouteInfo,\n enteringViewItem: ViewItem,\n leavingViewItem?: ViewItem,\n direction?: 'forward' | 'back',\n progressAnimation = false\n ) {\n const runCommit = async (enteringEl: HTMLElement, leavingEl?: HTMLElement) => {\n const skipTransition = this.skipTransition;\n\n /**\n * If the transition was handled\n * via the swipe to go back gesture,\n * then we do not want to perform\n * another transition.\n *\n * We skip adding ion-page or ion-page-invisible\n * because the entering view already exists in the DOM.\n * If we added the classes, there would be a flicker where\n * the view would be briefly hidden.\n */\n if (skipTransition) {\n /**\n * We need to reset skipTransition before\n * we call routerOutlet.commit otherwise\n * the transition triggered by the swipe\n * to go back gesture would reset it. In\n * that case you would see a duplicate\n * transition triggered by handlePageTransition\n * in componentDidUpdate.\n */\n this.skipTransition = false;\n } else {\n enteringEl.classList.add('ion-page');\n enteringEl.classList.add('ion-page-invisible');\n }\n\n await routerOutlet.commit(enteringEl, leavingEl, {\n duration: skipTransition || directionToUse === undefined ? 0 : undefined,\n direction: directionToUse,\n showGoBack: !!routeInfo.pushedByRoute,\n progressAnimation,\n animationBuilder: routeInfo.routeAnimation,\n });\n };\n\n const routerOutlet = this.routerOutletElement!;\n\n const routeInfoFallbackDirection =\n routeInfo.routeDirection === 'none' || routeInfo.routeDirection === 'root' ? undefined : routeInfo.routeDirection;\n const directionToUse = direction ?? routeInfoFallbackDirection;\n\n if (enteringViewItem && enteringViewItem.ionPageElement && this.routerOutletElement) {\n if (leavingViewItem && leavingViewItem.ionPageElement && enteringViewItem === leavingViewItem) {\n // If a page is transitioning to another version of itself\n // we clone it so we can have an animation to show\n\n const match = matchComponent(leavingViewItem.reactElement, routeInfo.pathname, true);\n if (match) {\n const newLeavingElement = clonePageElement(leavingViewItem.ionPageElement.outerHTML);\n if (newLeavingElement) {\n this.routerOutletElement.appendChild(newLeavingElement);\n await runCommit(enteringViewItem.ionPageElement, newLeavingElement);\n this.routerOutletElement.removeChild(newLeavingElement);\n }\n } else {\n await runCommit(enteringViewItem.ionPageElement, undefined);\n }\n } else {\n await runCommit(enteringViewItem.ionPageElement, leavingViewItem?.ionPageElement);\n if (leavingViewItem && leavingViewItem.ionPageElement && !progressAnimation) {\n leavingViewItem.ionPageElement.classList.add('ion-page-hidden');\n leavingViewItem.ionPageElement.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n\n render() {\n const { children } = this.props;\n const ionRouterOutlet = React.Children.only(children) as React.ReactElement;\n this.ionRouterOutlet = ionRouterOutlet;\n\n const components = this.context.getChildrenToRender(this.id, this.ionRouterOutlet, this.props.routeInfo, () => {\n this.forceUpdate();\n });\n\n return (\n <StackContext.Provider value={this.stackContextValue}>\n {React.cloneElement(\n ionRouterOutlet as any,\n {\n ref: (node: HTMLIonRouterOutletElement) => {\n if (ionRouterOutlet.props.setRef) {\n ionRouterOutlet.props.setRef(node);\n }\n if (ionRouterOutlet.props.forwardedRef) {\n ionRouterOutlet.props.forwardedRef.current = node;\n }\n this.routerOutletElement = node;\n const { ref } = ionRouterOutlet as any;\n if (typeof ref === 'function') {\n ref(node);\n }\n },\n },\n components\n )}\n </StackContext.Provider>\n );\n }\n\n static get contextType() {\n return RouteManagerContext;\n }\n}\n\nexport default StackManager;\n\nfunction matchRoute(node: React.ReactNode, routeInfo: RouteInfo) {\n let matchedNode: React.ReactNode;\n React.Children.forEach(node as React.ReactElement, (child: React.ReactElement) => {\n const match = matchPath({\n pathname: routeInfo.pathname,\n componentProps: child.props,\n });\n if (match) {\n matchedNode = child;\n }\n });\n\n if (matchedNode) {\n return matchedNode;\n }\n // If we haven't found a node\n // try to find one that doesn't have a path or from prop, that will be our not found route\n React.Children.forEach(node as React.ReactElement, (child: React.ReactElement) => {\n if (!(child.props.path || child.props.from)) {\n matchedNode = child;\n }\n });\n\n return matchedNode;\n}\n\nfunction matchComponent(node: React.ReactElement, pathname: string, forceExact?: boolean) {\n return matchPath({\n pathname,\n componentProps: {\n ...node.props,\n exact: forceExact,\n },\n });\n}\n","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 /**\n * The recorded search has to match the URL we push, otherwise\n * handleHistoryChange sees a URL change where there is none.\n */\n const normalizedSearch = search ? '?' + search : '';\n this.incomingRouteParams.pathname = pathname;\n this.incomingRouteParams.search = normalizedSearch;\n this.incomingRouteParams.routeOptions = routeOptions;\n this.props.history.push(pathname + normalizedSearch);\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 const currentUrl = location.pathname + (location.search || '');\n if (leavingUrl !== currentUrl) {\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\n /**\n * When replacing routes we should still prefer\n * any custom direction/animation that the developer\n * has specified when navigating first instead of relying\n * on previously used directions/animations.\n */\n routeInfo.routeDirection = routeInfo.routeDirection || currentRouteInfo?.routeDirection;\n routeInfo.routeAnimation = routeInfo.routeAnimation || currentRouteInfo?.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 /**\n * This needs to be passed to handleNavigate\n * otherwise incomingRouteParams.routeAnimation\n * will be overridden.\n */\n const incomingAnimation = routeAnimation || routeInfo.routeAnimation;\n this.incomingRouteParams = {\n ...prevInfo,\n routeAction: 'pop',\n routeDirection: 'back',\n routeAnimation: incomingAnimation,\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', incomingAnimation);\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","import type { Action as HistoryAction, History, Location as HistoryLocation } from 'history';\nimport { createBrowserHistory as createHistory } from 'history';\nimport React from 'react';\nimport type { BrowserRouterProps } from 'react-router-dom';\nimport { Router } from 'react-router-dom';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactRouterProps extends BrowserRouterProps {\n history?: History;\n}\n\nexport class IonReactRouter extends React.Component<IonReactRouterProps> {\n historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n history: History;\n\n constructor(props: IonReactRouterProps) {\n super(props);\n const { history, ...rest } = props;\n this.history = history || createHistory(rest);\n this.history.listen(this.handleHistoryChange.bind(this));\n this.registerHistoryListener = this.registerHistoryListener.bind(this);\n }\n\n /**\n * history@4.x passes separate location and action\n * params. history@5.x passes location and action\n * together as a single object.\n * TODO: If support for React Router <=5 is dropped\n * this logic is no longer needed. We can just assume\n * a single object with both location and action.\n */\n handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n const locationValue = (location as any).location || location;\n const actionValue = (location as any).action || action;\n if (this.historyListenHandler) {\n this.historyListenHandler(locationValue, actionValue);\n }\n }\n\n registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n this.historyListenHandler = cb;\n }\n\n render() {\n const { children, ...props } = this.props;\n return (\n <Router history={this.history} {...props}>\n <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n </Router>\n );\n }\n}\n","import type { Action as HistoryAction, Location as HistoryLocation, MemoryHistory } from 'history';\nimport React from 'react';\nimport type { MemoryRouterProps } from 'react-router';\nimport { Router } from 'react-router';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactMemoryRouterProps extends MemoryRouterProps {\n history: MemoryHistory;\n}\n\nexport class IonReactMemoryRouter extends React.Component<IonReactMemoryRouterProps> {\n history: MemoryHistory;\n historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n\n constructor(props: IonReactMemoryRouterProps) {\n super(props);\n this.history = props.history;\n this.history.listen(this.handleHistoryChange.bind(this));\n this.registerHistoryListener = this.registerHistoryListener.bind(this);\n }\n\n /**\n * history@4.x passes separate location and action\n * params. history@5.x passes location and action\n * together as a single object.\n * TODO: If support for React Router <=5 is dropped\n * this logic is no longer needed. We can just assume\n * a single object with both location and action.\n */\n handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n const locationValue = (location as any).location || location;\n const actionValue = (location as any).action || action;\n if (this.historyListenHandler) {\n this.historyListenHandler(locationValue, actionValue);\n }\n }\n\n registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n this.historyListenHandler = cb;\n }\n\n render() {\n const { children, ...props } = this.props;\n return (\n <Router {...props}>\n <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n </Router>\n );\n }\n}\n","import type { Action as HistoryAction, History, Location as HistoryLocation } from 'history';\nimport { createHashHistory as createHistory } from 'history';\nimport React from 'react';\nimport type { BrowserRouterProps } from 'react-router-dom';\nimport { Router } from 'react-router-dom';\n\nimport { IonRouter } from './IonRouter';\n\ninterface IonReactHashRouterProps extends BrowserRouterProps {\n history?: History;\n}\n\nexport class IonReactHashRouter extends React.Component<IonReactHashRouterProps> {\n history: History;\n historyListenHandler?: (location: HistoryLocation, action: HistoryAction) => void;\n\n constructor(props: IonReactHashRouterProps) {\n super(props);\n const { history, ...rest } = props;\n this.history = history || createHistory(rest);\n this.history.listen(this.handleHistoryChange.bind(this));\n this.registerHistoryListener = this.registerHistoryListener.bind(this);\n }\n\n /**\n * history@4.x passes separate location and action\n * params. history@5.x passes location and action\n * together as a single object.\n * TODO: If support for React Router <=5 is dropped\n * this logic is no longer needed. We can just assume\n * a single object with both location and action.\n */\n handleHistoryChange(location: HistoryLocation, action: HistoryAction) {\n const locationValue = (location as any).location || location;\n const actionValue = (location as any).action || action;\n if (this.historyListenHandler) {\n this.historyListenHandler(locationValue, actionValue);\n }\n }\n\n registerHistoryListener(cb: (location: HistoryLocation, action: HistoryAction) => void) {\n this.historyListenHandler = cb;\n }\n\n render() {\n const { children, ...props } = this.props;\n return (\n <Router history={this.history} {...props}>\n <IonRouter registerHistoryListener={this.registerHistoryListener}>{children}</IonRouter>\n </Router>\n );\n }\n}\n"],"names":["reactRouterMatchPath","matchComponent","createHistory","Router"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ionic/react-router",
|
|
3
|
-
"version": "8.8.17-nightly.
|
|
3
|
+
"version": "8.8.17-nightly.20260805",
|
|
4
4
|
"description": "React Router wrapper for @ionic/react",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ionic",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dist/"
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@ionic/react": "8.8.17-nightly.
|
|
39
|
+
"@ionic/react": "8.8.17-nightly.20260805",
|
|
40
40
|
"tslib": "*"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|