@ionic/react 8.7.13-dev.11765920447.1a01ab8b → 8.7.13-dev.11765921002.107104c2
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/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- package/dist/types/components/IonRoute.d.ts +1 -2
- package/dist/types/components/IonRouterOutlet.d.ts +1 -0
- package/dist/types/routing/OutletPageManager.d.ts +1 -0
- package/dist/types/routing/RouteManagerContext.d.ts +5 -0
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/contexts/IonLifeCycleContext.tsx","../src/lifecycle/IonLifeCycleHOC.tsx","../src/lifecycle/hooks.ts","../src/contexts/NavContext.ts","../src/components/react-component-lib/utils/case.ts","../src/components/react-component-lib/utils/attachProps.ts","../src/components/react-component-lib/utils/index.tsx","../src/components/react-component-lib/createComponent.tsx","../src/components/proxies.ts","../src/components/utils/index.tsx","../src/components/createRoutingComponent.tsx","../src/components/routing-proxies.ts","../src/components/utils/detachProps.ts","../src/components/createInlineOverlayComponent.tsx","../src/components/IonAlert.tsx","../src/components/IonLoading.tsx","../src/components/IonToast.tsx","../src/components/IonPickerLegacy.tsx","../src/components/IonActionSheet.tsx","../src/components/IonModal.tsx","../src/components/IonPopover.tsx","../src/contexts/IonContext.tsx","../src/components/IonOverlayManager.tsx","../src/components/inner-proxies.ts","../src/components/IonApp.tsx","../src/routing/StackContext.tsx","../src/routing/PageManager.tsx","../src/components/IonPage.tsx","../src/utils/generateId.ts","../src/framework-delegate.tsx","../src/components/navigation/IonNav.tsx","../src/components/navigation/IonTabsContext.tsx","../src/utils/HTMLElementSSR.ts","../src/routing/OutletPageManager.tsx","../src/components/IonRouterOutlet.tsx","../src/components/navigation/IonTabs.tsx","../src/components/navigation/IonTabButton.tsx","../src/components/navigation/IonTabBar.tsx","../src/components/navigation/IonBackButton.tsx","../src/components/IonIcon.tsx","../src/components/IonRoute.tsx","../src/components/IonRedirect.tsx","../src/components/IonRouterContext.tsx","../src/components/CreateAnimation.tsx","../src/hooks/useController.ts","../src/hooks/useIonActionSheet.ts","../src/hooks/useIonAlert.ts","../src/hooks/useIonToast.ts","../src/hooks/useOverlay.ts","../src/hooks/useIonModal.ts","../src/hooks/useIonPopover.ts","../src/hooks/useIonPicker.tsx","../src/hooks/useIonLoading.tsx","../src/components/index.ts","../src/routing/RouteManagerContext.ts","../src/routing/ViewLifeCycleManager.tsx","../src/routing/LocationHistory.ts","../src/routing/NavManager.tsx","../src/routing/ViewStacks.ts"],"sourcesContent":["import React from 'react';\n\nexport interface IonLifeCycleContextInterface {\n onIonViewWillEnter: (callback: () => void) => void;\n ionViewWillEnter: () => void;\n onIonViewDidEnter: (callback: () => void) => void;\n ionViewDidEnter: () => void;\n onIonViewWillLeave: (callback: () => void) => void;\n ionViewWillLeave: () => void;\n onIonViewDidLeave: (callback: () => void) => void;\n ionViewDidLeave: () => void;\n cleanupIonViewWillEnter: (callback: () => void) => void;\n cleanupIonViewDidEnter: (callback: () => void) => void;\n cleanupIonViewWillLeave: (callback: () => void) => void;\n cleanupIonViewDidLeave: (callback: () => void) => void;\n}\n\nexport const IonLifeCycleContext = /*@__PURE__*/ React.createContext<IonLifeCycleContextInterface>({\n onIonViewWillEnter: () => {\n return;\n },\n ionViewWillEnter: () => {\n return;\n },\n onIonViewDidEnter: () => {\n return;\n },\n ionViewDidEnter: () => {\n return;\n },\n onIonViewWillLeave: () => {\n return;\n },\n ionViewWillLeave: () => {\n return;\n },\n onIonViewDidLeave: () => {\n return;\n },\n ionViewDidLeave: () => {\n return;\n },\n cleanupIonViewWillEnter: () => {\n return;\n },\n cleanupIonViewDidEnter: () => {\n return;\n },\n cleanupIonViewWillLeave: () => {\n return;\n },\n cleanupIonViewDidLeave: () => {\n return;\n },\n});\n\nexport interface LifeCycleCallback {\n (): void | (() => void | undefined);\n id?: number;\n}\n\nexport interface LifeCycleDestructor {\n id: number;\n destructor: ReturnType<LifeCycleCallback>;\n}\n\nexport const DefaultIonLifeCycleContext = class implements IonLifeCycleContextInterface {\n ionViewWillEnterCallbacks: LifeCycleCallback[] = [];\n ionViewDidEnterCallbacks: LifeCycleCallback[] = [];\n ionViewWillLeaveCallbacks: LifeCycleCallback[] = [];\n ionViewDidLeaveCallbacks: LifeCycleCallback[] = [];\n componentCanBeDestroyedCallback?: () => void;\n ionViewWillEnterDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewDidEnterDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewWillLeaveDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewDidLeaveDestructorCallbacks: LifeCycleDestructor[] = [];\n\n onIonViewWillEnter(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewWillEnterCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewWillEnterCallbacks[index] = callback;\n } else {\n this.ionViewWillEnterCallbacks.push(callback);\n }\n } else {\n this.ionViewWillEnterCallbacks.push(callback);\n }\n }\n\n teardownCallback(callback: LifeCycleCallback, callbacks: any[]) {\n // Find any destructors that have been registered for the callback\n const matches = callbacks.filter((x) => x.id === callback.id);\n if (matches.length !== 0) {\n // Execute the destructor for each matching item\n matches.forEach((match) => {\n if (match && typeof match.destructor === 'function') {\n match.destructor();\n }\n });\n // Remove all matching items from the array\n callbacks = callbacks.filter((x) => x.id !== callback.id);\n }\n }\n\n /**\n * Tears down the user-provided ionViewWillEnter lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewWillEnter(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewWillEnterDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewDidEnter lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewDidEnter(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewDidEnterDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewWillLeave lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewWillLeave(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewWillLeaveDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewDidLeave lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewDidLeave(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewDidLeaveDestructorCallbacks);\n }\n\n ionViewWillEnter() {\n this.ionViewWillEnterCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewWillEnterDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewDidEnter(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewDidEnterCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewDidEnterCallbacks[index] = callback;\n } else {\n this.ionViewDidEnterCallbacks.push(callback);\n }\n } else {\n this.ionViewDidEnterCallbacks.push(callback);\n }\n }\n\n ionViewDidEnter() {\n this.ionViewDidEnterCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewDidEnterDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewWillLeave(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewWillLeaveCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewWillLeaveCallbacks[index] = callback;\n } else {\n this.ionViewWillLeaveCallbacks.push(callback);\n }\n } else {\n this.ionViewWillLeaveCallbacks.push(callback);\n }\n }\n\n ionViewWillLeave() {\n this.ionViewWillLeaveCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewWillLeaveDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewDidLeave(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewDidLeaveCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewDidLeaveCallbacks[index] = callback;\n } else {\n this.ionViewDidLeaveCallbacks.push(callback);\n }\n } else {\n this.ionViewDidLeaveCallbacks.push(callback);\n }\n }\n\n ionViewDidLeave() {\n this.ionViewDidLeaveCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewDidLeaveDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n this.componentCanBeDestroyed();\n }\n\n onComponentCanBeDestroyed(callback: () => void) {\n this.componentCanBeDestroyedCallback = callback;\n }\n\n componentCanBeDestroyed() {\n if (this.componentCanBeDestroyedCallback) {\n this.componentCanBeDestroyedCallback();\n }\n }\n};\n","import React from 'react';\n\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\n\n// TODO(FW-2959): types\n\nexport const withIonLifeCycle = (WrappedComponent: React.ComponentType<any>) => {\n return class IonLifeCycle extends React.Component<any, any> {\n context!: React.ContextType<typeof IonLifeCycleContext>;\n componentRef = React.createRef<any>();\n\n constructor(props: any) {\n super(props);\n }\n\n componentDidMount() {\n const element = this.componentRef.current;\n this.context.onIonViewWillEnter(() => {\n if (element && element.ionViewWillEnter) {\n element.ionViewWillEnter();\n }\n });\n\n this.context.onIonViewDidEnter(() => {\n if (element && element.ionViewDidEnter) {\n element.ionViewDidEnter();\n }\n });\n\n this.context.onIonViewWillLeave(() => {\n if (element && element.ionViewWillLeave) {\n element.ionViewWillLeave();\n }\n });\n\n this.context.onIonViewDidLeave(() => {\n if (element && element.ionViewDidLeave) {\n element.ionViewDidLeave();\n }\n });\n }\n\n render() {\n return (\n <IonLifeCycleContext.Consumer>\n {(context) => {\n this.context = context;\n return <WrappedComponent ref={this.componentRef} {...this.props} />;\n }}\n </IonLifeCycleContext.Consumer>\n );\n }\n };\n};\n","import { useContext, useEffect, useRef } from 'react';\n\nimport type { LifeCycleCallback } from '../contexts/IonLifeCycleContext';\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\n\nexport const useIonViewWillEnter = (callback: LifeCycleCallback, deps: any[] = []) => {\n const context = useContext(IonLifeCycleContext);\n const id = useRef<number | undefined>();\n id.current = id.current || Math.floor(Math.random() * 1000000);\n useEffect(() => {\n callback.id = id.current!;\n context.onIonViewWillEnter(callback);\n return () => {\n context.cleanupIonViewWillEnter(callback);\n };\n }, deps);\n};\n\nexport const useIonViewDidEnter = (callback: LifeCycleCallback, deps: any[] = []) => {\n const context = useContext(IonLifeCycleContext);\n const id = useRef<number | undefined>();\n id.current = id.current || Math.floor(Math.random() * 1000000);\n useEffect(() => {\n callback.id = id.current!;\n context.onIonViewDidEnter(callback);\n return () => {\n context.cleanupIonViewDidEnter(callback);\n };\n }, deps);\n};\n\nexport const useIonViewWillLeave = (callback: LifeCycleCallback, deps: any[] = []) => {\n const context = useContext(IonLifeCycleContext);\n const id = useRef<number | undefined>();\n id.current = id.current || Math.floor(Math.random() * 1000000);\n useEffect(() => {\n callback.id = id.current!;\n context.onIonViewWillLeave(callback);\n return () => {\n context.cleanupIonViewWillLeave(callback);\n };\n }, deps);\n};\n\nexport const useIonViewDidLeave = (callback: LifeCycleCallback, deps: any[] = []) => {\n const context = useContext(IonLifeCycleContext);\n const id = useRef<number | undefined>();\n id.current = id.current || Math.floor(Math.random() * 1000000);\n useEffect(() => {\n callback.id = id.current!;\n context.onIonViewDidLeave(callback);\n return () => {\n context.cleanupIonViewDidLeave(callback);\n };\n }, deps);\n};\n","import type { AnimationBuilder, RouterDirection } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { RouteInfo } from '../models';\n\n// TODO(FW-2959): types\n\nexport interface NavContextState {\n getIonRoute: () => any;\n getIonRedirect: () => any;\n getPageManager: () => any;\n getStackManager: () => any;\n goBack: (route?: string | RouteInfo, animationBuilder?: AnimationBuilder) => void;\n navigate: (\n path: string,\n direction?: RouterDirection | 'none',\n ionRouteAction?: 'push' | 'replace' | 'pop',\n animationBuilder?: AnimationBuilder,\n options?: any,\n tab?: string\n ) => void;\n hasIonicRouter: () => boolean;\n routeInfo?: RouteInfo;\n setCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n changeTab: (tab: string, path: string, routeOptions?: any) => void;\n resetTab: (tab: string, originalHref: string, originalRouteOptions?: any) => void;\n}\n\nexport const NavContext = /*@__PURE__*/ React.createContext<NavContextState>({\n getIonRedirect: () => undefined,\n getIonRoute: () => undefined,\n getPageManager: () => undefined,\n getStackManager: () => undefined,\n goBack: (route?: string | RouteInfo) => {\n if (typeof window !== 'undefined') {\n if (typeof route === 'string') {\n window.location.pathname = route;\n } else {\n window.history.back();\n }\n }\n },\n navigate: (path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n hasIonicRouter: () => false,\n routeInfo: undefined,\n setCurrentTab: () => undefined,\n changeTab: (_tab: string, path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n resetTab: (_tab: string, path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n});\n","export const dashToPascalCase = (str: string) =>\n str\n .toLowerCase()\n .split('-')\n .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))\n .join('');\nexport const camelToDashCase = (str: string) => str.replace(/([A-Z])/g, (m: string) => `-${m[0].toLowerCase()}`);\n","import { camelToDashCase } from './case';\n\nexport const attachProps = (node: HTMLElement, newProps: any, oldProps: any = {}) => {\n // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first\n if (node instanceof Element) {\n // add any classes in className to the class list\n const className = getClassName(node.classList, newProps, oldProps);\n if (className !== '') {\n node.className = className;\n }\n\n Object.keys(newProps).forEach((name) => {\n if (\n name === 'children' ||\n name === 'style' ||\n name === 'ref' ||\n name === 'class' ||\n name === 'className' ||\n name === 'forwardedRef'\n ) {\n return;\n }\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2);\n const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n\n if (!isCoveredByReact(eventNameLc)) {\n syncEvent(node, eventNameLc, newProps[name]);\n }\n } else {\n (node as any)[name] = newProps[name];\n const propType = typeof newProps[name];\n if (propType === 'string') {\n node.setAttribute(camelToDashCase(name), newProps[name]);\n }\n }\n });\n }\n};\n\nexport const getClassName = (classList: DOMTokenList, newProps: any, oldProps: any) => {\n const newClassProp: string = newProps.className || newProps.class;\n const oldClassProp: string = oldProps.className || oldProps.class;\n // map the classes to Maps for performance\n const currentClasses = arrayToMap(classList);\n const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []);\n const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []);\n const finalClassNames: string[] = [];\n // loop through each of the current classes on the component\n // to see if it should be a part of the classNames added\n currentClasses.forEach((currentClass) => {\n if (incomingPropClasses.has(currentClass)) {\n // add it as its already included in classnames coming in from newProps\n finalClassNames.push(currentClass);\n incomingPropClasses.delete(currentClass);\n } else if (!oldPropClasses.has(currentClass)) {\n // add it as it has NOT been removed by user\n finalClassNames.push(currentClass);\n }\n });\n incomingPropClasses.forEach((s) => finalClassNames.push(s));\n return finalClassNames.join(' ');\n};\n\n/**\n * Transforms a React event name to a browser event name.\n */\nexport const transformReactEventName = (eventNameSuffix: string) => {\n switch (eventNameSuffix) {\n case 'doubleclick':\n return 'dblclick';\n }\n return eventNameSuffix;\n};\n\n/**\n * Checks if an event is supported in the current execution environment.\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nexport const isCoveredByReact = (eventNameSuffix: string) => {\n if (typeof document === 'undefined') {\n return true;\n } else {\n const eventName = 'on' + transformReactEventName(eventNameSuffix);\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof (element as any)[eventName] === 'function';\n }\n\n return isSupported;\n }\n};\n\nexport const syncEvent = (\n node: Element & { __events?: { [key: string]: ((e: Event) => any) | undefined } },\n eventName: string,\n newEventHandler?: (e: Event) => any\n) => {\n const eventStore = node.__events || (node.__events = {});\n const oldEventHandler = eventStore[eventName];\n\n // Remove old listener so they don't double up.\n if (oldEventHandler) {\n node.removeEventListener(eventName, oldEventHandler);\n }\n\n // Bind new listener.\n node.addEventListener(\n eventName,\n (eventStore[eventName] = function handler(e: Event) {\n if (newEventHandler) {\n newEventHandler.call(this, e);\n }\n })\n );\n};\n\nconst arrayToMap = (arr: string[] | DOMTokenList) => {\n const map = new Map<string, string>();\n (arr as string[]).forEach((s: string) => map.set(s, s));\n return map;\n};\n","import React from 'react';\n\nimport type { StyleReactProps } from '../interfaces';\n\nexport type StencilReactExternalProps<PropType, ElementType> = PropType &\n Omit<React.HTMLAttributes<ElementType>, 'style'> &\n StyleReactProps;\n\n// This will be replaced with React.ForwardedRef when react-output-target is upgraded to React v17\nexport type StencilReactForwardedRef<T> = ((instance: T | null) => void) | React.MutableRefObject<T | null> | null;\n\nexport const setRef = (ref: StencilReactForwardedRef<any> | React.Ref<any> | undefined, value: any) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n // Cast as a MutableRef so we can assign current\n (ref as React.MutableRefObject<any>).current = value;\n }\n};\n\nexport const mergeRefs = (\n ...refs: (StencilReactForwardedRef<any> | React.Ref<any> | undefined)[]\n): React.RefCallback<any> => {\n return (value: any) => {\n refs.forEach((ref) => {\n setRef(ref, value);\n });\n };\n};\n\nexport const createForwardRef = <PropType, ElementType>(ReactComponent: any, displayName: string) => {\n const forwardRef = (\n props: StencilReactExternalProps<PropType, ElementType>,\n ref: StencilReactForwardedRef<ElementType>\n ) => {\n return <ReactComponent {...props} forwardedRef={ref} />;\n };\n forwardRef.displayName = displayName;\n\n return React.forwardRef(forwardRef);\n};\n\nexport const defineCustomElement = (tagName: string, customElement: any) => {\n if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n};\n\nexport * from './attachProps';\nexport * from './case';\n","import React, { createElement } from 'react';\n\nimport { attachProps, camelToDashCase, createForwardRef, dashToPascalCase, isCoveredByReact, mergeRefs } from './utils';\n\nexport interface HTMLStencilElement extends HTMLElement {\n componentOnReady(): Promise<this>;\n}\n\ninterface StencilReactInternalProps<ElementType> extends React.HTMLAttributes<ElementType> {\n forwardedRef: React.RefObject<ElementType>;\n ref?: React.Ref<any>;\n}\n\nexport const createReactComponent = <\n PropType,\n ElementType extends HTMLStencilElement,\n ContextStateType = {},\n ExpandedPropsTypes = {}\n>(\n tagName: string,\n ReactComponentContext?: React.Context<ContextStateType>,\n manipulatePropsFunction?: (\n originalProps: StencilReactInternalProps<ElementType>,\n propsToPass: any\n ) => ExpandedPropsTypes,\n defineCustomElement?: () => void\n) => {\n if (defineCustomElement !== undefined) {\n defineCustomElement();\n }\n\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component<StencilReactInternalProps<ElementType>> {\n componentEl!: ElementType;\n\n setComponentElRef = (element: ElementType) => {\n this.componentEl = element;\n };\n\n constructor(props: StencilReactInternalProps<ElementType>) {\n super(props);\n }\n\n componentDidMount() {\n this.componentDidUpdate(this.props);\n }\n\n componentDidUpdate(prevProps: StencilReactInternalProps<ElementType>) {\n attachProps(this.componentEl, this.props, prevProps);\n }\n\n render() {\n const { children, forwardedRef, style, className, ref, ...cProps } = this.props;\n\n let propsToPass = Object.keys(cProps).reduce((acc: any, name) => {\n const value = (cProps as any)[name];\n\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (typeof document !== 'undefined' && isCoveredByReact(eventName)) {\n acc[name] = value;\n }\n } else {\n // we should only render strings, booleans, and numbers as attrs in html.\n // objects, functions, arrays etc get synced via properties on mount.\n const type = typeof value;\n\n if (type === 'string' || type === 'boolean' || type === 'number') {\n acc[camelToDashCase(name)] = value;\n }\n }\n return acc;\n }, {} as ExpandedPropsTypes);\n\n if (manipulatePropsFunction) {\n propsToPass = manipulatePropsFunction(this.props, propsToPass);\n }\n\n const newProps: Omit<StencilReactInternalProps<ElementType>, 'forwardedRef'> = {\n ...propsToPass,\n ref: mergeRefs(forwardedRef, this.setComponentElRef),\n style,\n };\n\n /**\n * We use createElement here instead of\n * React.createElement to work around a\n * bug in Vite (https://github.com/vitejs/vite/issues/6104).\n * React.createElement causes all elements to be rendered\n * as <tagname> instead of the actual Web Component.\n */\n return createElement(tagName, newProps, children);\n }\n\n static get displayName() {\n return displayName;\n }\n };\n\n // If context was passed to createReactComponent then conditionally add it to the Component Class\n if (ReactComponentContext) {\n ReactComponent.contextType = ReactComponentContext;\n }\n\n return createForwardRef<PropType, ElementType>(ReactComponent, displayName);\n};\n","/* eslint-disable */\n/* tslint:disable */\n/* auto-generated react proxies */\nimport { createReactComponent } from './react-component-lib';\n\nimport type { JSX } from '@ionic/core/components';\n\nimport { defineCustomElement as defineIonAccordion } from '@ionic/core/components/ion-accordion.js';\nimport { defineCustomElement as defineIonAccordionGroup } from '@ionic/core/components/ion-accordion-group.js';\nimport { defineCustomElement as defineIonAvatar } from '@ionic/core/components/ion-avatar.js';\nimport { defineCustomElement as defineIonBackdrop } from '@ionic/core/components/ion-backdrop.js';\nimport { defineCustomElement as defineIonBadge } from '@ionic/core/components/ion-badge.js';\nimport { defineCustomElement as defineIonBreadcrumbs } from '@ionic/core/components/ion-breadcrumbs.js';\nimport { defineCustomElement as defineIonButtons } from '@ionic/core/components/ion-buttons.js';\nimport { defineCustomElement as defineIonCardContent } from '@ionic/core/components/ion-card-content.js';\nimport { defineCustomElement as defineIonCardHeader } from '@ionic/core/components/ion-card-header.js';\nimport { defineCustomElement as defineIonCardSubtitle } from '@ionic/core/components/ion-card-subtitle.js';\nimport { defineCustomElement as defineIonCardTitle } from '@ionic/core/components/ion-card-title.js';\nimport { defineCustomElement as defineIonCheckbox } from '@ionic/core/components/ion-checkbox.js';\nimport { defineCustomElement as defineIonChip } from '@ionic/core/components/ion-chip.js';\nimport { defineCustomElement as defineIonCol } from '@ionic/core/components/ion-col.js';\nimport { defineCustomElement as defineIonContent } from '@ionic/core/components/ion-content.js';\nimport { defineCustomElement as defineIonDatetime } from '@ionic/core/components/ion-datetime.js';\nimport { defineCustomElement as defineIonDatetimeButton } from '@ionic/core/components/ion-datetime-button.js';\nimport { defineCustomElement as defineIonFab } from '@ionic/core/components/ion-fab.js';\nimport { defineCustomElement as defineIonFabList } from '@ionic/core/components/ion-fab-list.js';\nimport { defineCustomElement as defineIonFooter } from '@ionic/core/components/ion-footer.js';\nimport { defineCustomElement as defineIonGrid } from '@ionic/core/components/ion-grid.js';\nimport { defineCustomElement as defineIonHeader } from '@ionic/core/components/ion-header.js';\nimport { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js';\nimport { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js';\nimport { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js';\nimport { defineCustomElement as defineIonInput } from '@ionic/core/components/ion-input.js';\nimport { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js';\nimport { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js';\nimport { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js';\nimport { defineCustomElement as defineIonItemGroup } from '@ionic/core/components/ion-item-group.js';\nimport { defineCustomElement as defineIonItemOptions } from '@ionic/core/components/ion-item-options.js';\nimport { defineCustomElement as defineIonItemSliding } from '@ionic/core/components/ion-item-sliding.js';\nimport { defineCustomElement as defineIonLabel } from '@ionic/core/components/ion-label.js';\nimport { defineCustomElement as defineIonList } from '@ionic/core/components/ion-list.js';\nimport { defineCustomElement as defineIonListHeader } from '@ionic/core/components/ion-list-header.js';\nimport { defineCustomElement as defineIonMenu } from '@ionic/core/components/ion-menu.js';\nimport { defineCustomElement as defineIonMenuButton } from '@ionic/core/components/ion-menu-button.js';\nimport { defineCustomElement as defineIonMenuToggle } from '@ionic/core/components/ion-menu-toggle.js';\nimport { defineCustomElement as defineIonNav } from '@ionic/core/components/ion-nav.js';\nimport { defineCustomElement as defineIonNavLink } from '@ionic/core/components/ion-nav-link.js';\nimport { defineCustomElement as defineIonNote } from '@ionic/core/components/ion-note.js';\nimport { defineCustomElement as defineIonPicker } from '@ionic/core/components/ion-picker.js';\nimport { defineCustomElement as defineIonPickerColumn } from '@ionic/core/components/ion-picker-column.js';\nimport { defineCustomElement as defineIonPickerColumnOption } from '@ionic/core/components/ion-picker-column-option.js';\nimport { defineCustomElement as defineIonProgressBar } from '@ionic/core/components/ion-progress-bar.js';\nimport { defineCustomElement as defineIonRadio } from '@ionic/core/components/ion-radio.js';\nimport { defineCustomElement as defineIonRadioGroup } from '@ionic/core/components/ion-radio-group.js';\nimport { defineCustomElement as defineIonRange } from '@ionic/core/components/ion-range.js';\nimport { defineCustomElement as defineIonRefresher } from '@ionic/core/components/ion-refresher.js';\nimport { defineCustomElement as defineIonRefresherContent } from '@ionic/core/components/ion-refresher-content.js';\nimport { defineCustomElement as defineIonReorder } from '@ionic/core/components/ion-reorder.js';\nimport { defineCustomElement as defineIonReorderGroup } from '@ionic/core/components/ion-reorder-group.js';\nimport { defineCustomElement as defineIonRippleEffect } from '@ionic/core/components/ion-ripple-effect.js';\nimport { defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js';\nimport { defineCustomElement as defineIonSearchbar } from '@ionic/core/components/ion-searchbar.js';\nimport { defineCustomElement as defineIonSegment } from '@ionic/core/components/ion-segment.js';\nimport { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js';\nimport { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js';\nimport { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js';\nimport { defineCustomElement as defineIonSelect } from '@ionic/core/components/ion-select.js';\nimport { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js';\nimport { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js';\nimport { defineCustomElement as defineIonSkeletonText } from '@ionic/core/components/ion-skeleton-text.js';\nimport { defineCustomElement as defineIonSpinner } from '@ionic/core/components/ion-spinner.js';\nimport { defineCustomElement as defineIonSplitPane } from '@ionic/core/components/ion-split-pane.js';\nimport { defineCustomElement as defineIonTab } from '@ionic/core/components/ion-tab.js';\nimport { defineCustomElement as defineIonText } from '@ionic/core/components/ion-text.js';\nimport { defineCustomElement as defineIonTextarea } from '@ionic/core/components/ion-textarea.js';\nimport { defineCustomElement as defineIonThumbnail } from '@ionic/core/components/ion-thumbnail.js';\nimport { defineCustomElement as defineIonTitle } from '@ionic/core/components/ion-title.js';\nimport { defineCustomElement as defineIonToggle } from '@ionic/core/components/ion-toggle.js';\nimport { defineCustomElement as defineIonToolbar } from '@ionic/core/components/ion-toolbar.js';\n\nexport const IonAccordion = /*@__PURE__*/createReactComponent<JSX.IonAccordion, HTMLIonAccordionElement>('ion-accordion', undefined, undefined, defineIonAccordion);\nexport const IonAccordionGroup = /*@__PURE__*/createReactComponent<JSX.IonAccordionGroup, HTMLIonAccordionGroupElement>('ion-accordion-group', undefined, undefined, defineIonAccordionGroup);\nexport const IonAvatar = /*@__PURE__*/createReactComponent<JSX.IonAvatar, HTMLIonAvatarElement>('ion-avatar', undefined, undefined, defineIonAvatar);\nexport const IonBackdrop = /*@__PURE__*/createReactComponent<JSX.IonBackdrop, HTMLIonBackdropElement>('ion-backdrop', undefined, undefined, defineIonBackdrop);\nexport const IonBadge = /*@__PURE__*/createReactComponent<JSX.IonBadge, HTMLIonBadgeElement>('ion-badge', undefined, undefined, defineIonBadge);\nexport const IonBreadcrumbs = /*@__PURE__*/createReactComponent<JSX.IonBreadcrumbs, HTMLIonBreadcrumbsElement>('ion-breadcrumbs', undefined, undefined, defineIonBreadcrumbs);\nexport const IonButtons = /*@__PURE__*/createReactComponent<JSX.IonButtons, HTMLIonButtonsElement>('ion-buttons', undefined, undefined, defineIonButtons);\nexport const IonCardContent = /*@__PURE__*/createReactComponent<JSX.IonCardContent, HTMLIonCardContentElement>('ion-card-content', undefined, undefined, defineIonCardContent);\nexport const IonCardHeader = /*@__PURE__*/createReactComponent<JSX.IonCardHeader, HTMLIonCardHeaderElement>('ion-card-header', undefined, undefined, defineIonCardHeader);\nexport const IonCardSubtitle = /*@__PURE__*/createReactComponent<JSX.IonCardSubtitle, HTMLIonCardSubtitleElement>('ion-card-subtitle', undefined, undefined, defineIonCardSubtitle);\nexport const IonCardTitle = /*@__PURE__*/createReactComponent<JSX.IonCardTitle, HTMLIonCardTitleElement>('ion-card-title', undefined, undefined, defineIonCardTitle);\nexport const IonCheckbox = /*@__PURE__*/createReactComponent<JSX.IonCheckbox, HTMLIonCheckboxElement>('ion-checkbox', undefined, undefined, defineIonCheckbox);\nexport const IonChip = /*@__PURE__*/createReactComponent<JSX.IonChip, HTMLIonChipElement>('ion-chip', undefined, undefined, defineIonChip);\nexport const IonCol = /*@__PURE__*/createReactComponent<JSX.IonCol, HTMLIonColElement>('ion-col', undefined, undefined, defineIonCol);\nexport const IonContent = /*@__PURE__*/createReactComponent<JSX.IonContent, HTMLIonContentElement>('ion-content', undefined, undefined, defineIonContent);\nexport const IonDatetime = /*@__PURE__*/createReactComponent<JSX.IonDatetime, HTMLIonDatetimeElement>('ion-datetime', undefined, undefined, defineIonDatetime);\nexport const IonDatetimeButton = /*@__PURE__*/createReactComponent<JSX.IonDatetimeButton, HTMLIonDatetimeButtonElement>('ion-datetime-button', undefined, undefined, defineIonDatetimeButton);\nexport const IonFab = /*@__PURE__*/createReactComponent<JSX.IonFab, HTMLIonFabElement>('ion-fab', undefined, undefined, defineIonFab);\nexport const IonFabList = /*@__PURE__*/createReactComponent<JSX.IonFabList, HTMLIonFabListElement>('ion-fab-list', undefined, undefined, defineIonFabList);\nexport const IonFooter = /*@__PURE__*/createReactComponent<JSX.IonFooter, HTMLIonFooterElement>('ion-footer', undefined, undefined, defineIonFooter);\nexport const IonGrid = /*@__PURE__*/createReactComponent<JSX.IonGrid, HTMLIonGridElement>('ion-grid', undefined, undefined, defineIonGrid);\nexport const IonHeader = /*@__PURE__*/createReactComponent<JSX.IonHeader, HTMLIonHeaderElement>('ion-header', undefined, undefined, defineIonHeader);\nexport const IonImg = /*@__PURE__*/createReactComponent<JSX.IonImg, HTMLIonImgElement>('ion-img', undefined, undefined, defineIonImg);\nexport const IonInfiniteScroll = /*@__PURE__*/createReactComponent<JSX.IonInfiniteScroll, HTMLIonInfiniteScrollElement>('ion-infinite-scroll', undefined, undefined, defineIonInfiniteScroll);\nexport const IonInfiniteScrollContent = /*@__PURE__*/createReactComponent<JSX.IonInfiniteScrollContent, HTMLIonInfiniteScrollContentElement>('ion-infinite-scroll-content', undefined, undefined, defineIonInfiniteScrollContent);\nexport const IonInput = /*@__PURE__*/createReactComponent<JSX.IonInput, HTMLIonInputElement>('ion-input', undefined, undefined, defineIonInput);\nexport const IonInputOtp = /*@__PURE__*/createReactComponent<JSX.IonInputOtp, HTMLIonInputOtpElement>('ion-input-otp', undefined, undefined, defineIonInputOtp);\nexport const IonInputPasswordToggle = /*@__PURE__*/createReactComponent<JSX.IonInputPasswordToggle, HTMLIonInputPasswordToggleElement>('ion-input-password-toggle', undefined, undefined, defineIonInputPasswordToggle);\nexport const IonItemDivider = /*@__PURE__*/createReactComponent<JSX.IonItemDivider, HTMLIonItemDividerElement>('ion-item-divider', undefined, undefined, defineIonItemDivider);\nexport const IonItemGroup = /*@__PURE__*/createReactComponent<JSX.IonItemGroup, HTMLIonItemGroupElement>('ion-item-group', undefined, undefined, defineIonItemGroup);\nexport const IonItemOptions = /*@__PURE__*/createReactComponent<JSX.IonItemOptions, HTMLIonItemOptionsElement>('ion-item-options', undefined, undefined, defineIonItemOptions);\nexport const IonItemSliding = /*@__PURE__*/createReactComponent<JSX.IonItemSliding, HTMLIonItemSlidingElement>('ion-item-sliding', undefined, undefined, defineIonItemSliding);\nexport const IonLabel = /*@__PURE__*/createReactComponent<JSX.IonLabel, HTMLIonLabelElement>('ion-label', undefined, undefined, defineIonLabel);\nexport const IonList = /*@__PURE__*/createReactComponent<JSX.IonList, HTMLIonListElement>('ion-list', undefined, undefined, defineIonList);\nexport const IonListHeader = /*@__PURE__*/createReactComponent<JSX.IonListHeader, HTMLIonListHeaderElement>('ion-list-header', undefined, undefined, defineIonListHeader);\nexport const IonMenu = /*@__PURE__*/createReactComponent<JSX.IonMenu, HTMLIonMenuElement>('ion-menu', undefined, undefined, defineIonMenu);\nexport const IonMenuButton = /*@__PURE__*/createReactComponent<JSX.IonMenuButton, HTMLIonMenuButtonElement>('ion-menu-button', undefined, undefined, defineIonMenuButton);\nexport const IonMenuToggle = /*@__PURE__*/createReactComponent<JSX.IonMenuToggle, HTMLIonMenuToggleElement>('ion-menu-toggle', undefined, undefined, defineIonMenuToggle);\nexport const IonNav = /*@__PURE__*/createReactComponent<JSX.IonNav, HTMLIonNavElement>('ion-nav', undefined, undefined, defineIonNav);\nexport const IonNavLink = /*@__PURE__*/createReactComponent<JSX.IonNavLink, HTMLIonNavLinkElement>('ion-nav-link', undefined, undefined, defineIonNavLink);\nexport const IonNote = /*@__PURE__*/createReactComponent<JSX.IonNote, HTMLIonNoteElement>('ion-note', undefined, undefined, defineIonNote);\nexport const IonPicker = /*@__PURE__*/createReactComponent<JSX.IonPicker, HTMLIonPickerElement>('ion-picker', undefined, undefined, defineIonPicker);\nexport const IonPickerColumn = /*@__PURE__*/createReactComponent<JSX.IonPickerColumn, HTMLIonPickerColumnElement>('ion-picker-column', undefined, undefined, defineIonPickerColumn);\nexport const IonPickerColumnOption = /*@__PURE__*/createReactComponent<JSX.IonPickerColumnOption, HTMLIonPickerColumnOptionElement>('ion-picker-column-option', undefined, undefined, defineIonPickerColumnOption);\nexport const IonProgressBar = /*@__PURE__*/createReactComponent<JSX.IonProgressBar, HTMLIonProgressBarElement>('ion-progress-bar', undefined, undefined, defineIonProgressBar);\nexport const IonRadio = /*@__PURE__*/createReactComponent<JSX.IonRadio, HTMLIonRadioElement>('ion-radio', undefined, undefined, defineIonRadio);\nexport const IonRadioGroup = /*@__PURE__*/createReactComponent<JSX.IonRadioGroup, HTMLIonRadioGroupElement>('ion-radio-group', undefined, undefined, defineIonRadioGroup);\nexport const IonRange = /*@__PURE__*/createReactComponent<JSX.IonRange, HTMLIonRangeElement>('ion-range', undefined, undefined, defineIonRange);\nexport const IonRefresher = /*@__PURE__*/createReactComponent<JSX.IonRefresher, HTMLIonRefresherElement>('ion-refresher', undefined, undefined, defineIonRefresher);\nexport const IonRefresherContent = /*@__PURE__*/createReactComponent<JSX.IonRefresherContent, HTMLIonRefresherContentElement>('ion-refresher-content', undefined, undefined, defineIonRefresherContent);\nexport const IonReorder = /*@__PURE__*/createReactComponent<JSX.IonReorder, HTMLIonReorderElement>('ion-reorder', undefined, undefined, defineIonReorder);\nexport const IonReorderGroup = /*@__PURE__*/createReactComponent<JSX.IonReorderGroup, HTMLIonReorderGroupElement>('ion-reorder-group', undefined, undefined, defineIonReorderGroup);\nexport const IonRippleEffect = /*@__PURE__*/createReactComponent<JSX.IonRippleEffect, HTMLIonRippleEffectElement>('ion-ripple-effect', undefined, undefined, defineIonRippleEffect);\nexport const IonRow = /*@__PURE__*/createReactComponent<JSX.IonRow, HTMLIonRowElement>('ion-row', undefined, undefined, defineIonRow);\nexport const IonSearchbar = /*@__PURE__*/createReactComponent<JSX.IonSearchbar, HTMLIonSearchbarElement>('ion-searchbar', undefined, undefined, defineIonSearchbar);\nexport const IonSegment = /*@__PURE__*/createReactComponent<JSX.IonSegment, HTMLIonSegmentElement>('ion-segment', undefined, undefined, defineIonSegment);\nexport const IonSegmentButton = /*@__PURE__*/createReactComponent<JSX.IonSegmentButton, HTMLIonSegmentButtonElement>('ion-segment-button', undefined, undefined, defineIonSegmentButton);\nexport const IonSegmentContent = /*@__PURE__*/createReactComponent<JSX.IonSegmentContent, HTMLIonSegmentContentElement>('ion-segment-content', undefined, undefined, defineIonSegmentContent);\nexport const IonSegmentView = /*@__PURE__*/createReactComponent<JSX.IonSegmentView, HTMLIonSegmentViewElement>('ion-segment-view', undefined, undefined, defineIonSegmentView);\nexport const IonSelect = /*@__PURE__*/createReactComponent<JSX.IonSelect, HTMLIonSelectElement>('ion-select', undefined, undefined, defineIonSelect);\nexport const IonSelectModal = /*@__PURE__*/createReactComponent<JSX.IonSelectModal, HTMLIonSelectModalElement>('ion-select-modal', undefined, undefined, defineIonSelectModal);\nexport const IonSelectOption = /*@__PURE__*/createReactComponent<JSX.IonSelectOption, HTMLIonSelectOptionElement>('ion-select-option', undefined, undefined, defineIonSelectOption);\nexport const IonSkeletonText = /*@__PURE__*/createReactComponent<JSX.IonSkeletonText, HTMLIonSkeletonTextElement>('ion-skeleton-text', undefined, undefined, defineIonSkeletonText);\nexport const IonSpinner = /*@__PURE__*/createReactComponent<JSX.IonSpinner, HTMLIonSpinnerElement>('ion-spinner', undefined, undefined, defineIonSpinner);\nexport const IonSplitPane = /*@__PURE__*/createReactComponent<JSX.IonSplitPane, HTMLIonSplitPaneElement>('ion-split-pane', undefined, undefined, defineIonSplitPane);\nexport const IonTab = /*@__PURE__*/createReactComponent<JSX.IonTab, HTMLIonTabElement>('ion-tab', undefined, undefined, defineIonTab);\nexport const IonText = /*@__PURE__*/createReactComponent<JSX.IonText, HTMLIonTextElement>('ion-text', undefined, undefined, defineIonText);\nexport const IonTextarea = /*@__PURE__*/createReactComponent<JSX.IonTextarea, HTMLIonTextareaElement>('ion-textarea', undefined, undefined, defineIonTextarea);\nexport const IonThumbnail = /*@__PURE__*/createReactComponent<JSX.IonThumbnail, HTMLIonThumbnailElement>('ion-thumbnail', undefined, undefined, defineIonThumbnail);\nexport const IonTitle = /*@__PURE__*/createReactComponent<JSX.IonTitle, HTMLIonTitleElement>('ion-title', undefined, undefined, defineIonTitle);\nexport const IonToggle = /*@__PURE__*/createReactComponent<JSX.IonToggle, HTMLIonToggleElement>('ion-toggle', undefined, undefined, defineIonToggle);\nexport const IonToolbar = /*@__PURE__*/createReactComponent<JSX.IonToolbar, HTMLIonToolbarElement>('ion-toolbar', undefined, undefined, defineIonToolbar);\n","import type { Config as CoreConfig, Platforms } from '@ionic/core/components';\nimport { getPlatforms as getPlatformsCore, isPlatform as isPlatformCore } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { IonicReactProps } from '../IonicReactProps';\n\nexport type IonicReactExternalProps<PropType, ElementType> = PropType &\n /**\n * TODO: FW-5753\n *\n * The `placeholder` property was removed from `HTMLAttributes` in @types/react@18.2.43\n * https://github.com/DefinitelyTyped/DefinitelyTyped/commit/b954269038de46b4b2f1756a9f2f020cbc66a326\n *\n * This is a temporary workaround until @ionic/react is updated to >=18.2.43.\n */\n Omit<React.HTMLAttributes<ElementType>, 'style' | 'placeholder'> &\n IonicReactProps;\n\nexport const createForwardRef = <PropType, ElementType>(\n ReactComponent: any, // TODO(FW-2959): type\n displayName: string\n) => {\n const forwardRef = (props: IonicReactExternalProps<PropType, ElementType>, ref: React.ForwardedRef<ElementType>) => {\n return <ReactComponent {...props} forwardedRef={ref} />;\n };\n forwardRef.displayName = displayName;\n\n return React.forwardRef(forwardRef);\n};\n\nexport const isPlatform = (platform: Platforms) => {\n return isPlatformCore(window, platform);\n};\n\nexport const getPlatforms = () => {\n return getPlatformsCore(window);\n};\n\nexport const getConfig = (): CoreConfig | null => {\n if (typeof (window as any) !== 'undefined') {\n const Ionic = (window as any).Ionic;\n if (Ionic && Ionic.config) {\n return Ionic.config;\n }\n }\n return null;\n};\n","import type { AnimationBuilder } from '@ionic/core/components';\nimport React, { createElement } from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport type { RouterOptions } from '../models';\nimport type { RouterDirection } from '../models/RouterDirection';\n\nimport {\n attachProps,\n camelToDashCase,\n dashToPascalCase,\n defineCustomElement,\n isCoveredByReact,\n mergeRefs,\n} from './react-component-lib/utils';\nimport { createForwardRef } from './utils';\n\n// TODO(FW-2959): types\n\ninterface IonicReactInternalProps<ElementType> extends React.HTMLAttributes<ElementType> {\n forwardedRef?: React.ForwardedRef<ElementType>;\n href?: string;\n routerLink?: string;\n ref?: React.Ref<any>;\n routerDirection?: RouterDirection;\n routerOptions?: RouterOptions;\n routerAnimation?: AnimationBuilder;\n}\n\nexport const createRoutingComponent = <PropType, ElementType>(tagName: string, customElement?: any) => {\n defineCustomElement(tagName, customElement);\n\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component<IonicReactInternalProps<PropType>> {\n context!: React.ContextType<typeof NavContext>;\n ref: React.RefObject<HTMLElement>;\n stableMergedRefs: React.RefCallback<HTMLElement>;\n\n constructor(props: IonicReactInternalProps<PropType>) {\n super(props);\n // Create a local ref to to attach props to the wrapped element.\n this.ref = React.createRef();\n // React refs must be stable (not created inline).\n this.stableMergedRefs = mergeRefs(this.ref, this.props.forwardedRef);\n }\n\n componentDidMount() {\n this.componentDidUpdate(this.props);\n }\n\n componentDidUpdate(prevProps: IonicReactInternalProps<PropType>) {\n const node = this.ref.current! as HTMLElement;\n attachProps(node, this.props, prevProps);\n }\n\n private handleClick = (e: React.MouseEvent<PropType>) => {\n const { routerLink, routerDirection, routerOptions, routerAnimation } = this.props;\n if (routerLink !== undefined) {\n e.preventDefault();\n this.context.navigate(routerLink, routerDirection, undefined, routerAnimation, routerOptions);\n }\n };\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { children, forwardedRef, style, className, ref, ...cProps } = this.props;\n\n const propsToPass = Object.keys(cProps).reduce((acc, name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (isCoveredByReact(eventName)) {\n (acc as any)[name] = (cProps as any)[name];\n }\n } else if (['string', 'boolean', 'number'].includes(typeof (cProps as any)[name])) {\n (acc as any)[camelToDashCase(name)] = (cProps as any)[name];\n }\n return acc;\n }, {});\n\n const newProps: IonicReactInternalProps<PropType> = {\n ...propsToPass,\n ref: this.stableMergedRefs,\n style,\n };\n\n if (this.props.routerLink && !this.props.href) {\n newProps.href = this.props.routerLink;\n }\n if (newProps.onClick) {\n const oldClick = newProps.onClick;\n newProps.onClick = (e: React.MouseEvent<PropType>) => {\n oldClick(e);\n if (!e.defaultPrevented) {\n this.handleClick(e);\n }\n };\n } else {\n newProps.onClick = this.handleClick;\n }\n\n return createElement(tagName, newProps, children);\n }\n\n static get displayName() {\n return displayName;\n }\n\n static get contextType() {\n return NavContext;\n }\n };\n return createForwardRef<PropType, ElementType>(ReactComponent, displayName);\n};\n","import type { JSX } from '@ionic/core/components';\nimport { IonBreadcrumb as IonBreadcrumbCmp } from '@ionic/core/components/ion-breadcrumb.js';\nimport { IonButton as IonButtonCmp } from '@ionic/core/components/ion-button.js';\nimport { IonCard as IonCardCmp } from '@ionic/core/components/ion-card.js';\nimport { IonFabButton as IonFabButtonCmp } from '@ionic/core/components/ion-fab-button.js';\nimport { IonItemOption as IonItemOptionCmp } from '@ionic/core/components/ion-item-option.js';\nimport { IonItem as IonItemCmp } from '@ionic/core/components/ion-item.js';\nimport { IonRouterLink as IonRouterLinkCmp } from '@ionic/core/components/ion-router-link.js';\n\nimport { createRoutingComponent } from './createRoutingComponent';\nimport type { HrefProps } from './hrefprops';\n\nexport const IonRouterLink = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonRouterLink>,\n HTMLIonRouterLinkElement\n>('ion-router-link', IonRouterLinkCmp);\n\nexport const IonButton = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonButton>, HTMLIonButtonElement>(\n 'ion-button',\n IonButtonCmp\n);\n\nexport const IonCard = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonCard>, HTMLIonCardElement>(\n 'ion-card',\n IonCardCmp\n);\n\nexport const IonFabButton = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonFabButton>, HTMLIonFabButtonElement>(\n 'ion-fab-button',\n IonFabButtonCmp\n);\n\nexport const IonItem = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonItem>, HTMLIonItemElement>(\n 'ion-item',\n IonItemCmp\n);\n\nexport const IonItemOption = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonItemOption>,\n HTMLIonItemOptionElement\n>('ion-item-option', IonItemOptionCmp);\n\nexport const IonBreadcrumb = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonBreadcrumb>,\n HTMLIonBreadcrumbElement\n>('ion-breadcrumb', IonBreadcrumbCmp);\n","import { isCoveredByReact } from '../react-component-lib/utils';\n\n/**\n * The @stencil/react-output-target will bind event listeners for any\n * attached props that use the `on` prefix. This function will remove\n * those event listeners when the component is unmounted.\n *\n * This prevents memory leaks and React state updates on unmounted components.\n */\nexport const detachProps = (node: HTMLElement, props: any) => {\n if (node instanceof Element) {\n Object.keys(props).forEach((name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2);\n const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n if (!isCoveredByReact(eventNameLc)) {\n /**\n * Detach custom event bindings (not built-in React events)\n * that were added by the @stencil/react-output-target attachProps function.\n */\n detachEvent(node, eventNameLc);\n }\n }\n });\n }\n};\n\nconst detachEvent = (\n node: Element & { __events?: { [key: string]: ((e: Event) => any) | undefined } },\n eventName: string\n) => {\n const eventStore = node.__events || (node.__events = {});\n /**\n * If the event listener was added by attachProps, it will\n * be stored in the __events object.\n */\n const eventHandler = eventStore[eventName];\n if (eventHandler) {\n node.removeEventListener(eventName, eventHandler);\n eventStore[eventName] = undefined;\n }\n};\n","import type { HTMLIonOverlayElement, OverlayEventDetail } from '@ionic/core/components';\nimport React, { createElement } from 'react';\n\nimport {\n attachProps,\n camelToDashCase,\n dashToPascalCase,\n isCoveredByReact,\n mergeRefs,\n} from './react-component-lib/utils';\nimport { createForwardRef } from './utils';\nimport { detachProps } from './utils/detachProps';\n\n// TODO(FW-2959): types\n\ntype InlineOverlayState = {\n isOpen: boolean;\n};\n\ninterface IonicReactInternalProps<ElementType> extends React.HTMLAttributes<ElementType> {\n forwardedRef?: React.ForwardedRef<ElementType>;\n ref?: React.Ref<any>;\n onDidDismiss?: (event: CustomEvent<OverlayEventDetail>) => void;\n onDidPresent?: (event: CustomEvent<OverlayEventDetail>) => void;\n onWillDismiss?: (event: CustomEvent<OverlayEventDetail>) => void;\n onWillPresent?: (event: CustomEvent<OverlayEventDetail>) => void;\n keepContentsMounted?: boolean;\n}\n\nexport const createInlineOverlayComponent = <PropType, ElementType>(\n tagName: string,\n defineCustomElement?: () => void,\n hasDelegateHost?: boolean\n) => {\n if (defineCustomElement) {\n defineCustomElement();\n }\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component<IonicReactInternalProps<PropType>, InlineOverlayState> {\n ref: React.RefObject<HTMLIonOverlayElement>;\n wrapperRef: React.RefObject<HTMLElement>;\n stableMergedRefs: React.RefCallback<HTMLElement>;\n\n constructor(props: IonicReactInternalProps<PropType>) {\n super(props);\n // Create a local ref to to attach props to the wrapped element.\n this.ref = React.createRef();\n // React refs must be stable (not created inline).\n this.stableMergedRefs = mergeRefs(this.ref, this.props.forwardedRef);\n // Component is hidden by default\n this.state = { isOpen: false };\n // Create a local ref to the inner child element.\n this.wrapperRef = React.createRef();\n }\n\n componentDidMount() {\n this.componentDidUpdate(this.props);\n\n this.ref.current?.addEventListener('ionMount', this.handleIonMount);\n this.ref.current?.addEventListener('willPresent', this.handleWillPresent);\n this.ref.current?.addEventListener('didDismiss', this.handleDidDismiss);\n }\n\n componentDidUpdate(prevProps: IonicReactInternalProps<PropType>) {\n const node = this.ref.current! as HTMLElement;\n /**\n * onDidDismiss and onWillPresent have manual implementations that\n * will invoke the original handler. We need to filter those out\n * so they don't get attached twice and called twice.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onDidDismiss, onWillPresent, ...cProps } = this.props;\n attachProps(node, cProps, prevProps);\n }\n\n componentWillUnmount() {\n const node = this.ref.current;\n /**\n * If the overlay is being unmounted, but is still\n * open, this means the unmount was triggered outside\n * of the overlay being dismissed.\n *\n * This can happen with:\n * - The parent component being unmounted\n * - The overlay being conditionally rendered\n * - A route change (push/pop/replace)\n *\n * Unmounting the overlay at this stage should skip\n * the dismiss lifecycle, including skipping the transition.\n *\n */\n if (node && this.state.isOpen) {\n /**\n * Detach the local event listener that performs the state updates,\n * before dismissing the overlay, to prevent the callback handlers\n * executing after the component has been unmounted. This is to\n * avoid memory leaks.\n */\n node.removeEventListener('didDismiss', this.handleDidDismiss);\n node.remove();\n detachProps(node, this.props);\n }\n }\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { children, forwardedRef, style, className, ref, ...cProps } = this.props;\n\n const propsToPass = Object.keys(cProps).reduce((acc, name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (isCoveredByReact(eventName)) {\n (acc as any)[name] = (cProps as any)[name];\n }\n } else if (['string', 'boolean', 'number'].includes(typeof (cProps as any)[name])) {\n (acc as any)[camelToDashCase(name)] = (cProps as any)[name];\n }\n return acc;\n }, {});\n\n const newProps: IonicReactInternalProps<PropType> = {\n ...propsToPass,\n ref: this.stableMergedRefs,\n style,\n };\n\n /**\n * Some overlays need `.ion-page` so content\n * takes up the full size of the parent overlay.\n */\n const getWrapperClasses = () => {\n if (hasDelegateHost) {\n return `${DELEGATE_HOST} ion-page`;\n }\n\n return DELEGATE_HOST;\n };\n\n return createElement(\n 'template',\n {},\n createElement(\n tagName,\n newProps,\n /**\n * We only want the inner component\n * to be mounted if the overlay is open,\n * so conditionally render the component\n * based on the isOpen state.\n */\n this.state.isOpen || this.props.keepContentsMounted\n ? createElement(\n 'div',\n {\n ref: this.wrapperRef,\n className: getWrapperClasses(),\n },\n children\n )\n : null\n )\n );\n }\n\n static get displayName() {\n return displayName;\n }\n\n private handleIonMount = () => {\n /**\n * Mount the inner component when the\n * overlay is about to open.\n *\n * For ion-popover, this is when `ionMount` is emitted.\n * For other overlays, this is when `willPresent` is emitted.\n */\n this.setState({ isOpen: true });\n };\n\n private handleWillPresent = (evt: any) => {\n this.setState({ isOpen: true });\n /**\n * Manually call the onWillPresent\n * handler if present as setState will\n * cause the event handlers to be\n * destroyed and re-created.\n */\n this.props.onWillPresent && this.props.onWillPresent(evt);\n };\n\n private handleDidDismiss = (evt: any) => {\n const wrapper = this.wrapperRef.current;\n const el = this.ref.current;\n\n /**\n * This component might be unmounted already, if the containing\n * element was removed while the overlay was still open. (For\n * example, if an item contains an inline overlay with a button\n * that removes the item.)\n */\n if (wrapper && el) {\n el.append(wrapper);\n this.setState({ isOpen: false });\n }\n\n this.props.onDidDismiss && this.props.onDidDismiss(evt);\n };\n };\n return createForwardRef<PropType, ElementType>(ReactComponent, displayName);\n};\n\nconst DELEGATE_HOST = 'ion-delegate-host';\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-alert.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonAlert = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonAlert, HTMLIonAlertElement>(\n 'ion-alert',\n defineCustomElement\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-loading.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonLoading = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonLoading, HTMLIonLoadingElement>(\n 'ion-loading',\n defineCustomElement\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-toast.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonToast = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonToast, HTMLIonToastElement>(\n 'ion-toast',\n defineCustomElement\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-picker-legacy.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonPickerLegacy = /*@__PURE__*/ createInlineOverlayComponent<\n JSX.IonPickerLegacy,\n HTMLIonPickerLegacyElement\n>('ion-picker-legacy', defineCustomElement);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-action-sheet.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonActionSheet = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonActionSheet, HTMLIonActionSheetElement>(\n 'ion-action-sheet',\n defineCustomElement\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-modal.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonModal = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonModal, HTMLIonModalElement>(\n 'ion-modal',\n defineCustomElement,\n true\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-popover.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonPopover = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonPopover, HTMLIonPopoverElement>(\n 'ion-popover',\n defineCustomElement\n);\n","import React from 'react';\n\nimport type { ReactComponentOrElement } from '../models';\n\nexport interface IonContextInterface {\n addOverlay: (id: string, overlay: ReactComponentOrElement, containerElement: HTMLDivElement) => void;\n removeOverlay: (id: string) => void;\n}\n\nexport const IonContext = React.createContext<IonContextInterface>({\n addOverlay: () => {\n return;\n },\n removeOverlay: () => {\n return;\n },\n});\n","import React, { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport type { ReactComponentOrElement } from '../models';\n\ninterface IonOverlayManagerProps {\n onAddOverlay: (\n callback: (id: string, component: ReactComponentOrElement, containerElement: HTMLDivElement) => void\n ) => void;\n onRemoveOverlay: (callback: (id: string) => void) => void;\n}\n\n/**\n * Manages overlays that are added via the useOverlay hook.\n * This is a standalone component so changes to its children don't cause other descendant\n * components to re-render when overlays are added. However, we need to communicate with the IonContext\n * that is set up in <IonApp />, so we register callbacks so when overlays are added to IonContext,\n * they ultimately added here.\n */\nexport const IonOverlayManager: React.FC<IonOverlayManagerProps> = ({ onAddOverlay, onRemoveOverlay }) => {\n type OverlaysList = {\n [key: string]: {\n component: any; // TODO(FW-2959): type\n containerElement: HTMLDivElement;\n };\n };\n\n /**\n * Because of the way we're passing around the addOverlay and removeOverlay\n * callbacks, by the time they finally get called, they use a stale reference\n * to the state that only has the initial values. So if two overlays are opened\n * at the same time, both using useIonModal or similar (such as through nesting),\n * the second will erase the first from the overlays list. This causes the content\n * of the first overlay to unmount.\n *\n * We wrap the state in useRef to ensure the two callbacks always use the most\n * up-to-date version.\n *\n * Further reading: https://stackoverflow.com/a/56554056\n */\n const [overlays, setOverlays] = useState<OverlaysList>({});\n const overlaysRef = useRef<OverlaysList>({});\n\n useEffect(() => {\n /* Setup the callbacks that get called from <IonApp /> */\n onAddOverlay(addOverlay);\n onRemoveOverlay(removeOverlay);\n }, []);\n\n const addOverlay = (id: string, component: ReactComponentOrElement, containerElement: HTMLDivElement) => {\n const newOverlays = { ...overlaysRef.current };\n newOverlays[id] = { component, containerElement };\n\n /**\n * In order for this function to use the latest data\n * we need to update the ref synchronously.\n * However, updating a ref does not cause a re-render\n * which is why we still update the state.\n *\n * Note that updating the ref in the body\n * of IonOverlayManager is not sufficient\n * because that relies on overlaysRef being\n * updated as part of React's render loop. State updates\n * are batched, so updating the state twice in quick succession does\n * not necessarily result in 2 separate render calls.\n * This means if two modals are added one after the other,\n * the first modal will not have been added to\n * overlaysRef since React has not re-rendered yet.\n * More info: https://react.dev/reference/react/useState#setstate-caveats\n */\n overlaysRef.current = newOverlays;\n setOverlays(newOverlays);\n };\n\n const removeOverlay = (id: string) => {\n const newOverlays = { ...overlaysRef.current };\n delete newOverlays[id];\n\n /**\n * In order for this function to use the latest data\n * we need to update the ref synchronously.\n * However, updating a ref does not cause a re-render\n * which is why we still update the state.\n *\n * Note that updating the ref in the body\n * of IonOverlayManager is not sufficient\n * because that relies on overlaysRef being\n * updated as part of React's render loop. State updates\n * are batched, so updating the state twice in quick succession does\n * not necessarily result in 2 separate render calls.\n * This means if two modals are added one after the other,\n * the first modal will not have been added to\n * overlaysRef since React has not re-rendered yet.\n * More info: https://react.dev/reference/react/useState#setstate-caveats\n */\n overlaysRef.current = newOverlays;\n setOverlays(newOverlays);\n };\n\n const overlayKeys = Object.keys(overlays);\n\n return (\n <>\n {overlayKeys.map((key) => {\n const overlay = overlays[key];\n return ReactDOM.createPortal(overlay.component, overlay.containerElement, `overlay-${key}`);\n })}\n </>\n );\n};\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement as defineIonApp } from '@ionic/core/components/ion-app.js';\nimport { defineCustomElement as defineIonBackButton } from '@ionic/core/components/ion-back-button.js';\nimport { defineCustomElement as defineIonRouterOutlet } from '@ionic/core/components/ion-router-outlet.js';\nimport { defineCustomElement as defineIonTabBar } from '@ionic/core/components/ion-tab-bar.js';\nimport { defineCustomElement as defineIonTabButton } from '@ionic/core/components/ion-tab-button.js';\nimport { defineCustomElement as defineIonTabs } from '@ionic/core/components/ion-tabs.js';\nimport type { JSX as IoniconsJSX } from 'ionicons';\nimport { defineCustomElement as defineIonIcon } from 'ionicons/components/ion-icon.js';\n\nimport { createReactComponent } from './react-component-lib';\n\nexport const IonTabButtonInner = /*@__PURE__*/ createReactComponent<\n JSX.IonTabButton & { onIonTabButtonClick?: (e: CustomEvent) => void },\n HTMLIonTabButtonElement\n>('ion-tab-button', undefined, undefined, defineIonTabButton);\nexport const IonTabBarInner = /*@__PURE__*/ createReactComponent<JSX.IonTabBar, HTMLIonTabBarElement>(\n 'ion-tab-bar',\n undefined,\n undefined,\n defineIonTabBar\n);\nexport const IonTabsInner = /*@__PURE__*/ createReactComponent<JSX.IonTabs, HTMLIonTabsElement>(\n 'ion-tabs',\n undefined,\n undefined,\n defineIonTabs\n);\nexport const IonBackButtonInner = /*@__PURE__*/ createReactComponent<\n Omit<JSX.IonBackButton, 'icon'>,\n HTMLIonBackButtonElement\n>('ion-back-button', undefined, undefined, defineIonBackButton);\nexport const IonRouterOutletInner = /*@__PURE__*/ createReactComponent<\n JSX.IonRouterOutlet & {\n setRef?: (val: HTMLIonRouterOutletElement) => void;\n forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n },\n HTMLIonRouterOutletElement\n>('ion-router-outlet', undefined, undefined, defineIonRouterOutlet);\n\nexport const IonAppInner = /*@__PURE__*/ createReactComponent<JSX.IonApp, HTMLIonAppElement>(\n 'ion-app',\n undefined,\n undefined,\n defineIonApp\n);\n\n// ionicons\nexport const IonIconInner = /*@__PURE__*/ createReactComponent<IoniconsJSX.IonIcon, HTMLIonIconElement>(\n 'ion-icon',\n undefined,\n undefined,\n defineIonIcon\n);\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { type PropsWithChildren } from 'react';\n\nimport type { IonContextInterface } from '../contexts/IonContext';\nimport { IonContext } from '../contexts/IonContext';\nimport type { ReactComponentOrElement } from '../models';\n\nimport { IonOverlayManager } from './IonOverlayManager';\nimport type { IonicReactProps } from './IonicReactProps';\nimport { IonAppInner } from './inner-proxies';\n\ntype Props = PropsWithChildren<\n LocalJSX.IonApp &\n IonicReactProps & {\n ref?: React.Ref<HTMLIonAppElement>;\n }\n>;\n\nexport class IonApp extends React.Component<Props> {\n addOverlayCallback?: (id: string, overlay: ReactComponentOrElement, containerElement: HTMLDivElement) => void;\n removeOverlayCallback?: (id: string) => void;\n\n constructor(props: Props) {\n super(props);\n }\n\n ionContext: IonContextInterface = {\n addOverlay: (id: string, overlay: ReactComponentOrElement, containerElement: HTMLDivElement) => {\n if (this.addOverlayCallback) {\n this.addOverlayCallback(id, overlay, containerElement);\n }\n },\n removeOverlay: (id: string) => {\n if (this.removeOverlayCallback) {\n this.removeOverlayCallback(id);\n }\n },\n };\n\n render() {\n return (\n <IonContext.Provider value={this.ionContext}>\n <IonAppInner {...this.props}>{this.props.children}</IonAppInner>\n <IonOverlayManager\n onAddOverlay={(callback) => {\n this.addOverlayCallback = callback;\n }}\n onRemoveOverlay={(callback) => {\n this.removeOverlayCallback = callback;\n }}\n />\n </IonContext.Provider>\n );\n }\n\n static displayName = 'IonApp';\n}\n","import React from 'react';\n\nimport type { RouteInfo } from '../models/RouteInfo';\n\nexport interface StackContextState {\n registerIonPage: (page: HTMLElement, routeInfo: RouteInfo) => void;\n isInOutlet: () => boolean;\n}\n\nexport const StackContext = React.createContext<StackContextState>({\n registerIonPage: () => undefined,\n isInOutlet: () => false,\n});\n","import React from 'react';\n\nimport { mergeRefs } from '../components/react-component-lib/utils';\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\nimport type { RouteInfo } from '../models';\n\nimport { StackContext } from './StackContext';\n\ninterface PageManagerProps {\n className?: string;\n forwardedRef?: React.ForwardedRef<HTMLDivElement>;\n routeInfo?: RouteInfo;\n}\n\nexport class PageManager extends React.PureComponent<PageManagerProps> {\n ionLifeCycleContext!: React.ContextType<typeof IonLifeCycleContext>;\n context!: React.ContextType<typeof StackContext>;\n ionPageElementRef: React.RefObject<HTMLDivElement>;\n stableMergedRefs: React.RefCallback<HTMLDivElement>;\n\n constructor(props: PageManagerProps) {\n super(props);\n this.ionPageElementRef = React.createRef();\n // React refs must be stable (not created inline).\n this.stableMergedRefs = mergeRefs(this.ionPageElementRef, this.props.forwardedRef);\n\n /**\n * This binds the scope of the following methods to the class scope.\n * The `.bind` method returns a new function, so we need to assign it\n * in the constructor rather than when adding or removing the listeners\n * to avoid creating a new function.\n */\n this.ionViewWillEnterHandler = this.ionViewWillEnterHandler.bind(this);\n this.ionViewDidEnterHandler = this.ionViewDidEnterHandler.bind(this);\n this.ionViewWillLeaveHandler = this.ionViewWillLeaveHandler.bind(this);\n this.ionViewDidLeaveHandler = this.ionViewDidLeaveHandler.bind(this);\n }\n\n componentDidMount() {\n if (this.ionPageElementRef.current) {\n if (this.context.isInOutlet()) {\n this.ionPageElementRef.current.classList.add('ion-page-invisible');\n }\n this.context.registerIonPage(this.ionPageElementRef.current, this.props.routeInfo!);\n this.ionPageElementRef.current.addEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);\n this.ionPageElementRef.current.addEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);\n this.ionPageElementRef.current.addEventListener('ionViewWillLeave', this.ionViewWillLeaveHandler);\n this.ionPageElementRef.current.addEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);\n }\n }\n\n componentWillUnmount() {\n if (this.ionPageElementRef.current) {\n this.ionPageElementRef.current.removeEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);\n this.ionPageElementRef.current.removeEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);\n this.ionPageElementRef.current.removeEventListener('ionViewWillLeave', this.ionViewWillLeaveHandler);\n /**\n * We deliberately do not remove the `ionViewDidLeave` listener.\n * The registered callback is used to unmount and remove the page.\n * Removing the event listener prevents the callback from being called.\n * The browser will automatically remove the event listener when the\n * page element is removed from the DOM and garbage collected.\n */\n }\n }\n\n ionViewWillEnterHandler() {\n this.ionLifeCycleContext.ionViewWillEnter();\n }\n\n ionViewDidEnterHandler() {\n this.ionLifeCycleContext.ionViewDidEnter();\n }\n\n ionViewWillLeaveHandler() {\n this.ionLifeCycleContext.ionViewWillLeave();\n }\n\n ionViewDidLeaveHandler() {\n this.ionLifeCycleContext.ionViewDidLeave();\n }\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { className, children, routeInfo, forwardedRef, ...props } = this.props;\n\n return (\n <IonLifeCycleContext.Consumer>\n {(context) => {\n this.ionLifeCycleContext = context;\n return (\n <div className={className ? `${className} ion-page` : `ion-page`} ref={this.stableMergedRefs} {...props}>\n {children}\n </div>\n );\n }}\n </IonLifeCycleContext.Consumer>\n );\n }\n\n static get contextType() {\n return StackContext;\n }\n}\nexport default PageManager;\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport PageManager from '../routing/PageManager';\n\nimport type { IonicReactProps } from './IonicReactProps';\nimport { createForwardRef } from './utils';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IonPageProps extends IonicReactProps {}\n\ninterface IonPageInternalProps extends IonPageProps {\n forwardedRef?: React.ForwardedRef<HTMLDivElement>;\n}\n\nclass IonPageInternal extends React.Component<IonPageInternalProps> {\n context!: React.ContextType<typeof NavContext>;\n\n constructor(props: IonPageInternalProps) {\n super(props);\n }\n\n render() {\n const { className, children, forwardedRef, ...props } = this.props;\n\n return this.context.hasIonicRouter() ? (\n <PageManager\n className={className ? `${className}` : ''}\n routeInfo={this.context.routeInfo}\n forwardedRef={forwardedRef}\n {...props}\n >\n {children}\n </PageManager>\n ) : (\n <div className={className ? `ion-page ${className}` : 'ion-page'} ref={forwardedRef} {...props}>\n {children}\n </div>\n );\n }\n\n static get displayName() {\n return 'IonPage';\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nexport const IonPage = createForwardRef(IonPageInternal, 'IonPage');\n","const ids: { [key: string]: number } = { main: 0 };\n\nexport const generateId = (type = 'main') => {\n const id = (ids[type] ?? 0) + 1;\n ids[type] = id;\n return id.toString();\n};\n","import type { FrameworkDelegate } from '@ionic/core/components';\nimport { createPortal } from 'react-dom';\n\nimport { generateId } from './utils/generateId';\n\n// TODO(FW-2959): types\n\ntype ReactComponent = (props?: any) => JSX.Element;\n\nexport const ReactDelegate = (\n addView: (view: React.ReactElement) => void,\n removeView: (view: React.ReactElement) => void\n): FrameworkDelegate => {\n const refMap = new WeakMap<HTMLElement, React.ReactElement>();\n const reactDelegateId = `react-delegate-${generateId()}`;\n // Incrementing counter to generate unique keys for each view\n let id = 0;\n\n const attachViewToDom = async (\n parentElement: HTMLElement,\n component: ReactComponent,\n propsOrDataObj?: any,\n cssClasses?: string[]\n ): Promise<any> => {\n const div = document.createElement('div');\n cssClasses && div.classList.add(...cssClasses);\n parentElement.appendChild(div);\n\n const componentWithProps = component(propsOrDataObj);\n const key = `${reactDelegateId}-${id++}`;\n const hostComponent = createPortal(componentWithProps, div, key);\n\n refMap.set(div, hostComponent);\n\n addView(hostComponent);\n\n return Promise.resolve(div);\n };\n\n const removeViewFromDom = (_container: any, component: HTMLElement): Promise<void> => {\n const hostComponent = refMap.get(component);\n hostComponent && removeView(hostComponent);\n\n component.remove();\n\n return Promise.resolve();\n };\n\n return {\n attachViewToDom,\n removeViewFromDom,\n };\n};\n","import type { FrameworkDelegate, JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-nav.js';\nimport React, { useMemo, useState } from 'react';\n\nimport { ReactDelegate } from '../../framework-delegate';\nimport { createReactComponent } from '../react-component-lib';\nimport { createForwardRef } from '../utils';\n\nconst IonNavInner = createReactComponent<JSX.IonNav & { delegate: FrameworkDelegate }, HTMLIonNavElement>(\n 'ion-nav',\n undefined,\n undefined,\n defineCustomElement\n);\n\ntype IonNavProps = JSX.IonNav & {\n forwardedRef?: React.ForwardedRef<HTMLIonNavElement>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst IonNavInternal: React.FC<IonNavProps> = ({ children, forwardedRef, ...restOfProps }) => {\n const [views, setViews] = useState<React.ReactElement[]>([]);\n\n /**\n * Allows us to create React components that are rendered within\n * the context of the IonNav component.\n */\n const addView = (view: React.ReactElement) => setViews((existingViews) => [...existingViews, view]);\n const removeView = (view: React.ReactElement) => setViews((existingViews) => existingViews.filter((v) => v !== view));\n\n const delegate = useMemo(() => ReactDelegate(addView, removeView), []);\n\n return (\n <IonNavInner delegate={delegate} ref={forwardedRef} {...restOfProps}>\n {views}\n </IonNavInner>\n );\n};\n\nexport const IonNav = createForwardRef<IonNavProps, HTMLIonNavElement>(IonNavInternal, 'IonNav');\n","import React from 'react';\n\nexport interface IonTabsContextState {\n activeTab: string | undefined;\n selectTab: (tab: string) => boolean;\n hasRouterOutlet: boolean;\n tabBarProps: TabBarProps;\n}\n\n/**\n * Tab bar can be used as a standalone component,\n * so the props can not be passed directly to the\n * tab bar component. Instead, props will be\n * passed through the context.\n */\ntype TabBarProps = {\n ref: React.RefObject<any>;\n onIonTabsWillChange?: (e: CustomEvent) => void;\n onIonTabsDidChange?: (e: CustomEvent) => void;\n};\n\nexport const IonTabsContext = React.createContext<IonTabsContextState>({\n activeTab: undefined,\n selectTab: () => false,\n hasRouterOutlet: false,\n tabBarProps: { ref: React.createRef() },\n});\n","export const HTMLElementSSR = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {}) as typeof HTMLElement;\n","import { componentOnReady } from '@ionic/core/components';\nimport React from 'react';\n\nimport { IonRouterOutletInner } from '../components/inner-proxies';\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\nimport type { RouteInfo } from '../models';\n\nimport { StackContext } from './StackContext';\n\ninterface OutletPageManagerProps {\n className?: string;\n forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n routeInfo?: RouteInfo;\n StackManager: any; // TODO(FW-2959): type\n}\n\nexport class OutletPageManager extends React.Component<OutletPageManagerProps> {\n ionLifeCycleContext!: React.ContextType<typeof IonLifeCycleContext>;\n context!: React.ContextType<typeof StackContext>;\n ionRouterOutlet: HTMLIonRouterOutletElement | undefined;\n outletIsReady: boolean;\n\n constructor(props: OutletPageManagerProps) {\n super(props);\n\n this.outletIsReady = false;\n\n /**\n * This binds the scope of the following methods to the class scope.\n * The `.bind` method returns a new function, so we need to assign it\n * in the constructor rather than when adding or removing the listeners\n * to avoid creating a new function.\n */\n this.ionViewWillEnterHandler = this.ionViewWillEnterHandler.bind(this);\n this.ionViewDidEnterHandler = this.ionViewDidEnterHandler.bind(this);\n this.ionViewWillLeaveHandler = this.ionViewWillLeaveHandler.bind(this);\n this.ionViewDidLeaveHandler = this.ionViewDidLeaveHandler.bind(this);\n }\n\n componentDidMount() {\n if (this.ionRouterOutlet) {\n /**\n * This avoids multiple raf calls\n * when React unmounts + remounts components.\n */\n if (!this.outletIsReady) {\n componentOnReady(this.ionRouterOutlet, () => {\n this.outletIsReady = true;\n this.context.registerIonPage(this.ionRouterOutlet!, this.props.routeInfo!);\n });\n }\n\n this.ionRouterOutlet.addEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);\n this.ionRouterOutlet.addEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);\n this.ionRouterOutlet.addEventListener('ionViewWillLeave', this.ionViewWillLeaveHandler);\n this.ionRouterOutlet.addEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);\n }\n }\n\n componentWillUnmount() {\n if (this.ionRouterOutlet) {\n this.ionRouterOutlet.removeEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);\n this.ionRouterOutlet.removeEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);\n this.ionRouterOutlet.removeEventListener('ionViewWillLeave', this.ionViewWillLeaveHandler);\n this.ionRouterOutlet.removeEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);\n }\n }\n\n ionViewWillEnterHandler() {\n this.ionLifeCycleContext.ionViewWillEnter();\n }\n\n ionViewDidEnterHandler() {\n this.ionLifeCycleContext.ionViewDidEnter();\n }\n\n ionViewWillLeaveHandler() {\n this.ionLifeCycleContext.ionViewWillLeave();\n }\n\n ionViewDidLeaveHandler() {\n this.ionLifeCycleContext.ionViewDidLeave();\n }\n\n render() {\n const { StackManager, children, routeInfo, ...props } = this.props;\n return (\n <IonLifeCycleContext.Consumer>\n {(context) => {\n this.ionLifeCycleContext = context;\n return (\n <StackManager routeInfo={routeInfo}>\n <IonRouterOutletInner\n setRef={(val: HTMLIonRouterOutletElement) => (this.ionRouterOutlet = val)}\n {...props}\n >\n {children}\n </IonRouterOutletInner>\n </StackManager>\n );\n }}\n </IonLifeCycleContext.Consumer>\n );\n }\n\n static get contextType() {\n return StackContext;\n }\n}\nexport default OutletPageManager;\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport OutletPageManager from '../routing/OutletPageManager';\n\nimport type { IonicReactProps } from './IonicReactProps';\nimport { IonRouterOutletInner } from './inner-proxies';\nimport { createForwardRef } from './utils';\n\ntype Props = LocalJSX.IonRouterOutlet & {\n basePath?: string;\n ref?: React.Ref<any>;\n ionPage?: boolean;\n};\n\ninterface InternalProps extends Props {\n forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface InternalState {}\n\nclass IonRouterOutletContainer extends React.Component<InternalProps, InternalState> {\n context!: React.ContextType<typeof NavContext>;\n\n constructor(props: InternalProps) {\n super(props);\n }\n\n render() {\n const StackManager = this.context.getStackManager();\n const { children, forwardedRef, ...props } = this.props;\n\n return this.context.hasIonicRouter() ? (\n props.ionPage ? (\n <OutletPageManager StackManager={StackManager} routeInfo={this.context.routeInfo} {...props}>\n {children}\n </OutletPageManager>\n ) : (\n <StackManager routeInfo={this.context.routeInfo}>\n <IonRouterOutletInner {...props} forwardedRef={forwardedRef}>\n {children}\n </IonRouterOutletInner>\n </StackManager>\n )\n ) : (\n <IonRouterOutletInner ref={forwardedRef} {...this.props}>\n {this.props.children}\n </IonRouterOutletInner>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nexport const IonRouterOutlet = createForwardRef<Props & IonicReactProps, HTMLIonRouterOutletElement>(\n IonRouterOutletContainer,\n 'IonRouterOutlet'\n);\n","import type { Components } from '@ionic/core';\nimport type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { Fragment } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport PageManager from '../../routing/PageManager';\nimport { HTMLElementSSR } from '../../utils/HTMLElementSSR';\nimport { IonRouterOutlet } from '../IonRouterOutlet';\nimport { IonTabsInner } from '../inner-proxies';\nimport { IonTab } from '../proxies';\n\nimport type { IonTabsContextState } from './IonTabsContext';\nimport { IonTabsContext } from './IonTabsContext';\n\nclass IonTabsElement extends HTMLElementSSR {\n constructor() {\n super();\n }\n}\n\n// TODO(FW-2959): types\n\nif (typeof (window as any) !== 'undefined' && window.customElements) {\n const element = window.customElements.get('ion-tabs');\n if (!element) {\n window.customElements.define('ion-tabs', IonTabsElement);\n }\n}\n\nexport interface IonTabsProps extends React.HTMLAttributes<Components.IonTabs> {\n onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;\n onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;\n}\n\ndeclare module 'react' {\n interface HTMLElements {\n 'ion-tabs': IonTabsProps;\n }\n}\n\ntype ChildFunction = (ionTabContext: IonTabsContextState) => React.ReactNode;\n\ninterface Props extends LocalJSX.IonTabs {\n className?: string;\n children: ChildFunction | React.ReactNode;\n onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;\n onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;\n}\n\nexport class IonTabs extends React.Component<Props> {\n shouldComponentUpdate(): boolean {\n return true;\n }\n\n context!: React.ContextType<typeof NavContext>;\n /**\n * `routerOutletRef` allows users to add a `ref` to `IonRouterOutlet`.\n * Without this, `ref.current` will be `undefined` in the user's app,\n * breaking their ability to access the `IonRouterOutlet` instance.\n * Do not remove this ref.\n */\n routerOutletRef: React.Ref<Components.IonRouterOutlet> = React.createRef();\n selectTabHandler?: (tag: string) => boolean;\n tabBarRef = React.createRef<any>();\n\n ionTabContextState: IonTabsContextState = {\n activeTab: undefined,\n selectTab: () => false,\n hasRouterOutlet: false,\n /**\n * Tab bar can be used as a standalone component,\n * so the props can not be passed directly to the\n * tab bar component. Instead, props will be\n * passed through the context.\n */\n tabBarProps: { ref: this.tabBarRef },\n };\n\n constructor(props: Props) {\n super(props);\n }\n\n componentDidMount() {\n if (this.tabBarRef.current) {\n // Grab initial value\n this.ionTabContextState.activeTab = this.tabBarRef.current.state.activeTab;\n // Override method\n this.tabBarRef.current.setActiveTabOnContext = (tab: string) => {\n this.ionTabContextState.activeTab = tab;\n };\n this.ionTabContextState.selectTab = this.tabBarRef.current.selectTab;\n }\n }\n\n renderTabsInner(children: React.ReactNode, outlet: React.ReactElement<{}> | undefined) {\n return (\n <IonTabsInner {...this.props}>\n {React.Children.map(children, (child: React.ReactNode) => {\n if (React.isValidElement(child)) {\n const isRouterOutlet =\n child.type === IonRouterOutlet ||\n (child.type as any).isRouterOutlet ||\n (child.type === Fragment && child.props.children[0].type === IonRouterOutlet);\n\n if (isRouterOutlet) {\n /**\n * The modified outlet needs to be returned to include\n * the ref.\n */\n return outlet;\n }\n }\n return child;\n })}\n </IonTabsInner>\n );\n }\n\n render() {\n let outlet: React.ReactElement<{}> | undefined;\n // Check if IonTabs has any IonTab children\n let hasTab = false;\n const { className, onIonTabsDidChange, onIonTabsWillChange, ...props } = this.props;\n\n const children =\n typeof this.props.children === 'function'\n ? (this.props.children as ChildFunction)(this.ionTabContextState)\n : this.props.children;\n\n React.Children.forEach(children, (child: any) => {\n // eslint-disable-next-line no-prototype-builtins\n if (child == null || typeof child !== 'object' || !child.hasOwnProperty('type')) {\n return;\n }\n if (child.type === IonRouterOutlet || child.type.isRouterOutlet) {\n outlet = React.cloneElement(child);\n } else if (child.type === Fragment && child.props.children[0].type === IonRouterOutlet) {\n outlet = React.cloneElement(child.props.children[0]);\n } else if (child.type === IonTab) {\n /**\n * This indicates that IonTabs will be using a basic tab-based navigation\n * without the history stack or URL updates associated with the router.\n */\n hasTab = true;\n }\n\n this.ionTabContextState.hasRouterOutlet = !!outlet;\n\n let childProps: any = {\n ...this.ionTabContextState.tabBarProps,\n };\n\n /**\n * Only pass these props\n * down from IonTabs to IonTabBar\n * if they are defined, otherwise\n * if you have a handler set on\n * IonTabBar it will be overridden.\n */\n if (onIonTabsDidChange !== undefined) {\n childProps = {\n ...childProps,\n onIonTabsDidChange,\n };\n }\n\n if (onIonTabsWillChange !== undefined) {\n childProps = {\n ...childProps,\n onIonTabsWillChange,\n };\n }\n\n this.ionTabContextState.tabBarProps = childProps;\n });\n\n if (!outlet && !hasTab) {\n throw new Error('IonTabs must contain an IonRouterOutlet or an IonTab');\n }\n if (outlet && hasTab) {\n throw new Error('IonTabs cannot contain an IonRouterOutlet and an IonTab at the same time');\n }\n\n if (hasTab) {\n return <IonTabsInner {...this.props}></IonTabsInner>;\n }\n\n /**\n * TODO(ROU-11051)\n *\n * There is no error handling for the case where there\n * is no associated Route for the given IonTabButton.\n *\n * More investigation is needed to determine how to\n * handle this to prevent any overwriting of the\n * IonTabButton's onClick handler and how the routing\n * is handled.\n */\n\n return (\n <IonTabsContext.Provider value={this.ionTabContextState}>\n {this.context.hasIonicRouter() ? (\n <PageManager className={className ? `${className}` : ''} routeInfo={this.context.routeInfo} {...props}>\n {this.renderTabsInner(children, outlet)}\n </PageManager>\n ) : (\n this.renderTabsInner(children, outlet)\n )}\n </IonTabsContext.Provider>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { RouterOptions } from '../../models';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonTabButtonInner } from '../inner-proxies';\n\ntype Props = LocalJSX.IonTabButton &\n IonicReactProps & {\n routerOptions?: RouterOptions;\n ref?: React.Ref<HTMLIonTabButtonElement>;\n onClick?: (e: CustomEvent) => void;\n onPointerDown?: React.PointerEventHandler<HTMLIonTabButtonElement>;\n onTouchEnd?: React.TouchEventHandler<HTMLIonTabButtonElement>;\n onTouchMove?: React.TouchEventHandler<HTMLIonTabButtonElement>;\n children?: React.ReactNode;\n };\n\nexport class IonTabButton extends React.Component<Props> {\n shouldComponentUpdate(): boolean {\n return true;\n }\n\n constructor(props: Props) {\n super(props);\n this.handleIonTabButtonClick = this.handleIonTabButtonClick.bind(this);\n }\n\n handleIonTabButtonClick() {\n if (this.props.onClick) {\n this.props.onClick(\n new CustomEvent('ionTabButtonClick', {\n detail: {\n tab: this.props.tab,\n href: this.props.href,\n routeOptions: this.props.routerOptions,\n },\n })\n );\n }\n }\n\n render() {\n /**\n * onClick is excluded from the props, since it has a custom\n * implementation within IonTabBar.tsx. Calling onClick within this\n * component would result in duplicate handler calls.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onClick, ...rest } = this.props;\n return <IonTabButtonInner onIonTabButtonClick={this.handleIonTabButtonClick} {...rest}></IonTabButtonInner>;\n }\n\n static get displayName() {\n return 'IonTabButton';\n }\n}\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { useContext } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport type { RouteInfo } from '../../models';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonTabBarInner } from '../inner-proxies';\nimport { createForwardRef } from '../utils';\n\nimport { IonTabButton } from './IonTabButton';\nimport { IonTabsContext } from './IonTabsContext';\nimport type { IonTabsContextState } from './IonTabsContext';\n\ntype IonTabBarProps = LocalJSX.IonTabBar &\n IonicReactProps & {\n onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;\n onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;\n slot?: 'bottom' | 'top';\n style?: { [key: string]: string };\n };\n\ninterface InternalProps extends IonTabBarProps {\n forwardedRef?: React.ForwardedRef<HTMLIonIconElement>;\n onSetCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n routeInfo: RouteInfo;\n tabsContext?: IonTabsContextState;\n}\n\ninterface TabUrls {\n originalHref: string;\n currentHref: string;\n originalRouteOptions?: unknown;\n currentRouteOptions?: unknown;\n}\n\ninterface IonTabBarState {\n activeTab?: string;\n tabs: { [key: string]: TabUrls };\n}\n\n// TODO(FW-2959): types\n\nclass IonTabBarUnwrapped extends React.PureComponent<InternalProps, IonTabBarState> {\n context!: React.ContextType<typeof NavContext>;\n\n constructor(props: InternalProps) {\n super(props);\n const tabs: { [key: string]: TabUrls } = {};\n React.Children.forEach((props as any).children, (child: any) => {\n if (\n child != null &&\n typeof child === 'object' &&\n child.props &&\n (child.type === IonTabButton || child.type.isTabButton)\n ) {\n tabs[child.props.tab] = {\n originalHref: child.props.href,\n currentHref: child.props.href,\n originalRouteOptions:\n child.props.href === props.routeInfo?.pathname ? props.routeInfo?.routeOptions : undefined,\n currentRouteOptions:\n child.props.href === props.routeInfo?.pathname ? props.routeInfo?.routeOptions : undefined,\n };\n }\n });\n\n this.state = {\n tabs,\n };\n\n this.onTabButtonClick = this.onTabButtonClick.bind(this);\n this.renderTabButton = this.renderTabButton.bind(this);\n this.setActiveTabOnContext = this.setActiveTabOnContext.bind(this);\n this.selectTab = this.selectTab.bind(this);\n }\n\n componentDidMount() {\n const tabs = this.state.tabs;\n const tabKeys = Object.keys(tabs);\n const activeTab = tabKeys.find((key) => {\n const href = tabs[key].originalHref;\n return this.props.routeInfo!.pathname.startsWith(href);\n });\n\n if (activeTab) {\n this.setState({\n activeTab,\n });\n }\n }\n\n componentDidUpdate() {\n if (this.state.activeTab) {\n this.setActiveTabOnContext(this.state.activeTab);\n }\n }\n\n // eslint-disable-next-line\n setActiveTabOnContext = (_tab: string) => {};\n\n selectTab(tab: string) {\n const tabUrl = this.state.tabs[tab];\n if (tabUrl) {\n this.onTabButtonClick(\n new CustomEvent('ionTabButtonClick', {\n detail: {\n href: tabUrl.currentHref,\n tab,\n selected: tab === this.state.activeTab,\n routeOptions: undefined,\n },\n })\n );\n return true;\n }\n return false;\n }\n\n static getDerivedStateFromProps(props: InternalProps, state: IonTabBarState) {\n const tabs = { ...state.tabs };\n const tabKeys = Object.keys(state.tabs);\n const activeTab = tabKeys.find((key) => {\n const href = state.tabs[key].originalHref;\n return props.routeInfo!.pathname.startsWith(href);\n });\n\n // Check to see if the tab button href has changed, and if so, update it in the tabs state\n React.Children.forEach((props as any).children, (child: any) => {\n if (\n child != null &&\n typeof child === 'object' &&\n child.props &&\n (child.type === IonTabButton || child.type.isTabButton)\n ) {\n const tab = tabs[child.props.tab];\n if (!tab || tab.originalHref !== child.props.href) {\n tabs[child.props.tab] = {\n originalHref: child.props.href,\n currentHref: child.props.href,\n originalRouteOptions: child.props.routeOptions,\n currentRouteOptions: child.props.routeOptions,\n };\n }\n }\n });\n\n const { activeTab: prevActiveTab } = state;\n if (activeTab && prevActiveTab) {\n const prevHref = state.tabs[prevActiveTab].currentHref;\n const prevRouteOptions = state.tabs[prevActiveTab].currentRouteOptions;\n if (\n activeTab !== prevActiveTab ||\n prevHref !== props.routeInfo?.pathname ||\n prevRouteOptions !== props.routeInfo?.routeOptions\n ) {\n tabs[activeTab] = {\n originalHref: tabs[activeTab].originalHref,\n currentHref: props.routeInfo!.pathname + (props.routeInfo!.search || ''),\n originalRouteOptions: tabs[activeTab].originalRouteOptions,\n currentRouteOptions: props.routeInfo?.routeOptions,\n };\n if (props.routeInfo.routeAction === 'pop' && activeTab !== prevActiveTab) {\n // If navigating back and the tabs change, set the prev tab back to its original href\n tabs[prevActiveTab] = {\n originalHref: tabs[prevActiveTab].originalHref,\n currentHref: tabs[prevActiveTab].originalHref,\n originalRouteOptions: tabs[prevActiveTab].originalRouteOptions,\n currentRouteOptions: tabs[prevActiveTab].currentRouteOptions,\n };\n }\n }\n }\n\n activeTab && props.onSetCurrentTab(activeTab, props.routeInfo);\n\n return {\n activeTab,\n tabs,\n };\n }\n\n private onTabButtonClick(\n e: CustomEvent<{ href: string; selected: boolean; tab: string; routeOptions: unknown }>,\n onClickFn?: (e: any) => void\n ) {\n const tappedTab = this.state.tabs[e.detail.tab];\n const originalHref = tappedTab.originalHref;\n const hasRouterOutlet = this.props.tabsContext?.hasRouterOutlet;\n\n /**\n * If the router outlet is not defined, then the tabs is being used\n * as a basic tab navigation without the router. In this case, we\n * don't want to update the href else the URL will change.\n */\n const currentHref = hasRouterOutlet ? e.detail.href : '';\n const { activeTab: prevActiveTab } = this.state;\n\n if (onClickFn) {\n /**\n * If the user provides an onClick function, we call it\n * with the original event.\n */\n onClickFn(e);\n }\n\n // this.props.onSetCurrentTab(e.detail.tab, this.props.routeInfo);\n // Clicking the current tab will bring you back to the original href\n if (prevActiveTab === e.detail.tab) {\n if (originalHref !== currentHref) {\n this.context.resetTab(e.detail.tab, originalHref, tappedTab.originalRouteOptions);\n }\n } else {\n if (this.props.onIonTabsWillChange) {\n this.props.onIonTabsWillChange(new CustomEvent('ionTabWillChange', { detail: { tab: e.detail.tab } }));\n }\n if (this.props.onIonTabsDidChange) {\n this.props.onIonTabsDidChange(new CustomEvent('ionTabDidChange', { detail: { tab: e.detail.tab } }));\n }\n if (hasRouterOutlet) {\n this.setActiveTabOnContext(e.detail.tab);\n this.context.changeTab(e.detail.tab, currentHref, e.detail.routeOptions);\n }\n }\n }\n\n private renderTabButton(activeTab: string | null | undefined) {\n return (\n child:\n | React.ReactElement<LocalJSX.IonTabButton & { onClick: (e: any) => void; routeOptions?: unknown }>\n | null\n | undefined\n ) => {\n if (child != null && child.props && (child.type === IonTabButton || (child as any).type.isTabButton)) {\n const href =\n child.props.tab === activeTab\n ? this.props.routeInfo?.pathname\n : this.state.tabs[child.props.tab!].currentHref;\n const routeOptions =\n child.props.tab === activeTab\n ? this.props.routeInfo?.routeOptions\n : this.state.tabs[child.props.tab!].currentRouteOptions;\n\n return React.cloneElement(child, {\n href,\n routeOptions,\n onClick: (ev: CustomEvent) => this.onTabButtonClick(ev, child.props.onClick),\n });\n }\n return null;\n };\n }\n\n render() {\n const { activeTab } = this.state;\n return (\n <IonTabBarInner {...this.props} selectedTab={activeTab}>\n {React.Children.map(this.props.children as any, this.renderTabButton(activeTab))}\n </IonTabBarInner>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nconst IonTabBarContainer: React.FC<InternalProps> = React.memo<InternalProps>(({ forwardedRef, ...props }) => {\n const context = useContext(NavContext);\n const tabsContext = useContext(IonTabsContext);\n const tabBarRef = forwardedRef || tabsContext.tabBarProps.ref;\n const updatedTabBarProps = {\n ...tabsContext.tabBarProps,\n ref: tabBarRef,\n };\n\n return (\n <IonTabBarUnwrapped\n ref={tabBarRef}\n {...(props as any)}\n routeInfo={props.routeInfo || context.routeInfo || { pathname: window.location.pathname }}\n onSetCurrentTab={context.setCurrentTab}\n /**\n * Tab bar can be used as a standalone component,\n * so it cannot be modified directly through\n * IonTabs. Instead, props will be passed through\n * the context.\n */\n tabsContext={{\n ...tabsContext,\n tabBarProps: updatedTabBarProps,\n }}\n >\n {props.children}\n </IonTabBarUnwrapped>\n );\n});\n\nexport const IonTabBar = createForwardRef<IonTabBarProps, HTMLIonTabBarElement>(IonTabBarContainer, 'IonTabBar');\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonBackButtonInner } from '../inner-proxies';\n\ntype Props = PropsWithChildren<\n LocalJSX.IonBackButton &\n IonicReactProps & {\n ref?: React.Ref<HTMLIonBackButtonElement>;\n }\n>;\n\nexport class IonBackButton extends React.Component<Props> {\n context!: React.ContextType<typeof NavContext>;\n\n clickButton = (e: React.MouseEvent) => {\n /**\n * If ion-back-button is being used inside\n * of ion-nav then we should not interact with\n * the router.\n */\n if (e.target && (e.target as HTMLElement).closest('ion-nav') !== null) {\n return;\n }\n\n const { defaultHref, routerAnimation } = this.props;\n\n if (this.context.hasIonicRouter()) {\n e.stopPropagation();\n this.context.goBack(defaultHref, routerAnimation);\n } else if (defaultHref !== undefined) {\n window.location.href = defaultHref;\n }\n };\n\n render() {\n return <IonBackButtonInner onClick={this.clickButton} {...this.props}></IonBackButtonInner>;\n }\n\n static get displayName() {\n return 'IonBackButton';\n }\n\n static get contextType() {\n return NavContext;\n }\n\n shouldComponentUpdate(): boolean {\n return true;\n }\n}\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nimport type { IonicReactProps } from './IonicReactProps';\nimport { IonIconInner } from './inner-proxies';\nimport { createForwardRef, getConfig } from './utils';\n\ninterface IonIconProps {\n color?: string;\n flipRtl?: boolean;\n icon?: string;\n ios?: string;\n lazy?: boolean;\n md?: string;\n mode?: 'ios' | 'md';\n name?: string;\n size?: string;\n src?: string;\n}\n\ntype InternalProps = IonIconProps & {\n forwardedRef?: React.ForwardedRef<HTMLIonIconElement>;\n};\n\nclass IonIconContainer extends React.PureComponent<InternalProps> {\n constructor(props: InternalProps) {\n super(props);\n if (this.props.name) {\n console.warn(\n 'In Ionic React, you import icons from \"ionicons/icons\" and set the icon you imported to the \"icon\" property. Setting the \"name\" property has no effect.'\n );\n }\n }\n\n render() {\n const { icon, ios, md, mode, ...rest } = this.props;\n\n let iconToUse: typeof icon;\n\n const config = getConfig();\n const iconMode = mode || config?.get('mode');\n\n if (ios || md) {\n if (iconMode === 'ios') {\n iconToUse = ios ?? md ?? icon;\n } else {\n iconToUse = md ?? ios ?? icon;\n }\n } else {\n iconToUse = icon;\n }\n\n return (\n <IonIconInner ref={this.props.forwardedRef} icon={iconToUse} {...rest}>\n {this.props.children}\n </IonIconInner>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nexport const IonIcon = createForwardRef<IonIconProps & IonicReactProps, HTMLIonIconElement>(\n IonIconContainer,\n 'IonIcon'\n);\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nexport interface IonRouteProps {\n path?: string;\n exact?: boolean;\n show?: boolean;\n render: (props?: any) => JSX.Element; // TODO(FW-2959): type\n disableIonPageManagement?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IonRouteState {}\n\nexport class IonRoute extends React.PureComponent<IonRouteProps, IonRouteState> {\n context!: React.ContextType<typeof NavContext>;\n\n render() {\n const IonRouteInner = this.context.getIonRoute();\n\n if (!this.context.hasIonicRouter() || !IonRoute) {\n console.error('You either do not have an Ionic Router package, or your router does not support using <IonRoute>');\n return null;\n }\n\n return <IonRouteInner {...this.props} />;\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nexport interface IonRedirectProps {\n path?: string;\n exact?: boolean;\n to: string;\n routerOptions?: unknown;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IonRedirectState {}\n\nexport class IonRedirect extends React.PureComponent<IonRedirectProps, IonRedirectState> {\n context!: React.ContextType<typeof NavContext>;\n\n render() {\n const IonRedirectInner = this.context.getIonRedirect();\n\n if (!this.context.hasIonicRouter() || !IonRedirect) {\n console.error(\n 'You either do not have an Ionic Router package, or your router does not support using <IonRedirect>'\n );\n return null;\n }\n\n return <IonRedirectInner {...this.props} />;\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n","import type { AnimationBuilder } from '@ionic/core/components';\nimport React, { useContext, useMemo } from 'react';\n\nimport type { RouteAction, RouterDirection, RouterOptions } from '../models';\nimport type { RouteInfo } from '../models/RouteInfo';\n\nexport interface IonRouterContextState {\n routeInfo: RouteInfo;\n push: (\n pathname: string,\n routerDirection?: RouterDirection,\n routeAction?: RouteAction,\n routerOptions?: RouterOptions,\n animationBuilder?: AnimationBuilder\n ) => void;\n back: (animationBuilder?: AnimationBuilder) => void;\n canGoBack: () => boolean;\n nativeBack: () => void;\n}\n\nexport const IonRouterContext = React.createContext<IonRouterContextState>({\n routeInfo: undefined as any, // TODO(FW-2959): type\n push: () => {\n throw new Error('An Ionic Router is required for IonRouterContext');\n },\n back: () => {\n throw new Error('An Ionic Router is required for IonRouterContext');\n },\n canGoBack: () => {\n throw new Error('An Ionic Router is required for IonRouterContext');\n },\n nativeBack: () => {\n throw new Error('An Ionic Router is required for IonRouterContext');\n },\n});\n\n/**\n * A hook for more direct control over routing in an Ionic React application. Allows you to pass additional meta-data to the router before the call to the native router.\n */\nexport function useIonRouter(): UseIonRouterResult {\n const context = useContext(IonRouterContext);\n\n return useMemo(\n () => ({\n back: context.back,\n push: context.push,\n goBack: context.back,\n canGoBack: context.canGoBack,\n routeInfo: context.routeInfo,\n }),\n [context.back, context.push, context.canGoBack, context.routeInfo]\n );\n}\n\nexport type UseIonRouterResult = {\n /**\n * @deprecated - Use goBack instead\n * @param animationBuilder - Optional - A custom transition animation to use\n */\n back(animationBuilder?: AnimationBuilder): void;\n /**\n * Navigates to a new pathname\n * @param pathname - The path to navigate to\n * @param routerDirection - Optional - The RouterDirection to use for transition purposes, defaults to 'forward'\n * @param routeAction - Optional - The RouteAction to use for history purposes, defaults to 'push'\n * @param routerOptions - Optional - Any additional parameters to pass to the router\n * @param animationBuilder - Optional - A custom transition animation to use\n */\n push(\n pathname: string,\n routerDirection?: RouterDirection,\n routeAction?: RouteAction,\n routerOptions?: RouterOptions,\n animationBuilder?: AnimationBuilder\n ): void;\n /**\n * Navigates backwards in history, using the IonRouter to determine history\n * @param animationBuilder - Optional - A custom transition animation to use\n */\n goBack(animationBuilder?: AnimationBuilder): void;\n /**\n * Determines if there are any additional routes in the Router's history. However, routing is not prevented if the browser's history has more entries. Returns true if more entries exist, false if not.\n */\n canGoBack(): boolean;\n routeInfo: RouteInfo;\n};\n","import type {\n Animation,\n AnimationCallbackOptions,\n AnimationDirection,\n AnimationFill,\n AnimationKeyFrames,\n AnimationLifecycle,\n} from '@ionic/core/components';\nimport { createAnimation } from '@ionic/core/components';\nimport type { PropsWithChildren } from 'react';\nimport React from 'react';\n\n// TODO(FW-2959): types\n\ninterface PartialPropertyValue {\n property: string;\n value: any;\n}\ninterface PropertyValue {\n property: string;\n fromValue: any;\n toValue: any;\n}\n\nexport interface CreateAnimationProps {\n delay?: number;\n direction?: AnimationDirection;\n duration?: number;\n easing?: string;\n fill?: AnimationFill;\n iterations?: number;\n id?: string;\n\n afterAddRead?: () => void;\n afterAddWrite?: () => void;\n afterClearStyles?: string[];\n afterStyles?: { [property: string]: any };\n afterAddClass?: string | string[];\n afterRemoveClass?: string | string[];\n\n beforeAddRead?: () => void;\n beforeAddWrite?: () => void;\n beforeClearStyles?: string[];\n beforeStyles?: { [property: string]: any };\n beforeAddClass?: string | string[];\n beforeRemoveClass?: string | string[];\n\n onFinish?: { callback: AnimationLifecycle; opts?: AnimationCallbackOptions };\n\n keyframes?: AnimationKeyFrames;\n from?: PartialPropertyValue[] | PartialPropertyValue;\n to?: PartialPropertyValue[] | PartialPropertyValue;\n fromTo?: PropertyValue[] | PropertyValue;\n\n play?: boolean;\n pause?: boolean;\n stop?: boolean;\n destroy?: boolean;\n\n progressStart?: { forceLinearEasing: boolean; step?: number };\n progressStep?: { step: number };\n progressEnd?: { playTo: 0 | 1 | undefined; step: number; dur?: number };\n}\n\nexport class CreateAnimation extends React.PureComponent<PropsWithChildren<CreateAnimationProps>> {\n nodes: Map<number, HTMLElement> = new Map();\n animation: Animation;\n\n constructor(props: any) {\n super(props);\n\n this.animation = createAnimation(props.id);\n }\n\n setupAnimation(props: any) {\n const animation = this.animation;\n\n if (this.nodes.size > 0) {\n animation.addElement(Array.from(this.nodes.values()));\n }\n\n checkConfig(animation, props);\n checkPlayback(animation, props);\n }\n\n componentDidMount() {\n const props = this.props;\n this.setupAnimation(props);\n }\n\n componentDidUpdate(prevProps: any) {\n const animation = this.animation;\n\n const props = this.props;\n\n checkConfig(animation, props, prevProps);\n checkProgress(animation, props, prevProps);\n checkPlayback(animation, props, prevProps);\n }\n\n render() {\n const { children } = this.props;\n return (\n <>\n {React.Children.map(children, (child, id) =>\n React.cloneElement(child as any, { ref: (el: any) => this.nodes.set(id, el) })\n )}\n </>\n );\n }\n}\n\nconst checkConfig = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n const reservedProps = [\n 'children',\n 'progressStart',\n 'progressStep',\n 'progressEnd',\n 'pause',\n 'stop',\n 'destroy',\n 'play',\n 'from',\n 'to',\n 'fromTo',\n 'onFinish',\n ];\n for (const key in currentProps) {\n if (\n // eslint-disable-next-line no-prototype-builtins\n currentProps.hasOwnProperty(key) &&\n !reservedProps.includes(key) &&\n currentProps[key] !== prevProps[key]\n ) {\n (animation as any)[key]((currentProps as any)[key]);\n }\n }\n\n const fromValues = currentProps.from;\n if (fromValues && fromValues !== prevProps.from) {\n const values = Array.isArray(fromValues) ? fromValues : [fromValues];\n values.forEach((val) => animation.from(val.property, val.value));\n }\n\n const toValues = currentProps.to;\n if (toValues && toValues !== prevProps.to) {\n const values = Array.isArray(toValues) ? toValues : [toValues];\n values.forEach((val) => animation.to(val.property, val.value));\n }\n\n const fromToValues = currentProps.fromTo;\n if (fromToValues && fromToValues !== prevProps.fromTo) {\n const values = Array.isArray(fromToValues) ? fromToValues : [fromToValues];\n values.forEach((val) => animation.fromTo(val.property, val.fromValue, val.toValue));\n }\n\n const onFinishValues = currentProps.onFinish;\n if (onFinishValues && onFinishValues !== prevProps.onFinish) {\n const values = Array.isArray(onFinishValues) ? onFinishValues : [onFinishValues];\n values.forEach((val) => animation.onFinish(val.callback, val.opts));\n }\n};\n\nconst checkProgress = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n const { progressStart, progressStep, progressEnd } = currentProps;\n\n if (\n progressStart &&\n (prevProps.progressStart?.forceLinearEasing !== progressStart?.forceLinearEasing ||\n prevProps.progressStart?.step !== progressStart?.step)\n ) {\n animation.progressStart(progressStart.forceLinearEasing, progressStart.step);\n }\n\n if (progressStep && prevProps.progressStep?.step !== progressStep?.step) {\n animation.progressStep(progressStep.step);\n }\n\n if (\n progressEnd &&\n (prevProps.progressEnd?.playTo !== progressEnd?.playTo ||\n prevProps.progressEnd?.step !== progressEnd?.step ||\n prevProps?.dur !== progressEnd?.dur)\n ) {\n animation.progressEnd(progressEnd.playTo, progressEnd.step, progressEnd.dur);\n }\n};\n\nconst checkPlayback = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n if (!prevProps.play && currentProps.play) {\n animation.play();\n }\n\n if (!prevProps.pause && currentProps.pause) {\n animation.pause();\n }\n\n if (!prevProps.stop && currentProps.stop) {\n animation.stop();\n }\n\n if (!prevProps.destroy && currentProps.destroy) {\n animation.destroy();\n }\n};\n","import type { OverlayEventDetail } from '@ionic/core/components';\nimport { useCallback, useMemo, useRef } from 'react';\n\nimport { attachProps } from '../components/react-component-lib/utils';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\n\ninterface OverlayBase extends HTMLElement {\n present: () => Promise<void>;\n dismiss: (data?: any, role?: string | undefined) => Promise<boolean>;\n}\n\nexport function useController<OptionsType, OverlayType extends OverlayBase>(\n displayName: string,\n controller: { create: (options: OptionsType) => Promise<OverlayType> },\n defineCustomElement: () => void\n) {\n const overlayRef = useRef<OverlayType>();\n const didDismissEventName = useMemo(() => `on${displayName}DidDismiss`, [displayName]);\n const didPresentEventName = useMemo(() => `on${displayName}DidPresent`, [displayName]);\n const willDismissEventName = useMemo(() => `on${displayName}WillDismiss`, [displayName]);\n const willPresentEventName = useMemo(() => `on${displayName}WillPresent`, [displayName]);\n\n defineCustomElement();\n\n const present = useCallback(\n async (options: OptionsType & HookOverlayOptions) => {\n if (overlayRef.current) {\n return;\n }\n\n const { onDidDismiss, onWillDismiss, onDidPresent, onWillPresent, ...rest } = options;\n\n const handleDismiss = (event: CustomEvent<OverlayEventDetail<any>>) => {\n if (onDidDismiss) {\n onDidDismiss(event);\n }\n overlayRef.current = undefined;\n };\n\n overlayRef.current = await controller.create({\n ...(rest as any),\n });\n\n attachProps(overlayRef.current, {\n [didDismissEventName]: handleDismiss,\n [didPresentEventName]: (e: CustomEvent) => onDidPresent && onDidPresent(e),\n [willDismissEventName]: (e: CustomEvent) => onWillDismiss && onWillDismiss(e),\n [willPresentEventName]: (e: CustomEvent) => onWillPresent && onWillPresent(e),\n });\n\n overlayRef.current.present();\n },\n [controller]\n );\n\n const dismiss = useCallback(async () => {\n overlayRef.current && (await overlayRef.current.dismiss());\n overlayRef.current = undefined;\n }, []);\n\n return {\n present,\n dismiss,\n };\n}\n","import type { ActionSheetButton, ActionSheetOptions } from '@ionic/core/components';\nimport { actionSheetController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-action-sheet.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonActionSheet component\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonActionSheet(): UseIonActionSheetResult {\n const controller = useController<ActionSheetOptions, HTMLIonActionSheetElement>(\n 'IonActionSheet',\n actionSheetController,\n defineCustomElement\n );\n\n const present = useCallback(\n (buttonsOrOptions: ActionSheetButton[] | (ActionSheetOptions & HookOverlayOptions), header?: string) => {\n if (Array.isArray(buttonsOrOptions)) {\n return controller.present({\n buttons: buttonsOrOptions,\n header,\n });\n } else {\n return controller.present(buttonsOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonActionSheetResult = [\n {\n /**\n * Presents the action sheet\n * @param buttons An array of buttons for the action sheet\n * @param header Optional - Title for the action sheet\n */\n (buttons: ActionSheetButton[], header?: string | undefined): Promise<void>;\n /**\n * Presents the action sheet\n * @param options The options to pass to the IonActionSheet\n */\n (options: ActionSheetOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the action sheet\n */\n () => Promise<void>\n];\n","import type { AlertButton, AlertOptions } from '@ionic/core/components';\nimport { alertController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-alert.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonAlert component\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonAlert(): UseIonAlertResult {\n const controller = useController<AlertOptions, HTMLIonAlertElement>('IonAlert', alertController, defineCustomElement);\n\n const present = useCallback(\n (messageOrOptions: string | (AlertOptions & HookOverlayOptions), buttons?: AlertButton[]) => {\n if (typeof messageOrOptions === 'string') {\n return controller.present({\n message: messageOrOptions,\n buttons: buttons ?? [{ text: 'Ok' }],\n });\n } else {\n return controller.present(messageOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonAlertResult = [\n {\n /**\n * Presents the alert\n * @param message The main message to be displayed in the alert\n * @param buttons Optional - Array of buttons to be added to the alert\n */\n (message: string, buttons?: AlertButton[]): Promise<void>;\n /**\n * Presents the alert\n * @param options The options to pass to the IonAlert\n */\n (options: AlertOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the alert\n */\n () => Promise<void>\n];\n","import type { ToastOptions } from '@ionic/core/components';\nimport { toastController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-toast.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonToast component\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonToast(): UseIonToastResult {\n const controller = useController<ToastOptions, HTMLIonToastElement>('IonToast', toastController, defineCustomElement);\n\n const present = useCallback(\n (messageOrOptions: string | (ToastOptions & HookOverlayOptions), duration?: number) => {\n if (typeof messageOrOptions === 'string') {\n return controller.present({\n message: messageOrOptions,\n duration,\n });\n } else {\n return controller.present(messageOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonToastResult = [\n {\n /**\n * Presents the toast\n * @param message Message to be shown in the toast.\n * @param duration Optional - How many milliseconds to wait before hiding the toast. By default, it will show until dismissToast() is called.\n */\n (message: string, duration?: number): Promise<void>;\n /**\n * Presents the Toast\n * @param options The options to pass to the IonToast.\n */\n (options: ToastOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the toast\n */\n () => Promise<void>\n];\n","import type { OverlayEventDetail } from '@ionic/core/components';\nimport React, { createElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { attachProps } from '../components/react-component-lib/utils';\nimport { IonContext } from '../contexts/IonContext';\nimport type { ReactComponentOrElement } from '../models/ReactComponentOrElement';\nimport { generateId } from '../utils/generateId';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\n\n// TODO(FW-2959): types\n\ninterface OverlayBase extends HTMLElement {\n present: () => Promise<void>;\n dismiss: (data?: any, role?: string | undefined) => Promise<boolean>;\n}\n\nexport function useOverlay<OptionsType, OverlayType extends OverlayBase>(\n displayName: string,\n controller: { create: (options: OptionsType) => Promise<OverlayType> },\n defineCustomElement: () => void,\n component: ReactComponentOrElement,\n componentProps?: any\n) {\n const overlayRef = useRef<OverlayType>();\n const containerElRef = useRef<HTMLDivElement>();\n const didDismissEventName = useMemo(() => `on${displayName}DidDismiss`, [displayName]);\n const didPresentEventName = useMemo(() => `on${displayName}DidPresent`, [displayName]);\n const willDismissEventName = useMemo(() => `on${displayName}WillDismiss`, [displayName]);\n const willPresentEventName = useMemo(() => `on${displayName}WillPresent`, [displayName]);\n const [isOpen, setIsOpen] = useState(false);\n const ionContext = useContext(IonContext);\n const [overlayId] = useState(generateId('overlay'));\n\n defineCustomElement();\n\n useEffect(() => {\n if (isOpen && component && containerElRef.current) {\n if (React.isValidElement(component)) {\n ionContext.addOverlay(overlayId, component, containerElRef.current!);\n } else {\n const element = createElement(component as React.ComponentClass, componentProps);\n ionContext.addOverlay(overlayId, element, containerElRef.current!);\n }\n }\n }, [component, containerElRef.current, isOpen, componentProps]);\n\n const present = useCallback(async (options: OptionsType & HookOverlayOptions) => {\n if (overlayRef.current) {\n return;\n }\n\n const { onDidDismiss, onWillDismiss, onDidPresent, onWillPresent, ...rest } = options;\n\n if (typeof document !== 'undefined') {\n containerElRef.current = document.createElement('div');\n }\n\n overlayRef.current = await controller.create({\n ...(rest as any),\n component: containerElRef.current,\n });\n\n attachProps(overlayRef.current, {\n [didDismissEventName]: handleDismiss,\n [didPresentEventName]: (e: CustomEvent) => onDidPresent && onDidPresent(e),\n [willDismissEventName]: (e: CustomEvent) => onWillDismiss && onWillDismiss(e),\n [willPresentEventName]: (e: CustomEvent) => onWillPresent && onWillPresent(e),\n });\n\n overlayRef.current.present();\n\n setIsOpen(true);\n\n function handleDismiss(event: CustomEvent<OverlayEventDetail<any>>) {\n if (onDidDismiss) {\n onDidDismiss(event);\n }\n overlayRef.current = undefined;\n containerElRef.current = undefined;\n setIsOpen(false);\n ionContext.removeOverlay(overlayId);\n }\n }, []);\n\n const dismiss = useCallback(async (data?: any, role?: string) => {\n overlayRef.current && (await overlayRef.current.dismiss(data, role));\n overlayRef.current = undefined;\n containerElRef.current = undefined;\n }, []);\n\n return {\n present,\n dismiss,\n };\n}\n","import type { ModalOptions } from '@ionic/core/components';\nimport { modalController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-modal.js';\nimport { useCallback } from 'react';\n\nimport type { ReactComponentOrElement } from '../models/ReactComponentOrElement';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useOverlay } from './useOverlay';\n\n// TODO(FW-2959): types\n\n/**\n * A hook for presenting/dismissing an IonModal component\n * @param component The component that the modal will show. Can be a React Component, a functional component, or a JSX Element\n * @param componentProps The props that will be passed to the component, if required\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonModal(component: ReactComponentOrElement, componentProps?: any): UseIonModalResult {\n const controller = useOverlay<ModalOptions, HTMLIonModalElement>(\n 'IonModal',\n modalController,\n defineCustomElement,\n component,\n componentProps\n );\n\n const present = useCallback(\n (options: Omit<ModalOptions, 'component' | 'componentProps'> & HookOverlayOptions = {}) => {\n controller.present(options as any);\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonModalResult = [\n (options?: Omit<ModalOptions, 'component' | 'componentProps'> & HookOverlayOptions) => void,\n /**\n * Dismisses the modal\n */\n (data?: any, role?: string) => void\n];\n","import type { PopoverOptions } from '@ionic/core/components';\nimport { popoverController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-popover.js';\nimport { useCallback } from 'react';\n\nimport type { ReactComponentOrElement } from '../models/ReactComponentOrElement';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useOverlay } from './useOverlay';\n\n// TODO(FW-2959): types\n\n/**\n * A hook for presenting/dismissing an IonPicker component\n * @param component The component that the popover will show. Can be a React Component, a functional component, or a JSX Element\n * @param componentProps The props that will be passed to the component, if required\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonPopover(component: ReactComponentOrElement, componentProps?: any): UseIonPopoverResult {\n const controller = useOverlay<PopoverOptions, HTMLIonPopoverElement>(\n 'IonPopover',\n popoverController,\n defineCustomElement,\n component,\n componentProps\n );\n\n const present = useCallback(\n (options: Omit<PopoverOptions, 'component' | 'componentProps'> & HookOverlayOptions = {}) => {\n controller.present(options as any);\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonPopoverResult = [\n (options?: Omit<PopoverOptions, 'component' | 'componentProps'> & HookOverlayOptions) => void,\n /**\n * Dismisses the popover\n */\n (data?: any, role?: string) => void\n];\n","import type { PickerButton, PickerColumn, PickerOptions } from '@ionic/core/components';\nimport { pickerController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-picker-legacy.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonPicker component\n * @returns Returns the present and dismiss methods in an array\n * @deprecated Use the inline ion-picker component instead.\n */\nexport function useIonPicker(): UseIonPickerResult {\n const controller = useController<PickerOptions, HTMLIonPickerLegacyElement>(\n 'IonPicker',\n pickerController,\n defineCustomElement\n );\n\n const present = useCallback(\n (columnsOrOptions: PickerColumn[] | (PickerOptions & HookOverlayOptions), buttons?: PickerButton[]) => {\n if (Array.isArray(columnsOrOptions)) {\n return controller.present({\n columns: columnsOrOptions,\n buttons: buttons ?? [{ text: 'Ok' }],\n });\n } else {\n return controller.present(columnsOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonPickerResult = [\n {\n /**\n * Presents the picker\n * @param columns Array of columns to be displayed in the picker.\n * @param buttons Optional - Array of buttons to be displayed at the top of the picker.\n */\n (columns: PickerColumn[], buttons?: PickerButton[]): Promise<void>;\n /**\n * Presents the picker\n * @param options The options to pass to the IonPicker\n */\n (options: PickerOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the picker\n */\n () => Promise<void>\n];\n","import type { LoadingOptions, SpinnerTypes } from '@ionic/core/components';\nimport { loadingController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-loading.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonLoading component\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonLoading(): UseIonLoadingResult {\n const controller = useController<LoadingOptions, HTMLIonLoadingElement>(\n 'IonLoading',\n loadingController,\n defineCustomElement\n );\n\n const present = useCallback(\n (\n messageOrOptions: string | (LoadingOptions & HookOverlayOptions) = {},\n duration?: number,\n spinner?: SpinnerTypes\n ) => {\n if (typeof messageOrOptions === 'string') {\n return controller.present({\n message: messageOrOptions,\n duration,\n spinner,\n });\n } else {\n return controller.present(messageOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonLoadingResult = [\n {\n /**\n * Presents the loading indicator\n * @param message Optional - Text content to display in the loading indicator, defaults to blank string\n * @param duration Optional - Number of milliseconds to wait before dismissing the loading indicator\n * @param spinner Optional - The name of the spinner to display, defaults to \"lines\"\n */\n (message?: string, duration?: number, spinner?: SpinnerTypes): Promise<void>;\n /**\n * Presents the loading indicator\n * @param options The options to pass to the IonLoading\n */\n (options: LoadingOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the loading indicator\n */\n () => Promise<void>\n];\n","import type { IonicConfig } from '@ionic/core/components';\nimport { initialize } from '@ionic/core/components';\n\nexport {\n // UTILS\n createAnimation,\n createGesture,\n iosTransitionAnimation,\n mdTransitionAnimation,\n IonicSlides,\n getTimeGivenProgression,\n getIonPageElement,\n openURL,\n\n // TYPES\n Animation,\n AnimationBuilder,\n AnimationCallbackOptions,\n AnimationDirection,\n AnimationFill,\n AnimationKeyFrames,\n AnimationLifecycle,\n Gesture,\n GestureConfig,\n GestureDetail,\n NavComponentWithProps,\n SpinnerTypes,\n AccordionGroupCustomEvent,\n AccordionGroupChangeEventDetail,\n BreadcrumbCustomEvent,\n BreadcrumbCollapsedClickEventDetail,\n ActionSheetOptions,\n ActionSheetButton,\n AlertOptions,\n AlertInput,\n AlertButton,\n BackButtonEvent,\n CheckboxCustomEvent,\n CheckboxChangeEventDetail,\n DatetimeCustomEvent,\n DatetimeChangeEventDetail,\n InfiniteScrollCustomEvent,\n InputCustomEvent,\n InputChangeEventDetail,\n InputInputEventDetail,\n InputOtpCustomEvent,\n InputOtpChangeEventDetail,\n InputOtpCompleteEventDetail,\n InputOtpInputEventDetail,\n // TODO(FW-6590): Remove the next two lines once the deprecated event is removed\n ItemReorderEventDetail,\n ItemReorderCustomEvent,\n ItemSlidingCustomEvent,\n IonicSafeString,\n LoadingOptions,\n MenuCustomEvent,\n ModalOptions,\n NavCustomEvent,\n PickerOptions,\n PickerButton,\n PickerColumn,\n PickerColumnOption,\n PopoverOptions,\n RadioGroupCustomEvent,\n RadioGroupChangeEventDetail,\n RangeCustomEvent,\n RangeChangeEventDetail,\n RangeKnobMoveStartEventDetail,\n RangeKnobMoveEndEventDetail,\n RefresherCustomEvent,\n RefresherEventDetail,\n ReorderMoveCustomEvent,\n ReorderMoveEventDetail,\n ReorderEndCustomEvent,\n ReorderEndEventDetail,\n RouterEventDetail,\n RouterCustomEvent,\n ScrollBaseCustomEvent,\n ScrollBaseDetail,\n ScrollDetail,\n ScrollCustomEvent,\n SearchbarCustomEvent,\n SearchbarChangeEventDetail,\n SearchbarInputEventDetail,\n SegmentChangeEventDetail,\n SegmentCustomEvent,\n SegmentValue,\n SelectChangeEventDetail,\n SelectCustomEvent,\n TabsCustomEvent,\n TextareaChangeEventDetail,\n TextareaCustomEvent,\n ToastOptions,\n ToastButton,\n ToastLayout,\n ToggleChangeEventDetail,\n ToggleCustomEvent,\n TransitionOptions,\n} from '@ionic/core/components';\n\nexport * from './proxies';\nexport * from './routing-proxies';\n\n// createControllerComponent\nexport { IonAlert } from './IonAlert';\nexport { IonLoading } from './IonLoading';\nexport * from './IonToast';\nexport { IonPickerLegacy } from './IonPickerLegacy';\n\n// createOverlayComponent\nexport * from './IonActionSheet';\nexport { IonModal } from './IonModal';\nexport { IonPopover } from './IonPopover';\n\n// Custom Components\nexport { IonApp } from './IonApp';\nexport { IonPage } from './IonPage';\nexport { IonNav } from './navigation/IonNav';\nexport { IonTabsContext, IonTabsContextState } from './navigation/IonTabsContext';\nexport { IonTabs } from './navigation/IonTabs';\nexport { IonTabBar } from './navigation/IonTabBar';\nexport { IonTabButton } from './navigation/IonTabButton';\nexport { IonBackButton } from './navigation/IonBackButton';\nexport { IonRouterOutlet } from './IonRouterOutlet';\nexport { IonIcon } from './IonIcon';\nexport * from './IonRoute';\nexport * from './IonRedirect';\nexport * from './IonRouterContext';\n\n// Utils\nexport { isPlatform, getPlatforms, getConfig } from './utils';\nexport * from './hrefprops';\n\n// Ionic Animations\nexport { CreateAnimation } from './CreateAnimation';\n\n// Hooks\nexport { useIonActionSheet, UseIonActionSheetResult } from '../hooks/useIonActionSheet';\nexport { useIonAlert, UseIonAlertResult } from '../hooks/useIonAlert';\nexport { useIonToast, UseIonToastResult } from '../hooks/useIonToast';\nexport { useIonModal, UseIonModalResult } from '../hooks/useIonModal';\nexport { useIonPopover, UseIonPopoverResult } from '../hooks/useIonPopover';\nexport { useIonPicker, UseIonPickerResult } from '../hooks/useIonPicker';\nexport { useIonLoading, UseIonLoadingResult } from '../hooks/useIonLoading';\n\nexport const setupIonicReact = (config: IonicConfig = {}) => {\n /**\n * By default Ionic Framework hides elements that\n * are not hydrated, but in the CE build there is no\n * hydration.\n * TODO FW-2797: Remove when all integrations have been\n * migrated to CE build.\n */\n if (typeof (document as any) !== 'undefined') {\n document.documentElement.classList.add('ion-ce');\n }\n\n initialize({\n ...config,\n });\n};\n","import React from 'react';\n\nimport type { RouteInfo } from '../models/RouteInfo';\n\nimport type { ViewItem } from './ViewItem';\n\nexport interface RouteManagerContextState {\n addViewItem: (viewItem: ViewItem) => void;\n canGoBack: () => boolean;\n clearOutlet: (outletId: string) => void;\n createViewItem: (\n outletId: string,\n reactElement: React.ReactElement,\n routeInfo: RouteInfo,\n page?: HTMLElement\n ) => ViewItem;\n findViewItemByPathname(pathname: string, outletId?: string): ViewItem | undefined;\n findLeavingViewItemByRouteInfo: (routeInfo: RouteInfo, outletId?: string) => ViewItem | undefined;\n findViewItemByRouteInfo: (routeInfo: RouteInfo, outletId?: string, updateMatch?: boolean) => ViewItem | undefined;\n getChildrenToRender: (\n outletId: string,\n ionRouterOutlet: React.ReactElement,\n routeInfo: RouteInfo,\n reRender: () => void\n ) => React.ReactNode[];\n goBack: () => void;\n unMountViewItem: (viewItem: ViewItem) => void;\n}\n\n// TODO(FW-2959): types\nexport const RouteManagerContext = /*@__PURE__*/ React.createContext<RouteManagerContextState>({\n addViewItem: () => undefined,\n canGoBack: () => undefined as any,\n clearOutlet: () => undefined,\n createViewItem: () => undefined as any,\n findViewItemByPathname: () => undefined,\n findLeavingViewItemByRouteInfo: () => undefined,\n findViewItemByRouteInfo: () => undefined,\n getChildrenToRender: () => undefined as any,\n goBack: () => undefined,\n unMountViewItem: () => undefined,\n});\n","import React from 'react';\n\nimport { DefaultIonLifeCycleContext, IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\n\ninterface ViewTransitionManagerProps {\n removeView: () => void;\n mount: boolean;\n}\n\ninterface ViewTransitionManagerState {\n show: boolean;\n}\n\nexport class ViewLifeCycleManager extends React.Component<ViewTransitionManagerProps, ViewTransitionManagerState> {\n ionLifeCycleContext = new DefaultIonLifeCycleContext();\n private _isMounted = false;\n\n constructor(props: ViewTransitionManagerProps) {\n super(props);\n\n this.ionLifeCycleContext.onComponentCanBeDestroyed(() => {\n if (!this.props.mount) {\n if (this._isMounted) {\n this.setState(\n {\n show: false,\n },\n () => this.props.removeView()\n );\n }\n }\n });\n\n this.state = {\n show: true,\n };\n }\n\n componentDidMount() {\n this._isMounted = true;\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n render() {\n const { show } = this.state;\n return (\n <IonLifeCycleContext.Provider value={this.ionLifeCycleContext}>\n {show && this.props.children}\n </IonLifeCycleContext.Provider>\n );\n }\n}\n","import type { RouteInfo } from '../models/RouteInfo';\n\n// const RESTRICT_SIZE = 100;\n\nexport class LocationHistory {\n private locationHistory: RouteInfo[] = [];\n private tabHistory: {\n [key: string]: RouteInfo[];\n } = {};\n\n add(routeInfo: RouteInfo) {\n if (routeInfo.routeAction === 'push' || routeInfo.routeAction == null) {\n this._add(routeInfo);\n } else if (routeInfo.routeAction === 'pop') {\n this._pop(routeInfo);\n } else if (routeInfo.routeAction === 'replace') {\n this._replace(routeInfo);\n }\n\n if (routeInfo.routeDirection === 'root') {\n this._clear();\n this._add(routeInfo);\n }\n }\n\n clearTabStack(tab: string) {\n const routeInfos = this._getRouteInfosByKey(tab);\n if (routeInfos) {\n routeInfos.forEach((ri) => {\n this.locationHistory = this.locationHistory.filter((x) => x.id !== ri.id);\n });\n this.tabHistory[tab] = [];\n }\n }\n\n update(routeInfo: RouteInfo) {\n const locationIndex = this.locationHistory.findIndex((x) => x.id === routeInfo.id);\n if (locationIndex > -1) {\n this.locationHistory.splice(locationIndex, 1, routeInfo);\n }\n const tabArray = this.tabHistory[routeInfo.tab || ''];\n if (tabArray) {\n const tabIndex = tabArray.findIndex((x) => x.id === routeInfo.id);\n if (tabIndex > -1) {\n tabArray.splice(tabIndex, 1, routeInfo);\n } else {\n tabArray.push(routeInfo);\n }\n } else if (routeInfo.tab) {\n this.tabHistory[routeInfo.tab] = [routeInfo];\n }\n }\n\n private _add(routeInfo: RouteInfo) {\n const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n if (routeInfos) {\n // If the latest routeInfo is the same (going back and forth between tabs), replace it\n if (this._areRoutesEqual(routeInfos[routeInfos.length - 1], routeInfo)) {\n routeInfos.pop();\n }\n routeInfos.push(routeInfo);\n }\n this.locationHistory.push(routeInfo);\n }\n\n private _areRoutesEqual(route1?: RouteInfo, route2?: RouteInfo) {\n if (!route1 || !route2) {\n return false;\n }\n return route1.pathname === route2.pathname && route1.search === route2.search;\n }\n\n private _pop(routeInfo: RouteInfo) {\n const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n\n if (routeInfos) {\n // Pop the previous route\n routeInfos.pop();\n // Replace the current route with an updated version\n routeInfos.pop();\n routeInfos.push(routeInfo);\n }\n\n // Pop the previous route\n this.locationHistory.pop();\n // Replace the current route with an updated version\n this.locationHistory.pop();\n this.locationHistory.push(routeInfo);\n }\n\n private _replace(routeInfo: RouteInfo) {\n const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n routeInfos && routeInfos.pop();\n this.locationHistory.pop();\n this._add(routeInfo);\n }\n\n private _clear() {\n const keys = Object.keys(this.tabHistory);\n keys.forEach((k) => (this.tabHistory[k] = []));\n this.locationHistory = [];\n }\n\n private _getRouteInfosByKey(key?: string) {\n let routeInfos: RouteInfo[] | undefined;\n if (key) {\n routeInfos = this.tabHistory[key];\n if (!routeInfos) {\n routeInfos = this.tabHistory[key] = [];\n }\n }\n return routeInfos;\n }\n\n getFirstRouteInfoForTab(tab: string) {\n const routeInfos = this._getRouteInfosByKey(tab);\n if (routeInfos) {\n return routeInfos[0];\n }\n return undefined;\n }\n\n getCurrentRouteInfoForTab(tab?: string) {\n const routeInfos = this._getRouteInfosByKey(tab);\n if (routeInfos) {\n return routeInfos[routeInfos.length - 1];\n }\n return undefined;\n }\n\n findLastLocation(routeInfo: RouteInfo) {\n const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n if (routeInfos) {\n for (let i = routeInfos.length - 2; i >= 0; i--) {\n const ri = routeInfos[i];\n if (ri) {\n if (ri.pathname === routeInfo.pushedByRoute) {\n return ri;\n }\n }\n }\n }\n for (let i = this.locationHistory.length - 2; i >= 0; i--) {\n const ri = this.locationHistory[i];\n if (ri) {\n if (ri.pathname === routeInfo.pushedByRoute) {\n return ri;\n }\n }\n }\n return undefined;\n }\n\n previous() {\n return (\n this.locationHistory[this.locationHistory.length - 2] || this.locationHistory[this.locationHistory.length - 1]\n );\n }\n\n current() {\n return this.locationHistory[this.locationHistory.length - 1];\n }\n\n canGoBack() {\n return this.locationHistory.length > 1;\n }\n}\n","import type { AnimationBuilder } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { IonRouterContextState } from '../components/IonRouterContext';\nimport { IonRouterContext } from '../components/IonRouterContext';\nimport type { NavContextState } from '../contexts/NavContext';\nimport { NavContext } from '../contexts/NavContext';\nimport type { RouteAction } from '../models/RouteAction';\nimport type { RouteInfo } from '../models/RouteInfo';\nimport type { RouterDirection } from '../models/RouterDirection';\nimport type { RouterOptions } from '../models/RouterOptions';\n\nimport type { LocationHistory } from './LocationHistory';\nimport PageManager from './PageManager';\n\n// TODO(FW-2959): types\n\ninterface NavManagerProps {\n routeInfo: RouteInfo;\n onNativeBack: () => void;\n onNavigateBack: (route?: string | RouteInfo, animationBuilder?: AnimationBuilder) => void;\n onNavigate: (\n path: string,\n action: RouteAction,\n direction?: RouterDirection,\n animationBuilder?: AnimationBuilder,\n options?: any,\n tab?: string\n ) => void;\n onSetCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n onChangeTab: (tab: string, path: string, routeOptions?: any) => void;\n onResetTab: (tab: string, path: string, routeOptions?: any) => void;\n ionRedirect: any;\n ionRoute: any;\n stackManager: any;\n locationHistory: LocationHistory;\n}\n\nexport class NavManager extends React.PureComponent<NavManagerProps, NavContextState> {\n ionRouterContextValue: IonRouterContextState = {\n push: (\n pathname: string,\n routerDirection?: RouterDirection,\n routeAction?: RouteAction,\n routerOptions?: RouterOptions,\n animationBuilder?: AnimationBuilder\n ) => {\n this.navigate(pathname, routerDirection, routeAction, animationBuilder, routerOptions);\n },\n back: (animationBuilder?: AnimationBuilder) => {\n this.goBack(undefined, animationBuilder);\n },\n canGoBack: () => this.props.locationHistory.canGoBack(),\n nativeBack: () => this.props.onNativeBack(),\n routeInfo: this.props.routeInfo,\n };\n\n constructor(props: NavManagerProps) {\n super(props);\n this.state = {\n goBack: this.goBack.bind(this),\n hasIonicRouter: () => true,\n navigate: this.navigate.bind(this),\n getIonRedirect: this.getIonRedirect.bind(this),\n getIonRoute: this.getIonRoute.bind(this),\n getStackManager: this.getStackManager.bind(this),\n getPageManager: this.getPageManager.bind(this),\n routeInfo: this.props.routeInfo,\n setCurrentTab: this.props.onSetCurrentTab,\n changeTab: this.props.onChangeTab,\n resetTab: this.props.onResetTab,\n };\n }\n\n componentDidMount() {\n if (typeof document !== 'undefined') {\n this.handleHardwareBackButton = this.handleHardwareBackButton.bind(this);\n document.addEventListener('ionBackButton', this.handleHardwareBackButton);\n }\n }\n\n componentWillUnmount() {\n if (typeof document !== 'undefined') {\n document.removeEventListener('ionBackButton', this.handleHardwareBackButton);\n }\n }\n\n handleHardwareBackButton(e: any) {\n e.detail.register(0, (processNextHandler: () => void) => {\n this.nativeGoBack();\n processNextHandler();\n });\n }\n\n goBack(route?: string | RouteInfo, animationBuilder?: AnimationBuilder) {\n this.props.onNavigateBack(route, animationBuilder);\n }\n\n nativeGoBack() {\n this.props.onNativeBack();\n }\n\n navigate(\n path: string,\n direction: RouterDirection = 'forward',\n action: RouteAction = 'push',\n animationBuilder?: AnimationBuilder,\n options?: any,\n tab?: string\n ) {\n this.props.onNavigate(path, action, direction, animationBuilder, options, tab);\n }\n\n getPageManager() {\n return PageManager;\n }\n\n getIonRedirect() {\n return this.props.ionRedirect;\n }\n\n getIonRoute() {\n return this.props.ionRoute;\n }\n\n getStackManager() {\n return this.props.stackManager;\n }\n\n render() {\n return (\n <NavContext.Provider value={{ ...this.state, routeInfo: this.props.routeInfo }}>\n <IonRouterContext.Provider value={{ ...this.ionRouterContextValue, routeInfo: this.props.routeInfo }}>\n {this.props.children}\n </IonRouterContext.Provider>\n </NavContext.Provider>\n );\n }\n}\n","import type { RouteInfo } from '../models/RouteInfo';\n\nimport type { ViewItem } from './ViewItem';\n\nexport abstract class ViewStacks {\n private viewStacks: { [key: string]: ViewItem[] } = {};\n\n constructor() {\n this.add = this.add.bind(this);\n this.clear = this.clear.bind(this);\n this.getViewItemsForOutlet = this.getViewItemsForOutlet.bind(this);\n this.remove = this.remove.bind(this);\n }\n\n add(viewItem: ViewItem) {\n const { outletId } = viewItem;\n if (!this.viewStacks[outletId]) {\n this.viewStacks[outletId] = [viewItem];\n } else {\n this.viewStacks[outletId].push(viewItem);\n }\n }\n\n clear(outletId: string) {\n // Give some time for the leaving views to transition before removing\n return setTimeout(() => {\n delete this.viewStacks[outletId];\n }, 500);\n }\n\n getViewItemsForOutlet(outletId: string) {\n return this.viewStacks[outletId] || [];\n }\n\n remove(viewItem: ViewItem) {\n const { outletId } = viewItem;\n const viewStack = this.viewStacks[outletId];\n if (viewStack) {\n const viewItemToRemove = viewStack.find((x) => x.id === viewItem.id);\n if (viewItemToRemove) {\n viewItemToRemove.mount = false;\n this.viewStacks[outletId] = viewStack.filter((x) => x.id !== viewItemToRemove.id);\n }\n }\n }\n\n protected getStackIds() {\n return Object.keys(this.viewStacks);\n }\n\n protected getAllViewItems() {\n const keys = this.getStackIds();\n const viewItems: ViewItem[] = [];\n keys.forEach((k) => {\n viewItems.push(...this.viewStacks[k]);\n });\n return viewItems;\n }\n\n abstract createViewItem(\n outletId: string,\n reactElement: React.ReactElement,\n routeInfo: RouteInfo,\n page?: HTMLElement\n ): ViewItem;\n abstract findViewItemByPathname(pathname: string, outletId?: string): ViewItem | undefined;\n abstract findViewItemByRouteInfo(\n routeInfo: RouteInfo,\n outletId?: string,\n updateMatch?: boolean\n ): ViewItem | undefined;\n abstract findLeavingViewItemByRouteInfo(routeInfo: RouteInfo, outletId?: string): ViewItem | undefined;\n abstract getChildrenToRender(\n outletId: string,\n ionRouterOutlet: React.ReactElement,\n routeInfo: RouteInfo,\n reRender: () => void,\n setInTransition: () => void\n ): React.ReactNode[];\n}\n"],"names":["_jsx","createForwardRef","defineIonAccordion","defineIonAccordionGroup","defineIonAvatar","defineIonBackdrop","defineIonBadge","defineIonBreadcrumbs","defineIonButtons","defineIonCardContent","defineIonCardHeader","defineIonCardSubtitle","defineIonCardTitle","defineIonCheckbox","defineIonChip","defineIonCol","defineIonContent","defineIonDatetime","defineIonDatetimeButton","defineIonFab","defineIonFabList","defineIonFooter","defineIonGrid","defineIonHeader","defineIonImg","defineIonInfiniteScroll","defineIonInfiniteScrollContent","defineIonInput","defineIonInputOtp","defineIonInputPasswordToggle","defineIonItemDivider","defineIonItemGroup","defineIonItemOptions","defineIonItemSliding","defineIonLabel","defineIonList","defineIonListHeader","defineIonMenu","defineIonMenuButton","defineIonMenuToggle","defineIonNavLink","defineIonNote","defineIonPicker","defineIonPickerColumn","defineIonPickerColumnOption","defineIonProgressBar","defineIonRadio","defineIonRadioGroup","defineIonRange","defineIonRefresher","defineIonRefresherContent","defineIonReorder","defineIonReorderGroup","defineIonRippleEffect","defineIonRow","defineIonSearchbar","defineIonSegment","defineIonSegmentButton","defineIonSegmentContent","defineIonSegmentView","defineIonSelect","defineIonSelectModal","defineIonSelectOption","defineIonSkeletonText","defineIonSpinner","defineIonSplitPane","defineIonTab","defineIonText","defineIonTextarea","defineIonThumbnail","defineIonTitle","defineIonToggle","defineIonToolbar","isPlatformCore","getPlatformsCore","IonRouterLinkCmp","IonButtonCmp","IonCardCmp","IonFabButtonCmp","IonItemCmp","IonItemOptionCmp","IonBreadcrumbCmp","defineCustomElement","defineIonTabButton","defineIonTabBar","defineIonTabs","defineIonBackButton","defineIonRouterOutlet","defineIonApp","defineIonIcon","_jsxs","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/contexts/IonLifeCycleContext.tsx","../src/lifecycle/IonLifeCycleHOC.tsx","../src/lifecycle/hooks.ts","../src/contexts/NavContext.ts","../src/components/react-component-lib/utils/case.ts","../src/components/react-component-lib/utils/attachProps.ts","../src/components/react-component-lib/utils/index.tsx","../src/components/react-component-lib/createComponent.tsx","../src/components/proxies.ts","../src/components/utils/index.tsx","../src/components/createRoutingComponent.tsx","../src/components/routing-proxies.ts","../src/components/utils/detachProps.ts","../src/components/createInlineOverlayComponent.tsx","../src/components/IonAlert.tsx","../src/components/IonLoading.tsx","../src/components/IonToast.tsx","../src/components/IonPickerLegacy.tsx","../src/components/IonActionSheet.tsx","../src/components/IonModal.tsx","../src/components/IonPopover.tsx","../src/contexts/IonContext.tsx","../src/components/IonOverlayManager.tsx","../src/components/inner-proxies.ts","../src/components/IonApp.tsx","../src/routing/StackContext.tsx","../src/routing/PageManager.tsx","../src/components/IonPage.tsx","../src/utils/generateId.ts","../src/framework-delegate.tsx","../src/components/navigation/IonNav.tsx","../src/components/navigation/IonTabsContext.tsx","../src/utils/HTMLElementSSR.ts","../src/routing/OutletPageManager.tsx","../src/components/IonRouterOutlet.tsx","../src/components/navigation/IonTabs.tsx","../src/components/navigation/IonTabButton.tsx","../src/components/navigation/IonTabBar.tsx","../src/components/navigation/IonBackButton.tsx","../src/components/IonIcon.tsx","../src/components/IonRoute.tsx","../src/components/IonRedirect.tsx","../src/components/IonRouterContext.tsx","../src/components/CreateAnimation.tsx","../src/hooks/useController.ts","../src/hooks/useIonActionSheet.ts","../src/hooks/useIonAlert.ts","../src/hooks/useIonToast.ts","../src/hooks/useOverlay.ts","../src/hooks/useIonModal.ts","../src/hooks/useIonPopover.ts","../src/hooks/useIonPicker.tsx","../src/hooks/useIonLoading.tsx","../src/components/index.ts","../src/routing/RouteManagerContext.ts","../src/routing/ViewLifeCycleManager.tsx","../src/routing/LocationHistory.ts","../src/routing/NavManager.tsx","../src/routing/ViewStacks.ts"],"sourcesContent":["import React from 'react';\n\nexport interface IonLifeCycleContextInterface {\n onIonViewWillEnter: (callback: () => void) => void;\n ionViewWillEnter: () => void;\n onIonViewDidEnter: (callback: () => void) => void;\n ionViewDidEnter: () => void;\n onIonViewWillLeave: (callback: () => void) => void;\n ionViewWillLeave: () => void;\n onIonViewDidLeave: (callback: () => void) => void;\n ionViewDidLeave: () => void;\n cleanupIonViewWillEnter: (callback: () => void) => void;\n cleanupIonViewDidEnter: (callback: () => void) => void;\n cleanupIonViewWillLeave: (callback: () => void) => void;\n cleanupIonViewDidLeave: (callback: () => void) => void;\n}\n\nexport const IonLifeCycleContext = /*@__PURE__*/ React.createContext<IonLifeCycleContextInterface>({\n onIonViewWillEnter: () => {\n return;\n },\n ionViewWillEnter: () => {\n return;\n },\n onIonViewDidEnter: () => {\n return;\n },\n ionViewDidEnter: () => {\n return;\n },\n onIonViewWillLeave: () => {\n return;\n },\n ionViewWillLeave: () => {\n return;\n },\n onIonViewDidLeave: () => {\n return;\n },\n ionViewDidLeave: () => {\n return;\n },\n cleanupIonViewWillEnter: () => {\n return;\n },\n cleanupIonViewDidEnter: () => {\n return;\n },\n cleanupIonViewWillLeave: () => {\n return;\n },\n cleanupIonViewDidLeave: () => {\n return;\n },\n});\n\nexport interface LifeCycleCallback {\n (): void | (() => void | undefined);\n id?: number;\n}\n\nexport interface LifeCycleDestructor {\n id: number;\n destructor: ReturnType<LifeCycleCallback>;\n}\n\nexport const DefaultIonLifeCycleContext = class implements IonLifeCycleContextInterface {\n ionViewWillEnterCallbacks: LifeCycleCallback[] = [];\n ionViewDidEnterCallbacks: LifeCycleCallback[] = [];\n ionViewWillLeaveCallbacks: LifeCycleCallback[] = [];\n ionViewDidLeaveCallbacks: LifeCycleCallback[] = [];\n componentCanBeDestroyedCallback?: () => void;\n ionViewWillEnterDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewDidEnterDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewWillLeaveDestructorCallbacks: LifeCycleDestructor[] = [];\n ionViewDidLeaveDestructorCallbacks: LifeCycleDestructor[] = [];\n\n onIonViewWillEnter(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewWillEnterCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewWillEnterCallbacks[index] = callback;\n } else {\n this.ionViewWillEnterCallbacks.push(callback);\n }\n } else {\n this.ionViewWillEnterCallbacks.push(callback);\n }\n }\n\n teardownCallback(callback: LifeCycleCallback, callbacks: any[]) {\n // Find any destructors that have been registered for the callback\n const matches = callbacks.filter((x) => x.id === callback.id);\n if (matches.length !== 0) {\n // Execute the destructor for each matching item\n matches.forEach((match) => {\n if (match && typeof match.destructor === 'function') {\n match.destructor();\n }\n });\n // Remove all matching items from the array\n callbacks = callbacks.filter((x) => x.id !== callback.id);\n }\n }\n\n /**\n * Tears down the user-provided ionViewWillEnter lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewWillEnter(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewWillEnterDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewDidEnter lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewDidEnter(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewDidEnterDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewWillLeave lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewWillLeave(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewWillLeaveDestructorCallbacks);\n }\n\n /**\n * Tears down the user-provided ionViewDidLeave lifecycle callback.\n * This is the same behavior as React's useEffect hook. The callback\n * is invoked when the component is unmounted.\n */\n cleanupIonViewDidLeave(callback: LifeCycleCallback) {\n this.teardownCallback(callback, this.ionViewDidLeaveDestructorCallbacks);\n }\n\n ionViewWillEnter() {\n this.ionViewWillEnterCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewWillEnterDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewDidEnter(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewDidEnterCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewDidEnterCallbacks[index] = callback;\n } else {\n this.ionViewDidEnterCallbacks.push(callback);\n }\n } else {\n this.ionViewDidEnterCallbacks.push(callback);\n }\n }\n\n ionViewDidEnter() {\n this.ionViewDidEnterCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewDidEnterDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewWillLeave(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewWillLeaveCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewWillLeaveCallbacks[index] = callback;\n } else {\n this.ionViewWillLeaveCallbacks.push(callback);\n }\n } else {\n this.ionViewWillLeaveCallbacks.push(callback);\n }\n }\n\n ionViewWillLeave() {\n this.ionViewWillLeaveCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewWillLeaveDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n }\n\n onIonViewDidLeave(callback: LifeCycleCallback) {\n if (callback.id) {\n const index = this.ionViewDidLeaveCallbacks.findIndex((x) => x.id === callback.id);\n if (index > -1) {\n this.ionViewDidLeaveCallbacks[index] = callback;\n } else {\n this.ionViewDidLeaveCallbacks.push(callback);\n }\n } else {\n this.ionViewDidLeaveCallbacks.push(callback);\n }\n }\n\n ionViewDidLeave() {\n this.ionViewDidLeaveCallbacks.forEach((cb) => {\n const destructor = cb();\n if (cb.id) {\n this.ionViewDidLeaveDestructorCallbacks.push({ id: cb.id, destructor });\n }\n });\n this.componentCanBeDestroyed();\n }\n\n onComponentCanBeDestroyed(callback: () => void) {\n this.componentCanBeDestroyedCallback = callback;\n }\n\n componentCanBeDestroyed() {\n if (this.componentCanBeDestroyedCallback) {\n this.componentCanBeDestroyedCallback();\n }\n }\n};\n","import React from 'react';\n\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\n\n// TODO(FW-2959): types\n\nexport const withIonLifeCycle = (WrappedComponent: React.ComponentType<any>) => {\n return class IonLifeCycle extends React.Component<any, any> {\n context!: React.ContextType<typeof IonLifeCycleContext>;\n componentRef = React.createRef<any>();\n\n constructor(props: any) {\n super(props);\n }\n\n componentDidMount() {\n const element = this.componentRef.current;\n this.context.onIonViewWillEnter(() => {\n if (element && element.ionViewWillEnter) {\n element.ionViewWillEnter();\n }\n });\n\n this.context.onIonViewDidEnter(() => {\n if (element && element.ionViewDidEnter) {\n element.ionViewDidEnter();\n }\n });\n\n this.context.onIonViewWillLeave(() => {\n if (element && element.ionViewWillLeave) {\n element.ionViewWillLeave();\n }\n });\n\n this.context.onIonViewDidLeave(() => {\n if (element && element.ionViewDidLeave) {\n element.ionViewDidLeave();\n }\n });\n }\n\n render() {\n return (\n <IonLifeCycleContext.Consumer>\n {(context) => {\n this.context = context;\n return <WrappedComponent ref={this.componentRef} {...this.props} />;\n }}\n </IonLifeCycleContext.Consumer>\n );\n }\n };\n};\n","import { useContext, useEffect, useRef } from 'react';\n\nimport type { LifeCycleCallback } from '../contexts/IonLifeCycleContext';\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\n\nexport const useIonViewWillEnter = (callback: LifeCycleCallback, deps: any[] = []) => {\n const context = useContext(IonLifeCycleContext);\n const id = useRef<number | undefined>();\n id.current = id.current || Math.floor(Math.random() * 1000000);\n useEffect(() => {\n callback.id = id.current!;\n context.onIonViewWillEnter(callback);\n return () => {\n context.cleanupIonViewWillEnter(callback);\n };\n }, deps);\n};\n\nexport const useIonViewDidEnter = (callback: LifeCycleCallback, deps: any[] = []) => {\n const context = useContext(IonLifeCycleContext);\n const id = useRef<number | undefined>();\n id.current = id.current || Math.floor(Math.random() * 1000000);\n useEffect(() => {\n callback.id = id.current!;\n context.onIonViewDidEnter(callback);\n return () => {\n context.cleanupIonViewDidEnter(callback);\n };\n }, deps);\n};\n\nexport const useIonViewWillLeave = (callback: LifeCycleCallback, deps: any[] = []) => {\n const context = useContext(IonLifeCycleContext);\n const id = useRef<number | undefined>();\n id.current = id.current || Math.floor(Math.random() * 1000000);\n useEffect(() => {\n callback.id = id.current!;\n context.onIonViewWillLeave(callback);\n return () => {\n context.cleanupIonViewWillLeave(callback);\n };\n }, deps);\n};\n\nexport const useIonViewDidLeave = (callback: LifeCycleCallback, deps: any[] = []) => {\n const context = useContext(IonLifeCycleContext);\n const id = useRef<number | undefined>();\n id.current = id.current || Math.floor(Math.random() * 1000000);\n useEffect(() => {\n callback.id = id.current!;\n context.onIonViewDidLeave(callback);\n return () => {\n context.cleanupIonViewDidLeave(callback);\n };\n }, deps);\n};\n","import type { AnimationBuilder, RouterDirection } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { RouteInfo } from '../models';\n\n// TODO(FW-2959): types\n\nexport interface NavContextState {\n getIonRoute: () => any;\n getIonRedirect: () => any;\n getPageManager: () => any;\n getStackManager: () => any;\n goBack: (route?: string | RouteInfo, animationBuilder?: AnimationBuilder) => void;\n navigate: (\n path: string,\n direction?: RouterDirection | 'none',\n ionRouteAction?: 'push' | 'replace' | 'pop',\n animationBuilder?: AnimationBuilder,\n options?: any,\n tab?: string\n ) => void;\n hasIonicRouter: () => boolean;\n routeInfo?: RouteInfo;\n setCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n changeTab: (tab: string, path: string, routeOptions?: any) => void;\n resetTab: (tab: string, originalHref: string, originalRouteOptions?: any) => void;\n}\n\nexport const NavContext = /*@__PURE__*/ React.createContext<NavContextState>({\n getIonRedirect: () => undefined,\n getIonRoute: () => undefined,\n getPageManager: () => undefined,\n getStackManager: () => undefined,\n goBack: (route?: string | RouteInfo) => {\n if (typeof window !== 'undefined') {\n if (typeof route === 'string') {\n window.location.pathname = route;\n } else {\n window.history.back();\n }\n }\n },\n navigate: (path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n hasIonicRouter: () => false,\n routeInfo: undefined,\n setCurrentTab: () => undefined,\n changeTab: (_tab: string, path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n resetTab: (_tab: string, path: string) => {\n if (typeof window !== 'undefined') {\n window.location.pathname = path;\n }\n },\n});\n","export const dashToPascalCase = (str: string) =>\n str\n .toLowerCase()\n .split('-')\n .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))\n .join('');\nexport const camelToDashCase = (str: string) => str.replace(/([A-Z])/g, (m: string) => `-${m[0].toLowerCase()}`);\n","import { camelToDashCase } from './case';\n\nexport const attachProps = (node: HTMLElement, newProps: any, oldProps: any = {}) => {\n // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first\n if (node instanceof Element) {\n // add any classes in className to the class list\n const className = getClassName(node.classList, newProps, oldProps);\n if (className !== '') {\n node.className = className;\n }\n\n Object.keys(newProps).forEach((name) => {\n if (\n name === 'children' ||\n name === 'style' ||\n name === 'ref' ||\n name === 'class' ||\n name === 'className' ||\n name === 'forwardedRef'\n ) {\n return;\n }\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2);\n const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n\n if (!isCoveredByReact(eventNameLc)) {\n syncEvent(node, eventNameLc, newProps[name]);\n }\n } else {\n (node as any)[name] = newProps[name];\n const propType = typeof newProps[name];\n if (propType === 'string') {\n node.setAttribute(camelToDashCase(name), newProps[name]);\n }\n }\n });\n }\n};\n\nexport const getClassName = (classList: DOMTokenList, newProps: any, oldProps: any) => {\n const newClassProp: string = newProps.className || newProps.class;\n const oldClassProp: string = oldProps.className || oldProps.class;\n // map the classes to Maps for performance\n const currentClasses = arrayToMap(classList);\n const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []);\n const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []);\n const finalClassNames: string[] = [];\n // loop through each of the current classes on the component\n // to see if it should be a part of the classNames added\n currentClasses.forEach((currentClass) => {\n if (incomingPropClasses.has(currentClass)) {\n // add it as its already included in classnames coming in from newProps\n finalClassNames.push(currentClass);\n incomingPropClasses.delete(currentClass);\n } else if (!oldPropClasses.has(currentClass)) {\n // add it as it has NOT been removed by user\n finalClassNames.push(currentClass);\n }\n });\n incomingPropClasses.forEach((s) => finalClassNames.push(s));\n return finalClassNames.join(' ');\n};\n\n/**\n * Transforms a React event name to a browser event name.\n */\nexport const transformReactEventName = (eventNameSuffix: string) => {\n switch (eventNameSuffix) {\n case 'doubleclick':\n return 'dblclick';\n }\n return eventNameSuffix;\n};\n\n/**\n * Checks if an event is supported in the current execution environment.\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nexport const isCoveredByReact = (eventNameSuffix: string) => {\n if (typeof document === 'undefined') {\n return true;\n } else {\n const eventName = 'on' + transformReactEventName(eventNameSuffix);\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof (element as any)[eventName] === 'function';\n }\n\n return isSupported;\n }\n};\n\nexport const syncEvent = (\n node: Element & { __events?: { [key: string]: ((e: Event) => any) | undefined } },\n eventName: string,\n newEventHandler?: (e: Event) => any\n) => {\n const eventStore = node.__events || (node.__events = {});\n const oldEventHandler = eventStore[eventName];\n\n // Remove old listener so they don't double up.\n if (oldEventHandler) {\n node.removeEventListener(eventName, oldEventHandler);\n }\n\n // Bind new listener.\n node.addEventListener(\n eventName,\n (eventStore[eventName] = function handler(e: Event) {\n if (newEventHandler) {\n newEventHandler.call(this, e);\n }\n })\n );\n};\n\nconst arrayToMap = (arr: string[] | DOMTokenList) => {\n const map = new Map<string, string>();\n (arr as string[]).forEach((s: string) => map.set(s, s));\n return map;\n};\n","import React from 'react';\n\nimport type { StyleReactProps } from '../interfaces';\n\nexport type StencilReactExternalProps<PropType, ElementType> = PropType &\n Omit<React.HTMLAttributes<ElementType>, 'style'> &\n StyleReactProps;\n\n// This will be replaced with React.ForwardedRef when react-output-target is upgraded to React v17\nexport type StencilReactForwardedRef<T> = ((instance: T | null) => void) | React.MutableRefObject<T | null> | null;\n\nexport const setRef = (ref: StencilReactForwardedRef<any> | React.Ref<any> | undefined, value: any) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n // Cast as a MutableRef so we can assign current\n (ref as React.MutableRefObject<any>).current = value;\n }\n};\n\nexport const mergeRefs = (\n ...refs: (StencilReactForwardedRef<any> | React.Ref<any> | undefined)[]\n): React.RefCallback<any> => {\n return (value: any) => {\n refs.forEach((ref) => {\n setRef(ref, value);\n });\n };\n};\n\nexport const createForwardRef = <PropType, ElementType>(ReactComponent: any, displayName: string) => {\n const forwardRef = (\n props: StencilReactExternalProps<PropType, ElementType>,\n ref: StencilReactForwardedRef<ElementType>\n ) => {\n return <ReactComponent {...props} forwardedRef={ref} />;\n };\n forwardRef.displayName = displayName;\n\n return React.forwardRef(forwardRef);\n};\n\nexport const defineCustomElement = (tagName: string, customElement: any) => {\n if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n};\n\nexport * from './attachProps';\nexport * from './case';\n","import React, { createElement } from 'react';\n\nimport { attachProps, camelToDashCase, createForwardRef, dashToPascalCase, isCoveredByReact, mergeRefs } from './utils';\n\nexport interface HTMLStencilElement extends HTMLElement {\n componentOnReady(): Promise<this>;\n}\n\ninterface StencilReactInternalProps<ElementType> extends React.HTMLAttributes<ElementType> {\n forwardedRef: React.RefObject<ElementType>;\n ref?: React.Ref<any>;\n}\n\nexport const createReactComponent = <\n PropType,\n ElementType extends HTMLStencilElement,\n ContextStateType = {},\n ExpandedPropsTypes = {}\n>(\n tagName: string,\n ReactComponentContext?: React.Context<ContextStateType>,\n manipulatePropsFunction?: (\n originalProps: StencilReactInternalProps<ElementType>,\n propsToPass: any\n ) => ExpandedPropsTypes,\n defineCustomElement?: () => void\n) => {\n if (defineCustomElement !== undefined) {\n defineCustomElement();\n }\n\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component<StencilReactInternalProps<ElementType>> {\n componentEl!: ElementType;\n\n setComponentElRef = (element: ElementType) => {\n this.componentEl = element;\n };\n\n constructor(props: StencilReactInternalProps<ElementType>) {\n super(props);\n }\n\n componentDidMount() {\n this.componentDidUpdate(this.props);\n }\n\n componentDidUpdate(prevProps: StencilReactInternalProps<ElementType>) {\n attachProps(this.componentEl, this.props, prevProps);\n }\n\n render() {\n const { children, forwardedRef, style, className, ref, ...cProps } = this.props;\n\n let propsToPass = Object.keys(cProps).reduce((acc: any, name) => {\n const value = (cProps as any)[name];\n\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (typeof document !== 'undefined' && isCoveredByReact(eventName)) {\n acc[name] = value;\n }\n } else {\n // we should only render strings, booleans, and numbers as attrs in html.\n // objects, functions, arrays etc get synced via properties on mount.\n const type = typeof value;\n\n if (type === 'string' || type === 'boolean' || type === 'number') {\n acc[camelToDashCase(name)] = value;\n }\n }\n return acc;\n }, {} as ExpandedPropsTypes);\n\n if (manipulatePropsFunction) {\n propsToPass = manipulatePropsFunction(this.props, propsToPass);\n }\n\n const newProps: Omit<StencilReactInternalProps<ElementType>, 'forwardedRef'> = {\n ...propsToPass,\n ref: mergeRefs(forwardedRef, this.setComponentElRef),\n style,\n };\n\n /**\n * We use createElement here instead of\n * React.createElement to work around a\n * bug in Vite (https://github.com/vitejs/vite/issues/6104).\n * React.createElement causes all elements to be rendered\n * as <tagname> instead of the actual Web Component.\n */\n return createElement(tagName, newProps, children);\n }\n\n static get displayName() {\n return displayName;\n }\n };\n\n // If context was passed to createReactComponent then conditionally add it to the Component Class\n if (ReactComponentContext) {\n ReactComponent.contextType = ReactComponentContext;\n }\n\n return createForwardRef<PropType, ElementType>(ReactComponent, displayName);\n};\n","/* eslint-disable */\n/* tslint:disable */\n/* auto-generated react proxies */\nimport { createReactComponent } from './react-component-lib';\n\nimport type { JSX } from '@ionic/core/components';\n\nimport { defineCustomElement as defineIonAccordion } from '@ionic/core/components/ion-accordion.js';\nimport { defineCustomElement as defineIonAccordionGroup } from '@ionic/core/components/ion-accordion-group.js';\nimport { defineCustomElement as defineIonAvatar } from '@ionic/core/components/ion-avatar.js';\nimport { defineCustomElement as defineIonBackdrop } from '@ionic/core/components/ion-backdrop.js';\nimport { defineCustomElement as defineIonBadge } from '@ionic/core/components/ion-badge.js';\nimport { defineCustomElement as defineIonBreadcrumbs } from '@ionic/core/components/ion-breadcrumbs.js';\nimport { defineCustomElement as defineIonButtons } from '@ionic/core/components/ion-buttons.js';\nimport { defineCustomElement as defineIonCardContent } from '@ionic/core/components/ion-card-content.js';\nimport { defineCustomElement as defineIonCardHeader } from '@ionic/core/components/ion-card-header.js';\nimport { defineCustomElement as defineIonCardSubtitle } from '@ionic/core/components/ion-card-subtitle.js';\nimport { defineCustomElement as defineIonCardTitle } from '@ionic/core/components/ion-card-title.js';\nimport { defineCustomElement as defineIonCheckbox } from '@ionic/core/components/ion-checkbox.js';\nimport { defineCustomElement as defineIonChip } from '@ionic/core/components/ion-chip.js';\nimport { defineCustomElement as defineIonCol } from '@ionic/core/components/ion-col.js';\nimport { defineCustomElement as defineIonContent } from '@ionic/core/components/ion-content.js';\nimport { defineCustomElement as defineIonDatetime } from '@ionic/core/components/ion-datetime.js';\nimport { defineCustomElement as defineIonDatetimeButton } from '@ionic/core/components/ion-datetime-button.js';\nimport { defineCustomElement as defineIonFab } from '@ionic/core/components/ion-fab.js';\nimport { defineCustomElement as defineIonFabList } from '@ionic/core/components/ion-fab-list.js';\nimport { defineCustomElement as defineIonFooter } from '@ionic/core/components/ion-footer.js';\nimport { defineCustomElement as defineIonGrid } from '@ionic/core/components/ion-grid.js';\nimport { defineCustomElement as defineIonHeader } from '@ionic/core/components/ion-header.js';\nimport { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js';\nimport { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js';\nimport { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js';\nimport { defineCustomElement as defineIonInput } from '@ionic/core/components/ion-input.js';\nimport { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js';\nimport { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js';\nimport { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js';\nimport { defineCustomElement as defineIonItemGroup } from '@ionic/core/components/ion-item-group.js';\nimport { defineCustomElement as defineIonItemOptions } from '@ionic/core/components/ion-item-options.js';\nimport { defineCustomElement as defineIonItemSliding } from '@ionic/core/components/ion-item-sliding.js';\nimport { defineCustomElement as defineIonLabel } from '@ionic/core/components/ion-label.js';\nimport { defineCustomElement as defineIonList } from '@ionic/core/components/ion-list.js';\nimport { defineCustomElement as defineIonListHeader } from '@ionic/core/components/ion-list-header.js';\nimport { defineCustomElement as defineIonMenu } from '@ionic/core/components/ion-menu.js';\nimport { defineCustomElement as defineIonMenuButton } from '@ionic/core/components/ion-menu-button.js';\nimport { defineCustomElement as defineIonMenuToggle } from '@ionic/core/components/ion-menu-toggle.js';\nimport { defineCustomElement as defineIonNav } from '@ionic/core/components/ion-nav.js';\nimport { defineCustomElement as defineIonNavLink } from '@ionic/core/components/ion-nav-link.js';\nimport { defineCustomElement as defineIonNote } from '@ionic/core/components/ion-note.js';\nimport { defineCustomElement as defineIonPicker } from '@ionic/core/components/ion-picker.js';\nimport { defineCustomElement as defineIonPickerColumn } from '@ionic/core/components/ion-picker-column.js';\nimport { defineCustomElement as defineIonPickerColumnOption } from '@ionic/core/components/ion-picker-column-option.js';\nimport { defineCustomElement as defineIonProgressBar } from '@ionic/core/components/ion-progress-bar.js';\nimport { defineCustomElement as defineIonRadio } from '@ionic/core/components/ion-radio.js';\nimport { defineCustomElement as defineIonRadioGroup } from '@ionic/core/components/ion-radio-group.js';\nimport { defineCustomElement as defineIonRange } from '@ionic/core/components/ion-range.js';\nimport { defineCustomElement as defineIonRefresher } from '@ionic/core/components/ion-refresher.js';\nimport { defineCustomElement as defineIonRefresherContent } from '@ionic/core/components/ion-refresher-content.js';\nimport { defineCustomElement as defineIonReorder } from '@ionic/core/components/ion-reorder.js';\nimport { defineCustomElement as defineIonReorderGroup } from '@ionic/core/components/ion-reorder-group.js';\nimport { defineCustomElement as defineIonRippleEffect } from '@ionic/core/components/ion-ripple-effect.js';\nimport { defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js';\nimport { defineCustomElement as defineIonSearchbar } from '@ionic/core/components/ion-searchbar.js';\nimport { defineCustomElement as defineIonSegment } from '@ionic/core/components/ion-segment.js';\nimport { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js';\nimport { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js';\nimport { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js';\nimport { defineCustomElement as defineIonSelect } from '@ionic/core/components/ion-select.js';\nimport { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js';\nimport { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js';\nimport { defineCustomElement as defineIonSkeletonText } from '@ionic/core/components/ion-skeleton-text.js';\nimport { defineCustomElement as defineIonSpinner } from '@ionic/core/components/ion-spinner.js';\nimport { defineCustomElement as defineIonSplitPane } from '@ionic/core/components/ion-split-pane.js';\nimport { defineCustomElement as defineIonTab } from '@ionic/core/components/ion-tab.js';\nimport { defineCustomElement as defineIonText } from '@ionic/core/components/ion-text.js';\nimport { defineCustomElement as defineIonTextarea } from '@ionic/core/components/ion-textarea.js';\nimport { defineCustomElement as defineIonThumbnail } from '@ionic/core/components/ion-thumbnail.js';\nimport { defineCustomElement as defineIonTitle } from '@ionic/core/components/ion-title.js';\nimport { defineCustomElement as defineIonToggle } from '@ionic/core/components/ion-toggle.js';\nimport { defineCustomElement as defineIonToolbar } from '@ionic/core/components/ion-toolbar.js';\n\nexport const IonAccordion = /*@__PURE__*/createReactComponent<JSX.IonAccordion, HTMLIonAccordionElement>('ion-accordion', undefined, undefined, defineIonAccordion);\nexport const IonAccordionGroup = /*@__PURE__*/createReactComponent<JSX.IonAccordionGroup, HTMLIonAccordionGroupElement>('ion-accordion-group', undefined, undefined, defineIonAccordionGroup);\nexport const IonAvatar = /*@__PURE__*/createReactComponent<JSX.IonAvatar, HTMLIonAvatarElement>('ion-avatar', undefined, undefined, defineIonAvatar);\nexport const IonBackdrop = /*@__PURE__*/createReactComponent<JSX.IonBackdrop, HTMLIonBackdropElement>('ion-backdrop', undefined, undefined, defineIonBackdrop);\nexport const IonBadge = /*@__PURE__*/createReactComponent<JSX.IonBadge, HTMLIonBadgeElement>('ion-badge', undefined, undefined, defineIonBadge);\nexport const IonBreadcrumbs = /*@__PURE__*/createReactComponent<JSX.IonBreadcrumbs, HTMLIonBreadcrumbsElement>('ion-breadcrumbs', undefined, undefined, defineIonBreadcrumbs);\nexport const IonButtons = /*@__PURE__*/createReactComponent<JSX.IonButtons, HTMLIonButtonsElement>('ion-buttons', undefined, undefined, defineIonButtons);\nexport const IonCardContent = /*@__PURE__*/createReactComponent<JSX.IonCardContent, HTMLIonCardContentElement>('ion-card-content', undefined, undefined, defineIonCardContent);\nexport const IonCardHeader = /*@__PURE__*/createReactComponent<JSX.IonCardHeader, HTMLIonCardHeaderElement>('ion-card-header', undefined, undefined, defineIonCardHeader);\nexport const IonCardSubtitle = /*@__PURE__*/createReactComponent<JSX.IonCardSubtitle, HTMLIonCardSubtitleElement>('ion-card-subtitle', undefined, undefined, defineIonCardSubtitle);\nexport const IonCardTitle = /*@__PURE__*/createReactComponent<JSX.IonCardTitle, HTMLIonCardTitleElement>('ion-card-title', undefined, undefined, defineIonCardTitle);\nexport const IonCheckbox = /*@__PURE__*/createReactComponent<JSX.IonCheckbox, HTMLIonCheckboxElement>('ion-checkbox', undefined, undefined, defineIonCheckbox);\nexport const IonChip = /*@__PURE__*/createReactComponent<JSX.IonChip, HTMLIonChipElement>('ion-chip', undefined, undefined, defineIonChip);\nexport const IonCol = /*@__PURE__*/createReactComponent<JSX.IonCol, HTMLIonColElement>('ion-col', undefined, undefined, defineIonCol);\nexport const IonContent = /*@__PURE__*/createReactComponent<JSX.IonContent, HTMLIonContentElement>('ion-content', undefined, undefined, defineIonContent);\nexport const IonDatetime = /*@__PURE__*/createReactComponent<JSX.IonDatetime, HTMLIonDatetimeElement>('ion-datetime', undefined, undefined, defineIonDatetime);\nexport const IonDatetimeButton = /*@__PURE__*/createReactComponent<JSX.IonDatetimeButton, HTMLIonDatetimeButtonElement>('ion-datetime-button', undefined, undefined, defineIonDatetimeButton);\nexport const IonFab = /*@__PURE__*/createReactComponent<JSX.IonFab, HTMLIonFabElement>('ion-fab', undefined, undefined, defineIonFab);\nexport const IonFabList = /*@__PURE__*/createReactComponent<JSX.IonFabList, HTMLIonFabListElement>('ion-fab-list', undefined, undefined, defineIonFabList);\nexport const IonFooter = /*@__PURE__*/createReactComponent<JSX.IonFooter, HTMLIonFooterElement>('ion-footer', undefined, undefined, defineIonFooter);\nexport const IonGrid = /*@__PURE__*/createReactComponent<JSX.IonGrid, HTMLIonGridElement>('ion-grid', undefined, undefined, defineIonGrid);\nexport const IonHeader = /*@__PURE__*/createReactComponent<JSX.IonHeader, HTMLIonHeaderElement>('ion-header', undefined, undefined, defineIonHeader);\nexport const IonImg = /*@__PURE__*/createReactComponent<JSX.IonImg, HTMLIonImgElement>('ion-img', undefined, undefined, defineIonImg);\nexport const IonInfiniteScroll = /*@__PURE__*/createReactComponent<JSX.IonInfiniteScroll, HTMLIonInfiniteScrollElement>('ion-infinite-scroll', undefined, undefined, defineIonInfiniteScroll);\nexport const IonInfiniteScrollContent = /*@__PURE__*/createReactComponent<JSX.IonInfiniteScrollContent, HTMLIonInfiniteScrollContentElement>('ion-infinite-scroll-content', undefined, undefined, defineIonInfiniteScrollContent);\nexport const IonInput = /*@__PURE__*/createReactComponent<JSX.IonInput, HTMLIonInputElement>('ion-input', undefined, undefined, defineIonInput);\nexport const IonInputOtp = /*@__PURE__*/createReactComponent<JSX.IonInputOtp, HTMLIonInputOtpElement>('ion-input-otp', undefined, undefined, defineIonInputOtp);\nexport const IonInputPasswordToggle = /*@__PURE__*/createReactComponent<JSX.IonInputPasswordToggle, HTMLIonInputPasswordToggleElement>('ion-input-password-toggle', undefined, undefined, defineIonInputPasswordToggle);\nexport const IonItemDivider = /*@__PURE__*/createReactComponent<JSX.IonItemDivider, HTMLIonItemDividerElement>('ion-item-divider', undefined, undefined, defineIonItemDivider);\nexport const IonItemGroup = /*@__PURE__*/createReactComponent<JSX.IonItemGroup, HTMLIonItemGroupElement>('ion-item-group', undefined, undefined, defineIonItemGroup);\nexport const IonItemOptions = /*@__PURE__*/createReactComponent<JSX.IonItemOptions, HTMLIonItemOptionsElement>('ion-item-options', undefined, undefined, defineIonItemOptions);\nexport const IonItemSliding = /*@__PURE__*/createReactComponent<JSX.IonItemSliding, HTMLIonItemSlidingElement>('ion-item-sliding', undefined, undefined, defineIonItemSliding);\nexport const IonLabel = /*@__PURE__*/createReactComponent<JSX.IonLabel, HTMLIonLabelElement>('ion-label', undefined, undefined, defineIonLabel);\nexport const IonList = /*@__PURE__*/createReactComponent<JSX.IonList, HTMLIonListElement>('ion-list', undefined, undefined, defineIonList);\nexport const IonListHeader = /*@__PURE__*/createReactComponent<JSX.IonListHeader, HTMLIonListHeaderElement>('ion-list-header', undefined, undefined, defineIonListHeader);\nexport const IonMenu = /*@__PURE__*/createReactComponent<JSX.IonMenu, HTMLIonMenuElement>('ion-menu', undefined, undefined, defineIonMenu);\nexport const IonMenuButton = /*@__PURE__*/createReactComponent<JSX.IonMenuButton, HTMLIonMenuButtonElement>('ion-menu-button', undefined, undefined, defineIonMenuButton);\nexport const IonMenuToggle = /*@__PURE__*/createReactComponent<JSX.IonMenuToggle, HTMLIonMenuToggleElement>('ion-menu-toggle', undefined, undefined, defineIonMenuToggle);\nexport const IonNav = /*@__PURE__*/createReactComponent<JSX.IonNav, HTMLIonNavElement>('ion-nav', undefined, undefined, defineIonNav);\nexport const IonNavLink = /*@__PURE__*/createReactComponent<JSX.IonNavLink, HTMLIonNavLinkElement>('ion-nav-link', undefined, undefined, defineIonNavLink);\nexport const IonNote = /*@__PURE__*/createReactComponent<JSX.IonNote, HTMLIonNoteElement>('ion-note', undefined, undefined, defineIonNote);\nexport const IonPicker = /*@__PURE__*/createReactComponent<JSX.IonPicker, HTMLIonPickerElement>('ion-picker', undefined, undefined, defineIonPicker);\nexport const IonPickerColumn = /*@__PURE__*/createReactComponent<JSX.IonPickerColumn, HTMLIonPickerColumnElement>('ion-picker-column', undefined, undefined, defineIonPickerColumn);\nexport const IonPickerColumnOption = /*@__PURE__*/createReactComponent<JSX.IonPickerColumnOption, HTMLIonPickerColumnOptionElement>('ion-picker-column-option', undefined, undefined, defineIonPickerColumnOption);\nexport const IonProgressBar = /*@__PURE__*/createReactComponent<JSX.IonProgressBar, HTMLIonProgressBarElement>('ion-progress-bar', undefined, undefined, defineIonProgressBar);\nexport const IonRadio = /*@__PURE__*/createReactComponent<JSX.IonRadio, HTMLIonRadioElement>('ion-radio', undefined, undefined, defineIonRadio);\nexport const IonRadioGroup = /*@__PURE__*/createReactComponent<JSX.IonRadioGroup, HTMLIonRadioGroupElement>('ion-radio-group', undefined, undefined, defineIonRadioGroup);\nexport const IonRange = /*@__PURE__*/createReactComponent<JSX.IonRange, HTMLIonRangeElement>('ion-range', undefined, undefined, defineIonRange);\nexport const IonRefresher = /*@__PURE__*/createReactComponent<JSX.IonRefresher, HTMLIonRefresherElement>('ion-refresher', undefined, undefined, defineIonRefresher);\nexport const IonRefresherContent = /*@__PURE__*/createReactComponent<JSX.IonRefresherContent, HTMLIonRefresherContentElement>('ion-refresher-content', undefined, undefined, defineIonRefresherContent);\nexport const IonReorder = /*@__PURE__*/createReactComponent<JSX.IonReorder, HTMLIonReorderElement>('ion-reorder', undefined, undefined, defineIonReorder);\nexport const IonReorderGroup = /*@__PURE__*/createReactComponent<JSX.IonReorderGroup, HTMLIonReorderGroupElement>('ion-reorder-group', undefined, undefined, defineIonReorderGroup);\nexport const IonRippleEffect = /*@__PURE__*/createReactComponent<JSX.IonRippleEffect, HTMLIonRippleEffectElement>('ion-ripple-effect', undefined, undefined, defineIonRippleEffect);\nexport const IonRow = /*@__PURE__*/createReactComponent<JSX.IonRow, HTMLIonRowElement>('ion-row', undefined, undefined, defineIonRow);\nexport const IonSearchbar = /*@__PURE__*/createReactComponent<JSX.IonSearchbar, HTMLIonSearchbarElement>('ion-searchbar', undefined, undefined, defineIonSearchbar);\nexport const IonSegment = /*@__PURE__*/createReactComponent<JSX.IonSegment, HTMLIonSegmentElement>('ion-segment', undefined, undefined, defineIonSegment);\nexport const IonSegmentButton = /*@__PURE__*/createReactComponent<JSX.IonSegmentButton, HTMLIonSegmentButtonElement>('ion-segment-button', undefined, undefined, defineIonSegmentButton);\nexport const IonSegmentContent = /*@__PURE__*/createReactComponent<JSX.IonSegmentContent, HTMLIonSegmentContentElement>('ion-segment-content', undefined, undefined, defineIonSegmentContent);\nexport const IonSegmentView = /*@__PURE__*/createReactComponent<JSX.IonSegmentView, HTMLIonSegmentViewElement>('ion-segment-view', undefined, undefined, defineIonSegmentView);\nexport const IonSelect = /*@__PURE__*/createReactComponent<JSX.IonSelect, HTMLIonSelectElement>('ion-select', undefined, undefined, defineIonSelect);\nexport const IonSelectModal = /*@__PURE__*/createReactComponent<JSX.IonSelectModal, HTMLIonSelectModalElement>('ion-select-modal', undefined, undefined, defineIonSelectModal);\nexport const IonSelectOption = /*@__PURE__*/createReactComponent<JSX.IonSelectOption, HTMLIonSelectOptionElement>('ion-select-option', undefined, undefined, defineIonSelectOption);\nexport const IonSkeletonText = /*@__PURE__*/createReactComponent<JSX.IonSkeletonText, HTMLIonSkeletonTextElement>('ion-skeleton-text', undefined, undefined, defineIonSkeletonText);\nexport const IonSpinner = /*@__PURE__*/createReactComponent<JSX.IonSpinner, HTMLIonSpinnerElement>('ion-spinner', undefined, undefined, defineIonSpinner);\nexport const IonSplitPane = /*@__PURE__*/createReactComponent<JSX.IonSplitPane, HTMLIonSplitPaneElement>('ion-split-pane', undefined, undefined, defineIonSplitPane);\nexport const IonTab = /*@__PURE__*/createReactComponent<JSX.IonTab, HTMLIonTabElement>('ion-tab', undefined, undefined, defineIonTab);\nexport const IonText = /*@__PURE__*/createReactComponent<JSX.IonText, HTMLIonTextElement>('ion-text', undefined, undefined, defineIonText);\nexport const IonTextarea = /*@__PURE__*/createReactComponent<JSX.IonTextarea, HTMLIonTextareaElement>('ion-textarea', undefined, undefined, defineIonTextarea);\nexport const IonThumbnail = /*@__PURE__*/createReactComponent<JSX.IonThumbnail, HTMLIonThumbnailElement>('ion-thumbnail', undefined, undefined, defineIonThumbnail);\nexport const IonTitle = /*@__PURE__*/createReactComponent<JSX.IonTitle, HTMLIonTitleElement>('ion-title', undefined, undefined, defineIonTitle);\nexport const IonToggle = /*@__PURE__*/createReactComponent<JSX.IonToggle, HTMLIonToggleElement>('ion-toggle', undefined, undefined, defineIonToggle);\nexport const IonToolbar = /*@__PURE__*/createReactComponent<JSX.IonToolbar, HTMLIonToolbarElement>('ion-toolbar', undefined, undefined, defineIonToolbar);\n","import type { Config as CoreConfig, Platforms } from '@ionic/core/components';\nimport { getPlatforms as getPlatformsCore, isPlatform as isPlatformCore } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { IonicReactProps } from '../IonicReactProps';\n\nexport type IonicReactExternalProps<PropType, ElementType> = PropType &\n /**\n * TODO: FW-5753\n *\n * The `placeholder` property was removed from `HTMLAttributes` in @types/react@18.2.43\n * https://github.com/DefinitelyTyped/DefinitelyTyped/commit/b954269038de46b4b2f1756a9f2f020cbc66a326\n *\n * This is a temporary workaround until @ionic/react is updated to >=18.2.43.\n */\n Omit<React.HTMLAttributes<ElementType>, 'style' | 'placeholder'> &\n IonicReactProps;\n\nexport const createForwardRef = <PropType, ElementType>(\n ReactComponent: any, // TODO(FW-2959): type\n displayName: string\n) => {\n const forwardRef = (props: IonicReactExternalProps<PropType, ElementType>, ref: React.ForwardedRef<ElementType>) => {\n return <ReactComponent {...props} forwardedRef={ref} />;\n };\n forwardRef.displayName = displayName;\n\n return React.forwardRef(forwardRef);\n};\n\nexport const isPlatform = (platform: Platforms) => {\n return isPlatformCore(window, platform);\n};\n\nexport const getPlatforms = () => {\n return getPlatformsCore(window);\n};\n\nexport const getConfig = (): CoreConfig | null => {\n if (typeof (window as any) !== 'undefined') {\n const Ionic = (window as any).Ionic;\n if (Ionic && Ionic.config) {\n return Ionic.config;\n }\n }\n return null;\n};\n","import type { AnimationBuilder } from '@ionic/core/components';\nimport React, { createElement } from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport type { RouterOptions } from '../models';\nimport type { RouterDirection } from '../models/RouterDirection';\n\nimport {\n attachProps,\n camelToDashCase,\n dashToPascalCase,\n defineCustomElement,\n isCoveredByReact,\n mergeRefs,\n} from './react-component-lib/utils';\nimport { createForwardRef } from './utils';\n\n// TODO(FW-2959): types\n\ninterface IonicReactInternalProps<ElementType> extends React.HTMLAttributes<ElementType> {\n forwardedRef?: React.ForwardedRef<ElementType>;\n href?: string;\n routerLink?: string;\n ref?: React.Ref<any>;\n routerDirection?: RouterDirection;\n routerOptions?: RouterOptions;\n routerAnimation?: AnimationBuilder;\n}\n\nexport const createRoutingComponent = <PropType, ElementType>(tagName: string, customElement?: any) => {\n defineCustomElement(tagName, customElement);\n\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component<IonicReactInternalProps<PropType>> {\n context!: React.ContextType<typeof NavContext>;\n ref: React.RefObject<HTMLElement>;\n stableMergedRefs: React.RefCallback<HTMLElement>;\n\n constructor(props: IonicReactInternalProps<PropType>) {\n super(props);\n // Create a local ref to to attach props to the wrapped element.\n this.ref = React.createRef();\n // React refs must be stable (not created inline).\n this.stableMergedRefs = mergeRefs(this.ref, this.props.forwardedRef);\n }\n\n componentDidMount() {\n this.componentDidUpdate(this.props);\n }\n\n componentDidUpdate(prevProps: IonicReactInternalProps<PropType>) {\n const node = this.ref.current! as HTMLElement;\n attachProps(node, this.props, prevProps);\n }\n\n private handleClick = (e: React.MouseEvent<PropType>) => {\n const { routerLink, routerDirection, routerOptions, routerAnimation } = this.props;\n if (routerLink !== undefined) {\n e.preventDefault();\n this.context.navigate(routerLink, routerDirection, undefined, routerAnimation, routerOptions);\n }\n };\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { children, forwardedRef, style, className, ref, ...cProps } = this.props;\n\n const propsToPass = Object.keys(cProps).reduce((acc, name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (isCoveredByReact(eventName)) {\n (acc as any)[name] = (cProps as any)[name];\n }\n } else if (['string', 'boolean', 'number'].includes(typeof (cProps as any)[name])) {\n (acc as any)[camelToDashCase(name)] = (cProps as any)[name];\n }\n return acc;\n }, {});\n\n const newProps: IonicReactInternalProps<PropType> = {\n ...propsToPass,\n ref: this.stableMergedRefs,\n style,\n };\n\n if (this.props.routerLink && !this.props.href) {\n newProps.href = this.props.routerLink;\n }\n if (newProps.onClick) {\n const oldClick = newProps.onClick;\n newProps.onClick = (e: React.MouseEvent<PropType>) => {\n oldClick(e);\n if (!e.defaultPrevented) {\n this.handleClick(e);\n }\n };\n } else {\n newProps.onClick = this.handleClick;\n }\n\n return createElement(tagName, newProps, children);\n }\n\n static get displayName() {\n return displayName;\n }\n\n static get contextType() {\n return NavContext;\n }\n };\n return createForwardRef<PropType, ElementType>(ReactComponent, displayName);\n};\n","import type { JSX } from '@ionic/core/components';\nimport { IonBreadcrumb as IonBreadcrumbCmp } from '@ionic/core/components/ion-breadcrumb.js';\nimport { IonButton as IonButtonCmp } from '@ionic/core/components/ion-button.js';\nimport { IonCard as IonCardCmp } from '@ionic/core/components/ion-card.js';\nimport { IonFabButton as IonFabButtonCmp } from '@ionic/core/components/ion-fab-button.js';\nimport { IonItemOption as IonItemOptionCmp } from '@ionic/core/components/ion-item-option.js';\nimport { IonItem as IonItemCmp } from '@ionic/core/components/ion-item.js';\nimport { IonRouterLink as IonRouterLinkCmp } from '@ionic/core/components/ion-router-link.js';\n\nimport { createRoutingComponent } from './createRoutingComponent';\nimport type { HrefProps } from './hrefprops';\n\nexport const IonRouterLink = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonRouterLink>,\n HTMLIonRouterLinkElement\n>('ion-router-link', IonRouterLinkCmp);\n\nexport const IonButton = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonButton>, HTMLIonButtonElement>(\n 'ion-button',\n IonButtonCmp\n);\n\nexport const IonCard = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonCard>, HTMLIonCardElement>(\n 'ion-card',\n IonCardCmp\n);\n\nexport const IonFabButton = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonFabButton>, HTMLIonFabButtonElement>(\n 'ion-fab-button',\n IonFabButtonCmp\n);\n\nexport const IonItem = /*@__PURE__*/ createRoutingComponent<HrefProps<JSX.IonItem>, HTMLIonItemElement>(\n 'ion-item',\n IonItemCmp\n);\n\nexport const IonItemOption = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonItemOption>,\n HTMLIonItemOptionElement\n>('ion-item-option', IonItemOptionCmp);\n\nexport const IonBreadcrumb = /*@__PURE__*/ createRoutingComponent<\n HrefProps<JSX.IonBreadcrumb>,\n HTMLIonBreadcrumbElement\n>('ion-breadcrumb', IonBreadcrumbCmp);\n","import { isCoveredByReact } from '../react-component-lib/utils';\n\n/**\n * The @stencil/react-output-target will bind event listeners for any\n * attached props that use the `on` prefix. This function will remove\n * those event listeners when the component is unmounted.\n *\n * This prevents memory leaks and React state updates on unmounted components.\n */\nexport const detachProps = (node: HTMLElement, props: any) => {\n if (node instanceof Element) {\n Object.keys(props).forEach((name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2);\n const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n if (!isCoveredByReact(eventNameLc)) {\n /**\n * Detach custom event bindings (not built-in React events)\n * that were added by the @stencil/react-output-target attachProps function.\n */\n detachEvent(node, eventNameLc);\n }\n }\n });\n }\n};\n\nconst detachEvent = (\n node: Element & { __events?: { [key: string]: ((e: Event) => any) | undefined } },\n eventName: string\n) => {\n const eventStore = node.__events || (node.__events = {});\n /**\n * If the event listener was added by attachProps, it will\n * be stored in the __events object.\n */\n const eventHandler = eventStore[eventName];\n if (eventHandler) {\n node.removeEventListener(eventName, eventHandler);\n eventStore[eventName] = undefined;\n }\n};\n","import type { HTMLIonOverlayElement, OverlayEventDetail } from '@ionic/core/components';\nimport React, { createElement } from 'react';\n\nimport {\n attachProps,\n camelToDashCase,\n dashToPascalCase,\n isCoveredByReact,\n mergeRefs,\n} from './react-component-lib/utils';\nimport { createForwardRef } from './utils';\nimport { detachProps } from './utils/detachProps';\n\n// TODO(FW-2959): types\n\ntype InlineOverlayState = {\n isOpen: boolean;\n};\n\ninterface IonicReactInternalProps<ElementType> extends React.HTMLAttributes<ElementType> {\n forwardedRef?: React.ForwardedRef<ElementType>;\n ref?: React.Ref<any>;\n onDidDismiss?: (event: CustomEvent<OverlayEventDetail>) => void;\n onDidPresent?: (event: CustomEvent<OverlayEventDetail>) => void;\n onWillDismiss?: (event: CustomEvent<OverlayEventDetail>) => void;\n onWillPresent?: (event: CustomEvent<OverlayEventDetail>) => void;\n keepContentsMounted?: boolean;\n}\n\nexport const createInlineOverlayComponent = <PropType, ElementType>(\n tagName: string,\n defineCustomElement?: () => void,\n hasDelegateHost?: boolean\n) => {\n if (defineCustomElement) {\n defineCustomElement();\n }\n const displayName = dashToPascalCase(tagName);\n const ReactComponent = class extends React.Component<IonicReactInternalProps<PropType>, InlineOverlayState> {\n ref: React.RefObject<HTMLIonOverlayElement>;\n wrapperRef: React.RefObject<HTMLElement>;\n stableMergedRefs: React.RefCallback<HTMLElement>;\n\n constructor(props: IonicReactInternalProps<PropType>) {\n super(props);\n // Create a local ref to to attach props to the wrapped element.\n this.ref = React.createRef();\n // React refs must be stable (not created inline).\n this.stableMergedRefs = mergeRefs(this.ref, this.props.forwardedRef);\n // Component is hidden by default\n this.state = { isOpen: false };\n // Create a local ref to the inner child element.\n this.wrapperRef = React.createRef();\n }\n\n componentDidMount() {\n this.componentDidUpdate(this.props);\n\n this.ref.current?.addEventListener('ionMount', this.handleIonMount);\n this.ref.current?.addEventListener('willPresent', this.handleWillPresent);\n this.ref.current?.addEventListener('didDismiss', this.handleDidDismiss);\n }\n\n componentDidUpdate(prevProps: IonicReactInternalProps<PropType>) {\n const node = this.ref.current! as HTMLElement;\n /**\n * onDidDismiss and onWillPresent have manual implementations that\n * will invoke the original handler. We need to filter those out\n * so they don't get attached twice and called twice.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onDidDismiss, onWillPresent, ...cProps } = this.props;\n attachProps(node, cProps, prevProps);\n }\n\n componentWillUnmount() {\n const node = this.ref.current;\n /**\n * If the overlay is being unmounted, but is still\n * open, this means the unmount was triggered outside\n * of the overlay being dismissed.\n *\n * This can happen with:\n * - The parent component being unmounted\n * - The overlay being conditionally rendered\n * - A route change (push/pop/replace)\n *\n * Unmounting the overlay at this stage should skip\n * the dismiss lifecycle, including skipping the transition.\n *\n */\n if (node && this.state.isOpen) {\n /**\n * Detach the local event listener that performs the state updates,\n * before dismissing the overlay, to prevent the callback handlers\n * executing after the component has been unmounted. This is to\n * avoid memory leaks.\n */\n node.removeEventListener('didDismiss', this.handleDidDismiss);\n node.remove();\n detachProps(node, this.props);\n }\n }\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { children, forwardedRef, style, className, ref, ...cProps } = this.props;\n\n const propsToPass = Object.keys(cProps).reduce((acc, name) => {\n if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n const eventName = name.substring(2).toLowerCase();\n if (isCoveredByReact(eventName)) {\n (acc as any)[name] = (cProps as any)[name];\n }\n } else if (['string', 'boolean', 'number'].includes(typeof (cProps as any)[name])) {\n (acc as any)[camelToDashCase(name)] = (cProps as any)[name];\n }\n return acc;\n }, {});\n\n const newProps: IonicReactInternalProps<PropType> = {\n ...propsToPass,\n ref: this.stableMergedRefs,\n style,\n };\n\n /**\n * Some overlays need `.ion-page` so content\n * takes up the full size of the parent overlay.\n */\n const getWrapperClasses = () => {\n if (hasDelegateHost) {\n return `${DELEGATE_HOST} ion-page`;\n }\n\n return DELEGATE_HOST;\n };\n\n return createElement(\n 'template',\n {},\n createElement(\n tagName,\n newProps,\n /**\n * We only want the inner component\n * to be mounted if the overlay is open,\n * so conditionally render the component\n * based on the isOpen state.\n */\n this.state.isOpen || this.props.keepContentsMounted\n ? createElement(\n 'div',\n {\n ref: this.wrapperRef,\n className: getWrapperClasses(),\n },\n children\n )\n : null\n )\n );\n }\n\n static get displayName() {\n return displayName;\n }\n\n private handleIonMount = () => {\n /**\n * Mount the inner component when the\n * overlay is about to open.\n *\n * For ion-popover, this is when `ionMount` is emitted.\n * For other overlays, this is when `willPresent` is emitted.\n */\n this.setState({ isOpen: true });\n };\n\n private handleWillPresent = (evt: any) => {\n this.setState({ isOpen: true });\n /**\n * Manually call the onWillPresent\n * handler if present as setState will\n * cause the event handlers to be\n * destroyed and re-created.\n */\n this.props.onWillPresent && this.props.onWillPresent(evt);\n };\n\n private handleDidDismiss = (evt: any) => {\n const wrapper = this.wrapperRef.current;\n const el = this.ref.current;\n\n /**\n * This component might be unmounted already, if the containing\n * element was removed while the overlay was still open. (For\n * example, if an item contains an inline overlay with a button\n * that removes the item.)\n */\n if (wrapper && el) {\n el.append(wrapper);\n this.setState({ isOpen: false });\n }\n\n this.props.onDidDismiss && this.props.onDidDismiss(evt);\n };\n };\n return createForwardRef<PropType, ElementType>(ReactComponent, displayName);\n};\n\nconst DELEGATE_HOST = 'ion-delegate-host';\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-alert.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonAlert = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonAlert, HTMLIonAlertElement>(\n 'ion-alert',\n defineCustomElement\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-loading.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonLoading = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonLoading, HTMLIonLoadingElement>(\n 'ion-loading',\n defineCustomElement\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-toast.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonToast = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonToast, HTMLIonToastElement>(\n 'ion-toast',\n defineCustomElement\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-picker-legacy.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonPickerLegacy = /*@__PURE__*/ createInlineOverlayComponent<\n JSX.IonPickerLegacy,\n HTMLIonPickerLegacyElement\n>('ion-picker-legacy', defineCustomElement);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-action-sheet.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonActionSheet = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonActionSheet, HTMLIonActionSheetElement>(\n 'ion-action-sheet',\n defineCustomElement\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-modal.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonModal = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonModal, HTMLIonModalElement>(\n 'ion-modal',\n defineCustomElement,\n true\n);\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-popover.js';\n\nimport { createInlineOverlayComponent } from './createInlineOverlayComponent';\n\nexport const IonPopover = /*@__PURE__*/ createInlineOverlayComponent<JSX.IonPopover, HTMLIonPopoverElement>(\n 'ion-popover',\n defineCustomElement\n);\n","import React from 'react';\n\nimport type { ReactComponentOrElement } from '../models';\n\nexport interface IonContextInterface {\n addOverlay: (id: string, overlay: ReactComponentOrElement, containerElement: HTMLDivElement) => void;\n removeOverlay: (id: string) => void;\n}\n\nexport const IonContext = React.createContext<IonContextInterface>({\n addOverlay: () => {\n return;\n },\n removeOverlay: () => {\n return;\n },\n});\n","import React, { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport type { ReactComponentOrElement } from '../models';\n\ninterface IonOverlayManagerProps {\n onAddOverlay: (\n callback: (id: string, component: ReactComponentOrElement, containerElement: HTMLDivElement) => void\n ) => void;\n onRemoveOverlay: (callback: (id: string) => void) => void;\n}\n\n/**\n * Manages overlays that are added via the useOverlay hook.\n * This is a standalone component so changes to its children don't cause other descendant\n * components to re-render when overlays are added. However, we need to communicate with the IonContext\n * that is set up in <IonApp />, so we register callbacks so when overlays are added to IonContext,\n * they ultimately added here.\n */\nexport const IonOverlayManager: React.FC<IonOverlayManagerProps> = ({ onAddOverlay, onRemoveOverlay }) => {\n type OverlaysList = {\n [key: string]: {\n component: any; // TODO(FW-2959): type\n containerElement: HTMLDivElement;\n };\n };\n\n /**\n * Because of the way we're passing around the addOverlay and removeOverlay\n * callbacks, by the time they finally get called, they use a stale reference\n * to the state that only has the initial values. So if two overlays are opened\n * at the same time, both using useIonModal or similar (such as through nesting),\n * the second will erase the first from the overlays list. This causes the content\n * of the first overlay to unmount.\n *\n * We wrap the state in useRef to ensure the two callbacks always use the most\n * up-to-date version.\n *\n * Further reading: https://stackoverflow.com/a/56554056\n */\n const [overlays, setOverlays] = useState<OverlaysList>({});\n const overlaysRef = useRef<OverlaysList>({});\n\n useEffect(() => {\n /* Setup the callbacks that get called from <IonApp /> */\n onAddOverlay(addOverlay);\n onRemoveOverlay(removeOverlay);\n }, []);\n\n const addOverlay = (id: string, component: ReactComponentOrElement, containerElement: HTMLDivElement) => {\n const newOverlays = { ...overlaysRef.current };\n newOverlays[id] = { component, containerElement };\n\n /**\n * In order for this function to use the latest data\n * we need to update the ref synchronously.\n * However, updating a ref does not cause a re-render\n * which is why we still update the state.\n *\n * Note that updating the ref in the body\n * of IonOverlayManager is not sufficient\n * because that relies on overlaysRef being\n * updated as part of React's render loop. State updates\n * are batched, so updating the state twice in quick succession does\n * not necessarily result in 2 separate render calls.\n * This means if two modals are added one after the other,\n * the first modal will not have been added to\n * overlaysRef since React has not re-rendered yet.\n * More info: https://react.dev/reference/react/useState#setstate-caveats\n */\n overlaysRef.current = newOverlays;\n setOverlays(newOverlays);\n };\n\n const removeOverlay = (id: string) => {\n const newOverlays = { ...overlaysRef.current };\n delete newOverlays[id];\n\n /**\n * In order for this function to use the latest data\n * we need to update the ref synchronously.\n * However, updating a ref does not cause a re-render\n * which is why we still update the state.\n *\n * Note that updating the ref in the body\n * of IonOverlayManager is not sufficient\n * because that relies on overlaysRef being\n * updated as part of React's render loop. State updates\n * are batched, so updating the state twice in quick succession does\n * not necessarily result in 2 separate render calls.\n * This means if two modals are added one after the other,\n * the first modal will not have been added to\n * overlaysRef since React has not re-rendered yet.\n * More info: https://react.dev/reference/react/useState#setstate-caveats\n */\n overlaysRef.current = newOverlays;\n setOverlays(newOverlays);\n };\n\n const overlayKeys = Object.keys(overlays);\n\n return (\n <>\n {overlayKeys.map((key) => {\n const overlay = overlays[key];\n return ReactDOM.createPortal(overlay.component, overlay.containerElement, `overlay-${key}`);\n })}\n </>\n );\n};\n","import type { JSX } from '@ionic/core/components';\nimport { defineCustomElement as defineIonApp } from '@ionic/core/components/ion-app.js';\nimport { defineCustomElement as defineIonBackButton } from '@ionic/core/components/ion-back-button.js';\nimport { defineCustomElement as defineIonRouterOutlet } from '@ionic/core/components/ion-router-outlet.js';\nimport { defineCustomElement as defineIonTabBar } from '@ionic/core/components/ion-tab-bar.js';\nimport { defineCustomElement as defineIonTabButton } from '@ionic/core/components/ion-tab-button.js';\nimport { defineCustomElement as defineIonTabs } from '@ionic/core/components/ion-tabs.js';\nimport type { JSX as IoniconsJSX } from 'ionicons';\nimport { defineCustomElement as defineIonIcon } from 'ionicons/components/ion-icon.js';\n\nimport { createReactComponent } from './react-component-lib';\n\nexport const IonTabButtonInner = /*@__PURE__*/ createReactComponent<\n JSX.IonTabButton & { onIonTabButtonClick?: (e: CustomEvent) => void },\n HTMLIonTabButtonElement\n>('ion-tab-button', undefined, undefined, defineIonTabButton);\nexport const IonTabBarInner = /*@__PURE__*/ createReactComponent<JSX.IonTabBar, HTMLIonTabBarElement>(\n 'ion-tab-bar',\n undefined,\n undefined,\n defineIonTabBar\n);\nexport const IonTabsInner = /*@__PURE__*/ createReactComponent<JSX.IonTabs, HTMLIonTabsElement>(\n 'ion-tabs',\n undefined,\n undefined,\n defineIonTabs\n);\nexport const IonBackButtonInner = /*@__PURE__*/ createReactComponent<\n Omit<JSX.IonBackButton, 'icon'>,\n HTMLIonBackButtonElement\n>('ion-back-button', undefined, undefined, defineIonBackButton);\nexport const IonRouterOutletInner = /*@__PURE__*/ createReactComponent<\n JSX.IonRouterOutlet & {\n setRef?: (val: HTMLIonRouterOutletElement) => void;\n forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n },\n HTMLIonRouterOutletElement\n>('ion-router-outlet', undefined, undefined, defineIonRouterOutlet);\n\nexport const IonAppInner = /*@__PURE__*/ createReactComponent<JSX.IonApp, HTMLIonAppElement>(\n 'ion-app',\n undefined,\n undefined,\n defineIonApp\n);\n\n// ionicons\nexport const IonIconInner = /*@__PURE__*/ createReactComponent<IoniconsJSX.IonIcon, HTMLIonIconElement>(\n 'ion-icon',\n undefined,\n undefined,\n defineIonIcon\n);\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { type PropsWithChildren } from 'react';\n\nimport type { IonContextInterface } from '../contexts/IonContext';\nimport { IonContext } from '../contexts/IonContext';\nimport type { ReactComponentOrElement } from '../models';\n\nimport { IonOverlayManager } from './IonOverlayManager';\nimport type { IonicReactProps } from './IonicReactProps';\nimport { IonAppInner } from './inner-proxies';\n\ntype Props = PropsWithChildren<\n LocalJSX.IonApp &\n IonicReactProps & {\n ref?: React.Ref<HTMLIonAppElement>;\n }\n>;\n\nexport class IonApp extends React.Component<Props> {\n addOverlayCallback?: (id: string, overlay: ReactComponentOrElement, containerElement: HTMLDivElement) => void;\n removeOverlayCallback?: (id: string) => void;\n\n constructor(props: Props) {\n super(props);\n }\n\n ionContext: IonContextInterface = {\n addOverlay: (id: string, overlay: ReactComponentOrElement, containerElement: HTMLDivElement) => {\n if (this.addOverlayCallback) {\n this.addOverlayCallback(id, overlay, containerElement);\n }\n },\n removeOverlay: (id: string) => {\n if (this.removeOverlayCallback) {\n this.removeOverlayCallback(id);\n }\n },\n };\n\n render() {\n return (\n <IonContext.Provider value={this.ionContext}>\n <IonAppInner {...this.props}>{this.props.children}</IonAppInner>\n <IonOverlayManager\n onAddOverlay={(callback) => {\n this.addOverlayCallback = callback;\n }}\n onRemoveOverlay={(callback) => {\n this.removeOverlayCallback = callback;\n }}\n />\n </IonContext.Provider>\n );\n }\n\n static displayName = 'IonApp';\n}\n","import React from 'react';\n\nimport type { RouteInfo } from '../models/RouteInfo';\n\nexport interface StackContextState {\n registerIonPage: (page: HTMLElement, routeInfo: RouteInfo) => void;\n isInOutlet: () => boolean;\n}\n\nexport const StackContext = React.createContext<StackContextState>({\n registerIonPage: () => undefined,\n isInOutlet: () => false,\n});\n","import React from 'react';\n\nimport { mergeRefs } from '../components/react-component-lib/utils';\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\nimport type { RouteInfo } from '../models';\n\nimport { StackContext } from './StackContext';\n\ninterface PageManagerProps {\n className?: string;\n forwardedRef?: React.ForwardedRef<HTMLDivElement>;\n routeInfo?: RouteInfo;\n}\n\nexport class PageManager extends React.PureComponent<PageManagerProps> {\n ionLifeCycleContext!: React.ContextType<typeof IonLifeCycleContext>;\n context!: React.ContextType<typeof StackContext>;\n ionPageElementRef: React.RefObject<HTMLDivElement>;\n stableMergedRefs: React.RefCallback<HTMLDivElement>;\n\n constructor(props: PageManagerProps) {\n super(props);\n this.ionPageElementRef = React.createRef();\n // React refs must be stable (not created inline).\n this.stableMergedRefs = mergeRefs(this.ionPageElementRef, this.props.forwardedRef);\n\n /**\n * This binds the scope of the following methods to the class scope.\n * The `.bind` method returns a new function, so we need to assign it\n * in the constructor rather than when adding or removing the listeners\n * to avoid creating a new function.\n */\n this.ionViewWillEnterHandler = this.ionViewWillEnterHandler.bind(this);\n this.ionViewDidEnterHandler = this.ionViewDidEnterHandler.bind(this);\n this.ionViewWillLeaveHandler = this.ionViewWillLeaveHandler.bind(this);\n this.ionViewDidLeaveHandler = this.ionViewDidLeaveHandler.bind(this);\n }\n\n componentDidMount() {\n if (this.ionPageElementRef.current) {\n if (this.context.isInOutlet()) {\n this.ionPageElementRef.current.classList.add('ion-page-invisible');\n }\n this.context.registerIonPage(this.ionPageElementRef.current, this.props.routeInfo!);\n this.ionPageElementRef.current.addEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);\n this.ionPageElementRef.current.addEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);\n this.ionPageElementRef.current.addEventListener('ionViewWillLeave', this.ionViewWillLeaveHandler);\n this.ionPageElementRef.current.addEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);\n }\n }\n\n componentWillUnmount() {\n if (this.ionPageElementRef.current) {\n this.ionPageElementRef.current.removeEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);\n this.ionPageElementRef.current.removeEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);\n this.ionPageElementRef.current.removeEventListener('ionViewWillLeave', this.ionViewWillLeaveHandler);\n /**\n * We deliberately do not remove the `ionViewDidLeave` listener.\n * The registered callback is used to unmount and remove the page.\n * Removing the event listener prevents the callback from being called.\n * The browser will automatically remove the event listener when the\n * page element is removed from the DOM and garbage collected.\n */\n }\n }\n\n ionViewWillEnterHandler() {\n this.ionLifeCycleContext.ionViewWillEnter();\n }\n\n ionViewDidEnterHandler() {\n this.ionLifeCycleContext.ionViewDidEnter();\n }\n\n ionViewWillLeaveHandler() {\n this.ionLifeCycleContext.ionViewWillLeave();\n }\n\n ionViewDidLeaveHandler() {\n this.ionLifeCycleContext.ionViewDidLeave();\n }\n\n render() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { className, children, routeInfo, forwardedRef, ...props } = this.props;\n\n return (\n <IonLifeCycleContext.Consumer>\n {(context) => {\n this.ionLifeCycleContext = context;\n return (\n <div className={className ? `${className} ion-page` : `ion-page`} ref={this.stableMergedRefs} {...props}>\n {children}\n </div>\n );\n }}\n </IonLifeCycleContext.Consumer>\n );\n }\n\n static get contextType() {\n return StackContext;\n }\n}\nexport default PageManager;\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport PageManager from '../routing/PageManager';\n\nimport type { IonicReactProps } from './IonicReactProps';\nimport { createForwardRef } from './utils';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IonPageProps extends IonicReactProps {}\n\ninterface IonPageInternalProps extends IonPageProps {\n forwardedRef?: React.ForwardedRef<HTMLDivElement>;\n}\n\nclass IonPageInternal extends React.Component<IonPageInternalProps> {\n context!: React.ContextType<typeof NavContext>;\n\n constructor(props: IonPageInternalProps) {\n super(props);\n }\n\n render() {\n const { className, children, forwardedRef, ...props } = this.props;\n\n return this.context.hasIonicRouter() ? (\n <PageManager\n className={className ? `${className}` : ''}\n routeInfo={this.context.routeInfo}\n forwardedRef={forwardedRef}\n {...props}\n >\n {children}\n </PageManager>\n ) : (\n <div className={className ? `ion-page ${className}` : 'ion-page'} ref={forwardedRef} {...props}>\n {children}\n </div>\n );\n }\n\n static get displayName() {\n return 'IonPage';\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nexport const IonPage = createForwardRef(IonPageInternal, 'IonPage');\n","const ids: { [key: string]: number } = { main: 0 };\n\nexport const generateId = (type = 'main') => {\n const id = (ids[type] ?? 0) + 1;\n ids[type] = id;\n return id.toString();\n};\n","import type { FrameworkDelegate } from '@ionic/core/components';\nimport { createPortal } from 'react-dom';\n\nimport { generateId } from './utils/generateId';\n\n// TODO(FW-2959): types\n\ntype ReactComponent = (props?: any) => JSX.Element;\n\nexport const ReactDelegate = (\n addView: (view: React.ReactElement) => void,\n removeView: (view: React.ReactElement) => void\n): FrameworkDelegate => {\n const refMap = new WeakMap<HTMLElement, React.ReactElement>();\n const reactDelegateId = `react-delegate-${generateId()}`;\n // Incrementing counter to generate unique keys for each view\n let id = 0;\n\n const attachViewToDom = async (\n parentElement: HTMLElement,\n component: ReactComponent,\n propsOrDataObj?: any,\n cssClasses?: string[]\n ): Promise<any> => {\n const div = document.createElement('div');\n cssClasses && div.classList.add(...cssClasses);\n parentElement.appendChild(div);\n\n const componentWithProps = component(propsOrDataObj);\n const key = `${reactDelegateId}-${id++}`;\n const hostComponent = createPortal(componentWithProps, div, key);\n\n refMap.set(div, hostComponent);\n\n addView(hostComponent);\n\n return Promise.resolve(div);\n };\n\n const removeViewFromDom = (_container: any, component: HTMLElement): Promise<void> => {\n const hostComponent = refMap.get(component);\n hostComponent && removeView(hostComponent);\n\n component.remove();\n\n return Promise.resolve();\n };\n\n return {\n attachViewToDom,\n removeViewFromDom,\n };\n};\n","import type { FrameworkDelegate, JSX } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-nav.js';\nimport React, { useMemo, useState } from 'react';\n\nimport { ReactDelegate } from '../../framework-delegate';\nimport { createReactComponent } from '../react-component-lib';\nimport { createForwardRef } from '../utils';\n\nconst IonNavInner = createReactComponent<JSX.IonNav & { delegate: FrameworkDelegate }, HTMLIonNavElement>(\n 'ion-nav',\n undefined,\n undefined,\n defineCustomElement\n);\n\ntype IonNavProps = JSX.IonNav & {\n forwardedRef?: React.ForwardedRef<HTMLIonNavElement>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst IonNavInternal: React.FC<IonNavProps> = ({ children, forwardedRef, ...restOfProps }) => {\n const [views, setViews] = useState<React.ReactElement[]>([]);\n\n /**\n * Allows us to create React components that are rendered within\n * the context of the IonNav component.\n */\n const addView = (view: React.ReactElement) => setViews((existingViews) => [...existingViews, view]);\n const removeView = (view: React.ReactElement) => setViews((existingViews) => existingViews.filter((v) => v !== view));\n\n const delegate = useMemo(() => ReactDelegate(addView, removeView), []);\n\n return (\n <IonNavInner delegate={delegate} ref={forwardedRef} {...restOfProps}>\n {views}\n </IonNavInner>\n );\n};\n\nexport const IonNav = createForwardRef<IonNavProps, HTMLIonNavElement>(IonNavInternal, 'IonNav');\n","import React from 'react';\n\nexport interface IonTabsContextState {\n activeTab: string | undefined;\n selectTab: (tab: string) => boolean;\n hasRouterOutlet: boolean;\n tabBarProps: TabBarProps;\n}\n\n/**\n * Tab bar can be used as a standalone component,\n * so the props can not be passed directly to the\n * tab bar component. Instead, props will be\n * passed through the context.\n */\ntype TabBarProps = {\n ref: React.RefObject<any>;\n onIonTabsWillChange?: (e: CustomEvent) => void;\n onIonTabsDidChange?: (e: CustomEvent) => void;\n};\n\nexport const IonTabsContext = React.createContext<IonTabsContextState>({\n activeTab: undefined,\n selectTab: () => false,\n hasRouterOutlet: false,\n tabBarProps: { ref: React.createRef() },\n});\n","export const HTMLElementSSR = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {}) as typeof HTMLElement;\n","import { componentOnReady } from '@ionic/core/components';\nimport React from 'react';\n\nimport { IonRouterOutletInner } from '../components/inner-proxies';\nimport { IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\nimport type { RouteInfo } from '../models';\n\nimport { StackContext } from './StackContext';\n\ninterface OutletPageManagerProps {\n className?: string;\n forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n routeInfo?: RouteInfo;\n StackManager: any; // TODO(FW-2959): type\n id?: string;\n}\n\nexport class OutletPageManager extends React.Component<OutletPageManagerProps> {\n ionLifeCycleContext!: React.ContextType<typeof IonLifeCycleContext>;\n context!: React.ContextType<typeof StackContext>;\n ionRouterOutlet: HTMLIonRouterOutletElement | undefined;\n outletIsReady: boolean;\n\n constructor(props: OutletPageManagerProps) {\n super(props);\n\n this.outletIsReady = false;\n\n /**\n * This binds the scope of the following methods to the class scope.\n * The `.bind` method returns a new function, so we need to assign it\n * in the constructor rather than when adding or removing the listeners\n * to avoid creating a new function.\n */\n this.ionViewWillEnterHandler = this.ionViewWillEnterHandler.bind(this);\n this.ionViewDidEnterHandler = this.ionViewDidEnterHandler.bind(this);\n this.ionViewWillLeaveHandler = this.ionViewWillLeaveHandler.bind(this);\n this.ionViewDidLeaveHandler = this.ionViewDidLeaveHandler.bind(this);\n }\n\n componentDidMount() {\n if (this.ionRouterOutlet) {\n /**\n * This avoids multiple raf calls\n * when React unmounts + remounts components.\n */\n if (!this.outletIsReady) {\n componentOnReady(this.ionRouterOutlet, () => {\n this.outletIsReady = true;\n this.context.registerIonPage(this.ionRouterOutlet!, this.props.routeInfo!);\n });\n }\n\n this.ionRouterOutlet.addEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);\n this.ionRouterOutlet.addEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);\n this.ionRouterOutlet.addEventListener('ionViewWillLeave', this.ionViewWillLeaveHandler);\n this.ionRouterOutlet.addEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);\n }\n }\n\n componentWillUnmount() {\n if (this.ionRouterOutlet) {\n this.ionRouterOutlet.removeEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);\n this.ionRouterOutlet.removeEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);\n this.ionRouterOutlet.removeEventListener('ionViewWillLeave', this.ionViewWillLeaveHandler);\n this.ionRouterOutlet.removeEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);\n }\n }\n\n ionViewWillEnterHandler() {\n this.ionLifeCycleContext.ionViewWillEnter();\n }\n\n ionViewDidEnterHandler() {\n this.ionLifeCycleContext.ionViewDidEnter();\n }\n\n ionViewWillLeaveHandler() {\n this.ionLifeCycleContext.ionViewWillLeave();\n }\n\n ionViewDidLeaveHandler() {\n this.ionLifeCycleContext.ionViewDidLeave();\n }\n\n render() {\n const { StackManager, children, routeInfo, id, ...props } = this.props;\n return (\n <IonLifeCycleContext.Consumer>\n {(context) => {\n this.ionLifeCycleContext = context;\n return (\n <StackManager routeInfo={routeInfo} id={id}>\n <IonRouterOutletInner\n setRef={(val: HTMLIonRouterOutletElement) => (this.ionRouterOutlet = val)}\n id={id}\n {...props}\n >\n {children}\n </IonRouterOutletInner>\n </StackManager>\n );\n }}\n </IonLifeCycleContext.Consumer>\n );\n }\n\n static get contextType() {\n return StackContext;\n }\n}\nexport default OutletPageManager;\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\nimport OutletPageManager from '../routing/OutletPageManager';\nimport { generateId } from '../utils/generateId';\n\nimport type { IonicReactProps } from './IonicReactProps';\nimport { IonRouterOutletInner } from './inner-proxies';\nimport { createForwardRef } from './utils';\n\ntype Props = LocalJSX.IonRouterOutlet & {\n basePath?: string;\n ref?: React.Ref<any>;\n ionPage?: boolean;\n id?: string;\n};\n\ninterface InternalProps extends Props {\n forwardedRef?: React.ForwardedRef<HTMLIonRouterOutletElement>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface InternalState {}\n\nclass IonRouterOutletContainer extends React.Component<InternalProps, InternalState> {\n context!: React.ContextType<typeof NavContext>;\n private readonly outletId: string;\n\n constructor(props: InternalProps) {\n super(props);\n this.outletId = props.id ?? `routerOutlet-${generateId('routerOutlet')}`;\n }\n\n render() {\n const StackManager = this.context.getStackManager();\n const { children, forwardedRef, ...props } = this.props;\n const outletId = props.id ?? this.outletId;\n\n return this.context.hasIonicRouter() ? (\n props.ionPage ? (\n <OutletPageManager StackManager={StackManager} routeInfo={this.context.routeInfo} {...props}>\n {children}\n </OutletPageManager>\n ) : (\n <StackManager routeInfo={this.context.routeInfo} id={outletId}>\n <IonRouterOutletInner {...props} id={outletId} forwardedRef={forwardedRef}>\n {children}\n </IonRouterOutletInner>\n </StackManager>\n )\n ) : (\n <IonRouterOutletInner ref={forwardedRef} {...this.props}>\n {this.props.children}\n </IonRouterOutletInner>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nexport const IonRouterOutlet = createForwardRef<Props & IonicReactProps, HTMLIonRouterOutletElement>(\n IonRouterOutletContainer,\n 'IonRouterOutlet'\n);\n","import type { Components } from '@ionic/core';\nimport type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { Fragment } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport PageManager from '../../routing/PageManager';\nimport { HTMLElementSSR } from '../../utils/HTMLElementSSR';\nimport { IonRouterOutlet } from '../IonRouterOutlet';\nimport { IonTabsInner } from '../inner-proxies';\nimport { IonTab } from '../proxies';\n\nimport type { IonTabsContextState } from './IonTabsContext';\nimport { IonTabsContext } from './IonTabsContext';\n\nclass IonTabsElement extends HTMLElementSSR {\n constructor() {\n super();\n }\n}\n\n// TODO(FW-2959): types\n\nif (typeof (window as any) !== 'undefined' && window.customElements) {\n const element = window.customElements.get('ion-tabs');\n if (!element) {\n window.customElements.define('ion-tabs', IonTabsElement);\n }\n}\n\nexport interface IonTabsProps extends React.HTMLAttributes<Components.IonTabs> {\n onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;\n onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;\n}\n\ndeclare module 'react' {\n interface HTMLElements {\n 'ion-tabs': IonTabsProps;\n }\n}\n\ntype ChildFunction = (ionTabContext: IonTabsContextState) => React.ReactNode;\n\ninterface Props extends LocalJSX.IonTabs {\n className?: string;\n children: ChildFunction | React.ReactNode;\n onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;\n onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;\n}\n\nexport class IonTabs extends React.Component<Props> {\n shouldComponentUpdate(): boolean {\n return true;\n }\n\n context!: React.ContextType<typeof NavContext>;\n /**\n * `routerOutletRef` allows users to add a `ref` to `IonRouterOutlet`.\n * Without this, `ref.current` will be `undefined` in the user's app,\n * breaking their ability to access the `IonRouterOutlet` instance.\n * Do not remove this ref.\n */\n routerOutletRef: React.Ref<Components.IonRouterOutlet> = React.createRef();\n selectTabHandler?: (tag: string) => boolean;\n tabBarRef = React.createRef<any>();\n\n ionTabContextState: IonTabsContextState = {\n activeTab: undefined,\n selectTab: () => false,\n hasRouterOutlet: false,\n /**\n * Tab bar can be used as a standalone component,\n * so the props can not be passed directly to the\n * tab bar component. Instead, props will be\n * passed through the context.\n */\n tabBarProps: { ref: this.tabBarRef },\n };\n\n constructor(props: Props) {\n super(props);\n }\n\n componentDidMount() {\n if (this.tabBarRef.current) {\n // Grab initial value\n this.ionTabContextState.activeTab = this.tabBarRef.current.state.activeTab;\n // Override method\n this.tabBarRef.current.setActiveTabOnContext = (tab: string) => {\n this.ionTabContextState.activeTab = tab;\n };\n this.ionTabContextState.selectTab = this.tabBarRef.current.selectTab;\n }\n }\n\n renderTabsInner(children: React.ReactNode, outlet: React.ReactElement<{}> | undefined) {\n return (\n <IonTabsInner {...this.props}>\n {React.Children.map(children, (child: React.ReactNode) => {\n if (React.isValidElement(child)) {\n const isRouterOutlet =\n child.type === IonRouterOutlet ||\n (child.type as any).isRouterOutlet ||\n (child.type === Fragment && child.props.children[0].type === IonRouterOutlet);\n\n if (isRouterOutlet) {\n /**\n * The modified outlet needs to be returned to include\n * the ref.\n */\n return outlet;\n }\n }\n return child;\n })}\n </IonTabsInner>\n );\n }\n\n render() {\n let outlet: React.ReactElement<{}> | undefined;\n // Check if IonTabs has any IonTab children\n let hasTab = false;\n const { className, onIonTabsDidChange, onIonTabsWillChange, ...props } = this.props;\n\n const children =\n typeof this.props.children === 'function'\n ? (this.props.children as ChildFunction)(this.ionTabContextState)\n : this.props.children;\n\n React.Children.forEach(children, (child: any) => {\n // eslint-disable-next-line no-prototype-builtins\n if (child == null || typeof child !== 'object' || !child.hasOwnProperty('type')) {\n return;\n }\n if (child.type === IonRouterOutlet || child.type.isRouterOutlet) {\n outlet = React.cloneElement(child);\n } else if (child.type === Fragment && child.props.children[0].type === IonRouterOutlet) {\n outlet = React.cloneElement(child.props.children[0]);\n } else if (child.type === IonTab) {\n /**\n * This indicates that IonTabs will be using a basic tab-based navigation\n * without the history stack or URL updates associated with the router.\n */\n hasTab = true;\n }\n\n this.ionTabContextState.hasRouterOutlet = !!outlet;\n\n let childProps: any = {\n ...this.ionTabContextState.tabBarProps,\n };\n\n /**\n * Only pass these props\n * down from IonTabs to IonTabBar\n * if they are defined, otherwise\n * if you have a handler set on\n * IonTabBar it will be overridden.\n */\n if (onIonTabsDidChange !== undefined) {\n childProps = {\n ...childProps,\n onIonTabsDidChange,\n };\n }\n\n if (onIonTabsWillChange !== undefined) {\n childProps = {\n ...childProps,\n onIonTabsWillChange,\n };\n }\n\n this.ionTabContextState.tabBarProps = childProps;\n });\n\n if (!outlet && !hasTab) {\n throw new Error('IonTabs must contain an IonRouterOutlet or an IonTab');\n }\n if (outlet && hasTab) {\n throw new Error('IonTabs cannot contain an IonRouterOutlet and an IonTab at the same time');\n }\n\n if (hasTab) {\n return <IonTabsInner {...this.props}></IonTabsInner>;\n }\n\n /**\n * TODO(ROU-11051)\n *\n * There is no error handling for the case where there\n * is no associated Route for the given IonTabButton.\n *\n * More investigation is needed to determine how to\n * handle this to prevent any overwriting of the\n * IonTabButton's onClick handler and how the routing\n * is handled.\n */\n\n return (\n <IonTabsContext.Provider value={this.ionTabContextState}>\n {this.context.hasIonicRouter() ? (\n <PageManager className={className ? `${className}` : ''} routeInfo={this.context.routeInfo} {...props}>\n {this.renderTabsInner(children, outlet)}\n </PageManager>\n ) : (\n this.renderTabsInner(children, outlet)\n )}\n </IonTabsContext.Provider>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { RouterOptions } from '../../models';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonTabButtonInner } from '../inner-proxies';\n\ntype Props = LocalJSX.IonTabButton &\n IonicReactProps & {\n routerOptions?: RouterOptions;\n ref?: React.Ref<HTMLIonTabButtonElement>;\n onClick?: (e: CustomEvent) => void;\n onPointerDown?: React.PointerEventHandler<HTMLIonTabButtonElement>;\n onTouchEnd?: React.TouchEventHandler<HTMLIonTabButtonElement>;\n onTouchMove?: React.TouchEventHandler<HTMLIonTabButtonElement>;\n children?: React.ReactNode;\n };\n\nexport class IonTabButton extends React.Component<Props> {\n shouldComponentUpdate(): boolean {\n return true;\n }\n\n constructor(props: Props) {\n super(props);\n this.handleIonTabButtonClick = this.handleIonTabButtonClick.bind(this);\n }\n\n handleIonTabButtonClick() {\n if (this.props.onClick) {\n this.props.onClick(\n new CustomEvent('ionTabButtonClick', {\n detail: {\n tab: this.props.tab,\n href: this.props.href,\n routeOptions: this.props.routerOptions,\n },\n })\n );\n }\n }\n\n render() {\n /**\n * onClick is excluded from the props, since it has a custom\n * implementation within IonTabBar.tsx. Calling onClick within this\n * component would result in duplicate handler calls.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { onClick, ...rest } = this.props;\n return <IonTabButtonInner onIonTabButtonClick={this.handleIonTabButtonClick} {...rest}></IonTabButtonInner>;\n }\n\n static get displayName() {\n return 'IonTabButton';\n }\n}\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { useContext } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport type { RouteInfo } from '../../models';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonTabBarInner } from '../inner-proxies';\nimport { createForwardRef } from '../utils';\n\nimport { IonTabButton } from './IonTabButton';\nimport { IonTabsContext } from './IonTabsContext';\nimport type { IonTabsContextState } from './IonTabsContext';\n\ntype IonTabBarProps = LocalJSX.IonTabBar &\n IonicReactProps & {\n onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void;\n onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void;\n slot?: 'bottom' | 'top';\n style?: { [key: string]: string };\n };\n\ninterface InternalProps extends IonTabBarProps {\n forwardedRef?: React.ForwardedRef<HTMLIonIconElement>;\n onSetCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n routeInfo: RouteInfo;\n tabsContext?: IonTabsContextState;\n}\n\ninterface TabUrls {\n originalHref: string;\n currentHref: string;\n originalRouteOptions?: unknown;\n currentRouteOptions?: unknown;\n}\n\ninterface IonTabBarState {\n activeTab?: string;\n tabs: { [key: string]: TabUrls };\n}\n\n// TODO(FW-2959): types\n\nclass IonTabBarUnwrapped extends React.PureComponent<InternalProps, IonTabBarState> {\n context!: React.ContextType<typeof NavContext>;\n\n constructor(props: InternalProps) {\n super(props);\n const tabs: { [key: string]: TabUrls } = {};\n React.Children.forEach((props as any).children, (child: any) => {\n if (\n child != null &&\n typeof child === 'object' &&\n child.props &&\n (child.type === IonTabButton || child.type.isTabButton)\n ) {\n tabs[child.props.tab] = {\n originalHref: child.props.href,\n currentHref: child.props.href,\n originalRouteOptions:\n child.props.href === props.routeInfo?.pathname ? props.routeInfo?.routeOptions : undefined,\n currentRouteOptions:\n child.props.href === props.routeInfo?.pathname ? props.routeInfo?.routeOptions : undefined,\n };\n }\n });\n\n this.state = {\n tabs,\n };\n\n this.onTabButtonClick = this.onTabButtonClick.bind(this);\n this.renderTabButton = this.renderTabButton.bind(this);\n this.setActiveTabOnContext = this.setActiveTabOnContext.bind(this);\n this.selectTab = this.selectTab.bind(this);\n }\n\n componentDidMount() {\n const tabs = this.state.tabs;\n const tabKeys = Object.keys(tabs);\n const activeTab = tabKeys.find((key) => {\n const href = tabs[key].originalHref;\n return this.props.routeInfo!.pathname.startsWith(href);\n });\n\n if (activeTab) {\n this.setState({\n activeTab,\n });\n }\n }\n\n componentDidUpdate() {\n if (this.state.activeTab) {\n this.setActiveTabOnContext(this.state.activeTab);\n }\n }\n\n // eslint-disable-next-line\n setActiveTabOnContext = (_tab: string) => {};\n\n selectTab(tab: string) {\n const tabUrl = this.state.tabs[tab];\n if (tabUrl) {\n this.onTabButtonClick(\n new CustomEvent('ionTabButtonClick', {\n detail: {\n href: tabUrl.currentHref,\n tab,\n selected: tab === this.state.activeTab,\n routeOptions: undefined,\n },\n })\n );\n return true;\n }\n return false;\n }\n\n static getDerivedStateFromProps(props: InternalProps, state: IonTabBarState) {\n const tabs = { ...state.tabs };\n const tabKeys = Object.keys(state.tabs);\n const activeTab = tabKeys.find((key) => {\n const href = state.tabs[key].originalHref;\n return props.routeInfo!.pathname.startsWith(href);\n });\n\n // Check to see if the tab button href has changed, and if so, update it in the tabs state\n React.Children.forEach((props as any).children, (child: any) => {\n if (\n child != null &&\n typeof child === 'object' &&\n child.props &&\n (child.type === IonTabButton || child.type.isTabButton)\n ) {\n const tab = tabs[child.props.tab];\n if (!tab || tab.originalHref !== child.props.href) {\n tabs[child.props.tab] = {\n originalHref: child.props.href,\n currentHref: child.props.href,\n originalRouteOptions: child.props.routeOptions,\n currentRouteOptions: child.props.routeOptions,\n };\n }\n }\n });\n\n const { activeTab: prevActiveTab } = state;\n if (activeTab && prevActiveTab) {\n const prevHref = state.tabs[prevActiveTab].currentHref;\n const prevRouteOptions = state.tabs[prevActiveTab].currentRouteOptions;\n if (\n activeTab !== prevActiveTab ||\n prevHref !== props.routeInfo?.pathname ||\n prevRouteOptions !== props.routeInfo?.routeOptions\n ) {\n tabs[activeTab] = {\n originalHref: tabs[activeTab].originalHref,\n currentHref: props.routeInfo!.pathname + (props.routeInfo!.search || ''),\n originalRouteOptions: tabs[activeTab].originalRouteOptions,\n currentRouteOptions: props.routeInfo?.routeOptions,\n };\n if (props.routeInfo.routeAction === 'pop' && activeTab !== prevActiveTab) {\n // If navigating back and the tabs change, set the prev tab back to its original href\n tabs[prevActiveTab] = {\n originalHref: tabs[prevActiveTab].originalHref,\n currentHref: tabs[prevActiveTab].originalHref,\n originalRouteOptions: tabs[prevActiveTab].originalRouteOptions,\n currentRouteOptions: tabs[prevActiveTab].currentRouteOptions,\n };\n }\n }\n }\n\n activeTab && props.onSetCurrentTab(activeTab, props.routeInfo);\n\n return {\n activeTab,\n tabs,\n };\n }\n\n private onTabButtonClick(\n e: CustomEvent<{ href: string; selected: boolean; tab: string; routeOptions: unknown }>,\n onClickFn?: (e: any) => void\n ) {\n const tappedTab = this.state.tabs[e.detail.tab];\n const originalHref = tappedTab.originalHref;\n const hasRouterOutlet = this.props.tabsContext?.hasRouterOutlet;\n\n /**\n * If the router outlet is not defined, then the tabs is being used\n * as a basic tab navigation without the router. In this case, we\n * don't want to update the href else the URL will change.\n */\n const currentHref = hasRouterOutlet ? e.detail.href : '';\n const { activeTab: prevActiveTab } = this.state;\n\n if (onClickFn) {\n /**\n * If the user provides an onClick function, we call it\n * with the original event.\n */\n onClickFn(e);\n }\n\n // this.props.onSetCurrentTab(e.detail.tab, this.props.routeInfo);\n // Clicking the current tab will bring you back to the original href\n if (prevActiveTab === e.detail.tab) {\n if (originalHref !== currentHref) {\n this.context.resetTab(e.detail.tab, originalHref, tappedTab.originalRouteOptions);\n }\n } else {\n if (this.props.onIonTabsWillChange) {\n this.props.onIonTabsWillChange(new CustomEvent('ionTabWillChange', { detail: { tab: e.detail.tab } }));\n }\n if (this.props.onIonTabsDidChange) {\n this.props.onIonTabsDidChange(new CustomEvent('ionTabDidChange', { detail: { tab: e.detail.tab } }));\n }\n if (hasRouterOutlet) {\n this.setActiveTabOnContext(e.detail.tab);\n this.context.changeTab(e.detail.tab, currentHref, e.detail.routeOptions);\n }\n }\n }\n\n private renderTabButton(activeTab: string | null | undefined) {\n return (\n child:\n | React.ReactElement<LocalJSX.IonTabButton & { onClick: (e: any) => void; routeOptions?: unknown }>\n | null\n | undefined\n ) => {\n if (child != null && child.props && (child.type === IonTabButton || (child as any).type.isTabButton)) {\n const href =\n child.props.tab === activeTab\n ? this.props.routeInfo?.pathname\n : this.state.tabs[child.props.tab!].currentHref;\n const routeOptions =\n child.props.tab === activeTab\n ? this.props.routeInfo?.routeOptions\n : this.state.tabs[child.props.tab!].currentRouteOptions;\n\n return React.cloneElement(child, {\n href,\n routeOptions,\n onClick: (ev: CustomEvent) => this.onTabButtonClick(ev, child.props.onClick),\n });\n }\n return null;\n };\n }\n\n render() {\n const { activeTab } = this.state;\n return (\n <IonTabBarInner {...this.props} selectedTab={activeTab}>\n {React.Children.map(this.props.children as any, this.renderTabButton(activeTab))}\n </IonTabBarInner>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nconst IonTabBarContainer: React.FC<InternalProps> = React.memo<InternalProps>(({ forwardedRef, ...props }) => {\n const context = useContext(NavContext);\n const tabsContext = useContext(IonTabsContext);\n const tabBarRef = forwardedRef || tabsContext.tabBarProps.ref;\n const updatedTabBarProps = {\n ...tabsContext.tabBarProps,\n ref: tabBarRef,\n };\n\n return (\n <IonTabBarUnwrapped\n ref={tabBarRef}\n {...(props as any)}\n routeInfo={props.routeInfo || context.routeInfo || { pathname: window.location.pathname }}\n onSetCurrentTab={context.setCurrentTab}\n /**\n * Tab bar can be used as a standalone component,\n * so it cannot be modified directly through\n * IonTabs. Instead, props will be passed through\n * the context.\n */\n tabsContext={{\n ...tabsContext,\n tabBarProps: updatedTabBarProps,\n }}\n >\n {props.children}\n </IonTabBarUnwrapped>\n );\n});\n\nexport const IonTabBar = createForwardRef<IonTabBarProps, HTMLIonTabBarElement>(IonTabBarContainer, 'IonTabBar');\n","import type { JSX as LocalJSX } from '@ionic/core/components';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { NavContext } from '../../contexts/NavContext';\nimport type { IonicReactProps } from '../IonicReactProps';\nimport { IonBackButtonInner } from '../inner-proxies';\n\ntype Props = PropsWithChildren<\n LocalJSX.IonBackButton &\n IonicReactProps & {\n ref?: React.Ref<HTMLIonBackButtonElement>;\n }\n>;\n\nexport class IonBackButton extends React.Component<Props> {\n context!: React.ContextType<typeof NavContext>;\n\n clickButton = (e: React.MouseEvent) => {\n /**\n * If ion-back-button is being used inside\n * of ion-nav then we should not interact with\n * the router.\n */\n if (e.target && (e.target as HTMLElement).closest('ion-nav') !== null) {\n return;\n }\n\n const { defaultHref, routerAnimation } = this.props;\n\n if (this.context.hasIonicRouter()) {\n e.stopPropagation();\n this.context.goBack(defaultHref, routerAnimation);\n } else if (defaultHref !== undefined) {\n window.location.href = defaultHref;\n }\n };\n\n render() {\n return <IonBackButtonInner onClick={this.clickButton} {...this.props}></IonBackButtonInner>;\n }\n\n static get displayName() {\n return 'IonBackButton';\n }\n\n static get contextType() {\n return NavContext;\n }\n\n shouldComponentUpdate(): boolean {\n return true;\n }\n}\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nimport type { IonicReactProps } from './IonicReactProps';\nimport { IonIconInner } from './inner-proxies';\nimport { createForwardRef, getConfig } from './utils';\n\ninterface IonIconProps {\n color?: string;\n flipRtl?: boolean;\n icon?: string;\n ios?: string;\n lazy?: boolean;\n md?: string;\n mode?: 'ios' | 'md';\n name?: string;\n size?: string;\n src?: string;\n}\n\ntype InternalProps = IonIconProps & {\n forwardedRef?: React.ForwardedRef<HTMLIonIconElement>;\n};\n\nclass IonIconContainer extends React.PureComponent<InternalProps> {\n constructor(props: InternalProps) {\n super(props);\n if (this.props.name) {\n console.warn(\n 'In Ionic React, you import icons from \"ionicons/icons\" and set the icon you imported to the \"icon\" property. Setting the \"name\" property has no effect.'\n );\n }\n }\n\n render() {\n const { icon, ios, md, mode, ...rest } = this.props;\n\n let iconToUse: typeof icon;\n\n const config = getConfig();\n const iconMode = mode || config?.get('mode');\n\n if (ios || md) {\n if (iconMode === 'ios') {\n iconToUse = ios ?? md ?? icon;\n } else {\n iconToUse = md ?? ios ?? icon;\n }\n } else {\n iconToUse = icon;\n }\n\n return (\n <IonIconInner ref={this.props.forwardedRef} icon={iconToUse} {...rest}>\n {this.props.children}\n </IonIconInner>\n );\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n\nexport const IonIcon = createForwardRef<IonIconProps & IonicReactProps, HTMLIonIconElement>(\n IonIconContainer,\n 'IonIcon'\n);\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nexport interface IonRouteProps {\n path?: string;\n show?: boolean;\n element: React.ReactElement;\n disableIonPageManagement?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IonRouteState {}\n\nexport class IonRoute extends React.PureComponent<IonRouteProps, IonRouteState> {\n context!: React.ContextType<typeof NavContext>;\n\n render() {\n const IonRouteInner = this.context.getIonRoute();\n\n if (!this.context.hasIonicRouter() || !IonRoute) {\n console.error('You either do not have an Ionic Router package, or your router does not support using <IonRoute>');\n return null;\n }\n\n return <IonRouteInner {...this.props} />;\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n","import React from 'react';\n\nimport { NavContext } from '../contexts/NavContext';\n\nexport interface IonRedirectProps {\n path?: string;\n exact?: boolean;\n to: string;\n routerOptions?: unknown;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IonRedirectState {}\n\nexport class IonRedirect extends React.PureComponent<IonRedirectProps, IonRedirectState> {\n context!: React.ContextType<typeof NavContext>;\n\n render() {\n const IonRedirectInner = this.context.getIonRedirect();\n\n if (!this.context.hasIonicRouter() || !IonRedirect) {\n console.error(\n 'You either do not have an Ionic Router package, or your router does not support using <IonRedirect>'\n );\n return null;\n }\n\n return <IonRedirectInner {...this.props} />;\n }\n\n static get contextType() {\n return NavContext;\n }\n}\n","import type { AnimationBuilder } from '@ionic/core/components';\nimport React, { useContext, useMemo } from 'react';\n\nimport type { RouteAction, RouterDirection, RouterOptions } from '../models';\nimport type { RouteInfo } from '../models/RouteInfo';\n\nexport interface IonRouterContextState {\n routeInfo: RouteInfo;\n push: (\n pathname: string,\n routerDirection?: RouterDirection,\n routeAction?: RouteAction,\n routerOptions?: RouterOptions,\n animationBuilder?: AnimationBuilder\n ) => void;\n back: (animationBuilder?: AnimationBuilder) => void;\n canGoBack: () => boolean;\n nativeBack: () => void;\n}\n\nexport const IonRouterContext = React.createContext<IonRouterContextState>({\n routeInfo: undefined as any, // TODO(FW-2959): type\n push: () => {\n throw new Error('An Ionic Router is required for IonRouterContext');\n },\n back: () => {\n throw new Error('An Ionic Router is required for IonRouterContext');\n },\n canGoBack: () => {\n throw new Error('An Ionic Router is required for IonRouterContext');\n },\n nativeBack: () => {\n throw new Error('An Ionic Router is required for IonRouterContext');\n },\n});\n\n/**\n * A hook for more direct control over routing in an Ionic React application. Allows you to pass additional meta-data to the router before the call to the native router.\n */\nexport function useIonRouter(): UseIonRouterResult {\n const context = useContext(IonRouterContext);\n\n return useMemo(\n () => ({\n back: context.back,\n push: context.push,\n goBack: context.back,\n canGoBack: context.canGoBack,\n routeInfo: context.routeInfo,\n }),\n [context.back, context.push, context.canGoBack, context.routeInfo]\n );\n}\n\nexport type UseIonRouterResult = {\n /**\n * @deprecated - Use goBack instead\n * @param animationBuilder - Optional - A custom transition animation to use\n */\n back(animationBuilder?: AnimationBuilder): void;\n /**\n * Navigates to a new pathname\n * @param pathname - The path to navigate to\n * @param routerDirection - Optional - The RouterDirection to use for transition purposes, defaults to 'forward'\n * @param routeAction - Optional - The RouteAction to use for history purposes, defaults to 'push'\n * @param routerOptions - Optional - Any additional parameters to pass to the router\n * @param animationBuilder - Optional - A custom transition animation to use\n */\n push(\n pathname: string,\n routerDirection?: RouterDirection,\n routeAction?: RouteAction,\n routerOptions?: RouterOptions,\n animationBuilder?: AnimationBuilder\n ): void;\n /**\n * Navigates backwards in history, using the IonRouter to determine history\n * @param animationBuilder - Optional - A custom transition animation to use\n */\n goBack(animationBuilder?: AnimationBuilder): void;\n /**\n * Determines if there are any additional routes in the Router's history. However, routing is not prevented if the browser's history has more entries. Returns true if more entries exist, false if not.\n */\n canGoBack(): boolean;\n routeInfo: RouteInfo;\n};\n","import type {\n Animation,\n AnimationCallbackOptions,\n AnimationDirection,\n AnimationFill,\n AnimationKeyFrames,\n AnimationLifecycle,\n} from '@ionic/core/components';\nimport { createAnimation } from '@ionic/core/components';\nimport type { PropsWithChildren } from 'react';\nimport React from 'react';\n\n// TODO(FW-2959): types\n\ninterface PartialPropertyValue {\n property: string;\n value: any;\n}\ninterface PropertyValue {\n property: string;\n fromValue: any;\n toValue: any;\n}\n\nexport interface CreateAnimationProps {\n delay?: number;\n direction?: AnimationDirection;\n duration?: number;\n easing?: string;\n fill?: AnimationFill;\n iterations?: number;\n id?: string;\n\n afterAddRead?: () => void;\n afterAddWrite?: () => void;\n afterClearStyles?: string[];\n afterStyles?: { [property: string]: any };\n afterAddClass?: string | string[];\n afterRemoveClass?: string | string[];\n\n beforeAddRead?: () => void;\n beforeAddWrite?: () => void;\n beforeClearStyles?: string[];\n beforeStyles?: { [property: string]: any };\n beforeAddClass?: string | string[];\n beforeRemoveClass?: string | string[];\n\n onFinish?: { callback: AnimationLifecycle; opts?: AnimationCallbackOptions };\n\n keyframes?: AnimationKeyFrames;\n from?: PartialPropertyValue[] | PartialPropertyValue;\n to?: PartialPropertyValue[] | PartialPropertyValue;\n fromTo?: PropertyValue[] | PropertyValue;\n\n play?: boolean;\n pause?: boolean;\n stop?: boolean;\n destroy?: boolean;\n\n progressStart?: { forceLinearEasing: boolean; step?: number };\n progressStep?: { step: number };\n progressEnd?: { playTo: 0 | 1 | undefined; step: number; dur?: number };\n}\n\nexport class CreateAnimation extends React.PureComponent<PropsWithChildren<CreateAnimationProps>> {\n nodes: Map<number, HTMLElement> = new Map();\n animation: Animation;\n\n constructor(props: any) {\n super(props);\n\n this.animation = createAnimation(props.id);\n }\n\n setupAnimation(props: any) {\n const animation = this.animation;\n\n if (this.nodes.size > 0) {\n animation.addElement(Array.from(this.nodes.values()));\n }\n\n checkConfig(animation, props);\n checkPlayback(animation, props);\n }\n\n componentDidMount() {\n const props = this.props;\n this.setupAnimation(props);\n }\n\n componentDidUpdate(prevProps: any) {\n const animation = this.animation;\n\n const props = this.props;\n\n checkConfig(animation, props, prevProps);\n checkProgress(animation, props, prevProps);\n checkPlayback(animation, props, prevProps);\n }\n\n render() {\n const { children } = this.props;\n return (\n <>\n {React.Children.map(children, (child, id) =>\n React.cloneElement(child as any, { ref: (el: any) => this.nodes.set(id, el) })\n )}\n </>\n );\n }\n}\n\nconst checkConfig = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n const reservedProps = [\n 'children',\n 'progressStart',\n 'progressStep',\n 'progressEnd',\n 'pause',\n 'stop',\n 'destroy',\n 'play',\n 'from',\n 'to',\n 'fromTo',\n 'onFinish',\n ];\n for (const key in currentProps) {\n if (\n // eslint-disable-next-line no-prototype-builtins\n currentProps.hasOwnProperty(key) &&\n !reservedProps.includes(key) &&\n currentProps[key] !== prevProps[key]\n ) {\n (animation as any)[key]((currentProps as any)[key]);\n }\n }\n\n const fromValues = currentProps.from;\n if (fromValues && fromValues !== prevProps.from) {\n const values = Array.isArray(fromValues) ? fromValues : [fromValues];\n values.forEach((val) => animation.from(val.property, val.value));\n }\n\n const toValues = currentProps.to;\n if (toValues && toValues !== prevProps.to) {\n const values = Array.isArray(toValues) ? toValues : [toValues];\n values.forEach((val) => animation.to(val.property, val.value));\n }\n\n const fromToValues = currentProps.fromTo;\n if (fromToValues && fromToValues !== prevProps.fromTo) {\n const values = Array.isArray(fromToValues) ? fromToValues : [fromToValues];\n values.forEach((val) => animation.fromTo(val.property, val.fromValue, val.toValue));\n }\n\n const onFinishValues = currentProps.onFinish;\n if (onFinishValues && onFinishValues !== prevProps.onFinish) {\n const values = Array.isArray(onFinishValues) ? onFinishValues : [onFinishValues];\n values.forEach((val) => animation.onFinish(val.callback, val.opts));\n }\n};\n\nconst checkProgress = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n const { progressStart, progressStep, progressEnd } = currentProps;\n\n if (\n progressStart &&\n (prevProps.progressStart?.forceLinearEasing !== progressStart?.forceLinearEasing ||\n prevProps.progressStart?.step !== progressStart?.step)\n ) {\n animation.progressStart(progressStart.forceLinearEasing, progressStart.step);\n }\n\n if (progressStep && prevProps.progressStep?.step !== progressStep?.step) {\n animation.progressStep(progressStep.step);\n }\n\n if (\n progressEnd &&\n (prevProps.progressEnd?.playTo !== progressEnd?.playTo ||\n prevProps.progressEnd?.step !== progressEnd?.step ||\n prevProps?.dur !== progressEnd?.dur)\n ) {\n animation.progressEnd(progressEnd.playTo, progressEnd.step, progressEnd.dur);\n }\n};\n\nconst checkPlayback = (animation: Animation, currentProps: any = {}, prevProps: any = {}) => {\n if (!prevProps.play && currentProps.play) {\n animation.play();\n }\n\n if (!prevProps.pause && currentProps.pause) {\n animation.pause();\n }\n\n if (!prevProps.stop && currentProps.stop) {\n animation.stop();\n }\n\n if (!prevProps.destroy && currentProps.destroy) {\n animation.destroy();\n }\n};\n","import type { OverlayEventDetail } from '@ionic/core/components';\nimport { useCallback, useMemo, useRef } from 'react';\n\nimport { attachProps } from '../components/react-component-lib/utils';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\n\ninterface OverlayBase extends HTMLElement {\n present: () => Promise<void>;\n dismiss: (data?: any, role?: string | undefined) => Promise<boolean>;\n}\n\nexport function useController<OptionsType, OverlayType extends OverlayBase>(\n displayName: string,\n controller: { create: (options: OptionsType) => Promise<OverlayType> },\n defineCustomElement: () => void\n) {\n const overlayRef = useRef<OverlayType>();\n const didDismissEventName = useMemo(() => `on${displayName}DidDismiss`, [displayName]);\n const didPresentEventName = useMemo(() => `on${displayName}DidPresent`, [displayName]);\n const willDismissEventName = useMemo(() => `on${displayName}WillDismiss`, [displayName]);\n const willPresentEventName = useMemo(() => `on${displayName}WillPresent`, [displayName]);\n\n defineCustomElement();\n\n const present = useCallback(\n async (options: OptionsType & HookOverlayOptions) => {\n if (overlayRef.current) {\n return;\n }\n\n const { onDidDismiss, onWillDismiss, onDidPresent, onWillPresent, ...rest } = options;\n\n const handleDismiss = (event: CustomEvent<OverlayEventDetail<any>>) => {\n if (onDidDismiss) {\n onDidDismiss(event);\n }\n overlayRef.current = undefined;\n };\n\n overlayRef.current = await controller.create({\n ...(rest as any),\n });\n\n attachProps(overlayRef.current, {\n [didDismissEventName]: handleDismiss,\n [didPresentEventName]: (e: CustomEvent) => onDidPresent && onDidPresent(e),\n [willDismissEventName]: (e: CustomEvent) => onWillDismiss && onWillDismiss(e),\n [willPresentEventName]: (e: CustomEvent) => onWillPresent && onWillPresent(e),\n });\n\n overlayRef.current.present();\n },\n [controller]\n );\n\n const dismiss = useCallback(async () => {\n overlayRef.current && (await overlayRef.current.dismiss());\n overlayRef.current = undefined;\n }, []);\n\n return {\n present,\n dismiss,\n };\n}\n","import type { ActionSheetButton, ActionSheetOptions } from '@ionic/core/components';\nimport { actionSheetController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-action-sheet.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonActionSheet component\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonActionSheet(): UseIonActionSheetResult {\n const controller = useController<ActionSheetOptions, HTMLIonActionSheetElement>(\n 'IonActionSheet',\n actionSheetController,\n defineCustomElement\n );\n\n const present = useCallback(\n (buttonsOrOptions: ActionSheetButton[] | (ActionSheetOptions & HookOverlayOptions), header?: string) => {\n if (Array.isArray(buttonsOrOptions)) {\n return controller.present({\n buttons: buttonsOrOptions,\n header,\n });\n } else {\n return controller.present(buttonsOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonActionSheetResult = [\n {\n /**\n * Presents the action sheet\n * @param buttons An array of buttons for the action sheet\n * @param header Optional - Title for the action sheet\n */\n (buttons: ActionSheetButton[], header?: string | undefined): Promise<void>;\n /**\n * Presents the action sheet\n * @param options The options to pass to the IonActionSheet\n */\n (options: ActionSheetOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the action sheet\n */\n () => Promise<void>\n];\n","import type { AlertButton, AlertOptions } from '@ionic/core/components';\nimport { alertController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-alert.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonAlert component\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonAlert(): UseIonAlertResult {\n const controller = useController<AlertOptions, HTMLIonAlertElement>('IonAlert', alertController, defineCustomElement);\n\n const present = useCallback(\n (messageOrOptions: string | (AlertOptions & HookOverlayOptions), buttons?: AlertButton[]) => {\n if (typeof messageOrOptions === 'string') {\n return controller.present({\n message: messageOrOptions,\n buttons: buttons ?? [{ text: 'Ok' }],\n });\n } else {\n return controller.present(messageOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonAlertResult = [\n {\n /**\n * Presents the alert\n * @param message The main message to be displayed in the alert\n * @param buttons Optional - Array of buttons to be added to the alert\n */\n (message: string, buttons?: AlertButton[]): Promise<void>;\n /**\n * Presents the alert\n * @param options The options to pass to the IonAlert\n */\n (options: AlertOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the alert\n */\n () => Promise<void>\n];\n","import type { ToastOptions } from '@ionic/core/components';\nimport { toastController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-toast.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonToast component\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonToast(): UseIonToastResult {\n const controller = useController<ToastOptions, HTMLIonToastElement>('IonToast', toastController, defineCustomElement);\n\n const present = useCallback(\n (messageOrOptions: string | (ToastOptions & HookOverlayOptions), duration?: number) => {\n if (typeof messageOrOptions === 'string') {\n return controller.present({\n message: messageOrOptions,\n duration,\n });\n } else {\n return controller.present(messageOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonToastResult = [\n {\n /**\n * Presents the toast\n * @param message Message to be shown in the toast.\n * @param duration Optional - How many milliseconds to wait before hiding the toast. By default, it will show until dismissToast() is called.\n */\n (message: string, duration?: number): Promise<void>;\n /**\n * Presents the Toast\n * @param options The options to pass to the IonToast.\n */\n (options: ToastOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the toast\n */\n () => Promise<void>\n];\n","import type { OverlayEventDetail } from '@ionic/core/components';\nimport React, { createElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { attachProps } from '../components/react-component-lib/utils';\nimport { IonContext } from '../contexts/IonContext';\nimport type { ReactComponentOrElement } from '../models/ReactComponentOrElement';\nimport { generateId } from '../utils/generateId';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\n\n// TODO(FW-2959): types\n\ninterface OverlayBase extends HTMLElement {\n present: () => Promise<void>;\n dismiss: (data?: any, role?: string | undefined) => Promise<boolean>;\n}\n\nexport function useOverlay<OptionsType, OverlayType extends OverlayBase>(\n displayName: string,\n controller: { create: (options: OptionsType) => Promise<OverlayType> },\n defineCustomElement: () => void,\n component: ReactComponentOrElement,\n componentProps?: any\n) {\n const overlayRef = useRef<OverlayType>();\n const containerElRef = useRef<HTMLDivElement>();\n const didDismissEventName = useMemo(() => `on${displayName}DidDismiss`, [displayName]);\n const didPresentEventName = useMemo(() => `on${displayName}DidPresent`, [displayName]);\n const willDismissEventName = useMemo(() => `on${displayName}WillDismiss`, [displayName]);\n const willPresentEventName = useMemo(() => `on${displayName}WillPresent`, [displayName]);\n const [isOpen, setIsOpen] = useState(false);\n const ionContext = useContext(IonContext);\n const [overlayId] = useState(generateId('overlay'));\n\n defineCustomElement();\n\n useEffect(() => {\n if (isOpen && component && containerElRef.current) {\n if (React.isValidElement(component)) {\n ionContext.addOverlay(overlayId, component, containerElRef.current!);\n } else {\n const element = createElement(component as React.ComponentClass, componentProps);\n ionContext.addOverlay(overlayId, element, containerElRef.current!);\n }\n }\n }, [component, containerElRef.current, isOpen, componentProps]);\n\n const present = useCallback(async (options: OptionsType & HookOverlayOptions) => {\n if (overlayRef.current) {\n return;\n }\n\n const { onDidDismiss, onWillDismiss, onDidPresent, onWillPresent, ...rest } = options;\n\n if (typeof document !== 'undefined') {\n containerElRef.current = document.createElement('div');\n }\n\n overlayRef.current = await controller.create({\n ...(rest as any),\n component: containerElRef.current,\n });\n\n attachProps(overlayRef.current, {\n [didDismissEventName]: handleDismiss,\n [didPresentEventName]: (e: CustomEvent) => onDidPresent && onDidPresent(e),\n [willDismissEventName]: (e: CustomEvent) => onWillDismiss && onWillDismiss(e),\n [willPresentEventName]: (e: CustomEvent) => onWillPresent && onWillPresent(e),\n });\n\n overlayRef.current.present();\n\n setIsOpen(true);\n\n function handleDismiss(event: CustomEvent<OverlayEventDetail<any>>) {\n if (onDidDismiss) {\n onDidDismiss(event);\n }\n overlayRef.current = undefined;\n containerElRef.current = undefined;\n setIsOpen(false);\n ionContext.removeOverlay(overlayId);\n }\n }, []);\n\n const dismiss = useCallback(async (data?: any, role?: string) => {\n overlayRef.current && (await overlayRef.current.dismiss(data, role));\n overlayRef.current = undefined;\n containerElRef.current = undefined;\n }, []);\n\n return {\n present,\n dismiss,\n };\n}\n","import type { ModalOptions } from '@ionic/core/components';\nimport { modalController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-modal.js';\nimport { useCallback } from 'react';\n\nimport type { ReactComponentOrElement } from '../models/ReactComponentOrElement';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useOverlay } from './useOverlay';\n\n// TODO(FW-2959): types\n\n/**\n * A hook for presenting/dismissing an IonModal component\n * @param component The component that the modal will show. Can be a React Component, a functional component, or a JSX Element\n * @param componentProps The props that will be passed to the component, if required\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonModal(component: ReactComponentOrElement, componentProps?: any): UseIonModalResult {\n const controller = useOverlay<ModalOptions, HTMLIonModalElement>(\n 'IonModal',\n modalController,\n defineCustomElement,\n component,\n componentProps\n );\n\n const present = useCallback(\n (options: Omit<ModalOptions, 'component' | 'componentProps'> & HookOverlayOptions = {}) => {\n controller.present(options as any);\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonModalResult = [\n (options?: Omit<ModalOptions, 'component' | 'componentProps'> & HookOverlayOptions) => void,\n /**\n * Dismisses the modal\n */\n (data?: any, role?: string) => void\n];\n","import type { PopoverOptions } from '@ionic/core/components';\nimport { popoverController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-popover.js';\nimport { useCallback } from 'react';\n\nimport type { ReactComponentOrElement } from '../models/ReactComponentOrElement';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useOverlay } from './useOverlay';\n\n// TODO(FW-2959): types\n\n/**\n * A hook for presenting/dismissing an IonPicker component\n * @param component The component that the popover will show. Can be a React Component, a functional component, or a JSX Element\n * @param componentProps The props that will be passed to the component, if required\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonPopover(component: ReactComponentOrElement, componentProps?: any): UseIonPopoverResult {\n const controller = useOverlay<PopoverOptions, HTMLIonPopoverElement>(\n 'IonPopover',\n popoverController,\n defineCustomElement,\n component,\n componentProps\n );\n\n const present = useCallback(\n (options: Omit<PopoverOptions, 'component' | 'componentProps'> & HookOverlayOptions = {}) => {\n controller.present(options as any);\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonPopoverResult = [\n (options?: Omit<PopoverOptions, 'component' | 'componentProps'> & HookOverlayOptions) => void,\n /**\n * Dismisses the popover\n */\n (data?: any, role?: string) => void\n];\n","import type { PickerButton, PickerColumn, PickerOptions } from '@ionic/core/components';\nimport { pickerController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-picker-legacy.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonPicker component\n * @returns Returns the present and dismiss methods in an array\n * @deprecated Use the inline ion-picker component instead.\n */\nexport function useIonPicker(): UseIonPickerResult {\n const controller = useController<PickerOptions, HTMLIonPickerLegacyElement>(\n 'IonPicker',\n pickerController,\n defineCustomElement\n );\n\n const present = useCallback(\n (columnsOrOptions: PickerColumn[] | (PickerOptions & HookOverlayOptions), buttons?: PickerButton[]) => {\n if (Array.isArray(columnsOrOptions)) {\n return controller.present({\n columns: columnsOrOptions,\n buttons: buttons ?? [{ text: 'Ok' }],\n });\n } else {\n return controller.present(columnsOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonPickerResult = [\n {\n /**\n * Presents the picker\n * @param columns Array of columns to be displayed in the picker.\n * @param buttons Optional - Array of buttons to be displayed at the top of the picker.\n */\n (columns: PickerColumn[], buttons?: PickerButton[]): Promise<void>;\n /**\n * Presents the picker\n * @param options The options to pass to the IonPicker\n */\n (options: PickerOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the picker\n */\n () => Promise<void>\n];\n","import type { LoadingOptions, SpinnerTypes } from '@ionic/core/components';\nimport { loadingController } from '@ionic/core/components';\nimport { defineCustomElement } from '@ionic/core/components/ion-loading.js';\nimport { useCallback } from 'react';\n\nimport type { HookOverlayOptions } from './HookOverlayOptions';\nimport { useController } from './useController';\n\n/**\n * A hook for presenting/dismissing an IonLoading component\n * @returns Returns the present and dismiss methods in an array\n */\nexport function useIonLoading(): UseIonLoadingResult {\n const controller = useController<LoadingOptions, HTMLIonLoadingElement>(\n 'IonLoading',\n loadingController,\n defineCustomElement\n );\n\n const present = useCallback(\n (\n messageOrOptions: string | (LoadingOptions & HookOverlayOptions) = {},\n duration?: number,\n spinner?: SpinnerTypes\n ) => {\n if (typeof messageOrOptions === 'string') {\n return controller.present({\n message: messageOrOptions,\n duration,\n spinner,\n });\n } else {\n return controller.present(messageOrOptions);\n }\n },\n [controller.present]\n );\n\n return [present, controller.dismiss];\n}\n\nexport type UseIonLoadingResult = [\n {\n /**\n * Presents the loading indicator\n * @param message Optional - Text content to display in the loading indicator, defaults to blank string\n * @param duration Optional - Number of milliseconds to wait before dismissing the loading indicator\n * @param spinner Optional - The name of the spinner to display, defaults to \"lines\"\n */\n (message?: string, duration?: number, spinner?: SpinnerTypes): Promise<void>;\n /**\n * Presents the loading indicator\n * @param options The options to pass to the IonLoading\n */\n (options: LoadingOptions & HookOverlayOptions): Promise<void>;\n },\n /**\n * Dismisses the loading indicator\n */\n () => Promise<void>\n];\n","import type { IonicConfig } from '@ionic/core/components';\nimport { initialize } from '@ionic/core/components';\n\nexport {\n // UTILS\n createAnimation,\n createGesture,\n iosTransitionAnimation,\n mdTransitionAnimation,\n IonicSlides,\n getTimeGivenProgression,\n getIonPageElement,\n openURL,\n\n // TYPES\n Animation,\n AnimationBuilder,\n AnimationCallbackOptions,\n AnimationDirection,\n AnimationFill,\n AnimationKeyFrames,\n AnimationLifecycle,\n Gesture,\n GestureConfig,\n GestureDetail,\n NavComponentWithProps,\n SpinnerTypes,\n AccordionGroupCustomEvent,\n AccordionGroupChangeEventDetail,\n BreadcrumbCustomEvent,\n BreadcrumbCollapsedClickEventDetail,\n ActionSheetOptions,\n ActionSheetButton,\n AlertOptions,\n AlertInput,\n AlertButton,\n BackButtonEvent,\n CheckboxCustomEvent,\n CheckboxChangeEventDetail,\n DatetimeCustomEvent,\n DatetimeChangeEventDetail,\n InfiniteScrollCustomEvent,\n InputCustomEvent,\n InputChangeEventDetail,\n InputInputEventDetail,\n InputOtpCustomEvent,\n InputOtpChangeEventDetail,\n InputOtpCompleteEventDetail,\n InputOtpInputEventDetail,\n // TODO(FW-6590): Remove the next two lines once the deprecated event is removed\n ItemReorderEventDetail,\n ItemReorderCustomEvent,\n ItemSlidingCustomEvent,\n IonicSafeString,\n LoadingOptions,\n MenuCustomEvent,\n ModalOptions,\n NavCustomEvent,\n PickerOptions,\n PickerButton,\n PickerColumn,\n PickerColumnOption,\n PopoverOptions,\n RadioGroupCustomEvent,\n RadioGroupChangeEventDetail,\n RangeCustomEvent,\n RangeChangeEventDetail,\n RangeKnobMoveStartEventDetail,\n RangeKnobMoveEndEventDetail,\n RefresherCustomEvent,\n RefresherEventDetail,\n ReorderMoveCustomEvent,\n ReorderMoveEventDetail,\n ReorderEndCustomEvent,\n ReorderEndEventDetail,\n RouterEventDetail,\n RouterCustomEvent,\n ScrollBaseCustomEvent,\n ScrollBaseDetail,\n ScrollDetail,\n ScrollCustomEvent,\n SearchbarCustomEvent,\n SearchbarChangeEventDetail,\n SearchbarInputEventDetail,\n SegmentChangeEventDetail,\n SegmentCustomEvent,\n SegmentValue,\n SelectChangeEventDetail,\n SelectCustomEvent,\n TabsCustomEvent,\n TextareaChangeEventDetail,\n TextareaCustomEvent,\n ToastOptions,\n ToastButton,\n ToastLayout,\n ToggleChangeEventDetail,\n ToggleCustomEvent,\n TransitionOptions,\n} from '@ionic/core/components';\n\nexport * from './proxies';\nexport * from './routing-proxies';\n\n// createControllerComponent\nexport { IonAlert } from './IonAlert';\nexport { IonLoading } from './IonLoading';\nexport * from './IonToast';\nexport { IonPickerLegacy } from './IonPickerLegacy';\n\n// createOverlayComponent\nexport * from './IonActionSheet';\nexport { IonModal } from './IonModal';\nexport { IonPopover } from './IonPopover';\n\n// Custom Components\nexport { IonApp } from './IonApp';\nexport { IonPage } from './IonPage';\nexport { IonNav } from './navigation/IonNav';\nexport { IonTabsContext, IonTabsContextState } from './navigation/IonTabsContext';\nexport { IonTabs } from './navigation/IonTabs';\nexport { IonTabBar } from './navigation/IonTabBar';\nexport { IonTabButton } from './navigation/IonTabButton';\nexport { IonBackButton } from './navigation/IonBackButton';\nexport { IonRouterOutlet } from './IonRouterOutlet';\nexport { IonIcon } from './IonIcon';\nexport * from './IonRoute';\nexport * from './IonRedirect';\nexport * from './IonRouterContext';\n\n// Utils\nexport { isPlatform, getPlatforms, getConfig } from './utils';\nexport * from './hrefprops';\n\n// Ionic Animations\nexport { CreateAnimation } from './CreateAnimation';\n\n// Hooks\nexport { useIonActionSheet, UseIonActionSheetResult } from '../hooks/useIonActionSheet';\nexport { useIonAlert, UseIonAlertResult } from '../hooks/useIonAlert';\nexport { useIonToast, UseIonToastResult } from '../hooks/useIonToast';\nexport { useIonModal, UseIonModalResult } from '../hooks/useIonModal';\nexport { useIonPopover, UseIonPopoverResult } from '../hooks/useIonPopover';\nexport { useIonPicker, UseIonPickerResult } from '../hooks/useIonPicker';\nexport { useIonLoading, UseIonLoadingResult } from '../hooks/useIonLoading';\n\nexport const setupIonicReact = (config: IonicConfig = {}) => {\n /**\n * By default Ionic Framework hides elements that\n * are not hydrated, but in the CE build there is no\n * hydration.\n * TODO FW-2797: Remove when all integrations have been\n * migrated to CE build.\n */\n if (typeof (document as any) !== 'undefined') {\n document.documentElement.classList.add('ion-ce');\n }\n\n initialize({\n ...config,\n });\n};\n","import React from 'react';\n\nimport type { RouteInfo } from '../models/RouteInfo';\n\nimport type { ViewItem } from './ViewItem';\n\nexport interface RouteManagerContextState {\n addViewItem: (viewItem: ViewItem) => void;\n canGoBack: () => boolean;\n clearOutlet: (outletId: string) => void;\n createViewItem: (\n outletId: string,\n reactElement: React.ReactElement,\n routeInfo: RouteInfo,\n page?: HTMLElement\n ) => ViewItem;\n findViewItemByPathname(pathname: string, outletId?: string): ViewItem | undefined;\n findLeavingViewItemByRouteInfo: (routeInfo: RouteInfo, outletId?: string) => ViewItem | undefined;\n findViewItemByRouteInfo: (routeInfo: RouteInfo, outletId?: string, updateMatch?: boolean) => ViewItem | undefined;\n getChildrenToRender: (\n outletId: string,\n ionRouterOutlet: React.ReactElement,\n routeInfo: RouteInfo,\n reRender: () => void\n ) => React.ReactNode[];\n /**\n * Returns all view items currently registered for a given outlet id.\n * Used by StackManager for out-of-scope cleanup.\n */\n getViewItemsForOutlet: (outletId: string) => ViewItem[];\n goBack: () => void;\n unMountViewItem: (viewItem: ViewItem) => void;\n}\n\n// TODO(FW-2959): types\nexport const RouteManagerContext = /*@__PURE__*/ React.createContext<RouteManagerContextState>({\n addViewItem: () => undefined,\n canGoBack: () => undefined as any,\n clearOutlet: () => undefined,\n createViewItem: () => undefined as any,\n findViewItemByPathname: () => undefined,\n findLeavingViewItemByRouteInfo: () => undefined,\n findViewItemByRouteInfo: () => undefined,\n getChildrenToRender: () => undefined as any,\n getViewItemsForOutlet: () => [] as any,\n goBack: () => undefined,\n unMountViewItem: () => undefined,\n});\n","import React from 'react';\n\nimport { DefaultIonLifeCycleContext, IonLifeCycleContext } from '../contexts/IonLifeCycleContext';\n\ninterface ViewTransitionManagerProps {\n removeView: () => void;\n mount: boolean;\n}\n\ninterface ViewTransitionManagerState {\n show: boolean;\n}\n\nexport class ViewLifeCycleManager extends React.Component<ViewTransitionManagerProps, ViewTransitionManagerState> {\n ionLifeCycleContext = new DefaultIonLifeCycleContext();\n private _isMounted = false;\n\n constructor(props: ViewTransitionManagerProps) {\n super(props);\n\n this.ionLifeCycleContext.onComponentCanBeDestroyed(() => {\n if (!this.props.mount) {\n if (this._isMounted) {\n this.setState(\n {\n show: false,\n },\n () => this.props.removeView()\n );\n }\n }\n });\n\n this.state = {\n show: true,\n };\n }\n\n componentDidMount() {\n this._isMounted = true;\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n render() {\n const { show } = this.state;\n return (\n <IonLifeCycleContext.Provider value={this.ionLifeCycleContext}>\n {show && this.props.children}\n </IonLifeCycleContext.Provider>\n );\n }\n}\n","import type { RouteInfo } from '../models/RouteInfo';\n\n// const RESTRICT_SIZE = 100;\n\nexport class LocationHistory {\n private locationHistory: RouteInfo[] = [];\n private tabHistory: {\n [key: string]: RouteInfo[];\n } = {};\n\n add(routeInfo: RouteInfo) {\n if (routeInfo.routeAction === 'push' || routeInfo.routeAction == null) {\n this._add(routeInfo);\n } else if (routeInfo.routeAction === 'pop') {\n this._pop(routeInfo);\n } else if (routeInfo.routeAction === 'replace') {\n this._replace(routeInfo);\n }\n\n if (routeInfo.routeDirection === 'root') {\n this._clear();\n this._add(routeInfo);\n }\n }\n\n clearTabStack(tab: string) {\n const routeInfos = this._getRouteInfosByKey(tab);\n if (routeInfos) {\n routeInfos.forEach((ri) => {\n this.locationHistory = this.locationHistory.filter((x) => x.id !== ri.id);\n });\n this.tabHistory[tab] = [];\n }\n }\n\n update(routeInfo: RouteInfo) {\n const locationIndex = this.locationHistory.findIndex((x) => x.id === routeInfo.id);\n if (locationIndex > -1) {\n this.locationHistory.splice(locationIndex, 1, routeInfo);\n }\n const tabArray = this.tabHistory[routeInfo.tab || ''];\n if (tabArray) {\n const tabIndex = tabArray.findIndex((x) => x.id === routeInfo.id);\n if (tabIndex > -1) {\n tabArray.splice(tabIndex, 1, routeInfo);\n } else {\n tabArray.push(routeInfo);\n }\n } else if (routeInfo.tab) {\n this.tabHistory[routeInfo.tab] = [routeInfo];\n }\n }\n\n private _add(routeInfo: RouteInfo) {\n const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n if (routeInfos) {\n // If the latest routeInfo is the same (going back and forth between tabs), replace it\n if (this._areRoutesEqual(routeInfos[routeInfos.length - 1], routeInfo)) {\n routeInfos.pop();\n }\n routeInfos.push(routeInfo);\n }\n this.locationHistory.push(routeInfo);\n }\n\n private _areRoutesEqual(route1?: RouteInfo, route2?: RouteInfo) {\n if (!route1 || !route2) {\n return false;\n }\n return route1.pathname === route2.pathname && route1.search === route2.search;\n }\n\n private _pop(routeInfo: RouteInfo) {\n const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n\n if (routeInfos) {\n // Pop the previous route\n routeInfos.pop();\n // Replace the current route with an updated version\n routeInfos.pop();\n routeInfos.push(routeInfo);\n }\n\n // Pop the previous route\n this.locationHistory.pop();\n // Replace the current route with an updated version\n this.locationHistory.pop();\n this.locationHistory.push(routeInfo);\n }\n\n private _replace(routeInfo: RouteInfo) {\n const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n routeInfos && routeInfos.pop();\n\n // Get the current route that's being replaced\n const currentRoute = this.locationHistory[this.locationHistory.length - 1];\n\n // Only pop from global history if we're replacing in the same outlet context.\n // Don't pop if we're entering a nested outlet (current route has no tab, new route has a tab)\n const isEnteringNestedOutlet = currentRoute && !currentRoute.tab && !!routeInfo.tab;\n\n if (!isEnteringNestedOutlet) {\n this.locationHistory.pop();\n }\n\n this._add(routeInfo);\n }\n\n private _clear() {\n const keys = Object.keys(this.tabHistory);\n keys.forEach((k) => (this.tabHistory[k] = []));\n this.locationHistory = [];\n }\n\n private _getRouteInfosByKey(key?: string) {\n let routeInfos: RouteInfo[] | undefined;\n if (key) {\n routeInfos = this.tabHistory[key];\n if (!routeInfos) {\n routeInfos = this.tabHistory[key] = [];\n }\n }\n return routeInfos;\n }\n\n getFirstRouteInfoForTab(tab: string) {\n const routeInfos = this._getRouteInfosByKey(tab);\n if (routeInfos) {\n return routeInfos[0];\n }\n return undefined;\n }\n\n getCurrentRouteInfoForTab(tab?: string) {\n const routeInfos = this._getRouteInfosByKey(tab);\n if (routeInfos) {\n return routeInfos[routeInfos.length - 1];\n }\n return undefined;\n }\n\n findLastLocation(routeInfo: RouteInfo) {\n const routeInfos = this._getRouteInfosByKey(routeInfo.tab);\n if (routeInfos) {\n for (let i = routeInfos.length - 2; i >= 0; i--) {\n const ri = routeInfos[i];\n if (ri) {\n if (ri.pathname === routeInfo.pushedByRoute) {\n return ri;\n }\n }\n }\n }\n for (let i = this.locationHistory.length - 2; i >= 0; i--) {\n const ri = this.locationHistory[i];\n if (ri) {\n if (ri.pathname === routeInfo.pushedByRoute) {\n return ri;\n }\n }\n }\n return undefined;\n }\n\n previous() {\n return (\n this.locationHistory[this.locationHistory.length - 2] || this.locationHistory[this.locationHistory.length - 1]\n );\n }\n\n current() {\n return this.locationHistory[this.locationHistory.length - 1];\n }\n\n canGoBack() {\n return this.locationHistory.length > 1;\n }\n}\n","import type { AnimationBuilder } from '@ionic/core/components';\nimport React from 'react';\n\nimport type { IonRouterContextState } from '../components/IonRouterContext';\nimport { IonRouterContext } from '../components/IonRouterContext';\nimport type { NavContextState } from '../contexts/NavContext';\nimport { NavContext } from '../contexts/NavContext';\nimport type { RouteAction } from '../models/RouteAction';\nimport type { RouteInfo } from '../models/RouteInfo';\nimport type { RouterDirection } from '../models/RouterDirection';\nimport type { RouterOptions } from '../models/RouterOptions';\n\nimport type { LocationHistory } from './LocationHistory';\nimport PageManager from './PageManager';\n\n// TODO(FW-2959): types\n\ninterface NavManagerProps {\n routeInfo: RouteInfo;\n onNativeBack: () => void;\n onNavigateBack: (route?: string | RouteInfo, animationBuilder?: AnimationBuilder) => void;\n onNavigate: (\n path: string,\n action: RouteAction,\n direction?: RouterDirection,\n animationBuilder?: AnimationBuilder,\n options?: any,\n tab?: string\n ) => void;\n onSetCurrentTab: (tab: string, routeInfo: RouteInfo) => void;\n onChangeTab: (tab: string, path: string, routeOptions?: any) => void;\n onResetTab: (tab: string, path: string, routeOptions?: any) => void;\n ionRedirect: any;\n ionRoute: any;\n stackManager: any;\n locationHistory: LocationHistory;\n}\n\nexport class NavManager extends React.PureComponent<NavManagerProps, NavContextState> {\n ionRouterContextValue: IonRouterContextState = {\n push: (\n pathname: string,\n routerDirection?: RouterDirection,\n routeAction?: RouteAction,\n routerOptions?: RouterOptions,\n animationBuilder?: AnimationBuilder\n ) => {\n this.navigate(pathname, routerDirection, routeAction, animationBuilder, routerOptions);\n },\n back: (animationBuilder?: AnimationBuilder) => {\n this.goBack(undefined, animationBuilder);\n },\n canGoBack: () => this.props.locationHistory.canGoBack(),\n nativeBack: () => this.props.onNativeBack(),\n routeInfo: this.props.routeInfo,\n };\n\n constructor(props: NavManagerProps) {\n super(props);\n this.state = {\n goBack: this.goBack.bind(this),\n hasIonicRouter: () => true,\n navigate: this.navigate.bind(this),\n getIonRedirect: this.getIonRedirect.bind(this),\n getIonRoute: this.getIonRoute.bind(this),\n getStackManager: this.getStackManager.bind(this),\n getPageManager: this.getPageManager.bind(this),\n routeInfo: this.props.routeInfo,\n setCurrentTab: this.props.onSetCurrentTab,\n changeTab: this.props.onChangeTab,\n resetTab: this.props.onResetTab,\n };\n }\n\n componentDidMount() {\n if (typeof document !== 'undefined') {\n this.handleHardwareBackButton = this.handleHardwareBackButton.bind(this);\n document.addEventListener('ionBackButton', this.handleHardwareBackButton);\n }\n }\n\n componentWillUnmount() {\n if (typeof document !== 'undefined') {\n document.removeEventListener('ionBackButton', this.handleHardwareBackButton);\n }\n }\n\n handleHardwareBackButton(e: any) {\n e.detail.register(0, (processNextHandler: () => void) => {\n this.nativeGoBack();\n processNextHandler();\n });\n }\n\n goBack(route?: string | RouteInfo, animationBuilder?: AnimationBuilder) {\n this.props.onNavigateBack(route, animationBuilder);\n }\n\n nativeGoBack() {\n this.props.onNativeBack();\n }\n\n navigate(\n path: string,\n direction: RouterDirection = 'forward',\n action: RouteAction = 'push',\n animationBuilder?: AnimationBuilder,\n options?: any,\n tab?: string\n ) {\n this.props.onNavigate(path, action, direction, animationBuilder, options, tab);\n }\n\n getPageManager() {\n return PageManager;\n }\n\n getIonRedirect() {\n return this.props.ionRedirect;\n }\n\n getIonRoute() {\n return this.props.ionRoute;\n }\n\n getStackManager() {\n return this.props.stackManager;\n }\n\n render() {\n return (\n <NavContext.Provider value={{ ...this.state, routeInfo: this.props.routeInfo }}>\n <IonRouterContext.Provider value={{ ...this.ionRouterContextValue, routeInfo: this.props.routeInfo }}>\n {this.props.children}\n </IonRouterContext.Provider>\n </NavContext.Provider>\n );\n }\n}\n","import type { RouteInfo } from '../models/RouteInfo';\n\nimport type { ViewItem } from './ViewItem';\n\nexport abstract class ViewStacks {\n private viewStacks: { [key: string]: ViewItem[] } = {};\n\n constructor() {\n this.add = this.add.bind(this);\n this.clear = this.clear.bind(this);\n this.getViewItemsForOutlet = this.getViewItemsForOutlet.bind(this);\n this.remove = this.remove.bind(this);\n }\n\n add(viewItem: ViewItem) {\n const { outletId } = viewItem;\n if (!this.viewStacks[outletId]) {\n this.viewStacks[outletId] = [viewItem];\n } else {\n this.viewStacks[outletId].push(viewItem);\n }\n }\n\n clear(outletId: string) {\n // Give some time for the leaving views to transition before removing\n return setTimeout(() => {\n delete this.viewStacks[outletId];\n }, 500);\n }\n\n getViewItemsForOutlet(outletId: string) {\n return this.viewStacks[outletId] || [];\n }\n\n remove(viewItem: ViewItem) {\n const { outletId } = viewItem;\n const viewStack = this.viewStacks[outletId];\n if (viewStack) {\n const viewItemToRemove = viewStack.find((x) => x.id === viewItem.id);\n if (viewItemToRemove) {\n viewItemToRemove.mount = false;\n this.viewStacks[outletId] = viewStack.filter((x) => x.id !== viewItemToRemove.id);\n }\n }\n }\n\n protected getStackIds() {\n return Object.keys(this.viewStacks);\n }\n\n protected getAllViewItems() {\n const keys = this.getStackIds();\n const viewItems: ViewItem[] = [];\n keys.forEach((k) => {\n viewItems.push(...this.viewStacks[k]);\n });\n return viewItems;\n }\n\n abstract createViewItem(\n outletId: string,\n reactElement: React.ReactElement,\n routeInfo: RouteInfo,\n page?: HTMLElement\n ): ViewItem;\n abstract findViewItemByPathname(pathname: string, outletId?: string): ViewItem | undefined;\n abstract findViewItemByRouteInfo(\n routeInfo: RouteInfo,\n outletId?: string,\n updateMatch?: boolean\n ): ViewItem | undefined;\n abstract findLeavingViewItemByRouteInfo(routeInfo: RouteInfo, outletId?: string): ViewItem | undefined;\n abstract getChildrenToRender(\n outletId: string,\n ionRouterOutlet: React.ReactElement,\n routeInfo: RouteInfo,\n reRender: () => void,\n setInTransition: () => void\n ): React.ReactNode[];\n}\n"],"names":["_jsx","createForwardRef","defineIonAccordion","defineIonAccordionGroup","defineIonAvatar","defineIonBackdrop","defineIonBadge","defineIonBreadcrumbs","defineIonButtons","defineIonCardContent","defineIonCardHeader","defineIonCardSubtitle","defineIonCardTitle","defineIonCheckbox","defineIonChip","defineIonCol","defineIonContent","defineIonDatetime","defineIonDatetimeButton","defineIonFab","defineIonFabList","defineIonFooter","defineIonGrid","defineIonHeader","defineIonImg","defineIonInfiniteScroll","defineIonInfiniteScrollContent","defineIonInput","defineIonInputOtp","defineIonInputPasswordToggle","defineIonItemDivider","defineIonItemGroup","defineIonItemOptions","defineIonItemSliding","defineIonLabel","defineIonList","defineIonListHeader","defineIonMenu","defineIonMenuButton","defineIonMenuToggle","defineIonNavLink","defineIonNote","defineIonPicker","defineIonPickerColumn","defineIonPickerColumnOption","defineIonProgressBar","defineIonRadio","defineIonRadioGroup","defineIonRange","defineIonRefresher","defineIonRefresherContent","defineIonReorder","defineIonReorderGroup","defineIonRippleEffect","defineIonRow","defineIonSearchbar","defineIonSegment","defineIonSegmentButton","defineIonSegmentContent","defineIonSegmentView","defineIonSelect","defineIonSelectModal","defineIonSelectOption","defineIonSkeletonText","defineIonSpinner","defineIonSplitPane","defineIonTab","defineIonText","defineIonTextarea","defineIonThumbnail","defineIonTitle","defineIonToggle","defineIonToolbar","isPlatformCore","getPlatformsCore","IonRouterLinkCmp","IonButtonCmp","IonCardCmp","IonFabButtonCmp","IonItemCmp","IonItemOptionCmp","IonBreadcrumbCmp","defineCustomElement","defineIonTabButton","defineIonTabBar","defineIonTabs","defineIonBackButton","defineIonRouterOutlet","defineIonApp","defineIonIcon","_jsxs","Fragment"],"mappings":"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"}
|