@ionic/angular 8.7.9-nightly.20251105 → 8.7.10-dev.11762795745.187eb9d6

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.
Files changed (73) hide show
  1. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +3 -2
  2. package/esm2022/common/directives/navigation/back-button.mjs +1 -1
  3. package/esm2022/common/directives/navigation/nav.mjs +1 -1
  4. package/esm2022/common/directives/navigation/router-link-delegate.mjs +5 -3
  5. package/esm2022/common/directives/navigation/router-outlet.mjs +3 -3
  6. package/esm2022/common/directives/navigation/tabs.mjs +3 -3
  7. package/esm2022/common/overlays/modal.mjs +9 -2
  8. package/esm2022/common/overlays/popover.mjs +9 -2
  9. package/esm2022/common/providers/angular-delegate.mjs +3 -2
  10. package/esm2022/common/providers/config.mjs +3 -2
  11. package/esm2022/common/providers/dom-controller.mjs +3 -2
  12. package/esm2022/common/providers/nav-controller.mjs +3 -2
  13. package/esm2022/common/providers/platform.mjs +3 -2
  14. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +3 -2
  15. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +3 -2
  16. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +3 -2
  17. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +3 -2
  18. package/esm2022/directives/navigation/ion-back-button.mjs +3 -3
  19. package/esm2022/directives/navigation/ion-nav.mjs +3 -3
  20. package/esm2022/directives/navigation/ion-router-outlet.mjs +3 -3
  21. package/esm2022/directives/navigation/ion-tabs.mjs +3 -3
  22. package/esm2022/directives/navigation/router-link-delegate.mjs +5 -3
  23. package/esm2022/directives/overlays/modal.mjs +3 -2
  24. package/esm2022/directives/overlays/popover.mjs +3 -2
  25. package/esm2022/directives/proxies.mjs +1 -1
  26. package/esm2022/directives/validators/max-validator.mjs +3 -3
  27. package/esm2022/directives/validators/min-validator.mjs +3 -3
  28. package/esm2022/ionic-module.mjs +3 -2
  29. package/esm2022/providers/action-sheet-controller.mjs +3 -2
  30. package/esm2022/providers/alert-controller.mjs +3 -2
  31. package/esm2022/providers/animation-controller.mjs +3 -2
  32. package/esm2022/providers/gesture-controller.mjs +3 -2
  33. package/esm2022/providers/loading-controller.mjs +3 -2
  34. package/esm2022/providers/menu-controller.mjs +3 -2
  35. package/esm2022/providers/modal-controller.mjs +3 -2
  36. package/esm2022/providers/picker-controller.mjs +3 -2
  37. package/esm2022/providers/toast-controller.mjs +3 -2
  38. package/esm2022/standalone/directives/checkbox.mjs +1 -1
  39. package/esm2022/standalone/directives/datetime.mjs +1 -1
  40. package/esm2022/standalone/directives/icon.mjs +1 -1
  41. package/esm2022/standalone/directives/input-otp.mjs +1 -1
  42. package/esm2022/standalone/directives/input.mjs +1 -1
  43. package/esm2022/standalone/directives/proxies.mjs +1 -1
  44. package/esm2022/standalone/directives/radio-group.mjs +1 -1
  45. package/esm2022/standalone/directives/range.mjs +1 -1
  46. package/esm2022/standalone/directives/searchbar.mjs +1 -1
  47. package/esm2022/standalone/directives/segment.mjs +1 -1
  48. package/esm2022/standalone/directives/select.mjs +1 -1
  49. package/esm2022/standalone/directives/textarea.mjs +1 -1
  50. package/esm2022/standalone/directives/toggle.mjs +1 -1
  51. package/esm2022/standalone/navigation/back-button.mjs +1 -1
  52. package/esm2022/standalone/navigation/nav.mjs +1 -1
  53. package/esm2022/standalone/navigation/router-link-delegate.mjs +5 -5
  54. package/esm2022/standalone/navigation/router-outlet.mjs +1 -1
  55. package/esm2022/standalone/navigation/tabs.mjs +3 -3
  56. package/esm2022/standalone/overlays/modal.mjs +1 -1
  57. package/esm2022/standalone/overlays/popover.mjs +1 -1
  58. package/esm2022/standalone/providers/action-sheet-controller.mjs +3 -2
  59. package/esm2022/standalone/providers/alert-controller.mjs +3 -2
  60. package/esm2022/standalone/providers/animation-controller.mjs +3 -2
  61. package/esm2022/standalone/providers/gesture-controller.mjs +3 -2
  62. package/esm2022/standalone/providers/loading-controller.mjs +3 -2
  63. package/esm2022/standalone/providers/menu-controller.mjs +3 -2
  64. package/esm2022/standalone/providers/modal-controller.mjs +3 -2
  65. package/esm2022/standalone/providers/picker-controller.mjs +3 -2
  66. package/esm2022/standalone/providers/toast-controller.mjs +3 -2
  67. package/fesm2022/ionic-angular-common.mjs +16 -4
  68. package/fesm2022/ionic-angular-common.mjs.map +1 -1
  69. package/fesm2022/ionic-angular-standalone.mjs +0 -3
  70. package/fesm2022/ionic-angular-standalone.mjs.map +1 -1
  71. package/fesm2022/ionic-angular.mjs +0 -6
  72. package/fesm2022/ionic-angular.mjs.map +1 -1
  73. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ionic-angular-common.mjs","sources":["../../common/src/providers/dom-controller.ts","../../common/src/providers/menu-controller.ts","../../common/src/providers/platform.ts","../../common/src/providers/nav-controller.ts","../../common/src/providers/config.ts","../../common/src/directives/navigation/nav-params.ts","../../common/src/providers/angular-delegate.ts","../../common/src/utils/proxy.ts","../../common/src/overlays/modal.ts","../../common/src/overlays/popover.ts","../../common/src/directives/navigation/stack-utils.ts","../../common/src/directives/navigation/stack-controller.ts","../../common/src/directives/navigation/router-outlet.ts","../../common/src/utils/util.ts","../../common/src/directives/control-value-accessors/value-accessor.ts","../../common/src/directives/navigation/back-button.ts","../../common/src/directives/navigation/nav.ts","../../common/src/directives/navigation/router-link-delegate.ts","../../common/src/directives/navigation/tabs.ts","../../common/src/utils/overlay.ts","../../common/src/utils/routing.ts","../../common/src/ionic-angular-common.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DomController {\n /**\n * Schedules a task to run during the READ phase of the next frame.\n * This task should only read the DOM, but never modify it.\n */\n read(cb: RafCallback): void {\n getQueue().read(cb);\n }\n\n /**\n * Schedules a task to run during the WRITE phase of the next frame.\n * This task should write the DOM, but never READ it.\n */\n write(cb: RafCallback): void {\n getQueue().write(cb);\n }\n}\n\nconst getQueue = () => {\n const win = typeof (window as any) !== 'undefined' ? window : (null as any);\n\n if (win != null) {\n const Ionic = win.Ionic;\n if (Ionic?.queue) {\n return Ionic.queue;\n }\n\n return {\n read: (cb: any) => win.requestAnimationFrame(cb),\n write: (cb: any) => win.requestAnimationFrame(cb),\n };\n }\n\n return {\n read: (cb: any) => cb(),\n write: (cb: any) => cb(),\n };\n};\n\nexport type RafCallback = (timeStamp?: number) => void;\n","import type { MenuControllerI, AnimationBuilder, MenuI, Animation } from '@ionic/core/components';\n\nexport class MenuController implements MenuControllerI {\n constructor(private menuController: MenuControllerI) {}\n\n /**\n * Programmatically open the Menu.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return returns a promise when the menu is fully opened\n */\n open(menuId?: string): Promise<boolean> {\n return this.menuController.open(menuId);\n }\n\n /**\n * Programmatically close the Menu. If no `menuId` is given as the first\n * argument then it'll close any menu which is open. If a `menuId`\n * is given then it'll close that exact menu.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return returns a promise when the menu is fully closed\n */\n close(menuId?: string): Promise<boolean> {\n return this.menuController.close(menuId);\n }\n\n /**\n * Toggle the menu. If it's closed, it will open, and if opened, it\n * will close.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return returns a promise when the menu has been toggled\n */\n toggle(menuId?: string): Promise<boolean> {\n return this.menuController.toggle(menuId);\n }\n\n /**\n * Used to enable or disable a menu. For example, there could be multiple\n * left menus, but only one of them should be able to be opened at the same\n * time. If there are multiple menus on the same side, then enabling one menu\n * will also automatically disable all the others that are on the same side.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns the instance of the menu, which is useful for chaining.\n */\n enable(shouldEnable: boolean, menuId?: string): Promise<HTMLIonMenuElement | undefined> {\n return this.menuController.enable(shouldEnable, menuId);\n }\n\n /**\n * Used to enable or disable the ability to swipe open the menu.\n * @param shouldEnable True if it should be swipe-able, false if not.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns the instance of the menu, which is useful for chaining.\n */\n swipeGesture(shouldEnable: boolean, menuId?: string): Promise<HTMLIonMenuElement | undefined> {\n return this.menuController.swipeGesture(shouldEnable, menuId);\n }\n\n /**\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns true if the specified menu is currently open, otherwise false.\n * If the menuId is not specified, it returns true if ANY menu is currenly open.\n */\n isOpen(menuId?: string): Promise<boolean> {\n return this.menuController.isOpen(menuId);\n }\n\n /**\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns true if the menu is currently enabled, otherwise false.\n */\n isEnabled(menuId?: string): Promise<boolean> {\n return this.menuController.isEnabled(menuId);\n }\n\n /**\n * Used to get a menu instance. If a `menuId` is not provided then it'll\n * return the first menu found. If a `menuId` is `left` or `right`, then\n * it'll return the enabled menu on that side. Otherwise, if a `menuId` is\n * provided, then it'll try to find the menu using the menu's `id`\n * property. If a menu is not found then it'll return `null`.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns the instance of the menu if found, otherwise `null`.\n */\n get(menuId?: string): Promise<HTMLIonMenuElement | undefined> {\n return this.menuController.get(menuId);\n }\n\n /**\n * @return Returns the instance of the menu already opened, otherwise `null`.\n */\n getOpen(): Promise<HTMLIonMenuElement | undefined> {\n return this.menuController.getOpen();\n }\n\n /**\n * @return Returns an array of all menu instances.\n */\n getMenus(): Promise<HTMLIonMenuElement[]> {\n return this.menuController.getMenus();\n }\n\n registerAnimation(name: string, animation: AnimationBuilder): void {\n return this.menuController.registerAnimation(name, animation);\n }\n\n isAnimating(): Promise<boolean> {\n return this.menuController.isAnimating();\n }\n\n _getOpenSync(): HTMLIonMenuElement | undefined {\n return this.menuController._getOpenSync();\n }\n\n _createAnimation(type: string, menuCmp: MenuI): Promise<Animation> {\n return this.menuController._createAnimation(type, menuCmp);\n }\n\n _register(menu: MenuI): void {\n return this.menuController._register(menu);\n }\n\n _unregister(menu: MenuI): void {\n return this.menuController._unregister(menu);\n }\n\n _setOpen(menu: MenuI, shouldOpen: boolean, animated: boolean): Promise<boolean> {\n return this.menuController._setOpen(menu, shouldOpen, animated);\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { NgZone, Inject, Injectable } from '@angular/core';\nimport { getPlatforms, isPlatform } from '@ionic/core/components';\nimport type { BackButtonEventDetail, KeyboardEventDetail, Platforms } from '@ionic/core/components';\nimport { Subscription, Subject } from 'rxjs';\n\n// TODO(FW-2827): types\n\nexport interface BackButtonEmitter extends Subject<BackButtonEventDetail> {\n subscribeWithPriority(\n priority: number,\n callback: (processNextHandler: () => void) => Promise<any> | void\n ): Subscription;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Platform {\n private _readyPromise: Promise<string>;\n private win: any;\n\n /**\n * @hidden\n */\n backButton = new Subject<BackButtonEventDetail>() as BackButtonEmitter;\n\n /**\n * The keyboardDidShow event emits when the\n * on-screen keyboard is presented.\n */\n keyboardDidShow = new Subject<KeyboardEventDetail>();\n\n /**\n * The keyboardDidHide event emits when the\n * on-screen keyboard is hidden.\n */\n keyboardDidHide = new Subject<void>();\n\n /**\n * The pause event emits when the native platform puts the application\n * into the background, typically when the user switches to a different\n * application. This event would emit when a Cordova app is put into\n * the background, however, it would not fire on a standard web browser.\n */\n pause = new Subject<void>();\n\n /**\n * The resume event emits when the native platform pulls the application\n * out from the background. This event would emit when a Cordova app comes\n * out from the background, however, it would not fire on a standard web browser.\n */\n resume = new Subject<void>();\n\n /**\n * The resize event emits when the browser window has changed dimensions. This\n * could be from a browser window being physically resized, or from a device\n * changing orientation.\n */\n resize = new Subject<void>();\n\n constructor(@Inject(DOCUMENT) private doc: any, zone: NgZone) {\n zone.run(() => {\n this.win = doc.defaultView;\n this.backButton.subscribeWithPriority = function (priority, callback) {\n return this.subscribe((ev) => {\n return ev.register(priority, (processNextHandler) => zone.run(() => callback(processNextHandler)));\n });\n };\n\n proxyEvent(this.pause, doc, 'pause', zone);\n proxyEvent(this.resume, doc, 'resume', zone);\n proxyEvent(this.backButton, doc, 'ionBackButton', zone);\n proxyEvent(this.resize, this.win, 'resize', zone);\n proxyEvent(this.keyboardDidShow, this.win, 'ionKeyboardDidShow', zone);\n proxyEvent(this.keyboardDidHide, this.win, 'ionKeyboardDidHide', zone);\n\n let readyResolve: (value: string) => void;\n this._readyPromise = new Promise((res) => {\n readyResolve = res;\n });\n if (this.win?.['cordova']) {\n doc.addEventListener(\n 'deviceready',\n () => {\n readyResolve('cordova');\n },\n { once: true }\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n readyResolve!('dom');\n }\n });\n }\n\n /**\n * @returns returns true/false based on platform.\n * @description\n * Depending on the platform the user is on, `is(platformName)` will\n * return `true` or `false`. Note that the same app can return `true`\n * for more than one platform name. For example, an app running from\n * an iPad would return `true` for the platform names: `mobile`,\n * `ios`, `ipad`, and `tablet`. Additionally, if the app was running\n * from Cordova then `cordova` would be true, and if it was running\n * from a web browser on the iPad then `mobileweb` would be `true`.\n *\n * ```\n * import { Platform } from 'ionic-angular';\n *\n * @Component({...})\n * export MyPage {\n * constructor(public platform: Platform) {\n * if (this.platform.is('ios')) {\n * // This will only print when on iOS\n * console.log('I am an iOS device!');\n * }\n * }\n * }\n * ```\n *\n * | Platform Name | Description |\n * |-----------------|------------------------------------|\n * | android | on a device running Android. |\n * | capacitor | on a device running Capacitor. |\n * | cordova | on a device running Cordova. |\n * | ios | on a device running iOS. |\n * | ipad | on an iPad device. |\n * | iphone | on an iPhone device. |\n * | phablet | on a phablet device. |\n * | tablet | on a tablet device. |\n * | electron | in Electron on a desktop device. |\n * | pwa | as a PWA app. |\n * | mobile | on a mobile device. |\n * | mobileweb | on a mobile device in a browser. |\n * | desktop | on a desktop device. |\n * | hybrid | is a cordova or capacitor app. |\n *\n */\n is(platformName: Platforms): boolean {\n return isPlatform(this.win, platformName);\n }\n\n /**\n * @returns the array of platforms\n * @description\n * Depending on what device you are on, `platforms` can return multiple values.\n * Each possible value is a hierarchy of platforms. For example, on an iPhone,\n * it would return `mobile`, `ios`, and `iphone`.\n *\n * ```\n * import { Platform } from 'ionic-angular';\n *\n * @Component({...})\n * export MyPage {\n * constructor(public platform: Platform) {\n * // This will print an array of the current platforms\n * console.log(this.platform.platforms());\n * }\n * }\n * ```\n */\n platforms(): string[] {\n return getPlatforms(this.win);\n }\n\n /**\n * Returns a promise when the platform is ready and native functionality\n * can be called. If the app is running from within a web browser, then\n * the promise will resolve when the DOM is ready. When the app is running\n * from an application engine such as Cordova, then the promise will\n * resolve when Cordova triggers the `deviceready` event.\n *\n * The resolved value is the `readySource`, which states which platform\n * ready was used. For example, when Cordova is ready, the resolved ready\n * source is `cordova`. The default ready source value will be `dom`. The\n * `readySource` is useful if different logic should run depending on the\n * platform the app is running from. For example, only Cordova can execute\n * the status bar plugin, so the web should not run status bar plugin logic.\n *\n * ```\n * import { Component } from '@angular/core';\n * import { Platform } from 'ionic-angular';\n *\n * @Component({...})\n * export MyApp {\n * constructor(public platform: Platform) {\n * this.platform.ready().then((readySource) => {\n * console.log('Platform ready from', readySource);\n * // Platform now ready, execute any required native code\n * });\n * }\n * }\n * ```\n */\n ready(): Promise<string> {\n return this._readyPromise;\n }\n\n /**\n * Returns if this app is using right-to-left language direction or not.\n * We recommend the app's `index.html` file already has the correct `dir`\n * attribute value set, such as `<html dir=\"ltr\">` or `<html dir=\"rtl\">`.\n * [W3C: Structural markup and right-to-left text in HTML](http://www.w3.org/International/questions/qa-html-dir)\n */\n get isRTL(): boolean {\n return this.doc.dir === 'rtl';\n }\n\n /**\n * Get the query string parameter\n */\n getQueryParam(key: string): string | null {\n return readQueryParam(this.win.location.href, key);\n }\n\n /**\n * Returns `true` if the app is in landscape mode.\n */\n isLandscape(): boolean {\n return !this.isPortrait();\n }\n\n /**\n * Returns `true` if the app is in portrait mode.\n */\n isPortrait(): boolean {\n return this.win.matchMedia?.('(orientation: portrait)').matches;\n }\n\n testUserAgent(expression: string): boolean {\n const nav = this.win.navigator;\n return !!(nav?.userAgent && nav.userAgent.indexOf(expression) >= 0);\n }\n\n /**\n * Get the current url.\n */\n url(): string {\n return this.win.location.href;\n }\n\n /**\n * Gets the width of the platform's viewport using `window.innerWidth`.\n */\n width(): number {\n return this.win.innerWidth;\n }\n\n /**\n * Gets the height of the platform's viewport using `window.innerHeight`.\n */\n height(): number {\n return this.win.innerHeight;\n }\n}\n\nconst readQueryParam = (url: string, key: string) => {\n key = key.replace(/[[\\]\\\\]/g, '\\\\$&');\n const regex = new RegExp('[\\\\?&]' + key + '=([^&#]*)');\n const results = regex.exec(url);\n return results ? decodeURIComponent(results[1].replace(/\\+/g, ' ')) : null;\n};\n\nconst proxyEvent = <T>(emitter: Subject<T>, el: EventTarget, eventName: string, zone: NgZone) => {\n if (el) {\n el.addEventListener(eventName, (ev) => {\n /**\n * `zone.run` is required to make sure that we are running inside the Angular zone\n * at all times. This is necessary since an app that has Capacitor will\n * override the `document.addEventListener` with its own implementation.\n * The override causes the event to no longer be in the Angular zone.\n */\n zone.run(() => {\n // ?? cordova might emit \"null\" events\n const value = ev != null ? (ev as any).detail : undefined;\n emitter.next(value);\n });\n });\n }\n};\n","import { Location } from '@angular/common';\nimport { Injectable, Optional } from '@angular/core';\nimport { NavigationExtras, Router, UrlSerializer, UrlTree, NavigationStart } from '@angular/router';\nimport type { AnimationBuilder, NavDirection, RouterDirection } from '@ionic/core/components';\n\nimport { IonRouterOutlet } from '../directives/navigation/router-outlet';\n\nimport { Platform } from './platform';\n\nexport interface AnimationOptions {\n animated?: boolean;\n animation?: AnimationBuilder;\n animationDirection?: 'forward' | 'back';\n}\n\nexport interface NavigationOptions extends NavigationExtras, AnimationOptions {}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NavController {\n private topOutlet?: IonRouterOutlet;\n private direction: 'forward' | 'back' | 'root' | 'auto' = DEFAULT_DIRECTION;\n private animated?: NavDirection = DEFAULT_ANIMATED;\n private animationBuilder?: AnimationBuilder;\n private guessDirection: RouterDirection = 'forward';\n private guessAnimation?: NavDirection;\n private lastNavId = -1;\n\n constructor(\n platform: Platform,\n private location: Location,\n private serializer: UrlSerializer,\n @Optional() private router?: Router\n ) {\n // Subscribe to router events to detect direction\n if (router) {\n router.events.subscribe((ev) => {\n if (ev instanceof NavigationStart) {\n // restoredState is set if the browser back/forward button is used\n const id = ev.restoredState ? ev.restoredState.navigationId : ev.id;\n this.guessDirection = this.guessAnimation = id < this.lastNavId ? 'back' : 'forward';\n this.lastNavId = this.guessDirection === 'forward' ? ev.id : id;\n }\n });\n }\n\n // Subscribe to backButton events\n platform.backButton.subscribeWithPriority(0, (processNextHandler) => {\n this.pop();\n processNextHandler();\n });\n }\n\n /**\n * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood,\n * it's equivalent to calling `this.router.navigateByUrl()`, but it's explicit about the **direction** of the transition.\n *\n * Going **forward** means that a new page is going to be pushed to the stack of the outlet (ion-router-outlet),\n * and that it will show a \"forward\" animation by default.\n *\n * Navigating forward can also be triggered in a declarative manner by using the `[routerDirection]` directive:\n *\n * ```html\n * <a routerLink=\"/path/to/page\" routerDirection=\"forward\">Link</a>\n * ```\n */\n navigateForward(url: string | UrlTree | any[], options: NavigationOptions = {}): Promise<boolean> {\n this.setDirection('forward', options.animated, options.animationDirection, options.animation);\n return this.navigate(url, options);\n }\n\n /**\n * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood,\n * it's equivalent to calling:\n *\n * ```ts\n * this.navController.setDirection('back');\n * this.router.navigateByUrl(path);\n * ```\n *\n * Going **back** means that all the pages in the stack until the navigated page is found will be popped,\n * and that it will show a \"back\" animation by default.\n *\n * Navigating back can also be triggered in a declarative manner by using the `[routerDirection]` directive:\n *\n * ```html\n * <a routerLink=\"/path/to/page\" routerDirection=\"back\">Link</a>\n * ```\n */\n navigateBack(url: string | UrlTree | any[], options: NavigationOptions = {}): Promise<boolean> {\n this.setDirection('back', options.animated, options.animationDirection, options.animation);\n return this.navigate(url, options);\n }\n\n /**\n * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood,\n * it's equivalent to calling:\n *\n * ```ts\n * this.navController.setDirection('root');\n * this.router.navigateByUrl(path);\n * ```\n *\n * Going **root** means that all existing pages in the stack will be removed,\n * and the navigated page will become the single page in the stack.\n *\n * Navigating root can also be triggered in a declarative manner by using the `[routerDirection]` directive:\n *\n * ```html\n * <a routerLink=\"/path/to/page\" routerDirection=\"root\">Link</a>\n * ```\n */\n navigateRoot(url: string | UrlTree | any[], options: NavigationOptions = {}): Promise<boolean> {\n this.setDirection('root', options.animated, options.animationDirection, options.animation);\n return this.navigate(url, options);\n }\n\n /**\n * Same as [Location](https://angular.io/api/common/Location)'s back() method.\n * It will use the standard `window.history.back()` under the hood, but featuring a `back` animation\n * by default.\n */\n back(options: AnimationOptions = { animated: true, animationDirection: 'back' }): void {\n this.setDirection('back', options.animated, options.animationDirection, options.animation);\n return this.location.back();\n }\n\n /**\n * This methods goes back in the context of Ionic's stack navigation.\n *\n * It recursively finds the top active `ion-router-outlet` and calls `pop()`.\n * This is the recommended way to go back when you are using `ion-router-outlet`.\n *\n * Resolves to `true` if it was able to pop.\n */\n async pop(): Promise<boolean> {\n let outlet = this.topOutlet;\n\n while (outlet) {\n if (await outlet.pop()) {\n return true;\n } else {\n outlet = outlet.parentOutlet;\n }\n }\n\n return false;\n }\n\n /**\n * This methods specifies the direction of the next navigation performed by the Angular router.\n *\n * `setDirection()` does not trigger any transition, it just sets some flags to be consumed by `ion-router-outlet`.\n *\n * It's recommended to use `navigateForward()`, `navigateBack()` and `navigateRoot()` instead of `setDirection()`.\n */\n setDirection(\n direction: RouterDirection,\n animated?: boolean,\n animationDirection?: 'forward' | 'back',\n animationBuilder?: AnimationBuilder\n ): void {\n this.direction = direction;\n this.animated = getAnimation(direction, animated, animationDirection);\n this.animationBuilder = animationBuilder;\n }\n\n /**\n * @internal\n */\n setTopOutlet(outlet: IonRouterOutlet): void {\n this.topOutlet = outlet;\n }\n\n /**\n * @internal\n */\n consumeTransition(): {\n direction: RouterDirection;\n animation: NavDirection | undefined;\n animationBuilder: AnimationBuilder | undefined;\n } {\n let direction: RouterDirection = 'root';\n let animation: NavDirection | undefined;\n const animationBuilder = this.animationBuilder;\n\n if (this.direction === 'auto') {\n direction = this.guessDirection;\n animation = this.guessAnimation;\n } else {\n animation = this.animated;\n direction = this.direction;\n }\n this.direction = DEFAULT_DIRECTION;\n this.animated = DEFAULT_ANIMATED;\n this.animationBuilder = undefined;\n\n return {\n direction,\n animation,\n animationBuilder,\n };\n }\n\n private navigate(url: string | UrlTree | any[], options: NavigationOptions) {\n if (Array.isArray(url)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.router!.navigate(url, options);\n } else {\n /**\n * navigateByUrl ignores any properties that\n * would change the url, so things like queryParams\n * would be ignored unless we create a url tree\n * More Info: https://github.com/angular/angular/issues/18798\n */\n const urlTree = this.serializer.parse(url.toString());\n\n if (options.queryParams !== undefined) {\n urlTree.queryParams = { ...options.queryParams };\n }\n\n if (options.fragment !== undefined) {\n urlTree.fragment = options.fragment;\n }\n\n /**\n * `navigateByUrl` will still apply `NavigationExtras` properties\n * that do not modify the url, such as `replaceUrl` which is why\n * `options` is passed in here.\n */\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.router!.navigateByUrl(urlTree, options);\n }\n }\n}\n\nconst getAnimation = (\n direction: RouterDirection,\n animated: boolean | undefined,\n animationDirection: 'forward' | 'back' | undefined\n): NavDirection | undefined => {\n if (animated === false) {\n return undefined;\n }\n if (animationDirection !== undefined) {\n return animationDirection;\n }\n if (direction === 'forward' || direction === 'back') {\n return direction;\n } else if (direction === 'root' && animated === true) {\n return 'forward';\n }\n return undefined;\n};\n\nconst DEFAULT_DIRECTION = 'auto';\nconst DEFAULT_ANIMATED = undefined;\n","import { Injectable, InjectionToken } from '@angular/core';\nimport type { Config as CoreConfig, IonicConfig } from '@ionic/core/components';\n\nimport { IonicWindow } from '../types/interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Config {\n get(key: keyof IonicConfig, fallback?: any): any {\n const c = getConfig();\n if (c) {\n return c.get(key, fallback);\n }\n return null;\n }\n\n getBoolean(key: keyof IonicConfig, fallback?: boolean): boolean {\n const c = getConfig();\n if (c) {\n return c.getBoolean(key, fallback);\n }\n return false;\n }\n\n getNumber(key: keyof IonicConfig, fallback?: number): number {\n const c = getConfig();\n if (c) {\n return c.getNumber(key, fallback);\n }\n return 0;\n }\n}\n\nexport const ConfigToken = new InjectionToken<any>('USERCONFIG');\n\nconst getConfig = (): CoreConfig | null => {\n if (typeof (window as any) !== 'undefined') {\n const Ionic = (window as any as IonicWindow).Ionic;\n if (Ionic?.config) {\n return Ionic.config;\n }\n }\n return null;\n};\n","/**\n * @description\n * NavParams are an object that exists on a page and can contain data for that particular view.\n * Similar to how data was pass to a view in V1 with `$stateParams`, NavParams offer a much more flexible\n * option with a simple `get` method.\n *\n * @usage\n * ```ts\n * import { NavParams } from '@ionic/angular';\n *\n * export class MyClass{\n *\n * constructor(navParams: NavParams){\n * // userParams is an object we have in our nav-parameters\n * navParams.get('userParams');\n * }\n *\n * }\n * ```\n */\nexport class NavParams {\n constructor(public data: { [key: string]: any } = {}) {\n console.warn(\n `[Ionic Warning]: NavParams has been deprecated in favor of using Angular's input API. Developers should migrate to either the @Input decorator or the Signals-based input API.`\n );\n }\n\n /**\n * Get the value of a nav-parameter for the current view\n *\n * ```ts\n * import { NavParams } from 'ionic-angular';\n *\n * export class MyClass{\n * constructor(public navParams: NavParams){\n * // userParams is an object we have in our nav-parameters\n * this.navParams.get('userParams');\n * }\n * }\n * ```\n *\n * @param param Which param you want to look up\n */\n get<T = any>(param: string): T {\n return this.data[param];\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable,\n InjectionToken,\n Injector,\n NgZone,\n} from '@angular/core';\nimport {\n FrameworkDelegate,\n LIFECYCLE_DID_ENTER,\n LIFECYCLE_DID_LEAVE,\n LIFECYCLE_WILL_ENTER,\n LIFECYCLE_WILL_LEAVE,\n LIFECYCLE_WILL_UNLOAD,\n} from '@ionic/core/components';\n\nimport { NavParams } from '../directives/navigation/nav-params';\n\nimport { ConfigToken } from './config';\n\n// Token for injecting the modal element\nexport const IonModalToken = new InjectionToken<HTMLIonModalElement>('IonModalToken');\n\n// TODO(FW-2827): types\n\n@Injectable()\nexport class AngularDelegate {\n private zone = inject(NgZone);\n private applicationRef = inject(ApplicationRef);\n private config = inject(ConfigToken);\n\n create(\n environmentInjector: EnvironmentInjector,\n injector: Injector,\n elementReferenceKey?: string\n ): AngularFrameworkDelegate {\n return new AngularFrameworkDelegate(\n environmentInjector,\n injector,\n this.applicationRef,\n this.zone,\n elementReferenceKey,\n this.config.useSetInputAPI ?? false\n );\n }\n}\n\nexport class AngularFrameworkDelegate implements FrameworkDelegate {\n private elRefMap = new WeakMap<HTMLElement, ComponentRef<any>>();\n private elEventsMap = new WeakMap<HTMLElement, () => void>();\n\n constructor(\n private environmentInjector: EnvironmentInjector,\n private injector: Injector,\n private applicationRef: ApplicationRef,\n private zone: NgZone,\n private elementReferenceKey?: string,\n private enableSignalsSupport?: boolean\n ) {}\n\n attachViewToDom(container: any, component: any, params?: any, cssClasses?: string[]): Promise<any> {\n return this.zone.run(() => {\n return new Promise((resolve) => {\n const componentProps = {\n ...params,\n };\n\n /**\n * Ionic Angular passes a reference to a modal\n * or popover that can be accessed using a\n * variable in the overlay component. If\n * elementReferenceKey is defined, then we should\n * pass a reference to the component using\n * elementReferenceKey as the key.\n */\n if (this.elementReferenceKey !== undefined) {\n componentProps[this.elementReferenceKey] = container;\n }\n\n const el = attachView(\n this.zone,\n this.environmentInjector,\n this.injector,\n this.applicationRef,\n this.elRefMap,\n this.elEventsMap,\n container,\n component,\n componentProps,\n cssClasses,\n this.elementReferenceKey,\n this.enableSignalsSupport\n );\n resolve(el);\n });\n });\n }\n\n removeViewFromDom(_container: any, component: any): Promise<void> {\n return this.zone.run(() => {\n return new Promise((resolve) => {\n const componentRef = this.elRefMap.get(component);\n if (componentRef) {\n componentRef.destroy();\n this.elRefMap.delete(component);\n const unbindEvents = this.elEventsMap.get(component);\n if (unbindEvents) {\n unbindEvents();\n this.elEventsMap.delete(component);\n }\n }\n resolve();\n });\n });\n }\n}\n\nexport const attachView = (\n zone: NgZone,\n environmentInjector: EnvironmentInjector,\n injector: Injector,\n applicationRef: ApplicationRef,\n elRefMap: WeakMap<HTMLElement, ComponentRef<any>>,\n elEventsMap: WeakMap<HTMLElement, () => void>,\n container: any,\n component: any,\n params: any,\n cssClasses: string[] | undefined,\n elementReferenceKey: string | undefined,\n enableSignalsSupport: boolean | undefined\n): any => {\n /**\n * Wraps the injector with a custom injector that\n * provides NavParams to the component.\n *\n * NavParams is a legacy feature from Ionic v3 that allows\n * Angular developers to provide data to a component\n * and access it by providing NavParams as a dependency\n * in the constructor.\n *\n * The modern approach is to access the data directly\n * from the component's class instance.\n */\n const providers = getProviders(params);\n\n // If this is an ion-modal, provide the modal element as an injectable\n // so components inside the modal can inject it directly\n if (container.tagName.toLowerCase() === 'ion-modal') {\n providers.push({\n provide: IonModalToken,\n useValue: container,\n });\n }\n\n const childInjector = Injector.create({\n providers,\n parent: injector,\n });\n\n const componentRef = createComponent<any>(component, {\n environmentInjector,\n elementInjector: childInjector,\n });\n\n const instance = componentRef.instance;\n const hostElement = componentRef.location.nativeElement;\n\n if (params) {\n /**\n * For modals and popovers, a reference to the component is\n * added to `params` during the call to attachViewToDom. If\n * a reference using this name is already set, this means\n * the app is trying to use the name as a component prop,\n * which will cause collisions.\n */\n if (elementReferenceKey && instance[elementReferenceKey] !== undefined) {\n console.error(\n `[Ionic Error]: ${elementReferenceKey} is a reserved property when using ${container.tagName.toLowerCase()}. Rename or remove the \"${elementReferenceKey}\" property from ${\n component.name\n }.`\n );\n }\n\n /**\n * Angular 14.1 added support for setInput\n * so we need to fall back to Object.assign\n * for Angular 14.0.\n */\n if (enableSignalsSupport === true && componentRef.setInput !== undefined) {\n const { modal, popover, ...otherParams } = params;\n /**\n * Any key/value pairs set in componentProps\n * must be set as inputs on the component instance.\n */\n for (const key in otherParams) {\n componentRef.setInput(key, otherParams[key]);\n }\n\n /**\n * Using setInput will cause an error when\n * setting modal/popover on a component that\n * does not define them as an input. For backwards\n * compatibility purposes we fall back to using\n * Object.assign for these properties.\n */\n if (modal !== undefined) {\n Object.assign(instance, { modal });\n }\n\n if (popover !== undefined) {\n Object.assign(instance, { popover });\n }\n } else {\n Object.assign(instance, params);\n }\n }\n if (cssClasses) {\n for (const cssClass of cssClasses) {\n hostElement.classList.add(cssClass);\n }\n }\n const unbindEvents = bindLifecycleEvents(zone, instance, hostElement);\n container.appendChild(hostElement);\n\n applicationRef.attachView(componentRef.hostView);\n\n elRefMap.set(hostElement, componentRef);\n elEventsMap.set(hostElement, unbindEvents);\n return hostElement;\n};\n\nconst LIFECYCLES = [\n LIFECYCLE_WILL_ENTER,\n LIFECYCLE_DID_ENTER,\n LIFECYCLE_WILL_LEAVE,\n LIFECYCLE_DID_LEAVE,\n LIFECYCLE_WILL_UNLOAD,\n];\n\nexport const bindLifecycleEvents = (zone: NgZone, instance: any, element: HTMLElement): (() => void) => {\n return zone.run(() => {\n const unregisters = LIFECYCLES.filter((eventName) => typeof instance[eventName] === 'function').map((eventName) => {\n const handler = (ev: any) => instance[eventName](ev.detail);\n element.addEventListener(eventName, handler);\n return () => element.removeEventListener(eventName, handler);\n });\n return () => unregisters.forEach((fn) => fn());\n });\n};\n\nconst NavParamsToken = new InjectionToken<any>('NavParamsToken');\n\nconst getProviders = (params: { [key: string]: any }) => {\n return [\n {\n provide: NavParamsToken,\n useValue: params,\n },\n {\n provide: NavParams,\n useFactory: provideNavParamsInjectable,\n deps: [NavParamsToken],\n },\n ];\n};\n\nconst provideNavParamsInjectable = (params: { [key: string]: any }) => {\n return new NavParams(params);\n};\n","// TODO: Is there a way we can grab this from angular-component-lib instead?\n\n/* eslint-disable */\n/* tslint:disable */\nimport { fromEvent } from 'rxjs';\n\nexport const proxyInputs = (Cmp: any, inputs: string[]) => {\n const Prototype = Cmp.prototype;\n inputs.forEach((item) => {\n Object.defineProperty(Prototype, item, {\n get() {\n return this.el[item];\n },\n set(val: any) {\n this.z.runOutsideAngular(() => (this.el[item] = val));\n },\n });\n });\n};\n\nexport const proxyMethods = (Cmp: any, methods: string[]) => {\n const Prototype = Cmp.prototype;\n methods.forEach((methodName) => {\n Prototype[methodName] = function () {\n const args = arguments;\n return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));\n };\n });\n};\n\nexport const proxyOutputs = (instance: any, el: any, events: string[]) => {\n events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));\n};\n\n// tslint:disable-next-line: only-arrow-functions\nexport function ProxyCmp(opts: { defineCustomElementFn?: () => void; inputs?: any; methods?: any }) {\n const decorator = function (cls: any) {\n const { defineCustomElementFn, inputs, methods } = opts;\n\n if (defineCustomElementFn !== undefined) {\n defineCustomElementFn();\n }\n\n if (inputs) {\n proxyInputs(cls, inputs);\n }\n if (methods) {\n proxyMethods(cls, methods);\n }\n return cls;\n };\n return decorator;\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n TemplateRef,\n} from '@angular/core';\nimport type { Components, ModalBreakpointChangeEventDetail } from '@ionic/core/components';\n\nimport { ProxyCmp, proxyOutputs } from '../utils/proxy';\n\nexport declare interface IonModal extends Components.IonModal {\n /**\n * Emitted after the modal has presented.\n **/\n ionModalDidPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has presented.\n */\n ionModalWillPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has dismissed.\n */\n ionModalWillDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal has dismissed.\n */\n ionModalDidDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal breakpoint has changed.\n */\n ionBreakpointDidChange: EventEmitter<CustomEvent<ModalBreakpointChangeEventDetail>>;\n /**\n * Emitted after the modal has presented. Shorthand for ionModalDidPresent.\n */\n didPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has presented. Shorthand for ionModalWillPresent.\n */\n willPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has dismissed. Shorthand for ionModalWillDismiss.\n */\n willDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal has dismissed. Shorthand for ionModalDidDismiss.\n */\n didDismiss: EventEmitter<CustomEvent>;\n}\n\nconst MODAL_INPUTS = [\n 'animated',\n 'keepContentsMounted',\n 'backdropBreakpoint',\n 'backdropDismiss',\n 'breakpoints',\n 'canDismiss',\n 'cssClass',\n 'enterAnimation',\n 'expandToScroll',\n 'event',\n 'focusTrap',\n 'handle',\n 'handleBehavior',\n 'initialBreakpoint',\n 'isOpen',\n 'keyboardClose',\n 'leaveAnimation',\n 'mode',\n 'presentingElement',\n 'showBackdrop',\n 'translucent',\n 'trigger',\n];\n\nconst MODAL_METHODS = [\n 'present',\n 'dismiss',\n 'onDidDismiss',\n 'onWillDismiss',\n 'setCurrentBreakpoint',\n 'getCurrentBreakpoint',\n];\n\n@ProxyCmp({\n inputs: MODAL_INPUTS,\n methods: MODAL_METHODS,\n})\n/**\n * @Component extends from @Directive\n * so by defining the inputs here we\n * do not need to re-define them for the\n * lazy loaded popover.\n */\n@Directive({\n selector: 'ion-modal',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: MODAL_INPUTS,\n})\n\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonModal {\n // TODO(FW-2827): type\n @ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>;\n\n isCmpOpen = false;\n\n protected el: HTMLElement;\n\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n this.el = r.nativeElement;\n\n this.el.addEventListener('ionMount', () => {\n this.isCmpOpen = true;\n c.detectChanges();\n });\n this.el.addEventListener('didDismiss', () => {\n this.isCmpOpen = false;\n c.detectChanges();\n });\n proxyOutputs(this, this.el, [\n 'ionModalDidPresent',\n 'ionModalWillPresent',\n 'ionModalWillDismiss',\n 'ionModalDidDismiss',\n 'ionBreakpointDidChange',\n 'didPresent',\n 'willPresent',\n 'willDismiss',\n 'didDismiss',\n ]);\n }\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n TemplateRef,\n} from '@angular/core';\nimport type { Components } from '@ionic/core/components';\n\nimport { ProxyCmp, proxyOutputs } from '../utils/proxy';\n\nexport declare interface IonPopover extends Components.IonPopover {\n /**\n * Emitted after the popover has presented.\n */\n ionPopoverDidPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the popover has presented.\n */\n ionPopoverWillPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed.\n */\n ionPopoverWillDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed.\n */\n ionPopoverDidDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has presented. Shorthand for ionPopoverDidPresent.\n */\n didPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the popover has presented. Shorthand for ionPopoverWillPresent.\n */\n willPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has presented. Shorthand for ionPopoverWillDismiss.\n */\n willDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed. Shorthand for ionPopoverDidDismiss.\n */\n didDismiss: EventEmitter<CustomEvent>;\n}\n\nconst POPOVER_INPUTS = [\n 'alignment',\n 'animated',\n 'arrow',\n 'keepContentsMounted',\n 'backdropDismiss',\n 'cssClass',\n 'dismissOnSelect',\n 'enterAnimation',\n 'event',\n 'focusTrap',\n 'isOpen',\n 'keyboardClose',\n 'leaveAnimation',\n 'mode',\n 'showBackdrop',\n 'translucent',\n 'trigger',\n 'triggerAction',\n 'reference',\n 'size',\n 'side',\n];\n\nconst POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];\n\n@ProxyCmp({\n inputs: POPOVER_INPUTS,\n methods: POPOVER_METHODS,\n})\n/**\n * @Component extends from @Directive\n * so by defining the inputs here we\n * do not need to re-define them for the\n * lazy loaded popover.\n */\n@Directive({\n selector: 'ion-popover',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: POPOVER_INPUTS,\n})\n\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonPopover {\n // TODO(FW-2827): type\n @ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>;\n\n isCmpOpen = false;\n\n protected el: HTMLElement;\n\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n this.el = r.nativeElement;\n\n this.el.addEventListener('ionMount', () => {\n this.isCmpOpen = true;\n c.detectChanges();\n });\n this.el.addEventListener('didDismiss', () => {\n this.isCmpOpen = false;\n c.detectChanges();\n });\n proxyOutputs(this, this.el, [\n 'ionPopoverDidPresent',\n 'ionPopoverWillPresent',\n 'ionPopoverWillDismiss',\n 'ionPopoverDidDismiss',\n 'didPresent',\n 'willPresent',\n 'willDismiss',\n 'didDismiss',\n ]);\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport type { AnimationBuilder, NavDirection, RouterDirection } from '@ionic/core/components';\n\nexport const insertView = (views: RouteView[], view: RouteView, direction: RouterDirection): RouteView[] => {\n if (direction === 'root') {\n return setRoot(views, view);\n } else if (direction === 'forward') {\n return setForward(views, view);\n } else {\n return setBack(views, view);\n }\n};\n\nconst setRoot = (views: RouteView[], view: RouteView) => {\n views = views.filter((v) => v.stackId !== view.stackId);\n views.push(view);\n return views;\n};\n\nconst setForward = (views: RouteView[], view: RouteView) => {\n const index = views.indexOf(view);\n if (index >= 0) {\n views = views.filter((v) => v.stackId !== view.stackId || v.id <= view.id);\n } else {\n views.push(view);\n }\n return views;\n};\n\nconst setBack = (views: RouteView[], view: RouteView) => {\n const index = views.indexOf(view);\n if (index >= 0) {\n return views.filter((v) => v.stackId !== view.stackId || v.id <= view.id);\n } else {\n return setRoot(views, view);\n }\n};\n\nexport const getUrl = (router: Router, activatedRoute: ActivatedRoute): string => {\n const urlTree = router.createUrlTree(['.'], { relativeTo: activatedRoute });\n return router.serializeUrl(urlTree);\n};\n\nexport const isTabSwitch = (enteringView: RouteView, leavingView: RouteView | undefined): boolean => {\n if (!leavingView) {\n return true;\n }\n return enteringView.stackId !== leavingView.stackId;\n};\n\nexport const computeStackId = (prefixUrl: string[] | undefined, url: string): string | undefined => {\n if (!prefixUrl) {\n return undefined;\n }\n const segments = toSegments(url);\n for (let i = 0; i < segments.length; i++) {\n if (i >= prefixUrl.length) {\n return segments[i];\n }\n if (segments[i] !== prefixUrl[i]) {\n return undefined;\n }\n }\n return undefined;\n};\n\nexport const toSegments = (path: string): string[] => {\n return path\n .split('/')\n .map((s) => s.trim())\n .filter((s) => s !== '');\n};\n\nexport const destroyView = (view: RouteView | undefined): void => {\n if (view) {\n view.ref.destroy();\n view.unlistenEvents();\n }\n};\n\nexport interface StackWillChangeEvent {\n enteringView: RouteView;\n /**\n * `true` if the event is trigged as a result of a switch\n * between tab navigation stacks.\n */\n tabSwitch: boolean;\n}\n\nexport interface StackDidChangeEvent {\n enteringView: RouteView;\n direction: RouterDirection;\n animation: NavDirection | undefined;\n /**\n * `true` if the event is trigged as a result of a switch\n * between tab navigation stacks.\n */\n tabSwitch: boolean;\n}\n\n// TODO(FW-2827): types\nexport interface RouteView {\n id: number;\n url: string;\n stackId: string | undefined;\n element: HTMLElement;\n ref: ComponentRef<any>;\n savedData?: any;\n savedExtras?: NavigationExtras;\n unlistenEvents: () => void;\n animationBuilder?: AnimationBuilder;\n}\n","import { Location } from '@angular/common';\nimport { ComponentRef, NgZone } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport type { AnimationBuilder, RouterDirection } from '@ionic/core/components';\n\nimport { bindLifecycleEvents } from '../../providers/angular-delegate';\nimport { NavController } from '../../providers/nav-controller';\n\nimport {\n RouteView,\n StackDidChangeEvent,\n computeStackId,\n destroyView,\n getUrl,\n insertView,\n isTabSwitch,\n toSegments,\n} from './stack-utils';\n\n// TODO(FW-2827): types\n\nexport class StackController {\n private views: RouteView[] = [];\n private runningTask?: Promise<any>;\n private skipTransition = false;\n private tabsPrefix: string[] | undefined;\n private activeView: RouteView | undefined;\n private nextId = 0;\n\n constructor(\n tabsPrefix: string | undefined,\n private containerEl: HTMLIonRouterOutletElement,\n private router: Router,\n private navCtrl: NavController,\n private zone: NgZone,\n private location: Location\n ) {\n this.tabsPrefix = tabsPrefix !== undefined ? toSegments(tabsPrefix) : undefined;\n }\n\n createView(ref: ComponentRef<any>, activatedRoute: ActivatedRoute): RouteView {\n const url = getUrl(this.router, activatedRoute);\n const element = ref?.location?.nativeElement as HTMLElement;\n const unlistenEvents = bindLifecycleEvents(this.zone, ref.instance, element);\n return {\n id: this.nextId++,\n stackId: computeStackId(this.tabsPrefix, url),\n unlistenEvents,\n element,\n ref,\n url,\n };\n }\n\n getExistingView(activatedRoute: ActivatedRoute): RouteView | undefined {\n const activatedUrlKey = getUrl(this.router, activatedRoute);\n const view = this.views.find((vw) => vw.url === activatedUrlKey);\n if (view) {\n view.ref.changeDetectorRef.reattach();\n }\n return view;\n }\n\n setActive(enteringView: RouteView): Promise<StackDidChangeEvent> {\n const consumeResult = this.navCtrl.consumeTransition();\n let { direction, animation, animationBuilder } = consumeResult;\n const leavingView = this.activeView;\n const tabSwitch = isTabSwitch(enteringView, leavingView);\n if (tabSwitch) {\n direction = 'back';\n animation = undefined;\n }\n\n const viewsSnapshot = this.views.slice();\n\n let currentNavigation;\n\n const router = this.router as any;\n\n // Angular >= 7.2.0\n if (router.getCurrentNavigation) {\n currentNavigation = router.getCurrentNavigation();\n\n // Angular < 7.2.0\n } else if (router.navigations?.value) {\n currentNavigation = router.navigations.value;\n }\n\n /**\n * If the navigation action\n * sets `replaceUrl: true`\n * then we need to make sure\n * we remove the last item\n * from our views stack\n */\n if (currentNavigation?.extras?.replaceUrl) {\n if (this.views.length > 0) {\n this.views.splice(-1, 1);\n }\n }\n\n const reused = this.views.includes(enteringView);\n const views = this.insertView(enteringView, direction);\n\n // Trigger change detection before transition starts\n // This will call ngOnInit() the first time too, just after the view\n // was attached to the dom, but BEFORE the transition starts\n if (!reused) {\n enteringView.ref.changeDetectorRef.detectChanges();\n }\n\n /**\n * If we are going back from a page that\n * was presented using a custom animation\n * we should default to using that\n * unless the developer explicitly\n * provided another animation.\n */\n const customAnimation = enteringView.animationBuilder;\n if (animationBuilder === undefined && direction === 'back' && !tabSwitch && customAnimation !== undefined) {\n animationBuilder = customAnimation;\n }\n\n /**\n * Save any custom animation so that navigating\n * back will use this custom animation by default.\n */\n if (leavingView) {\n leavingView.animationBuilder = animationBuilder;\n }\n\n // Wait until previous transitions finish\n return this.zone.runOutsideAngular(() => {\n return this.wait(() => {\n // disconnect leaving page from change detection to\n // reduce jank during the page transition\n if (leavingView) {\n leavingView.ref.changeDetectorRef.detach();\n }\n // In case the enteringView is the same as the leavingPage we need to reattach()\n enteringView.ref.changeDetectorRef.reattach();\n\n return this.transition(enteringView, leavingView, animation, this.canGoBack(1), false, animationBuilder)\n .then(() => cleanupAsync(enteringView, views, viewsSnapshot, this.location, this.zone))\n .then(() => ({\n enteringView,\n direction,\n animation,\n tabSwitch,\n }));\n });\n });\n }\n\n canGoBack(deep: number, stackId = this.getActiveStackId()): boolean {\n return this.getStack(stackId).length > deep;\n }\n\n pop(deep: number, stackId = this.getActiveStackId()): Promise<boolean> {\n return this.zone.run(() => {\n const views = this.getStack(stackId);\n if (views.length <= deep) {\n return Promise.resolve(false);\n }\n const view = views[views.length - deep - 1];\n let url = view.url;\n\n const viewSavedData = view.savedData;\n if (viewSavedData) {\n const primaryOutlet = viewSavedData.get('primary');\n if (primaryOutlet?.route?._routerState?.snapshot.url) {\n url = primaryOutlet.route._routerState.snapshot.url;\n }\n }\n const { animationBuilder } = this.navCtrl.consumeTransition();\n return this.navCtrl.navigateBack(url, { ...view.savedExtras, animation: animationBuilder }).then(() => true);\n });\n }\n\n startBackTransition(): Promise<boolean> | Promise<void> {\n const leavingView = this.activeView;\n if (leavingView) {\n const views = this.getStack(leavingView.stackId);\n const enteringView = views[views.length - 2];\n const customAnimation = enteringView.animationBuilder;\n\n return this.wait(() => {\n return this.transition(\n enteringView, // entering view\n leavingView, // leaving view\n 'back',\n this.canGoBack(2),\n true,\n customAnimation\n );\n });\n }\n return Promise.resolve();\n }\n\n endBackTransition(shouldComplete: boolean): void {\n if (shouldComplete) {\n this.skipTransition = true;\n this.pop(1);\n } else if (this.activeView) {\n cleanup(this.activeView, this.views, this.views, this.location, this.zone);\n }\n }\n\n getLastUrl(stackId?: string): RouteView | undefined {\n const views = this.getStack(stackId);\n return views.length > 0 ? views[views.length - 1] : undefined;\n }\n\n /**\n * @internal\n */\n getRootUrl(stackId?: string): RouteView | undefined {\n const views = this.getStack(stackId);\n return views.length > 0 ? views[0] : undefined;\n }\n\n getActiveStackId(): string | undefined {\n return this.activeView ? this.activeView.stackId : undefined;\n }\n\n /**\n * @internal\n */\n getActiveView(): RouteView | undefined {\n return this.activeView;\n }\n\n hasRunningTask(): boolean {\n return this.runningTask !== undefined;\n }\n\n destroy(): void {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.containerEl = undefined!;\n this.views.forEach(destroyView);\n this.activeView = undefined;\n this.views = [];\n }\n\n private getStack(stackId: string | undefined) {\n return this.views.filter((v) => v.stackId === stackId);\n }\n\n private insertView(enteringView: RouteView, direction: RouterDirection) {\n this.activeView = enteringView;\n this.views = insertView(this.views, enteringView, direction);\n return this.views.slice();\n }\n\n private transition(\n enteringView: RouteView | undefined,\n leavingView: RouteView | undefined,\n direction: 'forward' | 'back' | undefined,\n showGoBack: boolean,\n progressAnimation: boolean,\n animationBuilder?: AnimationBuilder\n ) {\n if (this.skipTransition) {\n this.skipTransition = false;\n return Promise.resolve(false);\n }\n if (leavingView === enteringView) {\n return Promise.resolve(false);\n }\n const enteringEl = enteringView ? enteringView.element : undefined;\n const leavingEl = leavingView ? leavingView.element : undefined;\n const containerEl = this.containerEl;\n if (enteringEl && enteringEl !== leavingEl) {\n enteringEl.classList.add('ion-page');\n enteringEl.classList.add('ion-page-invisible');\n\n if ((containerEl as any).commit) {\n return containerEl.commit(enteringEl, leavingEl, {\n duration: direction === undefined ? 0 : undefined,\n direction,\n showGoBack,\n progressAnimation,\n animationBuilder,\n });\n }\n }\n return Promise.resolve(false);\n }\n\n private async wait<T>(task: () => Promise<T>): Promise<T> {\n if (this.runningTask !== undefined) {\n await this.runningTask;\n this.runningTask = undefined;\n }\n const promise = (this.runningTask = task());\n promise.finally(() => (this.runningTask = undefined));\n return promise;\n }\n}\n\nconst cleanupAsync = (\n activeRoute: RouteView,\n views: RouteView[],\n viewsSnapshot: RouteView[],\n location: Location,\n zone: NgZone\n) => {\n if (typeof (requestAnimationFrame as any) === 'function') {\n return new Promise<void>((resolve) => {\n requestAnimationFrame(() => {\n cleanup(activeRoute, views, viewsSnapshot, location, zone);\n resolve();\n });\n });\n }\n return Promise.resolve();\n};\n\nconst cleanup = (\n activeRoute: RouteView,\n views: RouteView[],\n viewsSnapshot: RouteView[],\n location: Location,\n zone: NgZone\n) => {\n /**\n * Re-enter the Angular zone when destroying page components. This will allow\n * lifecycle events (`ngOnDestroy`) to be run inside the Angular zone.\n */\n zone.run(() => viewsSnapshot.filter((view) => !views.includes(view)).forEach(destroyView));\n\n views.forEach((view) => {\n /**\n * In the event that a user navigated multiple\n * times in rapid succession, we want to make sure\n * we don't pre-emptively detach a view while\n * it is in mid-transition.\n *\n * In this instance we also do not care about query\n * params or fragments as it will be the same view regardless\n */\n const locationWithoutParams = location.path().split('?')[0];\n const locationWithoutFragment = locationWithoutParams.split('#')[0];\n\n if (view !== activeRoute && view.url !== locationWithoutFragment) {\n const element = view.element;\n element.setAttribute('aria-hidden', 'true');\n element.classList.add('ion-page-hidden');\n view.ref.changeDetectorRef.detach();\n }\n });\n};\n","import { Location } from '@angular/common';\nimport {\n ComponentRef,\n ElementRef,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n inject,\n Attribute,\n Directive,\n EventEmitter,\n Optional,\n Output,\n SkipSelf,\n EnvironmentInjector,\n Input,\n InjectionToken,\n Injectable,\n reflectComponentType,\n} from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport { OutletContext, Router, ActivatedRoute, ChildrenOutletContexts, PRIMARY_OUTLET, Data } from '@angular/router';\nimport { componentOnReady } from '@ionic/core/components';\nimport type { AnimationBuilder } from '@ionic/core/components';\nimport { Observable, BehaviorSubject, Subscription, combineLatest, of } from 'rxjs';\nimport { distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\n\nimport { Config } from '../../providers/config';\nimport { NavController } from '../../providers/nav-controller';\n\nimport { StackController } from './stack-controller';\nimport { RouteView, StackDidChangeEvent, StackWillChangeEvent, getUrl, isTabSwitch } from './stack-utils';\n\n// TODO(FW-2827): types\n\n@Directive({\n selector: 'ion-router-outlet',\n exportAs: 'outlet',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['animated', 'animation', 'mode', 'swipeGesture'],\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class IonRouterOutlet implements OnDestroy, OnInit {\n abstract outletContent: any;\n\n nativeEl: HTMLIonRouterOutletElement;\n activatedView: RouteView | null = null;\n tabsPrefix: string | undefined;\n\n private _swipeGesture?: boolean;\n private stackCtrl: StackController;\n\n // Maintain map of activated route proxies for each component instance\n private proxyMap = new WeakMap<any, ActivatedRoute>();\n // Keep the latest activated route in a subject for the proxy routes to switch map to\n private currentActivatedRoute$ = new BehaviorSubject<{ component: any; activatedRoute: ActivatedRoute } | null>(null);\n\n private activated: ComponentRef<any> | null = null;\n /** @internal */\n get activatedComponentRef(): ComponentRef<any> | null {\n return this.activated;\n }\n private _activatedRoute: ActivatedRoute | null = null;\n\n /**\n * The name of the outlet\n */\n @Input() name = PRIMARY_OUTLET;\n\n /** @internal */\n @Output() stackWillChange = new EventEmitter<StackWillChangeEvent>();\n /** @internal */\n @Output() stackDidChange = new EventEmitter<StackDidChangeEvent>();\n\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('activate') activateEvents = new EventEmitter<any>();\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('deactivate') deactivateEvents = new EventEmitter<any>();\n\n private parentContexts = inject(ChildrenOutletContexts);\n private location = inject(ViewContainerRef);\n private environmentInjector = inject(EnvironmentInjector);\n private inputBinder = inject(INPUT_BINDER, { optional: true });\n /** @nodoc */\n readonly supportsBindingToComponentInputs = true;\n\n // Ionic providers\n private config = inject(Config);\n private navCtrl = inject(NavController);\n\n set animation(animation: AnimationBuilder) {\n this.nativeEl.animation = animation;\n }\n\n set animated(animated: boolean) {\n this.nativeEl.animated = animated;\n }\n\n set swipeGesture(swipe: boolean) {\n this._swipeGesture = swipe;\n\n this.nativeEl.swipeHandler = swipe\n ? {\n canStart: () => this.stackCtrl.canGoBack(1) && !this.stackCtrl.hasRunningTask(),\n onStart: () => this.stackCtrl.startBackTransition(),\n onEnd: (shouldContinue) => this.stackCtrl.endBackTransition(shouldContinue),\n }\n : undefined;\n }\n\n constructor(\n @Attribute('name') name: string,\n @Optional() @Attribute('tabs') tabs: string,\n commonLocation: Location,\n elementRef: ElementRef,\n router: Router,\n zone: NgZone,\n activatedRoute: ActivatedRoute,\n @SkipSelf() @Optional() readonly parentOutlet?: IonRouterOutlet\n ) {\n this.nativeEl = elementRef.nativeElement;\n this.name = name || PRIMARY_OUTLET;\n this.tabsPrefix = tabs === 'true' ? getUrl(router, activatedRoute) : undefined;\n this.stackCtrl = new StackController(this.tabsPrefix, this.nativeEl, router, this.navCtrl, zone, commonLocation);\n this.parentContexts.onChildOutletCreated(this.name, this as any);\n }\n\n ngOnDestroy(): void {\n this.stackCtrl.destroy();\n this.inputBinder?.unsubscribeFromRouteData(this);\n }\n\n getContext(): OutletContext | null {\n return this.parentContexts.getContext(this.name);\n }\n\n ngOnInit(): void {\n this.initializeOutletWithName();\n }\n\n // Note: Ionic deviates from the Angular Router implementation here\n private initializeOutletWithName() {\n if (!this.activated) {\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const context = this.getContext();\n if (context?.route) {\n this.activateWith(context.route, context.injector);\n }\n }\n\n new Promise((resolve) => componentOnReady(this.nativeEl, resolve)).then(() => {\n if (this._swipeGesture === undefined) {\n this.swipeGesture = this.config.getBoolean('swipeBackEnabled', (this.nativeEl as any).mode === 'ios');\n }\n });\n }\n\n get isActivated(): boolean {\n return !!this.activated;\n }\n\n get component(): Record<string, unknown> {\n if (!this.activated) {\n throw new Error('Outlet is not activated');\n }\n return this.activated.instance;\n }\n\n get activatedRoute(): ActivatedRoute {\n if (!this.activated) {\n throw new Error('Outlet is not activated');\n }\n return this._activatedRoute as ActivatedRoute;\n }\n\n get activatedRouteData(): Data {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n detach(): ComponentRef<any> {\n throw new Error('incompatible reuse strategy');\n }\n\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attach(_ref: ComponentRef<any>, _activatedRoute: ActivatedRoute): void {\n throw new Error('incompatible reuse strategy');\n }\n\n deactivate(): void {\n if (this.activated) {\n if (this.activatedView) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const context = this.getContext()!;\n this.activatedView.savedData = new Map(context.children['contexts']);\n\n /**\n * Angular v11.2.10 introduced a change\n * where this route context is cleared out when\n * a router-outlet is deactivated, However,\n * we need this route information in order to\n * return a user back to the correct tab when\n * leaving and then going back to the tab context.\n */\n const primaryOutlet = this.activatedView.savedData.get('primary');\n if (primaryOutlet && context.route) {\n primaryOutlet.route = { ...context.route };\n }\n\n /**\n * Ensure we are saving the NavigationExtras\n * data otherwise it will be lost\n */\n this.activatedView.savedExtras = {};\n if (context.route) {\n const contextSnapshot = context.route.snapshot;\n\n this.activatedView.savedExtras.queryParams = contextSnapshot.queryParams;\n (this.activatedView.savedExtras.fragment as string | null) = contextSnapshot.fragment;\n }\n }\n const c = this.component;\n this.activatedView = null;\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n\n activateWith(activatedRoute: ActivatedRoute, environmentInjector: EnvironmentInjector | null): void {\n if (this.isActivated) {\n throw new Error('Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n\n let cmpRef: any;\n let enteringView = this.stackCtrl.getExistingView(activatedRoute);\n if (enteringView) {\n cmpRef = this.activated = enteringView.ref;\n const saved = enteringView.savedData;\n if (saved) {\n // self-restore\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const context = this.getContext()!;\n context.children['contexts'] = saved;\n }\n // Updated activated route proxy for this component\n this.updateActivatedRouteProxy(cmpRef.instance, activatedRoute);\n } else {\n const snapshot = (activatedRoute as any)._futureSnapshot;\n\n /**\n * Angular 14 introduces a new `loadComponent` property to the route config.\n * This function will assign a `component` property to the route snapshot.\n * We check for the presence of this property to determine if the route is\n * using standalone components.\n */\n const childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n\n // We create an activated route proxy object that will maintain future updates for this component\n // over its lifecycle in the stack.\n const component$ = new BehaviorSubject<any>(null);\n const activatedRouteProxy = this.createActivatedRouteProxy(component$, activatedRoute);\n\n const injector = new OutletInjector(activatedRouteProxy, childContexts, this.location.injector);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const component = snapshot.routeConfig!.component ?? snapshot.component;\n\n /**\n * View components need to be added as a child of ion-router-outlet\n * for page transitions and swipe to go back.\n * However, createComponent mounts components as siblings of the\n * ViewContainerRef. As a result, outletContent must reference\n * an ng-container inside of ion-router-outlet and not\n * ion-router-outlet itself.\n */\n cmpRef = this.activated = this.outletContent.createComponent(component, {\n index: this.outletContent.length,\n injector,\n environmentInjector: environmentInjector ?? this.environmentInjector,\n });\n\n // Once the component is created we can push it to our local subject supplied to the proxy\n component$.next(cmpRef.instance);\n\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n\n /**\n * At this point this.activated has been set earlier\n * in this function, so it is guaranteed to be non-null.\n */\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n enteringView = this.stackCtrl.createView(this.activated!, activatedRoute);\n\n // Store references to the proxy by component\n this.proxyMap.set(cmpRef.instance, activatedRouteProxy);\n this.currentActivatedRoute$.next({ component: cmpRef.instance, activatedRoute });\n }\n\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n\n this.activatedView = enteringView;\n\n /**\n * The top outlet is set prior to the entering view's transition completing,\n * so that when we have nested outlets (e.g. ion-tabs inside an ion-router-outlet),\n * the tabs outlet will be assigned as the top outlet when a view inside tabs is\n * activated.\n *\n * In this scenario, activeWith is called for both the tabs and the root router outlet.\n * To avoid a race condition, we assign the top outlet synchronously.\n */\n this.navCtrl.setTopOutlet(this);\n\n const leavingView = this.stackCtrl.getActiveView();\n\n this.stackWillChange.emit({\n enteringView,\n tabSwitch: isTabSwitch(enteringView, leavingView),\n });\n\n this.stackCtrl.setActive(enteringView).then((data) => {\n this.activateEvents.emit(cmpRef.instance);\n this.stackDidChange.emit(data);\n });\n }\n\n /**\n * Returns `true` if there are pages in the stack to go back.\n */\n canGoBack(deep = 1, stackId?: string): boolean {\n return this.stackCtrl.canGoBack(deep, stackId);\n }\n\n /**\n * Resolves to `true` if it the outlet was able to sucessfully pop the last N pages.\n */\n pop(deep = 1, stackId?: string): Promise<boolean> {\n return this.stackCtrl.pop(deep, stackId);\n }\n\n /**\n * Returns the URL of the active page of each stack.\n */\n getLastUrl(stackId?: string): string | undefined {\n const active = this.stackCtrl.getLastUrl(stackId);\n return active ? active.url : undefined;\n }\n\n /**\n * Returns the RouteView of the active page of each stack.\n * @internal\n */\n getLastRouteView(stackId?: string): RouteView | undefined {\n return this.stackCtrl.getLastUrl(stackId);\n }\n\n /**\n * Returns the root view in the tab stack.\n * @internal\n */\n getRootView(stackId?: string): RouteView | undefined {\n return this.stackCtrl.getRootUrl(stackId);\n }\n\n /**\n * Returns the active stack ID. In the context of ion-tabs, it means the active tab.\n */\n getActiveStackId(): string | undefined {\n return this.stackCtrl.getActiveStackId();\n }\n\n /**\n * Since the activated route can change over the life time of a component in an ion router outlet, we create\n * a proxy so that we can update the values over time as a user navigates back to components already in the stack.\n */\n private createActivatedRouteProxy(component$: Observable<any>, activatedRoute: ActivatedRoute): ActivatedRoute {\n const proxy: any = new ActivatedRoute();\n\n proxy._futureSnapshot = (activatedRoute as any)._futureSnapshot;\n proxy._routerState = (activatedRoute as any)._routerState;\n proxy.snapshot = activatedRoute.snapshot;\n proxy.outlet = activatedRoute.outlet;\n proxy.component = activatedRoute.component;\n\n // Setup wrappers for the observables so consumers don't have to worry about switching to new observables as the state updates\n (proxy as any)._paramMap = this.proxyObservable(component$, 'paramMap');\n (proxy as any)._queryParamMap = this.proxyObservable(component$, 'queryParamMap');\n proxy.url = this.proxyObservable(component$, 'url');\n proxy.params = this.proxyObservable(component$, 'params');\n proxy.queryParams = this.proxyObservable(component$, 'queryParams');\n proxy.fragment = this.proxyObservable(component$, 'fragment');\n proxy.data = this.proxyObservable(component$, 'data');\n\n return proxy as ActivatedRoute;\n }\n\n /**\n * Create a wrapped observable that will switch to the latest activated route matched by the given component\n */\n private proxyObservable(component$: Observable<any>, path: string): Observable<any> {\n return component$.pipe(\n // First wait until the component instance is pushed\n filter((component) => !!component),\n switchMap((component) =>\n this.currentActivatedRoute$.pipe(\n filter((current) => current !== null && current.component === component),\n switchMap((current) => current && (current.activatedRoute as any)[path]),\n distinctUntilChanged()\n )\n )\n );\n }\n\n /**\n * Updates the activated route proxy for the given component to the new incoming router state\n */\n private updateActivatedRouteProxy(component: any, activatedRoute: ActivatedRoute): void {\n const proxy = this.proxyMap.get(component);\n if (!proxy) {\n throw new Error(`Could not find activated route proxy for view`);\n }\n\n (proxy as any)._futureSnapshot = (activatedRoute as any)._futureSnapshot;\n (proxy as any)._routerState = (activatedRoute as any)._routerState;\n proxy.snapshot = activatedRoute.snapshot;\n proxy.outlet = activatedRoute.outlet;\n proxy.component = activatedRoute.component;\n\n this.currentActivatedRoute$.next({ component, activatedRoute });\n }\n}\n\nclass OutletInjector implements Injector {\n constructor(private route: ActivatedRoute, private childContexts: ChildrenOutletContexts, private parent: Injector) {}\n\n get(token: any, notFoundValue?: any): any {\n if (token === ActivatedRoute) {\n return this.route;\n }\n\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n\n return this.parent.get(token, notFoundValue);\n }\n}\n\n// TODO: FW-4785 - Remove this once Angular 15 support is dropped\nconst INPUT_BINDER = new InjectionToken<RoutedComponentInputBinder>('');\n\n/**\n * Injectable used as a tree-shakable provider for opting in to binding router data to component\n * inputs.\n *\n * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or\n * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,\n * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.\n * Importantly, when an input does not have an item in the route data with a matching key, this\n * input is set to `undefined`. If it were not done this way, the previous information would be\n * retained if the data got removed from the route (i.e. if a query parameter is removed).\n *\n * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that\n * the subscriptions are cleaned up.\n */\n@Injectable()\nclass RoutedComponentInputBinder {\n private outletDataSubscriptions = new Map<IonRouterOutlet, Subscription>();\n\n bindActivatedRouteToOutletComponent(outlet: IonRouterOutlet): void {\n this.unsubscribeFromRouteData(outlet);\n this.subscribeToRouteData(outlet);\n }\n\n unsubscribeFromRouteData(outlet: IonRouterOutlet): void {\n this.outletDataSubscriptions.get(outlet)?.unsubscribe();\n this.outletDataSubscriptions.delete(outlet);\n }\n\n private subscribeToRouteData(outlet: IonRouterOutlet) {\n const { activatedRoute } = outlet;\n const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data])\n .pipe(\n switchMap(([queryParams, params, data], index) => {\n data = { ...queryParams, ...params, ...data };\n // Get the first result from the data subscription synchronously so it's available to\n // the component as soon as possible (and doesn't require a second change detection).\n if (index === 0) {\n return of(data);\n }\n // Promise.resolve is used to avoid synchronously writing the wrong data when\n // two of the Observables in the `combineLatest` stream emit one after\n // another.\n return Promise.resolve(data);\n })\n )\n .subscribe((data) => {\n // Outlet may have been deactivated or changed names to be associated with a different\n // route\n if (\n !outlet.isActivated ||\n !outlet.activatedComponentRef ||\n outlet.activatedRoute !== activatedRoute ||\n activatedRoute.component === null\n ) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n\n const mirror = reflectComponentType(activatedRoute.component);\n if (!mirror) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n\n for (const { templateName } of mirror.inputs) {\n outlet.activatedComponentRef.setInput(templateName, data[templateName]);\n }\n });\n\n this.outletDataSubscriptions.set(outlet, dataSubscription);\n }\n}\n\nexport const provideComponentInputBinding = (): Provider => {\n return {\n provide: INPUT_BINDER,\n useFactory: componentInputBindingFactory,\n deps: [Router],\n };\n};\n\nfunction componentInputBindingFactory(router?: Router) {\n /**\n * We cast the router to any here, since the componentInputBindingEnabled\n * property is not available until Angular v16.\n */\n if ((router as any)?.componentInputBindingEnabled) {\n return new RoutedComponentInputBinder();\n }\n return null;\n}\n","declare const __zone_symbol__requestAnimationFrame: any;\ndeclare const requestAnimationFrame: any;\n\nexport const raf = (h: any): any => {\n if (typeof __zone_symbol__requestAnimationFrame === 'function') {\n return __zone_symbol__requestAnimationFrame(h);\n }\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame(h);\n }\n return setTimeout(h);\n};\n","import { AfterViewInit, ElementRef, Injector, OnDestroy, Directive, HostListener } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { raf } from '../../utils/util';\n\n// TODO(FW-2827): types\n\n@Directive()\nexport class ValueAccessor implements ControlValueAccessor, AfterViewInit, OnDestroy {\n private onChange: (value: any) => void = () => {\n /**/\n };\n private onTouched: () => void = () => {\n /**/\n };\n protected lastValue: any;\n private statusChanges?: Subscription;\n\n constructor(protected injector: Injector, protected elementRef: ElementRef) {}\n\n writeValue(value: any): void {\n this.elementRef.nativeElement.value = this.lastValue = value;\n setIonicClasses(this.elementRef);\n }\n\n /**\n * Notifies the ControlValueAccessor of a change in the value of the control.\n *\n * This is called by each of the ValueAccessor directives when we want to update\n * the status and validity of the form control. For example with text components this\n * is called when the ionInput event is fired. For select components this is called\n * when the ionChange event is fired.\n *\n * This also updates the Ionic form status classes on the element.\n *\n * @param el The component element.\n * @param value The new value of the control.\n */\n handleValueChange(el: HTMLElement, value: any): void {\n if (el === this.elementRef.nativeElement) {\n if (value !== this.lastValue) {\n this.lastValue = value;\n this.onChange(value);\n }\n setIonicClasses(this.elementRef);\n }\n }\n\n @HostListener('ionBlur', ['$event.target'])\n _handleBlurEvent(el: any): void {\n if (el === this.elementRef.nativeElement) {\n this.onTouched();\n setIonicClasses(this.elementRef);\n\n // When ion-radio is blurred, el and this.elementRef.nativeElement are\n // different so we need to check if the closest ion-radio-group is the same\n // as this.elementRef.nativeElement and if so, we need to mark the radio group\n // as touched\n } else if (el.closest('ion-radio-group') === this.elementRef.nativeElement) {\n this.onTouched();\n }\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.elementRef.nativeElement.disabled = isDisabled;\n }\n\n ngOnDestroy(): void {\n if (this.statusChanges) {\n this.statusChanges.unsubscribe();\n }\n }\n\n ngAfterViewInit(): void {\n let ngControl;\n try {\n ngControl = this.injector.get<NgControl>(NgControl);\n } catch {\n /* No FormControl or ngModel binding */\n }\n\n if (!ngControl) {\n return;\n }\n\n // Listen for changes in validity, disabled, or pending states\n if (ngControl.statusChanges) {\n this.statusChanges = ngControl.statusChanges.subscribe(() => setIonicClasses(this.elementRef));\n }\n\n /**\n * TODO FW-2787: Remove this in favor of https://github.com/angular/angular/issues/10887\n * whenever it is implemented.\n */\n const formControl = ngControl.control as any;\n if (formControl) {\n const methodsToPatch = ['markAsTouched', 'markAllAsTouched', 'markAsUntouched', 'markAsDirty', 'markAsPristine'];\n methodsToPatch.forEach((method) => {\n if (typeof formControl[method] !== 'undefined') {\n const oldFn = formControl[method].bind(formControl);\n formControl[method] = (...params: any[]) => {\n oldFn(...params);\n setIonicClasses(this.elementRef);\n };\n }\n });\n }\n }\n}\n\nexport const setIonicClasses = (element: ElementRef): void => {\n raf(() => {\n const input = element.nativeElement as HTMLInputElement;\n const hasValue = input.value != null && input.value.toString().length > 0;\n const classes = getClasses(input);\n setClasses(input, classes);\n const item = input.closest('ion-item');\n if (item) {\n if (hasValue) {\n setClasses(item, [...classes, 'item-has-value']);\n } else {\n setClasses(item, classes);\n }\n }\n });\n};\n\nconst getClasses = (element: HTMLElement) => {\n const classList = element.classList;\n const classes: string[] = [];\n for (let i = 0; i < classList.length; i++) {\n const item = classList.item(i);\n if (item !== null && startsWith(item, 'ng-')) {\n classes.push(`ion-${item.substring(3)}`);\n }\n }\n return classes;\n};\n\nconst setClasses = (element: HTMLElement, classes: string[]) => {\n const classList = element.classList;\n classList.remove('ion-valid', 'ion-invalid', 'ion-touched', 'ion-untouched', 'ion-dirty', 'ion-pristine');\n classList.add(...classes);\n};\n\nconst startsWith = (input: string, search: string): boolean => {\n return input.substring(0, search.length) === search;\n};\n","import { HostListener, Optional, ElementRef, NgZone, ChangeDetectorRef, Directive } from '@angular/core';\nimport type { Components } from '@ionic/core';\n\nimport { Config } from '../../providers/config';\nimport { NavController } from '../../providers/nav-controller';\nimport { ProxyCmp } from '../../utils/proxy';\n\nimport { IonRouterOutlet } from './router-outlet';\n\nconst BACK_BUTTON_INPUTS = ['color', 'defaultHref', 'disabled', 'icon', 'mode', 'routerAnimation', 'text', 'type'];\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport declare interface IonBackButton extends Components.IonBackButton {}\n\n@ProxyCmp({\n inputs: BACK_BUTTON_INPUTS,\n})\n@Directive({\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: BACK_BUTTON_INPUTS,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonBackButton {\n protected el: HTMLElement;\n\n constructor(\n @Optional() private routerOutlet: IonRouterOutlet,\n private navCtrl: NavController,\n private config: Config,\n private r: ElementRef,\n protected z: NgZone,\n c: ChangeDetectorRef\n ) {\n c.detach();\n this.el = this.r.nativeElement;\n }\n\n /**\n * @internal\n */\n @HostListener('click', ['$event'])\n onClick(ev: Event): void {\n const defaultHref = this.defaultHref || this.config.get('backButtonDefaultHref');\n\n if (this.routerOutlet?.canGoBack()) {\n this.navCtrl.setDirection('back', undefined, undefined, this.routerAnimation);\n this.routerOutlet.pop();\n ev.preventDefault();\n } else if (defaultHref != null) {\n this.navCtrl.navigateBack(defaultHref, { animation: this.routerAnimation });\n ev.preventDefault();\n }\n }\n}\n","import {\n ElementRef,\n Injector,\n EnvironmentInjector,\n NgZone,\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n} from '@angular/core';\nimport type { Components } from '@ionic/core';\n\nimport { AngularDelegate } from '../../providers/angular-delegate';\nimport { ProxyCmp, proxyOutputs } from '../../utils/proxy';\n\nconst NAV_INPUTS = ['animated', 'animation', 'root', 'rootParams', 'swipeGesture'];\n\nconst NAV_METHODS = [\n 'push',\n 'insert',\n 'insertPages',\n 'pop',\n 'popTo',\n 'popToRoot',\n 'removeIndex',\n 'setRoot',\n 'setPages',\n 'getActive',\n 'getByIndex',\n 'canGoBack',\n 'getPrevious',\n];\n\nexport declare interface IonNav extends Components.IonNav {\n /**\n * Event fired when the nav will change components\n */\n ionNavWillChange: EventEmitter<CustomEvent<void>>;\n /**\n * Event fired when the nav has changed components\n */\n ionNavDidChange: EventEmitter<CustomEvent<void>>;\n}\n\n@ProxyCmp({\n inputs: NAV_INPUTS,\n methods: NAV_METHODS,\n})\n@Directive({\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: NAV_INPUTS,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonNav {\n protected el: HTMLElement;\n constructor(\n ref: ElementRef,\n environmentInjector: EnvironmentInjector,\n injector: Injector,\n angularDelegate: AngularDelegate,\n protected z: NgZone,\n c: ChangeDetectorRef\n ) {\n c.detach();\n this.el = ref.nativeElement;\n ref.nativeElement.delegate = angularDelegate.create(environmentInjector, injector);\n proxyOutputs(this, this.el, ['ionNavDidChange', 'ionNavWillChange']);\n }\n}\n","import { LocationStrategy } from '@angular/common';\nimport { ElementRef, OnChanges, OnInit, Directive, HostListener, Input, Optional } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport type { AnimationBuilder, RouterDirection } from '@ionic/core/components';\n\nimport { NavController } from '../../providers/nav-controller';\n\n/**\n * Adds support for Ionic routing directions and animations to the base Angular router link directive.\n *\n * When the router link is clicked, the directive will assign the direction and\n * animation so that the routing integration will transition correctly.\n */\n@Directive({\n selector: ':not(a):not(area)[routerLink]',\n})\nexport class RouterLinkDelegateDirective implements OnInit, OnChanges {\n @Input()\n routerDirection: RouterDirection = 'forward';\n\n @Input()\n routerAnimation?: AnimationBuilder;\n\n constructor(\n private locationStrategy: LocationStrategy,\n private navCtrl: NavController,\n private elementRef: ElementRef,\n private router: Router,\n @Optional() private routerLink?: RouterLink\n ) {}\n\n ngOnInit(): void {\n this.updateTargetUrlAndHref();\n this.updateTabindex();\n }\n\n ngOnChanges(): void {\n this.updateTargetUrlAndHref();\n }\n\n /**\n * The `tabindex` is set to `0` by default on the host element when\n * the `routerLink` directive is used. This causes issues with Ionic\n * components that wrap an `a` or `button` element, such as `ion-item`.\n * See issue https://github.com/angular/angular/issues/28345\n *\n * This method removes the `tabindex` attribute from the host element\n * to allow the Ionic component to manage the focus state correctly.\n */\n private updateTabindex() {\n // Ionic components that render a native anchor or button element\n const ionicComponents = [\n 'ION-BACK-BUTTON',\n 'ION-BREADCRUMB',\n 'ION-BUTTON',\n 'ION-CARD',\n 'ION-FAB-BUTTON',\n 'ION-ITEM',\n 'ION-ITEM-OPTION',\n 'ION-MENU-BUTTON',\n 'ION-SEGMENT-BUTTON',\n 'ION-TAB-BUTTON',\n ];\n const hostElement = this.elementRef.nativeElement;\n\n if (ionicComponents.includes(hostElement.tagName)) {\n if (hostElement.getAttribute('tabindex') === '0') {\n hostElement.removeAttribute('tabindex');\n }\n }\n }\n\n private updateTargetUrlAndHref() {\n if (this.routerLink?.urlTree) {\n const href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.routerLink.urlTree));\n this.elementRef.nativeElement.href = href;\n }\n }\n\n /**\n * @internal\n */\n @HostListener('click', ['$event'])\n onClick(ev: UIEvent): void {\n this.navCtrl.setDirection(this.routerDirection, undefined, undefined, this.routerAnimation);\n\n /**\n * This prevents the browser from\n * performing a page reload when pressing\n * an Ionic component with routerLink.\n * The page reload interferes with routing\n * and causes ion-back-button to disappear\n * since the local history is wiped on reload.\n */\n ev.preventDefault();\n }\n}\n\n@Directive({\n selector: 'a[routerLink],area[routerLink]',\n})\nexport class RouterLinkWithHrefDelegateDirective implements OnInit, OnChanges {\n @Input()\n routerDirection: RouterDirection = 'forward';\n\n @Input()\n routerAnimation?: AnimationBuilder;\n\n constructor(\n private locationStrategy: LocationStrategy,\n private navCtrl: NavController,\n private elementRef: ElementRef,\n private router: Router,\n @Optional() private routerLink?: RouterLink\n ) {}\n\n ngOnInit(): void {\n this.updateTargetUrlAndHref();\n }\n\n ngOnChanges(): void {\n this.updateTargetUrlAndHref();\n }\n\n private updateTargetUrlAndHref() {\n if (this.routerLink?.urlTree) {\n const href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.routerLink.urlTree));\n this.elementRef.nativeElement.href = href;\n }\n }\n\n /**\n * @internal\n */\n @HostListener('click')\n onClick(): void {\n this.navCtrl.setDirection(this.routerDirection, undefined, undefined, this.routerAnimation);\n }\n}\n","import {\n AfterContentChecked,\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewChild,\n AfterViewInit,\n QueryList,\n} from '@angular/core';\n\nimport { NavController } from '../../providers/nav-controller';\n\nimport { StackDidChangeEvent, StackWillChangeEvent } from './stack-utils';\n\n@Directive({\n selector: 'ion-tabs',\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class IonTabs implements AfterViewInit, AfterContentInit, AfterContentChecked {\n /**\n * Note: These must be redeclared on each child class since it needs\n * access to generated components such as IonRouterOutlet and IonTabBar.\n */\n abstract outlet: any;\n abstract tabBar: any;\n abstract tabBars: QueryList<any>;\n abstract tabs: QueryList<any>;\n\n @ViewChild('tabsInner', { read: ElementRef, static: true }) tabsInner: ElementRef<HTMLDivElement>;\n\n /**\n * Emitted before the tab view is changed.\n */\n @Output() ionTabsWillChange = new EventEmitter<{ tab: string }>();\n /**\n * Emitted after the tab view is changed.\n */\n @Output() ionTabsDidChange = new EventEmitter<{ tab: string }>();\n\n private tabBarSlot = 'bottom';\n\n private hasTab = false;\n private selectedTab?: { tab: string };\n private leavingTab?: any;\n\n constructor(private navCtrl: NavController) {}\n\n ngAfterViewInit(): void {\n /**\n * Developers must pass at least one ion-tab\n * inside of ion-tabs if they want to use a\n * basic tab-based navigation without the\n * history stack or URL updates associated\n * with the router.\n */\n const firstTab = this.tabs.length > 0 ? this.tabs.first : undefined;\n\n if (firstTab) {\n this.hasTab = true;\n this.setActiveTab(firstTab.tab);\n this.tabSwitch();\n }\n }\n\n ngAfterContentInit(): void {\n this.detectSlotChanges();\n }\n\n ngAfterContentChecked(): void {\n this.detectSlotChanges();\n }\n\n /**\n * @internal\n */\n onStackWillChange({ enteringView, tabSwitch }: StackWillChangeEvent): void {\n const stackId = enteringView.stackId;\n if (tabSwitch && stackId !== undefined) {\n this.ionTabsWillChange.emit({ tab: stackId });\n }\n }\n\n /**\n * @internal\n */\n onStackDidChange({ enteringView, tabSwitch }: StackDidChangeEvent): void {\n const stackId = enteringView.stackId;\n if (tabSwitch && stackId !== undefined) {\n if (this.tabBar) {\n this.tabBar.selectedTab = stackId;\n }\n this.ionTabsDidChange.emit({ tab: stackId });\n }\n }\n\n /**\n * When a tab button is clicked, there are several scenarios:\n * 1. If the selected tab is currently active (the tab button has been clicked\n * again), then it should go to the root view for that tab.\n *\n * a. Get the saved root view from the router outlet. If the saved root view\n * matches the tabRootUrl, set the route view to this view including the\n * navigation extras.\n * b. If the saved root view from the router outlet does\n * not match, navigate to the tabRootUrl. No navigation extras are\n * included.\n *\n * 2. If the current tab tab is not currently selected, get the last route\n * view from the router outlet.\n *\n * a. If the last route view exists, navigate to that view including any\n * navigation extras\n * b. If the last route view doesn't exist, then navigate\n * to the default tabRootUrl\n */\n @HostListener('ionTabButtonClick', ['$event'])\n select(tabOrEvent: string | CustomEvent): Promise<boolean> | undefined {\n const isTabString = typeof tabOrEvent === 'string';\n const tab = isTabString ? tabOrEvent : (tabOrEvent as CustomEvent).detail.tab;\n\n /**\n * If the tabs are not using the router, then\n * the tab switch logic is handled by the tabs\n * component itself.\n */\n if (this.hasTab) {\n this.setActiveTab(tab);\n this.tabSwitch();\n\n return;\n }\n\n const alreadySelected = this.outlet.getActiveStackId() === tab;\n const tabRootUrl = `${this.outlet.tabsPrefix}/${tab}`;\n\n /**\n * If this is a nested tab, prevent the event\n * from bubbling otherwise the outer tabs\n * will respond to this event too, causing\n * the app to get directed to the wrong place.\n */\n if (!isTabString) {\n (tabOrEvent as CustomEvent).stopPropagation();\n }\n\n if (alreadySelected) {\n const activeStackId = this.outlet.getActiveStackId();\n const activeView = this.outlet.getLastRouteView(activeStackId);\n\n // If on root tab, do not navigate to root tab again\n if (activeView?.url === tabRootUrl) {\n return;\n }\n\n const rootView = this.outlet.getRootView(tab);\n const navigationExtras = rootView && tabRootUrl === rootView.url && rootView.savedExtras;\n return this.navCtrl.navigateRoot(tabRootUrl, {\n ...navigationExtras,\n animated: true,\n animationDirection: 'back',\n });\n } else {\n const lastRoute = this.outlet.getLastRouteView(tab);\n /**\n * If there is a lastRoute, goto that, otherwise goto the fallback url of the\n * selected tab\n */\n const url = lastRoute?.url || tabRootUrl;\n const navigationExtras = lastRoute?.savedExtras;\n\n return this.navCtrl.navigateRoot(url, {\n ...navigationExtras,\n animated: true,\n animationDirection: 'back',\n });\n }\n }\n\n private setActiveTab(tab: string): void {\n const tabs = this.tabs;\n const selectedTab = tabs.find((t: any) => t.tab === tab);\n\n if (!selectedTab) {\n console.error(`[Ionic Error]: Tab with id: \"${tab}\" does not exist`);\n return;\n }\n\n this.leavingTab = this.selectedTab;\n this.selectedTab = selectedTab;\n\n this.ionTabsWillChange.emit({ tab });\n\n selectedTab.el.active = true;\n }\n\n private tabSwitch(): void {\n const { selectedTab, leavingTab } = this;\n\n if (this.tabBar && selectedTab) {\n this.tabBar.selectedTab = selectedTab.tab;\n }\n\n if (leavingTab?.tab !== selectedTab?.tab) {\n if (leavingTab?.el) {\n leavingTab.el.active = false;\n }\n }\n\n if (selectedTab) {\n this.ionTabsDidChange.emit({ tab: selectedTab.tab });\n }\n }\n\n getSelected(): string | undefined {\n if (this.hasTab) {\n return this.selectedTab?.tab;\n }\n\n return this.outlet.getActiveStackId();\n }\n\n /**\n * Detects changes to the slot attribute of the tab bar.\n *\n * If the slot attribute has changed, then the tab bar\n * should be relocated to the new slot position.\n */\n private detectSlotChanges(): void {\n this.tabBars.forEach((tabBar: any) => {\n // el is a protected attribute from the generated component wrapper\n const currentSlot = tabBar.el.getAttribute('slot');\n\n if (currentSlot !== this.tabBarSlot) {\n this.tabBarSlot = currentSlot;\n this.relocateTabBar();\n }\n });\n }\n\n /**\n * Relocates the tab bar to the new slot position.\n */\n private relocateTabBar(): void {\n /**\n * `el` is a protected attribute from the generated component wrapper.\n * To avoid having to manually create the wrapper for tab bar, we\n * cast the tab bar to any and access the protected attribute.\n */\n const tabBar = (this.tabBar as any).el as HTMLElement;\n\n if (this.tabBarSlot === 'top') {\n /**\n * A tab bar with a slot of \"top\" should be inserted\n * at the top of the container.\n */\n this.tabsInner.nativeElement.before(tabBar);\n } else {\n /**\n * A tab bar with a slot of \"bottom\" or without a slot\n * should be inserted at the end of the container.\n */\n this.tabsInner.nativeElement.after(tabBar);\n }\n }\n}\n","// TODO(FW-2827): types\n\nexport interface ControllerShape<Opts, HTMLElm> {\n create(options: Opts): Promise<HTMLElm>;\n dismiss(data?: any, role?: string, id?: string): Promise<boolean>;\n getTop(): Promise<HTMLElm | undefined>;\n}\n\nexport class OverlayBaseController<Opts, Overlay> implements ControllerShape<Opts, Overlay> {\n constructor(private ctrl: ControllerShape<Opts, Overlay>) {}\n\n /**\n * Creates a new overlay\n */\n create(opts?: Opts): Promise<Overlay> {\n return this.ctrl.create((opts || {}) as any);\n }\n\n /**\n * When `id` is not provided, it dismisses the top overlay.\n */\n dismiss(data?: any, role?: string, id?: string): Promise<boolean> {\n return this.ctrl.dismiss(data, role, id);\n }\n\n /**\n * Returns the top overlay.\n */\n getTop(): Promise<Overlay | undefined> {\n return this.ctrl.getTop();\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\n\n/**\n * Provides a way to customize when activated routes get reused.\n */\nexport class IonicRouteStrategy implements RouteReuseStrategy {\n /**\n * Whether the given route should detach for later reuse.\n */\n shouldDetach(_route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n /**\n * Returns `false`, meaning the route (and its subtree) is never reattached\n */\n shouldAttach(_route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n /**\n * A no-op; the route is never stored since this strategy never detaches routes for later re-use.\n */\n store(_route: ActivatedRouteSnapshot, _detachedTree: DetachedRouteHandle): void {\n return;\n }\n\n /**\n * Returns `null` because this strategy does not store routes for later re-use.\n */\n retrieve(_route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n return null;\n }\n\n /**\n * Determines if a route should be reused.\n * This strategy returns `true` when the future route config and\n * current route config are identical and all route parameters are identical.\n */\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n if (future.routeConfig !== curr.routeConfig) {\n return false;\n }\n\n // checking router params\n const futureParams = future.params;\n const currentParams = curr.params;\n const keysA = Object.keys(futureParams);\n const keysB = Object.keys(currentParams);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (const key of keysA) {\n if (currentParams[key] !== futureParams[key]) {\n return false;\n }\n }\n return true;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.Platform","i2","i1.IonRouterOutlet","i2.NavController","i3.Config","i1.AngularDelegate","i1.NavController"],"mappings":"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"}
1
+ {"version":3,"file":"ionic-angular-common.mjs","sources":["../../common/src/providers/dom-controller.ts","../../common/src/providers/menu-controller.ts","../../common/src/providers/platform.ts","../../common/src/providers/nav-controller.ts","../../common/src/providers/config.ts","../../common/src/directives/navigation/nav-params.ts","../../common/src/providers/angular-delegate.ts","../../common/src/utils/proxy.ts","../../common/src/overlays/modal.ts","../../common/src/overlays/popover.ts","../../common/src/directives/navigation/stack-utils.ts","../../common/src/directives/navigation/stack-controller.ts","../../common/src/directives/navigation/router-outlet.ts","../../common/src/utils/util.ts","../../common/src/directives/control-value-accessors/value-accessor.ts","../../common/src/directives/navigation/back-button.ts","../../common/src/directives/navigation/nav.ts","../../common/src/directives/navigation/router-link-delegate.ts","../../common/src/directives/navigation/tabs.ts","../../common/src/utils/overlay.ts","../../common/src/utils/routing.ts","../../common/src/ionic-angular-common.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DomController {\n /**\n * Schedules a task to run during the READ phase of the next frame.\n * This task should only read the DOM, but never modify it.\n */\n read(cb: RafCallback): void {\n getQueue().read(cb);\n }\n\n /**\n * Schedules a task to run during the WRITE phase of the next frame.\n * This task should write the DOM, but never READ it.\n */\n write(cb: RafCallback): void {\n getQueue().write(cb);\n }\n}\n\nconst getQueue = () => {\n const win = typeof (window as any) !== 'undefined' ? window : (null as any);\n\n if (win != null) {\n const Ionic = win.Ionic;\n if (Ionic?.queue) {\n return Ionic.queue;\n }\n\n return {\n read: (cb: any) => win.requestAnimationFrame(cb),\n write: (cb: any) => win.requestAnimationFrame(cb),\n };\n }\n\n return {\n read: (cb: any) => cb(),\n write: (cb: any) => cb(),\n };\n};\n\nexport type RafCallback = (timeStamp?: number) => void;\n","import type { MenuControllerI, AnimationBuilder, MenuI, Animation } from '@ionic/core/components';\n\nexport class MenuController implements MenuControllerI {\n constructor(private menuController: MenuControllerI) {}\n\n /**\n * Programmatically open the Menu.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return returns a promise when the menu is fully opened\n */\n open(menuId?: string): Promise<boolean> {\n return this.menuController.open(menuId);\n }\n\n /**\n * Programmatically close the Menu. If no `menuId` is given as the first\n * argument then it'll close any menu which is open. If a `menuId`\n * is given then it'll close that exact menu.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return returns a promise when the menu is fully closed\n */\n close(menuId?: string): Promise<boolean> {\n return this.menuController.close(menuId);\n }\n\n /**\n * Toggle the menu. If it's closed, it will open, and if opened, it\n * will close.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return returns a promise when the menu has been toggled\n */\n toggle(menuId?: string): Promise<boolean> {\n return this.menuController.toggle(menuId);\n }\n\n /**\n * Used to enable or disable a menu. For example, there could be multiple\n * left menus, but only one of them should be able to be opened at the same\n * time. If there are multiple menus on the same side, then enabling one menu\n * will also automatically disable all the others that are on the same side.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns the instance of the menu, which is useful for chaining.\n */\n enable(shouldEnable: boolean, menuId?: string): Promise<HTMLIonMenuElement | undefined> {\n return this.menuController.enable(shouldEnable, menuId);\n }\n\n /**\n * Used to enable or disable the ability to swipe open the menu.\n * @param shouldEnable True if it should be swipe-able, false if not.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns the instance of the menu, which is useful for chaining.\n */\n swipeGesture(shouldEnable: boolean, menuId?: string): Promise<HTMLIonMenuElement | undefined> {\n return this.menuController.swipeGesture(shouldEnable, menuId);\n }\n\n /**\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns true if the specified menu is currently open, otherwise false.\n * If the menuId is not specified, it returns true if ANY menu is currenly open.\n */\n isOpen(menuId?: string): Promise<boolean> {\n return this.menuController.isOpen(menuId);\n }\n\n /**\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns true if the menu is currently enabled, otherwise false.\n */\n isEnabled(menuId?: string): Promise<boolean> {\n return this.menuController.isEnabled(menuId);\n }\n\n /**\n * Used to get a menu instance. If a `menuId` is not provided then it'll\n * return the first menu found. If a `menuId` is `left` or `right`, then\n * it'll return the enabled menu on that side. Otherwise, if a `menuId` is\n * provided, then it'll try to find the menu using the menu's `id`\n * property. If a menu is not found then it'll return `null`.\n * @param [menuId] Optionally get the menu by its id, or side.\n * @return Returns the instance of the menu if found, otherwise `null`.\n */\n get(menuId?: string): Promise<HTMLIonMenuElement | undefined> {\n return this.menuController.get(menuId);\n }\n\n /**\n * @return Returns the instance of the menu already opened, otherwise `null`.\n */\n getOpen(): Promise<HTMLIonMenuElement | undefined> {\n return this.menuController.getOpen();\n }\n\n /**\n * @return Returns an array of all menu instances.\n */\n getMenus(): Promise<HTMLIonMenuElement[]> {\n return this.menuController.getMenus();\n }\n\n registerAnimation(name: string, animation: AnimationBuilder): void {\n return this.menuController.registerAnimation(name, animation);\n }\n\n isAnimating(): Promise<boolean> {\n return this.menuController.isAnimating();\n }\n\n _getOpenSync(): HTMLIonMenuElement | undefined {\n return this.menuController._getOpenSync();\n }\n\n _createAnimation(type: string, menuCmp: MenuI): Promise<Animation> {\n return this.menuController._createAnimation(type, menuCmp);\n }\n\n _register(menu: MenuI): void {\n return this.menuController._register(menu);\n }\n\n _unregister(menu: MenuI): void {\n return this.menuController._unregister(menu);\n }\n\n _setOpen(menu: MenuI, shouldOpen: boolean, animated: boolean): Promise<boolean> {\n return this.menuController._setOpen(menu, shouldOpen, animated);\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { NgZone, Inject, Injectable } from '@angular/core';\nimport { getPlatforms, isPlatform } from '@ionic/core/components';\nimport type { BackButtonEventDetail, KeyboardEventDetail, Platforms } from '@ionic/core/components';\nimport { Subscription, Subject } from 'rxjs';\n\n// TODO(FW-2827): types\n\nexport interface BackButtonEmitter extends Subject<BackButtonEventDetail> {\n subscribeWithPriority(\n priority: number,\n callback: (processNextHandler: () => void) => Promise<any> | void\n ): Subscription;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Platform {\n private _readyPromise: Promise<string>;\n private win: any;\n\n /**\n * @hidden\n */\n backButton = new Subject<BackButtonEventDetail>() as BackButtonEmitter;\n\n /**\n * The keyboardDidShow event emits when the\n * on-screen keyboard is presented.\n */\n keyboardDidShow = new Subject<KeyboardEventDetail>();\n\n /**\n * The keyboardDidHide event emits when the\n * on-screen keyboard is hidden.\n */\n keyboardDidHide = new Subject<void>();\n\n /**\n * The pause event emits when the native platform puts the application\n * into the background, typically when the user switches to a different\n * application. This event would emit when a Cordova app is put into\n * the background, however, it would not fire on a standard web browser.\n */\n pause = new Subject<void>();\n\n /**\n * The resume event emits when the native platform pulls the application\n * out from the background. This event would emit when a Cordova app comes\n * out from the background, however, it would not fire on a standard web browser.\n */\n resume = new Subject<void>();\n\n /**\n * The resize event emits when the browser window has changed dimensions. This\n * could be from a browser window being physically resized, or from a device\n * changing orientation.\n */\n resize = new Subject<void>();\n\n constructor(@Inject(DOCUMENT) private doc: any, zone: NgZone) {\n zone.run(() => {\n this.win = doc.defaultView;\n this.backButton.subscribeWithPriority = function (priority, callback) {\n return this.subscribe((ev) => {\n return ev.register(priority, (processNextHandler) => zone.run(() => callback(processNextHandler)));\n });\n };\n\n proxyEvent(this.pause, doc, 'pause', zone);\n proxyEvent(this.resume, doc, 'resume', zone);\n proxyEvent(this.backButton, doc, 'ionBackButton', zone);\n proxyEvent(this.resize, this.win, 'resize', zone);\n proxyEvent(this.keyboardDidShow, this.win, 'ionKeyboardDidShow', zone);\n proxyEvent(this.keyboardDidHide, this.win, 'ionKeyboardDidHide', zone);\n\n let readyResolve: (value: string) => void;\n this._readyPromise = new Promise((res) => {\n readyResolve = res;\n });\n if (this.win?.['cordova']) {\n doc.addEventListener(\n 'deviceready',\n () => {\n readyResolve('cordova');\n },\n { once: true }\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n readyResolve!('dom');\n }\n });\n }\n\n /**\n * @returns returns true/false based on platform.\n * @description\n * Depending on the platform the user is on, `is(platformName)` will\n * return `true` or `false`. Note that the same app can return `true`\n * for more than one platform name. For example, an app running from\n * an iPad would return `true` for the platform names: `mobile`,\n * `ios`, `ipad`, and `tablet`. Additionally, if the app was running\n * from Cordova then `cordova` would be true, and if it was running\n * from a web browser on the iPad then `mobileweb` would be `true`.\n *\n * ```\n * import { Platform } from 'ionic-angular';\n *\n * @Component({...})\n * export MyPage {\n * constructor(public platform: Platform) {\n * if (this.platform.is('ios')) {\n * // This will only print when on iOS\n * console.log('I am an iOS device!');\n * }\n * }\n * }\n * ```\n *\n * | Platform Name | Description |\n * |-----------------|------------------------------------|\n * | android | on a device running Android. |\n * | capacitor | on a device running Capacitor. |\n * | cordova | on a device running Cordova. |\n * | ios | on a device running iOS. |\n * | ipad | on an iPad device. |\n * | iphone | on an iPhone device. |\n * | phablet | on a phablet device. |\n * | tablet | on a tablet device. |\n * | electron | in Electron on a desktop device. |\n * | pwa | as a PWA app. |\n * | mobile | on a mobile device. |\n * | mobileweb | on a mobile device in a browser. |\n * | desktop | on a desktop device. |\n * | hybrid | is a cordova or capacitor app. |\n *\n */\n is(platformName: Platforms): boolean {\n return isPlatform(this.win, platformName);\n }\n\n /**\n * @returns the array of platforms\n * @description\n * Depending on what device you are on, `platforms` can return multiple values.\n * Each possible value is a hierarchy of platforms. For example, on an iPhone,\n * it would return `mobile`, `ios`, and `iphone`.\n *\n * ```\n * import { Platform } from 'ionic-angular';\n *\n * @Component({...})\n * export MyPage {\n * constructor(public platform: Platform) {\n * // This will print an array of the current platforms\n * console.log(this.platform.platforms());\n * }\n * }\n * ```\n */\n platforms(): string[] {\n return getPlatforms(this.win);\n }\n\n /**\n * Returns a promise when the platform is ready and native functionality\n * can be called. If the app is running from within a web browser, then\n * the promise will resolve when the DOM is ready. When the app is running\n * from an application engine such as Cordova, then the promise will\n * resolve when Cordova triggers the `deviceready` event.\n *\n * The resolved value is the `readySource`, which states which platform\n * ready was used. For example, when Cordova is ready, the resolved ready\n * source is `cordova`. The default ready source value will be `dom`. The\n * `readySource` is useful if different logic should run depending on the\n * platform the app is running from. For example, only Cordova can execute\n * the status bar plugin, so the web should not run status bar plugin logic.\n *\n * ```\n * import { Component } from '@angular/core';\n * import { Platform } from 'ionic-angular';\n *\n * @Component({...})\n * export MyApp {\n * constructor(public platform: Platform) {\n * this.platform.ready().then((readySource) => {\n * console.log('Platform ready from', readySource);\n * // Platform now ready, execute any required native code\n * });\n * }\n * }\n * ```\n */\n ready(): Promise<string> {\n return this._readyPromise;\n }\n\n /**\n * Returns if this app is using right-to-left language direction or not.\n * We recommend the app's `index.html` file already has the correct `dir`\n * attribute value set, such as `<html dir=\"ltr\">` or `<html dir=\"rtl\">`.\n * [W3C: Structural markup and right-to-left text in HTML](http://www.w3.org/International/questions/qa-html-dir)\n */\n get isRTL(): boolean {\n return this.doc.dir === 'rtl';\n }\n\n /**\n * Get the query string parameter\n */\n getQueryParam(key: string): string | null {\n return readQueryParam(this.win.location.href, key);\n }\n\n /**\n * Returns `true` if the app is in landscape mode.\n */\n isLandscape(): boolean {\n return !this.isPortrait();\n }\n\n /**\n * Returns `true` if the app is in portrait mode.\n */\n isPortrait(): boolean {\n return this.win.matchMedia?.('(orientation: portrait)').matches;\n }\n\n testUserAgent(expression: string): boolean {\n const nav = this.win.navigator;\n return !!(nav?.userAgent && nav.userAgent.indexOf(expression) >= 0);\n }\n\n /**\n * Get the current url.\n */\n url(): string {\n return this.win.location.href;\n }\n\n /**\n * Gets the width of the platform's viewport using `window.innerWidth`.\n */\n width(): number {\n return this.win.innerWidth;\n }\n\n /**\n * Gets the height of the platform's viewport using `window.innerHeight`.\n */\n height(): number {\n return this.win.innerHeight;\n }\n}\n\nconst readQueryParam = (url: string, key: string) => {\n key = key.replace(/[[\\]\\\\]/g, '\\\\$&');\n const regex = new RegExp('[\\\\?&]' + key + '=([^&#]*)');\n const results = regex.exec(url);\n return results ? decodeURIComponent(results[1].replace(/\\+/g, ' ')) : null;\n};\n\nconst proxyEvent = <T>(emitter: Subject<T>, el: EventTarget, eventName: string, zone: NgZone) => {\n if (el) {\n el.addEventListener(eventName, (ev) => {\n /**\n * `zone.run` is required to make sure that we are running inside the Angular zone\n * at all times. This is necessary since an app that has Capacitor will\n * override the `document.addEventListener` with its own implementation.\n * The override causes the event to no longer be in the Angular zone.\n */\n zone.run(() => {\n // ?? cordova might emit \"null\" events\n const value = ev != null ? (ev as any).detail : undefined;\n emitter.next(value);\n });\n });\n }\n};\n","import { Location } from '@angular/common';\nimport { Injectable, Optional } from '@angular/core';\nimport { NavigationExtras, Router, UrlSerializer, UrlTree, NavigationStart } from '@angular/router';\nimport type { AnimationBuilder, NavDirection, RouterDirection } from '@ionic/core/components';\n\nimport { IonRouterOutlet } from '../directives/navigation/router-outlet';\n\nimport { Platform } from './platform';\n\nexport interface AnimationOptions {\n animated?: boolean;\n animation?: AnimationBuilder;\n animationDirection?: 'forward' | 'back';\n}\n\nexport interface NavigationOptions extends NavigationExtras, AnimationOptions {}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NavController {\n private topOutlet?: IonRouterOutlet;\n private direction: 'forward' | 'back' | 'root' | 'auto' = DEFAULT_DIRECTION;\n private animated?: NavDirection = DEFAULT_ANIMATED;\n private animationBuilder?: AnimationBuilder;\n private guessDirection: RouterDirection = 'forward';\n private guessAnimation?: NavDirection;\n private lastNavId = -1;\n\n constructor(\n platform: Platform,\n private location: Location,\n private serializer: UrlSerializer,\n @Optional() private router?: Router\n ) {\n // Subscribe to router events to detect direction\n if (router) {\n router.events.subscribe((ev) => {\n if (ev instanceof NavigationStart) {\n // restoredState is set if the browser back/forward button is used\n const id = ev.restoredState ? ev.restoredState.navigationId : ev.id;\n this.guessDirection = this.guessAnimation = id < this.lastNavId ? 'back' : 'forward';\n this.lastNavId = this.guessDirection === 'forward' ? ev.id : id;\n }\n });\n }\n\n // Subscribe to backButton events\n platform.backButton.subscribeWithPriority(0, (processNextHandler) => {\n this.pop();\n processNextHandler();\n });\n }\n\n /**\n * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood,\n * it's equivalent to calling `this.router.navigateByUrl()`, but it's explicit about the **direction** of the transition.\n *\n * Going **forward** means that a new page is going to be pushed to the stack of the outlet (ion-router-outlet),\n * and that it will show a \"forward\" animation by default.\n *\n * Navigating forward can also be triggered in a declarative manner by using the `[routerDirection]` directive:\n *\n * ```html\n * <a routerLink=\"/path/to/page\" routerDirection=\"forward\">Link</a>\n * ```\n */\n navigateForward(url: string | UrlTree | any[], options: NavigationOptions = {}): Promise<boolean> {\n this.setDirection('forward', options.animated, options.animationDirection, options.animation);\n return this.navigate(url, options);\n }\n\n /**\n * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood,\n * it's equivalent to calling:\n *\n * ```ts\n * this.navController.setDirection('back');\n * this.router.navigateByUrl(path);\n * ```\n *\n * Going **back** means that all the pages in the stack until the navigated page is found will be popped,\n * and that it will show a \"back\" animation by default.\n *\n * Navigating back can also be triggered in a declarative manner by using the `[routerDirection]` directive:\n *\n * ```html\n * <a routerLink=\"/path/to/page\" routerDirection=\"back\">Link</a>\n * ```\n */\n navigateBack(url: string | UrlTree | any[], options: NavigationOptions = {}): Promise<boolean> {\n this.setDirection('back', options.animated, options.animationDirection, options.animation);\n return this.navigate(url, options);\n }\n\n /**\n * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood,\n * it's equivalent to calling:\n *\n * ```ts\n * this.navController.setDirection('root');\n * this.router.navigateByUrl(path);\n * ```\n *\n * Going **root** means that all existing pages in the stack will be removed,\n * and the navigated page will become the single page in the stack.\n *\n * Navigating root can also be triggered in a declarative manner by using the `[routerDirection]` directive:\n *\n * ```html\n * <a routerLink=\"/path/to/page\" routerDirection=\"root\">Link</a>\n * ```\n */\n navigateRoot(url: string | UrlTree | any[], options: NavigationOptions = {}): Promise<boolean> {\n this.setDirection('root', options.animated, options.animationDirection, options.animation);\n return this.navigate(url, options);\n }\n\n /**\n * Same as [Location](https://angular.io/api/common/Location)'s back() method.\n * It will use the standard `window.history.back()` under the hood, but featuring a `back` animation\n * by default.\n */\n back(options: AnimationOptions = { animated: true, animationDirection: 'back' }): void {\n this.setDirection('back', options.animated, options.animationDirection, options.animation);\n return this.location.back();\n }\n\n /**\n * This methods goes back in the context of Ionic's stack navigation.\n *\n * It recursively finds the top active `ion-router-outlet` and calls `pop()`.\n * This is the recommended way to go back when you are using `ion-router-outlet`.\n *\n * Resolves to `true` if it was able to pop.\n */\n async pop(): Promise<boolean> {\n let outlet = this.topOutlet;\n\n while (outlet) {\n if (await outlet.pop()) {\n return true;\n } else {\n outlet = outlet.parentOutlet;\n }\n }\n\n return false;\n }\n\n /**\n * This methods specifies the direction of the next navigation performed by the Angular router.\n *\n * `setDirection()` does not trigger any transition, it just sets some flags to be consumed by `ion-router-outlet`.\n *\n * It's recommended to use `navigateForward()`, `navigateBack()` and `navigateRoot()` instead of `setDirection()`.\n */\n setDirection(\n direction: RouterDirection,\n animated?: boolean,\n animationDirection?: 'forward' | 'back',\n animationBuilder?: AnimationBuilder\n ): void {\n this.direction = direction;\n this.animated = getAnimation(direction, animated, animationDirection);\n this.animationBuilder = animationBuilder;\n }\n\n /**\n * @internal\n */\n setTopOutlet(outlet: IonRouterOutlet): void {\n this.topOutlet = outlet;\n }\n\n /**\n * @internal\n */\n consumeTransition(): {\n direction: RouterDirection;\n animation: NavDirection | undefined;\n animationBuilder: AnimationBuilder | undefined;\n } {\n let direction: RouterDirection = 'root';\n let animation: NavDirection | undefined;\n const animationBuilder = this.animationBuilder;\n\n if (this.direction === 'auto') {\n direction = this.guessDirection;\n animation = this.guessAnimation;\n } else {\n animation = this.animated;\n direction = this.direction;\n }\n this.direction = DEFAULT_DIRECTION;\n this.animated = DEFAULT_ANIMATED;\n this.animationBuilder = undefined;\n\n return {\n direction,\n animation,\n animationBuilder,\n };\n }\n\n private navigate(url: string | UrlTree | any[], options: NavigationOptions) {\n if (Array.isArray(url)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.router!.navigate(url, options);\n } else {\n /**\n * navigateByUrl ignores any properties that\n * would change the url, so things like queryParams\n * would be ignored unless we create a url tree\n * More Info: https://github.com/angular/angular/issues/18798\n */\n const urlTree = this.serializer.parse(url.toString());\n\n if (options.queryParams !== undefined) {\n urlTree.queryParams = { ...options.queryParams };\n }\n\n if (options.fragment !== undefined) {\n urlTree.fragment = options.fragment;\n }\n\n /**\n * `navigateByUrl` will still apply `NavigationExtras` properties\n * that do not modify the url, such as `replaceUrl` which is why\n * `options` is passed in here.\n */\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.router!.navigateByUrl(urlTree, options);\n }\n }\n}\n\nconst getAnimation = (\n direction: RouterDirection,\n animated: boolean | undefined,\n animationDirection: 'forward' | 'back' | undefined\n): NavDirection | undefined => {\n if (animated === false) {\n return undefined;\n }\n if (animationDirection !== undefined) {\n return animationDirection;\n }\n if (direction === 'forward' || direction === 'back') {\n return direction;\n } else if (direction === 'root' && animated === true) {\n return 'forward';\n }\n return undefined;\n};\n\nconst DEFAULT_DIRECTION = 'auto';\nconst DEFAULT_ANIMATED = undefined;\n","import { Injectable, InjectionToken } from '@angular/core';\nimport type { Config as CoreConfig, IonicConfig } from '@ionic/core/components';\n\nimport { IonicWindow } from '../types/interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Config {\n get(key: keyof IonicConfig, fallback?: any): any {\n const c = getConfig();\n if (c) {\n return c.get(key, fallback);\n }\n return null;\n }\n\n getBoolean(key: keyof IonicConfig, fallback?: boolean): boolean {\n const c = getConfig();\n if (c) {\n return c.getBoolean(key, fallback);\n }\n return false;\n }\n\n getNumber(key: keyof IonicConfig, fallback?: number): number {\n const c = getConfig();\n if (c) {\n return c.getNumber(key, fallback);\n }\n return 0;\n }\n}\n\nexport const ConfigToken = new InjectionToken<any>('USERCONFIG');\n\nconst getConfig = (): CoreConfig | null => {\n if (typeof (window as any) !== 'undefined') {\n const Ionic = (window as any as IonicWindow).Ionic;\n if (Ionic?.config) {\n return Ionic.config;\n }\n }\n return null;\n};\n","/**\n * @description\n * NavParams are an object that exists on a page and can contain data for that particular view.\n * Similar to how data was pass to a view in V1 with `$stateParams`, NavParams offer a much more flexible\n * option with a simple `get` method.\n *\n * @usage\n * ```ts\n * import { NavParams } from '@ionic/angular';\n *\n * export class MyClass{\n *\n * constructor(navParams: NavParams){\n * // userParams is an object we have in our nav-parameters\n * navParams.get('userParams');\n * }\n *\n * }\n * ```\n */\nexport class NavParams {\n constructor(public data: { [key: string]: any } = {}) {\n console.warn(\n `[Ionic Warning]: NavParams has been deprecated in favor of using Angular's input API. Developers should migrate to either the @Input decorator or the Signals-based input API.`\n );\n }\n\n /**\n * Get the value of a nav-parameter for the current view\n *\n * ```ts\n * import { NavParams } from 'ionic-angular';\n *\n * export class MyClass{\n * constructor(public navParams: NavParams){\n * // userParams is an object we have in our nav-parameters\n * this.navParams.get('userParams');\n * }\n * }\n * ```\n *\n * @param param Which param you want to look up\n */\n get<T = any>(param: string): T {\n return this.data[param];\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable,\n InjectionToken,\n Injector,\n NgZone,\n} from '@angular/core';\nimport {\n FrameworkDelegate,\n LIFECYCLE_DID_ENTER,\n LIFECYCLE_DID_LEAVE,\n LIFECYCLE_WILL_ENTER,\n LIFECYCLE_WILL_LEAVE,\n LIFECYCLE_WILL_UNLOAD,\n} from '@ionic/core/components';\n\nimport { NavParams } from '../directives/navigation/nav-params';\n\nimport { ConfigToken } from './config';\n\n// Token for injecting the modal element\nexport const IonModalToken = new InjectionToken<HTMLIonModalElement>('IonModalToken');\n\n// TODO(FW-2827): types\n\n@Injectable()\nexport class AngularDelegate {\n private zone = inject(NgZone);\n private applicationRef = inject(ApplicationRef);\n private config = inject(ConfigToken);\n\n create(\n environmentInjector: EnvironmentInjector,\n injector: Injector,\n elementReferenceKey?: string\n ): AngularFrameworkDelegate {\n return new AngularFrameworkDelegate(\n environmentInjector,\n injector,\n this.applicationRef,\n this.zone,\n elementReferenceKey,\n this.config.useSetInputAPI ?? false\n );\n }\n}\n\nexport class AngularFrameworkDelegate implements FrameworkDelegate {\n private elRefMap = new WeakMap<HTMLElement, ComponentRef<any>>();\n private elEventsMap = new WeakMap<HTMLElement, () => void>();\n\n constructor(\n private environmentInjector: EnvironmentInjector,\n private injector: Injector,\n private applicationRef: ApplicationRef,\n private zone: NgZone,\n private elementReferenceKey?: string,\n private enableSignalsSupport?: boolean\n ) {}\n\n attachViewToDom(container: any, component: any, params?: any, cssClasses?: string[]): Promise<any> {\n return this.zone.run(() => {\n return new Promise((resolve) => {\n const componentProps = {\n ...params,\n };\n\n /**\n * Ionic Angular passes a reference to a modal\n * or popover that can be accessed using a\n * variable in the overlay component. If\n * elementReferenceKey is defined, then we should\n * pass a reference to the component using\n * elementReferenceKey as the key.\n */\n if (this.elementReferenceKey !== undefined) {\n componentProps[this.elementReferenceKey] = container;\n }\n\n const el = attachView(\n this.zone,\n this.environmentInjector,\n this.injector,\n this.applicationRef,\n this.elRefMap,\n this.elEventsMap,\n container,\n component,\n componentProps,\n cssClasses,\n this.elementReferenceKey,\n this.enableSignalsSupport\n );\n resolve(el);\n });\n });\n }\n\n removeViewFromDom(_container: any, component: any): Promise<void> {\n return this.zone.run(() => {\n return new Promise((resolve) => {\n const componentRef = this.elRefMap.get(component);\n if (componentRef) {\n componentRef.destroy();\n this.elRefMap.delete(component);\n const unbindEvents = this.elEventsMap.get(component);\n if (unbindEvents) {\n unbindEvents();\n this.elEventsMap.delete(component);\n }\n }\n resolve();\n });\n });\n }\n}\n\nexport const attachView = (\n zone: NgZone,\n environmentInjector: EnvironmentInjector,\n injector: Injector,\n applicationRef: ApplicationRef,\n elRefMap: WeakMap<HTMLElement, ComponentRef<any>>,\n elEventsMap: WeakMap<HTMLElement, () => void>,\n container: any,\n component: any,\n params: any,\n cssClasses: string[] | undefined,\n elementReferenceKey: string | undefined,\n enableSignalsSupport: boolean | undefined\n): any => {\n /**\n * Wraps the injector with a custom injector that\n * provides NavParams to the component.\n *\n * NavParams is a legacy feature from Ionic v3 that allows\n * Angular developers to provide data to a component\n * and access it by providing NavParams as a dependency\n * in the constructor.\n *\n * The modern approach is to access the data directly\n * from the component's class instance.\n */\n const providers = getProviders(params);\n\n // If this is an ion-modal, provide the modal element as an injectable\n // so components inside the modal can inject it directly\n if (container.tagName.toLowerCase() === 'ion-modal') {\n providers.push({\n provide: IonModalToken,\n useValue: container,\n });\n }\n\n const childInjector = Injector.create({\n providers,\n parent: injector,\n });\n\n const componentRef = createComponent<any>(component, {\n environmentInjector,\n elementInjector: childInjector,\n });\n\n const instance = componentRef.instance;\n const hostElement = componentRef.location.nativeElement;\n\n if (params) {\n /**\n * For modals and popovers, a reference to the component is\n * added to `params` during the call to attachViewToDom. If\n * a reference using this name is already set, this means\n * the app is trying to use the name as a component prop,\n * which will cause collisions.\n */\n if (elementReferenceKey && instance[elementReferenceKey] !== undefined) {\n console.error(\n `[Ionic Error]: ${elementReferenceKey} is a reserved property when using ${container.tagName.toLowerCase()}. Rename or remove the \"${elementReferenceKey}\" property from ${\n component.name\n }.`\n );\n }\n\n /**\n * Angular 14.1 added support for setInput\n * so we need to fall back to Object.assign\n * for Angular 14.0.\n */\n if (enableSignalsSupport === true && componentRef.setInput !== undefined) {\n const { modal, popover, ...otherParams } = params;\n /**\n * Any key/value pairs set in componentProps\n * must be set as inputs on the component instance.\n */\n for (const key in otherParams) {\n componentRef.setInput(key, otherParams[key]);\n }\n\n /**\n * Using setInput will cause an error when\n * setting modal/popover on a component that\n * does not define them as an input. For backwards\n * compatibility purposes we fall back to using\n * Object.assign for these properties.\n */\n if (modal !== undefined) {\n Object.assign(instance, { modal });\n }\n\n if (popover !== undefined) {\n Object.assign(instance, { popover });\n }\n } else {\n Object.assign(instance, params);\n }\n }\n if (cssClasses) {\n for (const cssClass of cssClasses) {\n hostElement.classList.add(cssClass);\n }\n }\n const unbindEvents = bindLifecycleEvents(zone, instance, hostElement);\n container.appendChild(hostElement);\n\n applicationRef.attachView(componentRef.hostView);\n\n elRefMap.set(hostElement, componentRef);\n elEventsMap.set(hostElement, unbindEvents);\n return hostElement;\n};\n\nconst LIFECYCLES = [\n LIFECYCLE_WILL_ENTER,\n LIFECYCLE_DID_ENTER,\n LIFECYCLE_WILL_LEAVE,\n LIFECYCLE_DID_LEAVE,\n LIFECYCLE_WILL_UNLOAD,\n];\n\nexport const bindLifecycleEvents = (zone: NgZone, instance: any, element: HTMLElement): (() => void) => {\n return zone.run(() => {\n const unregisters = LIFECYCLES.filter((eventName) => typeof instance[eventName] === 'function').map((eventName) => {\n const handler = (ev: any) => instance[eventName](ev.detail);\n element.addEventListener(eventName, handler);\n return () => element.removeEventListener(eventName, handler);\n });\n return () => unregisters.forEach((fn) => fn());\n });\n};\n\nconst NavParamsToken = new InjectionToken<any>('NavParamsToken');\n\nconst getProviders = (params: { [key: string]: any }) => {\n return [\n {\n provide: NavParamsToken,\n useValue: params,\n },\n {\n provide: NavParams,\n useFactory: provideNavParamsInjectable,\n deps: [NavParamsToken],\n },\n ];\n};\n\nconst provideNavParamsInjectable = (params: { [key: string]: any }) => {\n return new NavParams(params);\n};\n","// TODO: Is there a way we can grab this from angular-component-lib instead?\n\n/* eslint-disable */\n/* tslint:disable */\nimport { fromEvent } from 'rxjs';\n\nexport const proxyInputs = (Cmp: any, inputs: string[]) => {\n const Prototype = Cmp.prototype;\n inputs.forEach((item) => {\n Object.defineProperty(Prototype, item, {\n get() {\n return this.el[item];\n },\n set(val: any) {\n this.z.runOutsideAngular(() => (this.el[item] = val));\n },\n });\n });\n};\n\nexport const proxyMethods = (Cmp: any, methods: string[]) => {\n const Prototype = Cmp.prototype;\n methods.forEach((methodName) => {\n Prototype[methodName] = function () {\n const args = arguments;\n return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));\n };\n });\n};\n\nexport const proxyOutputs = (instance: any, el: any, events: string[]) => {\n events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));\n};\n\n// tslint:disable-next-line: only-arrow-functions\nexport function ProxyCmp(opts: { defineCustomElementFn?: () => void; inputs?: any; methods?: any }) {\n const decorator = function (cls: any) {\n const { defineCustomElementFn, inputs, methods } = opts;\n\n if (defineCustomElementFn !== undefined) {\n defineCustomElementFn();\n }\n\n if (inputs) {\n proxyInputs(cls, inputs);\n }\n if (methods) {\n proxyMethods(cls, methods);\n }\n return cls;\n };\n return decorator;\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n TemplateRef,\n} from '@angular/core';\nimport type { Components, ModalBreakpointChangeEventDetail } from '@ionic/core/components';\n\nimport { ProxyCmp, proxyOutputs } from '../utils/proxy';\n\nexport declare interface IonModal extends Components.IonModal {\n /**\n * Emitted after the modal has presented.\n **/\n ionModalDidPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has presented.\n */\n ionModalWillPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has dismissed.\n */\n ionModalWillDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal has dismissed.\n */\n ionModalDidDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal breakpoint has changed.\n */\n ionBreakpointDidChange: EventEmitter<CustomEvent<ModalBreakpointChangeEventDetail>>;\n /**\n * Emitted after the modal has presented. Shorthand for ionModalDidPresent.\n */\n didPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has presented. Shorthand for ionModalWillPresent.\n */\n willPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the modal has dismissed. Shorthand for ionModalWillDismiss.\n */\n willDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the modal has dismissed. Shorthand for ionModalDidDismiss.\n */\n didDismiss: EventEmitter<CustomEvent>;\n}\n\nconst MODAL_INPUTS = [\n 'animated',\n 'keepContentsMounted',\n 'backdropBreakpoint',\n 'backdropDismiss',\n 'breakpoints',\n 'canDismiss',\n 'cssClass',\n 'enterAnimation',\n 'expandToScroll',\n 'event',\n 'focusTrap',\n 'handle',\n 'handleBehavior',\n 'initialBreakpoint',\n 'isOpen',\n 'keyboardClose',\n 'leaveAnimation',\n 'mode',\n 'presentingElement',\n 'showBackdrop',\n 'translucent',\n 'trigger',\n];\n\nconst MODAL_METHODS = [\n 'present',\n 'dismiss',\n 'onDidDismiss',\n 'onWillDismiss',\n 'setCurrentBreakpoint',\n 'getCurrentBreakpoint',\n];\n\n@ProxyCmp({\n inputs: MODAL_INPUTS,\n methods: MODAL_METHODS,\n})\n/**\n * @Component extends from @Directive\n * so by defining the inputs here we\n * do not need to re-define them for the\n * lazy loaded popover.\n */\n@Directive({\n selector: 'ion-modal',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: MODAL_INPUTS,\n})\n\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonModal {\n // TODO(FW-2827): type\n @ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>;\n\n isCmpOpen = false;\n\n protected el: HTMLElement;\n\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n this.el = r.nativeElement;\n\n this.el.addEventListener('ionMount', () => {\n this.isCmpOpen = true;\n c.detectChanges();\n });\n this.el.addEventListener('didDismiss', () => {\n this.isCmpOpen = false;\n c.detectChanges();\n });\n proxyOutputs(this, this.el, [\n 'ionModalDidPresent',\n 'ionModalWillPresent',\n 'ionModalWillDismiss',\n 'ionModalDidDismiss',\n 'ionBreakpointDidChange',\n 'didPresent',\n 'willPresent',\n 'willDismiss',\n 'didDismiss',\n ]);\n }\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n TemplateRef,\n} from '@angular/core';\nimport type { Components } from '@ionic/core/components';\n\nimport { ProxyCmp, proxyOutputs } from '../utils/proxy';\n\nexport declare interface IonPopover extends Components.IonPopover {\n /**\n * Emitted after the popover has presented.\n */\n ionPopoverDidPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the popover has presented.\n */\n ionPopoverWillPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed.\n */\n ionPopoverWillDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed.\n */\n ionPopoverDidDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has presented. Shorthand for ionPopoverDidPresent.\n */\n didPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted before the popover has presented. Shorthand for ionPopoverWillPresent.\n */\n willPresent: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has presented. Shorthand for ionPopoverWillDismiss.\n */\n willDismiss: EventEmitter<CustomEvent>;\n /**\n * Emitted after the popover has dismissed. Shorthand for ionPopoverDidDismiss.\n */\n didDismiss: EventEmitter<CustomEvent>;\n}\n\nconst POPOVER_INPUTS = [\n 'alignment',\n 'animated',\n 'arrow',\n 'keepContentsMounted',\n 'backdropDismiss',\n 'cssClass',\n 'dismissOnSelect',\n 'enterAnimation',\n 'event',\n 'focusTrap',\n 'isOpen',\n 'keyboardClose',\n 'leaveAnimation',\n 'mode',\n 'showBackdrop',\n 'translucent',\n 'trigger',\n 'triggerAction',\n 'reference',\n 'size',\n 'side',\n];\n\nconst POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];\n\n@ProxyCmp({\n inputs: POPOVER_INPUTS,\n methods: POPOVER_METHODS,\n})\n/**\n * @Component extends from @Directive\n * so by defining the inputs here we\n * do not need to re-define them for the\n * lazy loaded popover.\n */\n@Directive({\n selector: 'ion-popover',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: POPOVER_INPUTS,\n})\n\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonPopover {\n // TODO(FW-2827): type\n @ContentChild(TemplateRef, { static: false }) template: TemplateRef<any>;\n\n isCmpOpen = false;\n\n protected el: HTMLElement;\n\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n this.el = r.nativeElement;\n\n this.el.addEventListener('ionMount', () => {\n this.isCmpOpen = true;\n c.detectChanges();\n });\n this.el.addEventListener('didDismiss', () => {\n this.isCmpOpen = false;\n c.detectChanges();\n });\n proxyOutputs(this, this.el, [\n 'ionPopoverDidPresent',\n 'ionPopoverWillPresent',\n 'ionPopoverWillDismiss',\n 'ionPopoverDidDismiss',\n 'didPresent',\n 'willPresent',\n 'willDismiss',\n 'didDismiss',\n ]);\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport type { AnimationBuilder, NavDirection, RouterDirection } from '@ionic/core/components';\n\nexport const insertView = (views: RouteView[], view: RouteView, direction: RouterDirection): RouteView[] => {\n if (direction === 'root') {\n return setRoot(views, view);\n } else if (direction === 'forward') {\n return setForward(views, view);\n } else {\n return setBack(views, view);\n }\n};\n\nconst setRoot = (views: RouteView[], view: RouteView) => {\n views = views.filter((v) => v.stackId !== view.stackId);\n views.push(view);\n return views;\n};\n\nconst setForward = (views: RouteView[], view: RouteView) => {\n const index = views.indexOf(view);\n if (index >= 0) {\n views = views.filter((v) => v.stackId !== view.stackId || v.id <= view.id);\n } else {\n views.push(view);\n }\n return views;\n};\n\nconst setBack = (views: RouteView[], view: RouteView) => {\n const index = views.indexOf(view);\n if (index >= 0) {\n return views.filter((v) => v.stackId !== view.stackId || v.id <= view.id);\n } else {\n return setRoot(views, view);\n }\n};\n\nexport const getUrl = (router: Router, activatedRoute: ActivatedRoute): string => {\n const urlTree = router.createUrlTree(['.'], { relativeTo: activatedRoute });\n return router.serializeUrl(urlTree);\n};\n\nexport const isTabSwitch = (enteringView: RouteView, leavingView: RouteView | undefined): boolean => {\n if (!leavingView) {\n return true;\n }\n return enteringView.stackId !== leavingView.stackId;\n};\n\nexport const computeStackId = (prefixUrl: string[] | undefined, url: string): string | undefined => {\n if (!prefixUrl) {\n return undefined;\n }\n const segments = toSegments(url);\n for (let i = 0; i < segments.length; i++) {\n if (i >= prefixUrl.length) {\n return segments[i];\n }\n if (segments[i] !== prefixUrl[i]) {\n return undefined;\n }\n }\n return undefined;\n};\n\nexport const toSegments = (path: string): string[] => {\n return path\n .split('/')\n .map((s) => s.trim())\n .filter((s) => s !== '');\n};\n\nexport const destroyView = (view: RouteView | undefined): void => {\n if (view) {\n view.ref.destroy();\n view.unlistenEvents();\n }\n};\n\nexport interface StackWillChangeEvent {\n enteringView: RouteView;\n /**\n * `true` if the event is trigged as a result of a switch\n * between tab navigation stacks.\n */\n tabSwitch: boolean;\n}\n\nexport interface StackDidChangeEvent {\n enteringView: RouteView;\n direction: RouterDirection;\n animation: NavDirection | undefined;\n /**\n * `true` if the event is trigged as a result of a switch\n * between tab navigation stacks.\n */\n tabSwitch: boolean;\n}\n\n// TODO(FW-2827): types\nexport interface RouteView {\n id: number;\n url: string;\n stackId: string | undefined;\n element: HTMLElement;\n ref: ComponentRef<any>;\n savedData?: any;\n savedExtras?: NavigationExtras;\n unlistenEvents: () => void;\n animationBuilder?: AnimationBuilder;\n}\n","import { Location } from '@angular/common';\nimport { ComponentRef, NgZone } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport type { AnimationBuilder, RouterDirection } from '@ionic/core/components';\n\nimport { bindLifecycleEvents } from '../../providers/angular-delegate';\nimport { NavController } from '../../providers/nav-controller';\n\nimport {\n RouteView,\n StackDidChangeEvent,\n computeStackId,\n destroyView,\n getUrl,\n insertView,\n isTabSwitch,\n toSegments,\n} from './stack-utils';\n\n// TODO(FW-2827): types\n\nexport class StackController {\n private views: RouteView[] = [];\n private runningTask?: Promise<any>;\n private skipTransition = false;\n private tabsPrefix: string[] | undefined;\n private activeView: RouteView | undefined;\n private nextId = 0;\n\n constructor(\n tabsPrefix: string | undefined,\n private containerEl: HTMLIonRouterOutletElement,\n private router: Router,\n private navCtrl: NavController,\n private zone: NgZone,\n private location: Location\n ) {\n this.tabsPrefix = tabsPrefix !== undefined ? toSegments(tabsPrefix) : undefined;\n }\n\n createView(ref: ComponentRef<any>, activatedRoute: ActivatedRoute): RouteView {\n const url = getUrl(this.router, activatedRoute);\n const element = ref?.location?.nativeElement as HTMLElement;\n const unlistenEvents = bindLifecycleEvents(this.zone, ref.instance, element);\n return {\n id: this.nextId++,\n stackId: computeStackId(this.tabsPrefix, url),\n unlistenEvents,\n element,\n ref,\n url,\n };\n }\n\n getExistingView(activatedRoute: ActivatedRoute): RouteView | undefined {\n const activatedUrlKey = getUrl(this.router, activatedRoute);\n const view = this.views.find((vw) => vw.url === activatedUrlKey);\n if (view) {\n view.ref.changeDetectorRef.reattach();\n }\n return view;\n }\n\n setActive(enteringView: RouteView): Promise<StackDidChangeEvent> {\n const consumeResult = this.navCtrl.consumeTransition();\n let { direction, animation, animationBuilder } = consumeResult;\n const leavingView = this.activeView;\n const tabSwitch = isTabSwitch(enteringView, leavingView);\n if (tabSwitch) {\n direction = 'back';\n animation = undefined;\n }\n\n const viewsSnapshot = this.views.slice();\n\n let currentNavigation;\n\n const router = this.router as any;\n\n // Angular >= 7.2.0\n if (router.getCurrentNavigation) {\n currentNavigation = router.getCurrentNavigation();\n\n // Angular < 7.2.0\n } else if (router.navigations?.value) {\n currentNavigation = router.navigations.value;\n }\n\n /**\n * If the navigation action\n * sets `replaceUrl: true`\n * then we need to make sure\n * we remove the last item\n * from our views stack\n */\n if (currentNavigation?.extras?.replaceUrl) {\n if (this.views.length > 0) {\n this.views.splice(-1, 1);\n }\n }\n\n const reused = this.views.includes(enteringView);\n const views = this.insertView(enteringView, direction);\n\n // Trigger change detection before transition starts\n // This will call ngOnInit() the first time too, just after the view\n // was attached to the dom, but BEFORE the transition starts\n if (!reused) {\n enteringView.ref.changeDetectorRef.detectChanges();\n }\n\n /**\n * If we are going back from a page that\n * was presented using a custom animation\n * we should default to using that\n * unless the developer explicitly\n * provided another animation.\n */\n const customAnimation = enteringView.animationBuilder;\n if (animationBuilder === undefined && direction === 'back' && !tabSwitch && customAnimation !== undefined) {\n animationBuilder = customAnimation;\n }\n\n /**\n * Save any custom animation so that navigating\n * back will use this custom animation by default.\n */\n if (leavingView) {\n leavingView.animationBuilder = animationBuilder;\n }\n\n // Wait until previous transitions finish\n return this.zone.runOutsideAngular(() => {\n return this.wait(() => {\n // disconnect leaving page from change detection to\n // reduce jank during the page transition\n if (leavingView) {\n leavingView.ref.changeDetectorRef.detach();\n }\n // In case the enteringView is the same as the leavingPage we need to reattach()\n enteringView.ref.changeDetectorRef.reattach();\n\n return this.transition(enteringView, leavingView, animation, this.canGoBack(1), false, animationBuilder)\n .then(() => cleanupAsync(enteringView, views, viewsSnapshot, this.location, this.zone))\n .then(() => ({\n enteringView,\n direction,\n animation,\n tabSwitch,\n }));\n });\n });\n }\n\n canGoBack(deep: number, stackId = this.getActiveStackId()): boolean {\n return this.getStack(stackId).length > deep;\n }\n\n pop(deep: number, stackId = this.getActiveStackId()): Promise<boolean> {\n return this.zone.run(() => {\n const views = this.getStack(stackId);\n if (views.length <= deep) {\n return Promise.resolve(false);\n }\n const view = views[views.length - deep - 1];\n let url = view.url;\n\n const viewSavedData = view.savedData;\n if (viewSavedData) {\n const primaryOutlet = viewSavedData.get('primary');\n if (primaryOutlet?.route?._routerState?.snapshot.url) {\n url = primaryOutlet.route._routerState.snapshot.url;\n }\n }\n const { animationBuilder } = this.navCtrl.consumeTransition();\n return this.navCtrl.navigateBack(url, { ...view.savedExtras, animation: animationBuilder }).then(() => true);\n });\n }\n\n startBackTransition(): Promise<boolean> | Promise<void> {\n const leavingView = this.activeView;\n if (leavingView) {\n const views = this.getStack(leavingView.stackId);\n const enteringView = views[views.length - 2];\n const customAnimation = enteringView.animationBuilder;\n\n return this.wait(() => {\n return this.transition(\n enteringView, // entering view\n leavingView, // leaving view\n 'back',\n this.canGoBack(2),\n true,\n customAnimation\n );\n });\n }\n return Promise.resolve();\n }\n\n endBackTransition(shouldComplete: boolean): void {\n if (shouldComplete) {\n this.skipTransition = true;\n this.pop(1);\n } else if (this.activeView) {\n cleanup(this.activeView, this.views, this.views, this.location, this.zone);\n }\n }\n\n getLastUrl(stackId?: string): RouteView | undefined {\n const views = this.getStack(stackId);\n return views.length > 0 ? views[views.length - 1] : undefined;\n }\n\n /**\n * @internal\n */\n getRootUrl(stackId?: string): RouteView | undefined {\n const views = this.getStack(stackId);\n return views.length > 0 ? views[0] : undefined;\n }\n\n getActiveStackId(): string | undefined {\n return this.activeView ? this.activeView.stackId : undefined;\n }\n\n /**\n * @internal\n */\n getActiveView(): RouteView | undefined {\n return this.activeView;\n }\n\n hasRunningTask(): boolean {\n return this.runningTask !== undefined;\n }\n\n destroy(): void {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.containerEl = undefined!;\n this.views.forEach(destroyView);\n this.activeView = undefined;\n this.views = [];\n }\n\n private getStack(stackId: string | undefined) {\n return this.views.filter((v) => v.stackId === stackId);\n }\n\n private insertView(enteringView: RouteView, direction: RouterDirection) {\n this.activeView = enteringView;\n this.views = insertView(this.views, enteringView, direction);\n return this.views.slice();\n }\n\n private transition(\n enteringView: RouteView | undefined,\n leavingView: RouteView | undefined,\n direction: 'forward' | 'back' | undefined,\n showGoBack: boolean,\n progressAnimation: boolean,\n animationBuilder?: AnimationBuilder\n ) {\n if (this.skipTransition) {\n this.skipTransition = false;\n return Promise.resolve(false);\n }\n if (leavingView === enteringView) {\n return Promise.resolve(false);\n }\n const enteringEl = enteringView ? enteringView.element : undefined;\n const leavingEl = leavingView ? leavingView.element : undefined;\n const containerEl = this.containerEl;\n if (enteringEl && enteringEl !== leavingEl) {\n enteringEl.classList.add('ion-page');\n enteringEl.classList.add('ion-page-invisible');\n\n if ((containerEl as any).commit) {\n return containerEl.commit(enteringEl, leavingEl, {\n duration: direction === undefined ? 0 : undefined,\n direction,\n showGoBack,\n progressAnimation,\n animationBuilder,\n });\n }\n }\n return Promise.resolve(false);\n }\n\n private async wait<T>(task: () => Promise<T>): Promise<T> {\n if (this.runningTask !== undefined) {\n await this.runningTask;\n this.runningTask = undefined;\n }\n const promise = (this.runningTask = task());\n promise.finally(() => (this.runningTask = undefined));\n return promise;\n }\n}\n\nconst cleanupAsync = (\n activeRoute: RouteView,\n views: RouteView[],\n viewsSnapshot: RouteView[],\n location: Location,\n zone: NgZone\n) => {\n if (typeof (requestAnimationFrame as any) === 'function') {\n return new Promise<void>((resolve) => {\n requestAnimationFrame(() => {\n cleanup(activeRoute, views, viewsSnapshot, location, zone);\n resolve();\n });\n });\n }\n return Promise.resolve();\n};\n\nconst cleanup = (\n activeRoute: RouteView,\n views: RouteView[],\n viewsSnapshot: RouteView[],\n location: Location,\n zone: NgZone\n) => {\n /**\n * Re-enter the Angular zone when destroying page components. This will allow\n * lifecycle events (`ngOnDestroy`) to be run inside the Angular zone.\n */\n zone.run(() => viewsSnapshot.filter((view) => !views.includes(view)).forEach(destroyView));\n\n views.forEach((view) => {\n /**\n * In the event that a user navigated multiple\n * times in rapid succession, we want to make sure\n * we don't pre-emptively detach a view while\n * it is in mid-transition.\n *\n * In this instance we also do not care about query\n * params or fragments as it will be the same view regardless\n */\n const locationWithoutParams = location.path().split('?')[0];\n const locationWithoutFragment = locationWithoutParams.split('#')[0];\n\n if (view !== activeRoute && view.url !== locationWithoutFragment) {\n const element = view.element;\n element.setAttribute('aria-hidden', 'true');\n element.classList.add('ion-page-hidden');\n view.ref.changeDetectorRef.detach();\n }\n });\n};\n","import { Location } from '@angular/common';\nimport {\n ComponentRef,\n ElementRef,\n Injector,\n NgZone,\n OnDestroy,\n OnInit,\n ViewContainerRef,\n inject,\n Attribute,\n Directive,\n EventEmitter,\n Optional,\n Output,\n SkipSelf,\n EnvironmentInjector,\n Input,\n InjectionToken,\n Injectable,\n reflectComponentType,\n} from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport { OutletContext, Router, ActivatedRoute, ChildrenOutletContexts, PRIMARY_OUTLET, Data } from '@angular/router';\nimport { componentOnReady } from '@ionic/core/components';\nimport type { AnimationBuilder } from '@ionic/core/components';\nimport { Observable, BehaviorSubject, Subscription, combineLatest, of } from 'rxjs';\nimport { distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\n\nimport { Config } from '../../providers/config';\nimport { NavController } from '../../providers/nav-controller';\n\nimport { StackController } from './stack-controller';\nimport { RouteView, StackDidChangeEvent, StackWillChangeEvent, getUrl, isTabSwitch } from './stack-utils';\n\n// TODO(FW-2827): types\n\n@Directive({\n selector: 'ion-router-outlet',\n exportAs: 'outlet',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['animated', 'animation', 'mode', 'swipeGesture'],\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class IonRouterOutlet implements OnDestroy, OnInit {\n abstract outletContent: any;\n\n nativeEl: HTMLIonRouterOutletElement;\n activatedView: RouteView | null = null;\n tabsPrefix: string | undefined;\n\n private _swipeGesture?: boolean;\n private stackCtrl: StackController;\n\n // Maintain map of activated route proxies for each component instance\n private proxyMap = new WeakMap<any, ActivatedRoute>();\n // Keep the latest activated route in a subject for the proxy routes to switch map to\n private currentActivatedRoute$ = new BehaviorSubject<{ component: any; activatedRoute: ActivatedRoute } | null>(null);\n\n private activated: ComponentRef<any> | null = null;\n /** @internal */\n get activatedComponentRef(): ComponentRef<any> | null {\n return this.activated;\n }\n private _activatedRoute: ActivatedRoute | null = null;\n\n /**\n * The name of the outlet\n */\n @Input() name = PRIMARY_OUTLET;\n\n /** @internal */\n @Output() stackWillChange = new EventEmitter<StackWillChangeEvent>();\n /** @internal */\n @Output() stackDidChange = new EventEmitter<StackDidChangeEvent>();\n\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('activate') activateEvents = new EventEmitter<any>();\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('deactivate') deactivateEvents = new EventEmitter<any>();\n\n private parentContexts = inject(ChildrenOutletContexts);\n private location = inject(ViewContainerRef);\n private environmentInjector = inject(EnvironmentInjector);\n private inputBinder = inject(INPUT_BINDER, { optional: true });\n /** @nodoc */\n readonly supportsBindingToComponentInputs = true;\n\n // Ionic providers\n private config = inject(Config);\n private navCtrl = inject(NavController);\n\n set animation(animation: AnimationBuilder) {\n this.nativeEl.animation = animation;\n }\n\n set animated(animated: boolean) {\n this.nativeEl.animated = animated;\n }\n\n set swipeGesture(swipe: boolean) {\n this._swipeGesture = swipe;\n\n this.nativeEl.swipeHandler = swipe\n ? {\n canStart: () => this.stackCtrl.canGoBack(1) && !this.stackCtrl.hasRunningTask(),\n onStart: () => this.stackCtrl.startBackTransition(),\n onEnd: (shouldContinue) => this.stackCtrl.endBackTransition(shouldContinue),\n }\n : undefined;\n }\n\n constructor(\n @Attribute('name') name: string,\n @Optional() @Attribute('tabs') tabs: string,\n commonLocation: Location,\n elementRef: ElementRef,\n router: Router,\n zone: NgZone,\n activatedRoute: ActivatedRoute,\n @SkipSelf() @Optional() readonly parentOutlet?: IonRouterOutlet\n ) {\n this.nativeEl = elementRef.nativeElement;\n this.name = name || PRIMARY_OUTLET;\n this.tabsPrefix = tabs === 'true' ? getUrl(router, activatedRoute) : undefined;\n this.stackCtrl = new StackController(this.tabsPrefix, this.nativeEl, router, this.navCtrl, zone, commonLocation);\n this.parentContexts.onChildOutletCreated(this.name, this as any);\n }\n\n ngOnDestroy(): void {\n this.stackCtrl.destroy();\n this.inputBinder?.unsubscribeFromRouteData(this);\n }\n\n getContext(): OutletContext | null {\n return this.parentContexts.getContext(this.name);\n }\n\n ngOnInit(): void {\n this.initializeOutletWithName();\n }\n\n // Note: Ionic deviates from the Angular Router implementation here\n private initializeOutletWithName() {\n if (!this.activated) {\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const context = this.getContext();\n if (context?.route) {\n this.activateWith(context.route, context.injector);\n }\n }\n\n new Promise((resolve) => componentOnReady(this.nativeEl, resolve)).then(() => {\n if (this._swipeGesture === undefined) {\n this.swipeGesture = this.config.getBoolean('swipeBackEnabled', (this.nativeEl as any).mode === 'ios');\n }\n });\n }\n\n get isActivated(): boolean {\n return !!this.activated;\n }\n\n get component(): Record<string, unknown> {\n if (!this.activated) {\n throw new Error('Outlet is not activated');\n }\n return this.activated.instance;\n }\n\n get activatedRoute(): ActivatedRoute {\n if (!this.activated) {\n throw new Error('Outlet is not activated');\n }\n return this._activatedRoute as ActivatedRoute;\n }\n\n get activatedRouteData(): Data {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n detach(): ComponentRef<any> {\n throw new Error('incompatible reuse strategy');\n }\n\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n attach(_ref: ComponentRef<any>, _activatedRoute: ActivatedRoute): void {\n throw new Error('incompatible reuse strategy');\n }\n\n deactivate(): void {\n if (this.activated) {\n if (this.activatedView) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const context = this.getContext()!;\n this.activatedView.savedData = new Map(context.children['contexts']);\n\n /**\n * Angular v11.2.10 introduced a change\n * where this route context is cleared out when\n * a router-outlet is deactivated, However,\n * we need this route information in order to\n * return a user back to the correct tab when\n * leaving and then going back to the tab context.\n */\n const primaryOutlet = this.activatedView.savedData.get('primary');\n if (primaryOutlet && context.route) {\n primaryOutlet.route = { ...context.route };\n }\n\n /**\n * Ensure we are saving the NavigationExtras\n * data otherwise it will be lost\n */\n this.activatedView.savedExtras = {};\n if (context.route) {\n const contextSnapshot = context.route.snapshot;\n\n this.activatedView.savedExtras.queryParams = contextSnapshot.queryParams;\n (this.activatedView.savedExtras.fragment as string | null) = contextSnapshot.fragment;\n }\n }\n const c = this.component;\n this.activatedView = null;\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n\n activateWith(activatedRoute: ActivatedRoute, environmentInjector: EnvironmentInjector | null): void {\n if (this.isActivated) {\n throw new Error('Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n\n let cmpRef: any;\n let enteringView = this.stackCtrl.getExistingView(activatedRoute);\n if (enteringView) {\n cmpRef = this.activated = enteringView.ref;\n const saved = enteringView.savedData;\n if (saved) {\n // self-restore\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const context = this.getContext()!;\n context.children['contexts'] = saved;\n }\n // Updated activated route proxy for this component\n this.updateActivatedRouteProxy(cmpRef.instance, activatedRoute);\n } else {\n const snapshot = (activatedRoute as any)._futureSnapshot;\n\n /**\n * Angular 14 introduces a new `loadComponent` property to the route config.\n * This function will assign a `component` property to the route snapshot.\n * We check for the presence of this property to determine if the route is\n * using standalone components.\n */\n const childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n\n // We create an activated route proxy object that will maintain future updates for this component\n // over its lifecycle in the stack.\n const component$ = new BehaviorSubject<any>(null);\n const activatedRouteProxy = this.createActivatedRouteProxy(component$, activatedRoute);\n\n const injector = new OutletInjector(activatedRouteProxy, childContexts, this.location.injector);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const component = snapshot.routeConfig!.component ?? snapshot.component;\n\n /**\n * View components need to be added as a child of ion-router-outlet\n * for page transitions and swipe to go back.\n * However, createComponent mounts components as siblings of the\n * ViewContainerRef. As a result, outletContent must reference\n * an ng-container inside of ion-router-outlet and not\n * ion-router-outlet itself.\n */\n cmpRef = this.activated = this.outletContent.createComponent(component, {\n index: this.outletContent.length,\n injector,\n environmentInjector: environmentInjector ?? this.environmentInjector,\n });\n\n // Once the component is created we can push it to our local subject supplied to the proxy\n component$.next(cmpRef.instance);\n\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n\n /**\n * At this point this.activated has been set earlier\n * in this function, so it is guaranteed to be non-null.\n */\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n enteringView = this.stackCtrl.createView(this.activated!, activatedRoute);\n\n // Store references to the proxy by component\n this.proxyMap.set(cmpRef.instance, activatedRouteProxy);\n this.currentActivatedRoute$.next({ component: cmpRef.instance, activatedRoute });\n }\n\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n\n this.activatedView = enteringView;\n\n /**\n * The top outlet is set prior to the entering view's transition completing,\n * so that when we have nested outlets (e.g. ion-tabs inside an ion-router-outlet),\n * the tabs outlet will be assigned as the top outlet when a view inside tabs is\n * activated.\n *\n * In this scenario, activeWith is called for both the tabs and the root router outlet.\n * To avoid a race condition, we assign the top outlet synchronously.\n */\n this.navCtrl.setTopOutlet(this);\n\n const leavingView = this.stackCtrl.getActiveView();\n\n this.stackWillChange.emit({\n enteringView,\n tabSwitch: isTabSwitch(enteringView, leavingView),\n });\n\n this.stackCtrl.setActive(enteringView).then((data) => {\n this.activateEvents.emit(cmpRef.instance);\n this.stackDidChange.emit(data);\n });\n }\n\n /**\n * Returns `true` if there are pages in the stack to go back.\n */\n canGoBack(deep = 1, stackId?: string): boolean {\n return this.stackCtrl.canGoBack(deep, stackId);\n }\n\n /**\n * Resolves to `true` if it the outlet was able to sucessfully pop the last N pages.\n */\n pop(deep = 1, stackId?: string): Promise<boolean> {\n return this.stackCtrl.pop(deep, stackId);\n }\n\n /**\n * Returns the URL of the active page of each stack.\n */\n getLastUrl(stackId?: string): string | undefined {\n const active = this.stackCtrl.getLastUrl(stackId);\n return active ? active.url : undefined;\n }\n\n /**\n * Returns the RouteView of the active page of each stack.\n * @internal\n */\n getLastRouteView(stackId?: string): RouteView | undefined {\n return this.stackCtrl.getLastUrl(stackId);\n }\n\n /**\n * Returns the root view in the tab stack.\n * @internal\n */\n getRootView(stackId?: string): RouteView | undefined {\n return this.stackCtrl.getRootUrl(stackId);\n }\n\n /**\n * Returns the active stack ID. In the context of ion-tabs, it means the active tab.\n */\n getActiveStackId(): string | undefined {\n return this.stackCtrl.getActiveStackId();\n }\n\n /**\n * Since the activated route can change over the life time of a component in an ion router outlet, we create\n * a proxy so that we can update the values over time as a user navigates back to components already in the stack.\n */\n private createActivatedRouteProxy(component$: Observable<any>, activatedRoute: ActivatedRoute): ActivatedRoute {\n const proxy: any = new ActivatedRoute();\n\n proxy._futureSnapshot = (activatedRoute as any)._futureSnapshot;\n proxy._routerState = (activatedRoute as any)._routerState;\n proxy.snapshot = activatedRoute.snapshot;\n proxy.outlet = activatedRoute.outlet;\n proxy.component = activatedRoute.component;\n\n // Setup wrappers for the observables so consumers don't have to worry about switching to new observables as the state updates\n (proxy as any)._paramMap = this.proxyObservable(component$, 'paramMap');\n (proxy as any)._queryParamMap = this.proxyObservable(component$, 'queryParamMap');\n proxy.url = this.proxyObservable(component$, 'url');\n proxy.params = this.proxyObservable(component$, 'params');\n proxy.queryParams = this.proxyObservable(component$, 'queryParams');\n proxy.fragment = this.proxyObservable(component$, 'fragment');\n proxy.data = this.proxyObservable(component$, 'data');\n\n return proxy as ActivatedRoute;\n }\n\n /**\n * Create a wrapped observable that will switch to the latest activated route matched by the given component\n */\n private proxyObservable(component$: Observable<any>, path: string): Observable<any> {\n return component$.pipe(\n // First wait until the component instance is pushed\n filter((component) => !!component),\n switchMap((component) =>\n this.currentActivatedRoute$.pipe(\n filter((current) => current !== null && current.component === component),\n switchMap((current) => current && (current.activatedRoute as any)[path]),\n distinctUntilChanged()\n )\n )\n );\n }\n\n /**\n * Updates the activated route proxy for the given component to the new incoming router state\n */\n private updateActivatedRouteProxy(component: any, activatedRoute: ActivatedRoute): void {\n const proxy = this.proxyMap.get(component);\n if (!proxy) {\n throw new Error(`Could not find activated route proxy for view`);\n }\n\n (proxy as any)._futureSnapshot = (activatedRoute as any)._futureSnapshot;\n (proxy as any)._routerState = (activatedRoute as any)._routerState;\n proxy.snapshot = activatedRoute.snapshot;\n proxy.outlet = activatedRoute.outlet;\n proxy.component = activatedRoute.component;\n\n this.currentActivatedRoute$.next({ component, activatedRoute });\n }\n}\n\nclass OutletInjector implements Injector {\n constructor(private route: ActivatedRoute, private childContexts: ChildrenOutletContexts, private parent: Injector) {}\n\n get(token: any, notFoundValue?: any): any {\n if (token === ActivatedRoute) {\n return this.route;\n }\n\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n\n return this.parent.get(token, notFoundValue);\n }\n}\n\n// TODO: FW-4785 - Remove this once Angular 15 support is dropped\nconst INPUT_BINDER = new InjectionToken<RoutedComponentInputBinder>('');\n\n/**\n * Injectable used as a tree-shakable provider for opting in to binding router data to component\n * inputs.\n *\n * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or\n * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,\n * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.\n * Importantly, when an input does not have an item in the route data with a matching key, this\n * input is set to `undefined`. If it were not done this way, the previous information would be\n * retained if the data got removed from the route (i.e. if a query parameter is removed).\n *\n * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that\n * the subscriptions are cleaned up.\n */\n@Injectable()\nclass RoutedComponentInputBinder {\n private outletDataSubscriptions = new Map<IonRouterOutlet, Subscription>();\n\n bindActivatedRouteToOutletComponent(outlet: IonRouterOutlet): void {\n this.unsubscribeFromRouteData(outlet);\n this.subscribeToRouteData(outlet);\n }\n\n unsubscribeFromRouteData(outlet: IonRouterOutlet): void {\n this.outletDataSubscriptions.get(outlet)?.unsubscribe();\n this.outletDataSubscriptions.delete(outlet);\n }\n\n private subscribeToRouteData(outlet: IonRouterOutlet) {\n const { activatedRoute } = outlet;\n const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data])\n .pipe(\n switchMap(([queryParams, params, data], index) => {\n data = { ...queryParams, ...params, ...data };\n // Get the first result from the data subscription synchronously so it's available to\n // the component as soon as possible (and doesn't require a second change detection).\n if (index === 0) {\n return of(data);\n }\n // Promise.resolve is used to avoid synchronously writing the wrong data when\n // two of the Observables in the `combineLatest` stream emit one after\n // another.\n return Promise.resolve(data);\n })\n )\n .subscribe((data) => {\n // Outlet may have been deactivated or changed names to be associated with a different\n // route\n if (\n !outlet.isActivated ||\n !outlet.activatedComponentRef ||\n outlet.activatedRoute !== activatedRoute ||\n activatedRoute.component === null\n ) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n\n const mirror = reflectComponentType(activatedRoute.component);\n if (!mirror) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n\n for (const { templateName } of mirror.inputs) {\n outlet.activatedComponentRef.setInput(templateName, data[templateName]);\n }\n });\n\n this.outletDataSubscriptions.set(outlet, dataSubscription);\n }\n}\n\nexport const provideComponentInputBinding = (): Provider => {\n return {\n provide: INPUT_BINDER,\n useFactory: componentInputBindingFactory,\n deps: [Router],\n };\n};\n\nfunction componentInputBindingFactory(router?: Router) {\n /**\n * We cast the router to any here, since the componentInputBindingEnabled\n * property is not available until Angular v16.\n */\n if ((router as any)?.componentInputBindingEnabled) {\n return new RoutedComponentInputBinder();\n }\n return null;\n}\n","declare const __zone_symbol__requestAnimationFrame: any;\ndeclare const requestAnimationFrame: any;\n\nexport const raf = (h: any): any => {\n if (typeof __zone_symbol__requestAnimationFrame === 'function') {\n return __zone_symbol__requestAnimationFrame(h);\n }\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame(h);\n }\n return setTimeout(h);\n};\n","import { AfterViewInit, ElementRef, Injector, OnDestroy, Directive, HostListener } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { raf } from '../../utils/util';\n\n// TODO(FW-2827): types\n\n@Directive()\nexport class ValueAccessor implements ControlValueAccessor, AfterViewInit, OnDestroy {\n private onChange: (value: any) => void = () => {\n /**/\n };\n private onTouched: () => void = () => {\n /**/\n };\n protected lastValue: any;\n private statusChanges?: Subscription;\n\n constructor(protected injector: Injector, protected elementRef: ElementRef) {}\n\n writeValue(value: any): void {\n this.elementRef.nativeElement.value = this.lastValue = value;\n setIonicClasses(this.elementRef);\n }\n\n /**\n * Notifies the ControlValueAccessor of a change in the value of the control.\n *\n * This is called by each of the ValueAccessor directives when we want to update\n * the status and validity of the form control. For example with text components this\n * is called when the ionInput event is fired. For select components this is called\n * when the ionChange event is fired.\n *\n * This also updates the Ionic form status classes on the element.\n *\n * @param el The component element.\n * @param value The new value of the control.\n */\n handleValueChange(el: HTMLElement, value: any): void {\n if (el === this.elementRef.nativeElement) {\n if (value !== this.lastValue) {\n this.lastValue = value;\n this.onChange(value);\n }\n setIonicClasses(this.elementRef);\n }\n }\n\n @HostListener('ionBlur', ['$event.target'])\n _handleBlurEvent(el: any): void {\n if (el === this.elementRef.nativeElement) {\n this.onTouched();\n setIonicClasses(this.elementRef);\n\n // When ion-radio is blurred, el and this.elementRef.nativeElement are\n // different so we need to check if the closest ion-radio-group is the same\n // as this.elementRef.nativeElement and if so, we need to mark the radio group\n // as touched\n } else if (el.closest('ion-radio-group') === this.elementRef.nativeElement) {\n this.onTouched();\n }\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.elementRef.nativeElement.disabled = isDisabled;\n }\n\n ngOnDestroy(): void {\n if (this.statusChanges) {\n this.statusChanges.unsubscribe();\n }\n }\n\n ngAfterViewInit(): void {\n let ngControl;\n try {\n ngControl = this.injector.get<NgControl>(NgControl);\n } catch {\n /* No FormControl or ngModel binding */\n }\n\n if (!ngControl) {\n return;\n }\n\n // Listen for changes in validity, disabled, or pending states\n if (ngControl.statusChanges) {\n this.statusChanges = ngControl.statusChanges.subscribe(() => setIonicClasses(this.elementRef));\n }\n\n /**\n * TODO FW-2787: Remove this in favor of https://github.com/angular/angular/issues/10887\n * whenever it is implemented.\n */\n const formControl = ngControl.control as any;\n if (formControl) {\n const methodsToPatch = ['markAsTouched', 'markAllAsTouched', 'markAsUntouched', 'markAsDirty', 'markAsPristine'];\n methodsToPatch.forEach((method) => {\n if (typeof formControl[method] !== 'undefined') {\n const oldFn = formControl[method].bind(formControl);\n formControl[method] = (...params: any[]) => {\n oldFn(...params);\n setIonicClasses(this.elementRef);\n };\n }\n });\n }\n }\n}\n\nexport const setIonicClasses = (element: ElementRef): void => {\n raf(() => {\n const input = element.nativeElement as HTMLInputElement;\n const hasValue = input.value != null && input.value.toString().length > 0;\n const classes = getClasses(input);\n setClasses(input, classes);\n const item = input.closest('ion-item');\n if (item) {\n if (hasValue) {\n setClasses(item, [...classes, 'item-has-value']);\n } else {\n setClasses(item, classes);\n }\n }\n });\n};\n\nconst getClasses = (element: HTMLElement) => {\n const classList = element.classList;\n const classes: string[] = [];\n for (let i = 0; i < classList.length; i++) {\n const item = classList.item(i);\n if (item !== null && startsWith(item, 'ng-')) {\n classes.push(`ion-${item.substring(3)}`);\n }\n }\n return classes;\n};\n\nconst setClasses = (element: HTMLElement, classes: string[]) => {\n const classList = element.classList;\n classList.remove('ion-valid', 'ion-invalid', 'ion-touched', 'ion-untouched', 'ion-dirty', 'ion-pristine');\n classList.add(...classes);\n};\n\nconst startsWith = (input: string, search: string): boolean => {\n return input.substring(0, search.length) === search;\n};\n","import { HostListener, Optional, ElementRef, NgZone, ChangeDetectorRef, Directive } from '@angular/core';\nimport type { Components } from '@ionic/core';\n\nimport { Config } from '../../providers/config';\nimport { NavController } from '../../providers/nav-controller';\nimport { ProxyCmp } from '../../utils/proxy';\n\nimport { IonRouterOutlet } from './router-outlet';\n\nconst BACK_BUTTON_INPUTS = ['color', 'defaultHref', 'disabled', 'icon', 'mode', 'routerAnimation', 'text', 'type'];\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport declare interface IonBackButton extends Components.IonBackButton {}\n\n@ProxyCmp({\n inputs: BACK_BUTTON_INPUTS,\n})\n@Directive({\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: BACK_BUTTON_INPUTS,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonBackButton {\n protected el: HTMLElement;\n\n constructor(\n @Optional() private routerOutlet: IonRouterOutlet,\n private navCtrl: NavController,\n private config: Config,\n private r: ElementRef,\n protected z: NgZone,\n c: ChangeDetectorRef\n ) {\n c.detach();\n this.el = this.r.nativeElement;\n }\n\n /**\n * @internal\n */\n @HostListener('click', ['$event'])\n onClick(ev: Event): void {\n const defaultHref = this.defaultHref || this.config.get('backButtonDefaultHref');\n\n if (this.routerOutlet?.canGoBack()) {\n this.navCtrl.setDirection('back', undefined, undefined, this.routerAnimation);\n this.routerOutlet.pop();\n ev.preventDefault();\n } else if (defaultHref != null) {\n this.navCtrl.navigateBack(defaultHref, { animation: this.routerAnimation });\n ev.preventDefault();\n }\n }\n}\n","import {\n ElementRef,\n Injector,\n EnvironmentInjector,\n NgZone,\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n} from '@angular/core';\nimport type { Components } from '@ionic/core';\n\nimport { AngularDelegate } from '../../providers/angular-delegate';\nimport { ProxyCmp, proxyOutputs } from '../../utils/proxy';\n\nconst NAV_INPUTS = ['animated', 'animation', 'root', 'rootParams', 'swipeGesture'];\n\nconst NAV_METHODS = [\n 'push',\n 'insert',\n 'insertPages',\n 'pop',\n 'popTo',\n 'popToRoot',\n 'removeIndex',\n 'setRoot',\n 'setPages',\n 'getActive',\n 'getByIndex',\n 'canGoBack',\n 'getPrevious',\n];\n\nexport declare interface IonNav extends Components.IonNav {\n /**\n * Event fired when the nav will change components\n */\n ionNavWillChange: EventEmitter<CustomEvent<void>>;\n /**\n * Event fired when the nav has changed components\n */\n ionNavDidChange: EventEmitter<CustomEvent<void>>;\n}\n\n@ProxyCmp({\n inputs: NAV_INPUTS,\n methods: NAV_METHODS,\n})\n@Directive({\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: NAV_INPUTS,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonNav {\n protected el: HTMLElement;\n constructor(\n ref: ElementRef,\n environmentInjector: EnvironmentInjector,\n injector: Injector,\n angularDelegate: AngularDelegate,\n protected z: NgZone,\n c: ChangeDetectorRef\n ) {\n c.detach();\n this.el = ref.nativeElement;\n ref.nativeElement.delegate = angularDelegate.create(environmentInjector, injector);\n proxyOutputs(this, this.el, ['ionNavDidChange', 'ionNavWillChange']);\n }\n}\n","import { LocationStrategy } from '@angular/common';\nimport { ElementRef, OnChanges, OnInit, Directive, HostListener, Input, Optional } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport type { AnimationBuilder, RouterDirection } from '@ionic/core/components';\n\nimport { NavController } from '../../providers/nav-controller';\n\n/**\n * Adds support for Ionic routing directions and animations to the base Angular router link directive.\n *\n * When the router link is clicked, the directive will assign the direction and\n * animation so that the routing integration will transition correctly.\n */\n@Directive({\n selector: ':not(a):not(area)[routerLink]',\n})\nexport class RouterLinkDelegateDirective implements OnInit, OnChanges {\n @Input()\n routerDirection: RouterDirection = 'forward';\n\n @Input()\n routerAnimation?: AnimationBuilder;\n\n constructor(\n private locationStrategy: LocationStrategy,\n private navCtrl: NavController,\n private elementRef: ElementRef,\n private router: Router,\n @Optional() private routerLink?: RouterLink\n ) {}\n\n ngOnInit(): void {\n this.updateTargetUrlAndHref();\n this.updateTabindex();\n }\n\n ngOnChanges(): void {\n this.updateTargetUrlAndHref();\n }\n\n /**\n * The `tabindex` is set to `0` by default on the host element when\n * the `routerLink` directive is used. This causes issues with Ionic\n * components that wrap an `a` or `button` element, such as `ion-item`.\n * See issue https://github.com/angular/angular/issues/28345\n *\n * This method removes the `tabindex` attribute from the host element\n * to allow the Ionic component to manage the focus state correctly.\n */\n private updateTabindex() {\n // Ionic components that render a native anchor or button element\n const ionicComponents = [\n 'ION-BACK-BUTTON',\n 'ION-BREADCRUMB',\n 'ION-BUTTON',\n 'ION-CARD',\n 'ION-FAB-BUTTON',\n 'ION-ITEM',\n 'ION-ITEM-OPTION',\n 'ION-MENU-BUTTON',\n 'ION-SEGMENT-BUTTON',\n 'ION-TAB-BUTTON',\n ];\n const hostElement = this.elementRef.nativeElement;\n\n if (ionicComponents.includes(hostElement.tagName)) {\n if (hostElement.getAttribute('tabindex') === '0') {\n hostElement.removeAttribute('tabindex');\n }\n }\n }\n\n private updateTargetUrlAndHref() {\n if (this.routerLink?.urlTree) {\n const href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.routerLink.urlTree));\n this.elementRef.nativeElement.href = href;\n }\n }\n\n /**\n * @internal\n */\n @HostListener('click', ['$event'])\n onClick(ev: UIEvent): void {\n this.navCtrl.setDirection(this.routerDirection, undefined, undefined, this.routerAnimation);\n\n /**\n * This prevents the browser from\n * performing a page reload when pressing\n * an Ionic component with routerLink.\n * The page reload interferes with routing\n * and causes ion-back-button to disappear\n * since the local history is wiped on reload.\n */\n ev.preventDefault();\n }\n}\n\n@Directive({\n selector: 'a[routerLink],area[routerLink]',\n})\nexport class RouterLinkWithHrefDelegateDirective implements OnInit, OnChanges {\n @Input()\n routerDirection: RouterDirection = 'forward';\n\n @Input()\n routerAnimation?: AnimationBuilder;\n\n constructor(\n private locationStrategy: LocationStrategy,\n private navCtrl: NavController,\n private elementRef: ElementRef,\n private router: Router,\n @Optional() private routerLink?: RouterLink\n ) {}\n\n ngOnInit(): void {\n this.updateTargetUrlAndHref();\n }\n\n ngOnChanges(): void {\n this.updateTargetUrlAndHref();\n }\n\n private updateTargetUrlAndHref() {\n if (this.routerLink?.urlTree) {\n const href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.routerLink.urlTree));\n this.elementRef.nativeElement.href = href;\n }\n }\n\n /**\n * @internal\n */\n @HostListener('click')\n onClick(): void {\n this.navCtrl.setDirection(this.routerDirection, undefined, undefined, this.routerAnimation);\n }\n}\n","import {\n AfterContentChecked,\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Output,\n ViewChild,\n AfterViewInit,\n QueryList,\n} from '@angular/core';\n\nimport { NavController } from '../../providers/nav-controller';\n\nimport { StackDidChangeEvent, StackWillChangeEvent } from './stack-utils';\n\n@Directive({\n selector: 'ion-tabs',\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class IonTabs implements AfterViewInit, AfterContentInit, AfterContentChecked {\n /**\n * Note: These must be redeclared on each child class since it needs\n * access to generated components such as IonRouterOutlet and IonTabBar.\n */\n abstract outlet: any;\n abstract tabBar: any;\n abstract tabBars: QueryList<any>;\n abstract tabs: QueryList<any>;\n\n @ViewChild('tabsInner', { read: ElementRef, static: true }) tabsInner: ElementRef<HTMLDivElement>;\n\n /**\n * Emitted before the tab view is changed.\n */\n @Output() ionTabsWillChange = new EventEmitter<{ tab: string }>();\n /**\n * Emitted after the tab view is changed.\n */\n @Output() ionTabsDidChange = new EventEmitter<{ tab: string }>();\n\n private tabBarSlot = 'bottom';\n\n private hasTab = false;\n private selectedTab?: { tab: string };\n private leavingTab?: any;\n\n constructor(private navCtrl: NavController) {}\n\n ngAfterViewInit(): void {\n /**\n * Developers must pass at least one ion-tab\n * inside of ion-tabs if they want to use a\n * basic tab-based navigation without the\n * history stack or URL updates associated\n * with the router.\n */\n const firstTab = this.tabs.length > 0 ? this.tabs.first : undefined;\n\n if (firstTab) {\n this.hasTab = true;\n this.setActiveTab(firstTab.tab);\n this.tabSwitch();\n }\n }\n\n ngAfterContentInit(): void {\n this.detectSlotChanges();\n }\n\n ngAfterContentChecked(): void {\n this.detectSlotChanges();\n }\n\n /**\n * @internal\n */\n onStackWillChange({ enteringView, tabSwitch }: StackWillChangeEvent): void {\n const stackId = enteringView.stackId;\n if (tabSwitch && stackId !== undefined) {\n this.ionTabsWillChange.emit({ tab: stackId });\n }\n }\n\n /**\n * @internal\n */\n onStackDidChange({ enteringView, tabSwitch }: StackDidChangeEvent): void {\n const stackId = enteringView.stackId;\n if (tabSwitch && stackId !== undefined) {\n if (this.tabBar) {\n this.tabBar.selectedTab = stackId;\n }\n this.ionTabsDidChange.emit({ tab: stackId });\n }\n }\n\n /**\n * When a tab button is clicked, there are several scenarios:\n * 1. If the selected tab is currently active (the tab button has been clicked\n * again), then it should go to the root view for that tab.\n *\n * a. Get the saved root view from the router outlet. If the saved root view\n * matches the tabRootUrl, set the route view to this view including the\n * navigation extras.\n * b. If the saved root view from the router outlet does\n * not match, navigate to the tabRootUrl. No navigation extras are\n * included.\n *\n * 2. If the current tab tab is not currently selected, get the last route\n * view from the router outlet.\n *\n * a. If the last route view exists, navigate to that view including any\n * navigation extras\n * b. If the last route view doesn't exist, then navigate\n * to the default tabRootUrl\n */\n @HostListener('ionTabButtonClick', ['$event'])\n select(tabOrEvent: string | CustomEvent): Promise<boolean> | undefined {\n const isTabString = typeof tabOrEvent === 'string';\n const tab = isTabString ? tabOrEvent : (tabOrEvent as CustomEvent).detail.tab;\n\n /**\n * If the tabs are not using the router, then\n * the tab switch logic is handled by the tabs\n * component itself.\n */\n if (this.hasTab) {\n this.setActiveTab(tab);\n this.tabSwitch();\n\n return;\n }\n\n const alreadySelected = this.outlet.getActiveStackId() === tab;\n const tabRootUrl = `${this.outlet.tabsPrefix}/${tab}`;\n\n /**\n * If this is a nested tab, prevent the event\n * from bubbling otherwise the outer tabs\n * will respond to this event too, causing\n * the app to get directed to the wrong place.\n */\n if (!isTabString) {\n (tabOrEvent as CustomEvent).stopPropagation();\n }\n\n if (alreadySelected) {\n const activeStackId = this.outlet.getActiveStackId();\n const activeView = this.outlet.getLastRouteView(activeStackId);\n\n // If on root tab, do not navigate to root tab again\n if (activeView?.url === tabRootUrl) {\n return;\n }\n\n const rootView = this.outlet.getRootView(tab);\n const navigationExtras = rootView && tabRootUrl === rootView.url && rootView.savedExtras;\n return this.navCtrl.navigateRoot(tabRootUrl, {\n ...navigationExtras,\n animated: true,\n animationDirection: 'back',\n });\n } else {\n const lastRoute = this.outlet.getLastRouteView(tab);\n /**\n * If there is a lastRoute, goto that, otherwise goto the fallback url of the\n * selected tab\n */\n const url = lastRoute?.url || tabRootUrl;\n const navigationExtras = lastRoute?.savedExtras;\n\n return this.navCtrl.navigateRoot(url, {\n ...navigationExtras,\n animated: true,\n animationDirection: 'back',\n });\n }\n }\n\n private setActiveTab(tab: string): void {\n const tabs = this.tabs;\n const selectedTab = tabs.find((t: any) => t.tab === tab);\n\n if (!selectedTab) {\n console.error(`[Ionic Error]: Tab with id: \"${tab}\" does not exist`);\n return;\n }\n\n this.leavingTab = this.selectedTab;\n this.selectedTab = selectedTab;\n\n this.ionTabsWillChange.emit({ tab });\n\n selectedTab.el.active = true;\n }\n\n private tabSwitch(): void {\n const { selectedTab, leavingTab } = this;\n\n if (this.tabBar && selectedTab) {\n this.tabBar.selectedTab = selectedTab.tab;\n }\n\n if (leavingTab?.tab !== selectedTab?.tab) {\n if (leavingTab?.el) {\n leavingTab.el.active = false;\n }\n }\n\n if (selectedTab) {\n this.ionTabsDidChange.emit({ tab: selectedTab.tab });\n }\n }\n\n getSelected(): string | undefined {\n if (this.hasTab) {\n return this.selectedTab?.tab;\n }\n\n return this.outlet.getActiveStackId();\n }\n\n /**\n * Detects changes to the slot attribute of the tab bar.\n *\n * If the slot attribute has changed, then the tab bar\n * should be relocated to the new slot position.\n */\n private detectSlotChanges(): void {\n this.tabBars.forEach((tabBar: any) => {\n // el is a protected attribute from the generated component wrapper\n const currentSlot = tabBar.el.getAttribute('slot');\n\n if (currentSlot !== this.tabBarSlot) {\n this.tabBarSlot = currentSlot;\n this.relocateTabBar();\n }\n });\n }\n\n /**\n * Relocates the tab bar to the new slot position.\n */\n private relocateTabBar(): void {\n /**\n * `el` is a protected attribute from the generated component wrapper.\n * To avoid having to manually create the wrapper for tab bar, we\n * cast the tab bar to any and access the protected attribute.\n */\n const tabBar = (this.tabBar as any).el as HTMLElement;\n\n if (this.tabBarSlot === 'top') {\n /**\n * A tab bar with a slot of \"top\" should be inserted\n * at the top of the container.\n */\n this.tabsInner.nativeElement.before(tabBar);\n } else {\n /**\n * A tab bar with a slot of \"bottom\" or without a slot\n * should be inserted at the end of the container.\n */\n this.tabsInner.nativeElement.after(tabBar);\n }\n }\n}\n","// TODO(FW-2827): types\n\nexport interface ControllerShape<Opts, HTMLElm> {\n create(options: Opts): Promise<HTMLElm>;\n dismiss(data?: any, role?: string, id?: string): Promise<boolean>;\n getTop(): Promise<HTMLElm | undefined>;\n}\n\nexport class OverlayBaseController<Opts, Overlay> implements ControllerShape<Opts, Overlay> {\n constructor(private ctrl: ControllerShape<Opts, Overlay>) {}\n\n /**\n * Creates a new overlay\n */\n create(opts?: Opts): Promise<Overlay> {\n return this.ctrl.create((opts || {}) as any);\n }\n\n /**\n * When `id` is not provided, it dismisses the top overlay.\n */\n dismiss(data?: any, role?: string, id?: string): Promise<boolean> {\n return this.ctrl.dismiss(data, role, id);\n }\n\n /**\n * Returns the top overlay.\n */\n getTop(): Promise<Overlay | undefined> {\n return this.ctrl.getTop();\n }\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\n\n/**\n * Provides a way to customize when activated routes get reused.\n */\nexport class IonicRouteStrategy implements RouteReuseStrategy {\n /**\n * Whether the given route should detach for later reuse.\n */\n shouldDetach(_route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n /**\n * Returns `false`, meaning the route (and its subtree) is never reattached\n */\n shouldAttach(_route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n /**\n * A no-op; the route is never stored since this strategy never detaches routes for later re-use.\n */\n store(_route: ActivatedRouteSnapshot, _detachedTree: DetachedRouteHandle): void {\n return;\n }\n\n /**\n * Returns `null` because this strategy does not store routes for later re-use.\n */\n retrieve(_route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n return null;\n }\n\n /**\n * Determines if a route should be reused.\n * This strategy returns `true` when the future route config and\n * current route config are identical and all route parameters are identical.\n */\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n if (future.routeConfig !== curr.routeConfig) {\n return false;\n }\n\n // checking router params\n const futureParams = future.params;\n const currentParams = curr.params;\n const keysA = Object.keys(futureParams);\n const keysB = Object.keys(currentParams);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (const key of keysA) {\n if (currentParams[key] !== futureParams[key]) {\n return false;\n }\n }\n return true;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.Platform","i2","i1.IonRouterOutlet","i2.NavController","i3.Config","i1.AngularDelegate","i1.NavController"],"mappings":"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"}