@ionic/angular
Version:
Angular specific wrappers for @ionic/core
1 lines • 258 kB
Source Map (JSON)
{"version":3,"file":"ionic-angular-standalone.mjs","sources":["../../standalone/src/navigation/router-outlet.ts","../../standalone/src/navigation/back-button.ts","../../standalone/src/overlays/modal.ts","../../standalone/src/overlays/popover.ts","../../standalone/src/navigation/router-link-delegate.ts","../../standalone/src/directives/angular-component-lib/utils.ts","../../standalone/src/directives/proxies.ts","../../standalone/src/navigation/tabs.ts","../../standalone/src/providers/modal-controller.ts","../../standalone/src/providers/popover-controller.ts","../../standalone/src/providers/ionic-angular.ts","../../standalone/src/providers/action-sheet-controller.ts","../../standalone/src/providers/alert-controller.ts","../../standalone/src/providers/animation-controller.ts","../../standalone/src/providers/gesture-controller.ts","../../standalone/src/providers/loading-controller.ts","../../standalone/src/providers/menu-controller.ts","../../standalone/src/providers/picker-controller.ts","../../standalone/src/providers/toast-controller.ts","../../standalone/src/navigation/nav.ts","../../standalone/src/directives/checkbox.ts","../../standalone/src/directives/datetime.ts","../../standalone/src/directives/icon.ts","../../standalone/src/directives/input.ts","../../standalone/src/directives/radio-group.ts","../../standalone/src/directives/range.ts","../../standalone/src/directives/searchbar.ts","../../standalone/src/directives/segment.ts","../../standalone/src/directives/select.ts","../../standalone/src/directives/textarea.ts","../../standalone/src/directives/toggle.ts","../../standalone/src/ionic-angular-standalone.ts"],"sourcesContent":["import { Location } from '@angular/common';\nimport {\n ViewChild,\n ViewContainerRef,\n Component,\n Attribute,\n Optional,\n SkipSelf,\n ElementRef,\n NgZone,\n} from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { IonRouterOutlet as IonRouterOutletBase, ProxyCmp } from '@ionic/angular/common';\nimport { defineCustomElement } from '@ionic/core/components/ion-router-outlet.js';\n\n@ProxyCmp({\n defineCustomElementFn: defineCustomElement,\n})\n@Component({\n selector: 'ion-router-outlet',\n standalone: true,\n template: '<ng-container #outletContent><ng-content></ng-content></ng-container>',\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonRouterOutlet extends IonRouterOutletBase {\n /**\n * `static: true` must be set so the query results are resolved\n * before change detection runs. Otherwise, the view container\n * ref will be ion-router-outlet instead of ng-container, and\n * the first view will be added as a sibling of ion-router-outlet\n * instead of a child.\n */\n @ViewChild('outletContent', { read: ViewContainerRef, static: true }) outletContent: ViewContainerRef;\n\n /**\n * We need to pass in the correct instance of IonRouterOutlet\n * otherwise parentOutlet will be null in a nested outlet context.\n * This results in APIs such as NavController.pop not working\n * in nested outlets because the parent outlet cannot be found.\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 super(name, tabs, commonLocation, elementRef, router, zone, activatedRoute, parentOutlet);\n }\n}\n","import { Component, Optional, ChangeDetectionStrategy, ElementRef, NgZone, ChangeDetectorRef } from '@angular/core';\nimport { IonBackButton as IonBackButtonBase, NavController, Config, ProxyCmp } from '@ionic/angular/common';\nimport { defineCustomElement } from '@ionic/core/components/ion-back-button.js';\n\nimport { IonRouterOutlet } from './router-outlet';\n\n@ProxyCmp({\n defineCustomElementFn: defineCustomElement,\n})\n@Component({\n selector: 'ion-back-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n standalone: true,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonBackButton extends IonBackButtonBase {\n constructor(\n @Optional() routerOutlet: IonRouterOutlet,\n navCtrl: NavController,\n config: Config,\n r: ElementRef,\n z: NgZone,\n c: ChangeDetectorRef\n ) {\n super(routerOutlet, navCtrl, config, r, z, c);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { IonModal as IonModalBase, ProxyCmp } from '@ionic/angular/common';\nimport { defineCustomElement } from '@ionic/core/components/ion-modal.js';\n\n@ProxyCmp({\n defineCustomElementFn: defineCustomElement,\n})\n@Component({\n selector: 'ion-modal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<div class=\"ion-delegate-host ion-page\" *ngIf=\"isCmpOpen || keepContentsMounted\">\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n </div>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class IonModal extends IonModalBase {}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { IonPopover as IonPopoverBase, ProxyCmp } from '@ionic/angular/common';\nimport { defineCustomElement } from '@ionic/core/components/ion-popover.js';\n\n@ProxyCmp({\n defineCustomElementFn: defineCustomElement,\n})\n@Component({\n selector: 'ion-popover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-container [ngTemplateOutlet]=\"template\" *ngIf=\"isCmpOpen || keepContentsMounted\"></ng-container>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class IonPopover extends IonPopoverBase {}\n","import { Directive } from '@angular/core';\nimport {\n RouterLinkDelegateDirective as RouterLinkDelegateBase,\n RouterLinkWithHrefDelegateDirective as RouterLinkHrefDelegateBase,\n} from '@ionic/angular/common';\n\n@Directive({\n selector: ':not(a):not(area)[routerLink]',\n standalone: true,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonRouterLink extends RouterLinkDelegateBase {}\n\n@Directive({\n selector: 'a[routerLink],area[routerLink]',\n standalone: true,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class IonRouterLinkWithHref extends RouterLinkHrefDelegateBase {}\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 * In the event that proxyInputs is called\n * multiple times re-defining these inputs\n * will cause an error to be thrown. As a result\n * we set configurable: true to indicate these\n * properties can be changed.\n */\n configurable: true,\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\nexport const defineCustomElement = (tagName: string, customElement: any) => {\n if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n};\n\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","/* tslint:disable */\n/* auto-generated angular directive proxies */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, NgZone } from '@angular/core';\n\nimport { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';\n\nimport type { Components } from '@ionic/core/components';\n\nimport { defineCustomElement as defineIonAccordion } from '@ionic/core/components/ion-accordion.js';\nimport { defineCustomElement as defineIonAccordionGroup } from '@ionic/core/components/ion-accordion-group.js';\nimport { defineCustomElement as defineIonActionSheet } from '@ionic/core/components/ion-action-sheet.js';\nimport { defineCustomElement as defineIonAlert } from '@ionic/core/components/ion-alert.js';\nimport { defineCustomElement as defineIonApp } from '@ionic/core/components/ion-app.js';\nimport { defineCustomElement as defineIonAvatar } from '@ionic/core/components/ion-avatar.js';\nimport { defineCustomElement as defineIonBackdrop } from '@ionic/core/components/ion-backdrop.js';\nimport { defineCustomElement as defineIonBadge } from '@ionic/core/components/ion-badge.js';\nimport { defineCustomElement as defineIonBreadcrumb } from '@ionic/core/components/ion-breadcrumb.js';\nimport { defineCustomElement as defineIonBreadcrumbs } from '@ionic/core/components/ion-breadcrumbs.js';\nimport { defineCustomElement as defineIonButton } from '@ionic/core/components/ion-button.js';\nimport { defineCustomElement as defineIonButtons } from '@ionic/core/components/ion-buttons.js';\nimport { defineCustomElement as defineIonCard } from '@ionic/core/components/ion-card.js';\nimport { defineCustomElement as defineIonCardContent } from '@ionic/core/components/ion-card-content.js';\nimport { defineCustomElement as defineIonCardHeader } from '@ionic/core/components/ion-card-header.js';\nimport { defineCustomElement as defineIonCardSubtitle } from '@ionic/core/components/ion-card-subtitle.js';\nimport { defineCustomElement as defineIonCardTitle } from '@ionic/core/components/ion-card-title.js';\nimport { defineCustomElement as defineIonChip } from '@ionic/core/components/ion-chip.js';\nimport { defineCustomElement as defineIonCol } from '@ionic/core/components/ion-col.js';\nimport { defineCustomElement as defineIonContent } from '@ionic/core/components/ion-content.js';\nimport { defineCustomElement as defineIonDatetimeButton } from '@ionic/core/components/ion-datetime-button.js';\nimport { defineCustomElement as defineIonFab } from '@ionic/core/components/ion-fab.js';\nimport { defineCustomElement as defineIonFabButton } from '@ionic/core/components/ion-fab-button.js';\nimport { defineCustomElement as defineIonFabList } from '@ionic/core/components/ion-fab-list.js';\nimport { defineCustomElement as defineIonFooter } from '@ionic/core/components/ion-footer.js';\nimport { defineCustomElement as defineIonGrid } from '@ionic/core/components/ion-grid.js';\nimport { defineCustomElement as defineIonHeader } from '@ionic/core/components/ion-header.js';\nimport { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js';\nimport { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js';\nimport { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js';\nimport { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js';\nimport { defineCustomElement as defineIonItem } from '@ionic/core/components/ion-item.js';\nimport { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js';\nimport { defineCustomElement as defineIonItemGroup } from '@ionic/core/components/ion-item-group.js';\nimport { defineCustomElement as defineIonItemOption } from '@ionic/core/components/ion-item-option.js';\nimport { defineCustomElement as defineIonItemOptions } from '@ionic/core/components/ion-item-options.js';\nimport { defineCustomElement as defineIonItemSliding } from '@ionic/core/components/ion-item-sliding.js';\nimport { defineCustomElement as defineIonLabel } from '@ionic/core/components/ion-label.js';\nimport { defineCustomElement as defineIonList } from '@ionic/core/components/ion-list.js';\nimport { defineCustomElement as defineIonListHeader } from '@ionic/core/components/ion-list-header.js';\nimport { defineCustomElement as defineIonLoading } from '@ionic/core/components/ion-loading.js';\nimport { defineCustomElement as defineIonMenu } from '@ionic/core/components/ion-menu.js';\nimport { defineCustomElement as defineIonMenuButton } from '@ionic/core/components/ion-menu-button.js';\nimport { defineCustomElement as defineIonMenuToggle } from '@ionic/core/components/ion-menu-toggle.js';\nimport { defineCustomElement as defineIonNavLink } from '@ionic/core/components/ion-nav-link.js';\nimport { defineCustomElement as defineIonNote } from '@ionic/core/components/ion-note.js';\nimport { defineCustomElement as defineIonPicker } from '@ionic/core/components/ion-picker.js';\nimport { defineCustomElement as defineIonPickerColumn } from '@ionic/core/components/ion-picker-column.js';\nimport { defineCustomElement as defineIonPickerColumnOption } from '@ionic/core/components/ion-picker-column-option.js';\nimport { defineCustomElement as defineIonPickerLegacy } from '@ionic/core/components/ion-picker-legacy.js';\nimport { defineCustomElement as defineIonProgressBar } from '@ionic/core/components/ion-progress-bar.js';\nimport { defineCustomElement as defineIonRadio } from '@ionic/core/components/ion-radio.js';\nimport { defineCustomElement as defineIonRefresher } from '@ionic/core/components/ion-refresher.js';\nimport { defineCustomElement as defineIonRefresherContent } from '@ionic/core/components/ion-refresher-content.js';\nimport { defineCustomElement as defineIonReorder } from '@ionic/core/components/ion-reorder.js';\nimport { defineCustomElement as defineIonReorderGroup } from '@ionic/core/components/ion-reorder-group.js';\nimport { defineCustomElement as defineIonRippleEffect } from '@ionic/core/components/ion-ripple-effect.js';\nimport { defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js';\nimport { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js';\nimport { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js';\nimport { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js';\nimport { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js';\nimport { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js';\nimport { defineCustomElement as defineIonSkeletonText } from '@ionic/core/components/ion-skeleton-text.js';\nimport { defineCustomElement as defineIonSpinner } from '@ionic/core/components/ion-spinner.js';\nimport { defineCustomElement as defineIonSplitPane } from '@ionic/core/components/ion-split-pane.js';\nimport { defineCustomElement as defineIonTab } from '@ionic/core/components/ion-tab.js';\nimport { defineCustomElement as defineIonTabBar } from '@ionic/core/components/ion-tab-bar.js';\nimport { defineCustomElement as defineIonTabButton } from '@ionic/core/components/ion-tab-button.js';\nimport { defineCustomElement as defineIonText } from '@ionic/core/components/ion-text.js';\nimport { defineCustomElement as defineIonThumbnail } from '@ionic/core/components/ion-thumbnail.js';\nimport { defineCustomElement as defineIonTitle } from '@ionic/core/components/ion-title.js';\nimport { defineCustomElement as defineIonToast } from '@ionic/core/components/ion-toast.js';\nimport { defineCustomElement as defineIonToolbar } from '@ionic/core/components/ion-toolbar.js';\n@ProxyCmp({\n defineCustomElementFn: defineIonAccordion,\n inputs: ['disabled', 'mode', 'readonly', 'toggleIcon', 'toggleIconSlot', 'value']\n})\n@Component({\n selector: 'ion-accordion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'mode', 'readonly', 'toggleIcon', 'toggleIconSlot', 'value'],\n standalone: true\n})\nexport class IonAccordion {\n protected el: HTMLIonAccordionElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonAccordion extends Components.IonAccordion {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonAccordionGroup,\n inputs: ['animated', 'disabled', 'expand', 'mode', 'multiple', 'readonly', 'value']\n})\n@Component({\n selector: 'ion-accordion-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['animated', 'disabled', 'expand', 'mode', 'multiple', 'readonly', 'value'],\n standalone: true\n})\nexport class IonAccordionGroup {\n protected el: HTMLIonAccordionGroupElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionChange']);\n }\n}\n\n\nimport type { AccordionGroupChangeEventDetail as IIonAccordionGroupAccordionGroupChangeEventDetail } from '@ionic/core/components';\n\nexport declare interface IonAccordionGroup extends Components.IonAccordionGroup {\n /**\n * Emitted when the value property has changed as a result of a user action such as a click.\n\nThis event will not emit when programmatically setting the `value` property.\n */\n ionChange: EventEmitter<CustomEvent<IIonAccordionGroupAccordionGroupChangeEventDetail>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonActionSheet,\n inputs: ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'subHeader', 'translucent', 'trigger'],\n methods: ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss']\n})\n@Component({\n selector: 'ion-action-sheet',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'subHeader', 'translucent', 'trigger'],\n standalone: true\n})\nexport class IonActionSheet {\n protected el: HTMLIonActionSheetElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionActionSheetDidPresent', 'ionActionSheetWillPresent', 'ionActionSheetWillDismiss', 'ionActionSheetDidDismiss', 'didPresent', 'willPresent', 'willDismiss', 'didDismiss']);\n }\n}\n\n\nimport type { OverlayEventDetail as IIonActionSheetOverlayEventDetail } from '@ionic/core/components';\n\nexport declare interface IonActionSheet extends Components.IonActionSheet {\n /**\n * Emitted after the action sheet has presented.\n */\n ionActionSheetDidPresent: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted before the action sheet has presented.\n */\n ionActionSheetWillPresent: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted before the action sheet has dismissed.\n */\n ionActionSheetWillDismiss: EventEmitter<CustomEvent<IIonActionSheetOverlayEventDetail>>;\n /**\n * Emitted after the action sheet has dismissed.\n */\n ionActionSheetDidDismiss: EventEmitter<CustomEvent<IIonActionSheetOverlayEventDetail>>;\n /**\n * Emitted after the action sheet has presented.\nShorthand for ionActionSheetWillDismiss.\n */\n didPresent: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted before the action sheet has presented.\nShorthand for ionActionSheetWillPresent.\n */\n willPresent: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted before the action sheet has dismissed.\nShorthand for ionActionSheetWillDismiss.\n */\n willDismiss: EventEmitter<CustomEvent<IIonActionSheetOverlayEventDetail>>;\n /**\n * Emitted after the action sheet has dismissed.\nShorthand for ionActionSheetDidDismiss.\n */\n didDismiss: EventEmitter<CustomEvent<IIonActionSheetOverlayEventDetail>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonAlert,\n inputs: ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'inputs', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'subHeader', 'translucent', 'trigger'],\n methods: ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss']\n})\n@Component({\n selector: 'ion-alert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'inputs', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'subHeader', 'translucent', 'trigger'],\n standalone: true\n})\nexport class IonAlert {\n protected el: HTMLIonAlertElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionAlertDidPresent', 'ionAlertWillPresent', 'ionAlertWillDismiss', 'ionAlertDidDismiss', 'didPresent', 'willPresent', 'willDismiss', 'didDismiss']);\n }\n}\n\n\nimport type { OverlayEventDetail as IIonAlertOverlayEventDetail } from '@ionic/core/components';\n\nexport declare interface IonAlert extends Components.IonAlert {\n /**\n * Emitted after the alert has presented.\n */\n ionAlertDidPresent: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted before the alert has presented.\n */\n ionAlertWillPresent: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted before the alert has dismissed.\n */\n ionAlertWillDismiss: EventEmitter<CustomEvent<IIonAlertOverlayEventDetail>>;\n /**\n * Emitted after the alert has dismissed.\n */\n ionAlertDidDismiss: EventEmitter<CustomEvent<IIonAlertOverlayEventDetail>>;\n /**\n * Emitted after the alert has presented.\nShorthand for ionAlertWillDismiss.\n */\n didPresent: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted before the alert has presented.\nShorthand for ionAlertWillPresent.\n */\n willPresent: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted before the alert has dismissed.\nShorthand for ionAlertWillDismiss.\n */\n willDismiss: EventEmitter<CustomEvent<IIonAlertOverlayEventDetail>>;\n /**\n * Emitted after the alert has dismissed.\nShorthand for ionAlertDidDismiss.\n */\n didDismiss: EventEmitter<CustomEvent<IIonAlertOverlayEventDetail>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonApp,\n methods: ['setFocus']\n})\n@Component({\n selector: 'ion-app',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [],\n standalone: true\n})\nexport class IonApp {\n protected el: HTMLIonAppElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonApp extends Components.IonApp {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonAvatar\n})\n@Component({\n selector: 'ion-avatar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [],\n standalone: true\n})\nexport class IonAvatar {\n protected el: HTMLIonAvatarElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonAvatar extends Components.IonAvatar {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonBackdrop,\n inputs: ['stopPropagation', 'tappable', 'visible']\n})\n@Component({\n selector: 'ion-backdrop',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['stopPropagation', 'tappable', 'visible'],\n standalone: true\n})\nexport class IonBackdrop {\n protected el: HTMLIonBackdropElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionBackdropTap']);\n }\n}\n\n\nexport declare interface IonBackdrop extends Components.IonBackdrop {\n /**\n * Emitted when the backdrop is tapped.\n */\n ionBackdropTap: EventEmitter<CustomEvent<void>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonBadge,\n inputs: ['color', 'mode']\n})\n@Component({\n selector: 'ion-badge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'mode'],\n standalone: true\n})\nexport class IonBadge {\n protected el: HTMLIonBadgeElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonBadge extends Components.IonBadge {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonBreadcrumb,\n inputs: ['active', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'separator', 'target']\n})\n@Component({\n selector: 'ion-breadcrumb',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['active', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'separator', 'target'],\n standalone: true\n})\nexport class IonBreadcrumb {\n protected el: HTMLIonBreadcrumbElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionFocus', 'ionBlur']);\n }\n}\n\n\nexport declare interface IonBreadcrumb extends Components.IonBreadcrumb {\n /**\n * Emitted when the breadcrumb has focus.\n */\n ionFocus: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted when the breadcrumb loses focus.\n */\n ionBlur: EventEmitter<CustomEvent<void>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonBreadcrumbs,\n inputs: ['color', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'maxItems', 'mode']\n})\n@Component({\n selector: 'ion-breadcrumbs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'maxItems', 'mode'],\n standalone: true\n})\nexport class IonBreadcrumbs {\n protected el: HTMLIonBreadcrumbsElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionCollapsedClick']);\n }\n}\n\n\nimport type { BreadcrumbCollapsedClickEventDetail as IIonBreadcrumbsBreadcrumbCollapsedClickEventDetail } from '@ionic/core/components';\n\nexport declare interface IonBreadcrumbs extends Components.IonBreadcrumbs {\n /**\n * Emitted when the collapsed indicator is clicked on.\n */\n ionCollapsedClick: EventEmitter<CustomEvent<IIonBreadcrumbsBreadcrumbCollapsedClickEventDetail>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonButton,\n inputs: ['buttonType', 'color', 'disabled', 'download', 'expand', 'fill', 'form', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'shape', 'size', 'strong', 'target', 'type']\n})\n@Component({\n selector: 'ion-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['buttonType', 'color', 'disabled', 'download', 'expand', 'fill', 'form', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'shape', 'size', 'strong', 'target', 'type'],\n standalone: true\n})\nexport class IonButton {\n protected el: HTMLIonButtonElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionFocus', 'ionBlur']);\n }\n}\n\n\nexport declare interface IonButton extends Components.IonButton {\n /**\n * Emitted when the button has focus.\n */\n ionFocus: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted when the button loses focus.\n */\n ionBlur: EventEmitter<CustomEvent<void>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonButtons,\n inputs: ['collapse']\n})\n@Component({\n selector: 'ion-buttons',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['collapse'],\n standalone: true\n})\nexport class IonButtons {\n protected el: HTMLIonButtonsElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonButtons extends Components.IonButtons {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonCard,\n inputs: ['button', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'target', 'type']\n})\n@Component({\n selector: 'ion-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['button', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'target', 'type'],\n standalone: true\n})\nexport class IonCard {\n protected el: HTMLIonCardElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonCard extends Components.IonCard {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonCardContent,\n inputs: ['mode']\n})\n@Component({\n selector: 'ion-card-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['mode'],\n standalone: true\n})\nexport class IonCardContent {\n protected el: HTMLIonCardContentElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonCardContent extends Components.IonCardContent {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonCardHeader,\n inputs: ['color', 'mode', 'translucent']\n})\n@Component({\n selector: 'ion-card-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'mode', 'translucent'],\n standalone: true\n})\nexport class IonCardHeader {\n protected el: HTMLIonCardHeaderElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonCardHeader extends Components.IonCardHeader {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonCardSubtitle,\n inputs: ['color', 'mode']\n})\n@Component({\n selector: 'ion-card-subtitle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'mode'],\n standalone: true\n})\nexport class IonCardSubtitle {\n protected el: HTMLIonCardSubtitleElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonCardSubtitle extends Components.IonCardSubtitle {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonCardTitle,\n inputs: ['color', 'mode']\n})\n@Component({\n selector: 'ion-card-title',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'mode'],\n standalone: true\n})\nexport class IonCardTitle {\n protected el: HTMLIonCardTitleElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonCardTitle extends Components.IonCardTitle {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonChip,\n inputs: ['color', 'disabled', 'mode', 'outline']\n})\n@Component({\n selector: 'ion-chip',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'disabled', 'mode', 'outline'],\n standalone: true\n})\nexport class IonChip {\n protected el: HTMLIonChipElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonChip extends Components.IonChip {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonCol,\n inputs: ['offset', 'offsetLg', 'offsetMd', 'offsetSm', 'offsetXl', 'offsetXs', 'pull', 'pullLg', 'pullMd', 'pullSm', 'pullXl', 'pullXs', 'push', 'pushLg', 'pushMd', 'pushSm', 'pushXl', 'pushXs', 'size', 'sizeLg', 'sizeMd', 'sizeSm', 'sizeXl', 'sizeXs']\n})\n@Component({\n selector: 'ion-col',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['offset', 'offsetLg', 'offsetMd', 'offsetSm', 'offsetXl', 'offsetXs', 'pull', 'pullLg', 'pullMd', 'pullSm', 'pullXl', 'pullXs', 'push', 'pushLg', 'pushMd', 'pushSm', 'pushXl', 'pushXs', 'size', 'sizeLg', 'sizeMd', 'sizeSm', 'sizeXl', 'sizeXs'],\n standalone: true\n})\nexport class IonCol {\n protected el: HTMLIonColElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonCol extends Components.IonCol {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonContent,\n inputs: ['color', 'fixedSlotPlacement', 'forceOverscroll', 'fullscreen', 'scrollEvents', 'scrollX', 'scrollY'],\n methods: ['getScrollElement', 'scrollToTop', 'scrollToBottom', 'scrollByPoint', 'scrollToPoint']\n})\n@Component({\n selector: 'ion-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'fixedSlotPlacement', 'forceOverscroll', 'fullscreen', 'scrollEvents', 'scrollX', 'scrollY'],\n standalone: true\n})\nexport class IonContent {\n protected el: HTMLIonContentElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionScrollStart', 'ionScroll', 'ionScrollEnd']);\n }\n}\n\n\nimport type { ScrollBaseDetail as IIonContentScrollBaseDetail } from '@ionic/core/components';\nimport type { ScrollDetail as IIonContentScrollDetail } from '@ionic/core/components';\n\nexport declare interface IonContent extends Components.IonContent {\n /**\n * Emitted when the scroll has started. This event is disabled by default.\nSet `scrollEvents` to `true` to enable.\n */\n ionScrollStart: EventEmitter<CustomEvent<IIonContentScrollBaseDetail>>;\n /**\n * Emitted while scrolling. This event is disabled by default.\nSet `scrollEvents` to `true` to enable.\n */\n ionScroll: EventEmitter<CustomEvent<IIonContentScrollDetail>>;\n /**\n * Emitted when the scroll has ended. This event is disabled by default.\nSet `scrollEvents` to `true` to enable.\n */\n ionScrollEnd: EventEmitter<CustomEvent<IIonContentScrollBaseDetail>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonDatetimeButton,\n inputs: ['color', 'datetime', 'disabled', 'mode']\n})\n@Component({\n selector: 'ion-datetime-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'datetime', 'disabled', 'mode'],\n standalone: true\n})\nexport class IonDatetimeButton {\n protected el: HTMLIonDatetimeButtonElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonDatetimeButton extends Components.IonDatetimeButton {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonFab,\n inputs: ['activated', 'edge', 'horizontal', 'vertical'],\n methods: ['close']\n})\n@Component({\n selector: 'ion-fab',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['activated', 'edge', 'horizontal', 'vertical'],\n standalone: true\n})\nexport class IonFab {\n protected el: HTMLIonFabElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonFab extends Components.IonFab {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonFabButton,\n inputs: ['activated', 'closeIcon', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'show', 'size', 'target', 'translucent', 'type']\n})\n@Component({\n selector: 'ion-fab-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['activated', 'closeIcon', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'show', 'size', 'target', 'translucent', 'type'],\n standalone: true\n})\nexport class IonFabButton {\n protected el: HTMLIonFabButtonElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionFocus', 'ionBlur']);\n }\n}\n\n\nexport declare interface IonFabButton extends Components.IonFabButton {\n /**\n * Emitted when the button has focus.\n */\n ionFocus: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted when the button loses focus.\n */\n ionBlur: EventEmitter<CustomEvent<void>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonFabList,\n inputs: ['activated', 'side']\n})\n@Component({\n selector: 'ion-fab-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['activated', 'side'],\n standalone: true\n})\nexport class IonFabList {\n protected el: HTMLIonFabListElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonFabList extends Components.IonFabList {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonFooter,\n inputs: ['collapse', 'mode', 'translucent']\n})\n@Component({\n selector: 'ion-footer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['collapse', 'mode', 'translucent'],\n standalone: true\n})\nexport class IonFooter {\n protected el: HTMLIonFooterElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonFooter extends Components.IonFooter {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonGrid,\n inputs: ['fixed']\n})\n@Component({\n selector: 'ion-grid',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['fixed'],\n standalone: true\n})\nexport class IonGrid {\n protected el: HTMLIonGridElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonGrid extends Components.IonGrid {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonHeader,\n inputs: ['collapse', 'mode', 'translucent']\n})\n@Component({\n selector: 'ion-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['collapse', 'mode', 'translucent'],\n standalone: true\n})\nexport class IonHeader {\n protected el: HTMLIonHeaderElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonHeader extends Components.IonHeader {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonImg,\n inputs: ['alt', 'src']\n})\n@Component({\n selector: 'ion-img',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['alt', 'src'],\n standalone: true\n})\nexport class IonImg {\n protected el: HTMLIonImgElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionImgWillLoad', 'ionImgDidLoad', 'ionError']);\n }\n}\n\n\nexport declare interface IonImg extends Components.IonImg {\n /**\n * Emitted when the img src has been set\n */\n ionImgWillLoad: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted when the image has finished loading\n */\n ionImgDidLoad: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted when the img fails to load\n */\n ionError: EventEmitter<CustomEvent<void>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonInfiniteScroll,\n inputs: ['disabled', 'position', 'threshold'],\n methods: ['complete']\n})\n@Component({\n selector: 'ion-infinite-scroll',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled', 'position', 'threshold'],\n standalone: true\n})\nexport class IonInfiniteScroll {\n protected el: HTMLIonInfiniteScrollElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionInfinite']);\n }\n}\n\n\nexport declare interface IonInfiniteScroll extends Components.IonInfiniteScroll {\n /**\n * Emitted when the scroll reaches\nthe threshold distance. From within your infinite handler,\nyou must call the infinite scroll's `complete()` method when\nyour async operation has completed.\n */\n ionInfinite: EventEmitter<CustomEvent<void>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonInfiniteScrollContent,\n inputs: ['loadingSpinner', 'loadingText']\n})\n@Component({\n selector: 'ion-infinite-scroll-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['loadingSpinner', 'loadingText'],\n standalone: true\n})\nexport class IonInfiniteScrollContent {\n protected el: HTMLIonInfiniteScrollContentElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonInfiniteScrollContent extends Components.IonInfiniteScrollContent {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonInputPasswordToggle,\n inputs: ['color', 'hideIcon', 'mode', 'showIcon']\n})\n@Component({\n selector: 'ion-input-password-toggle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'hideIcon', 'mode', 'showIcon'],\n standalone: true\n})\nexport class IonInputPasswordToggle {\n protected el: HTMLIonInputPasswordToggleElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonInputPasswordToggle extends Components.IonInputPasswordToggle {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonItem,\n inputs: ['button', 'color', 'detail', 'detailIcon', 'disabled', 'download', 'href', 'lines', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'target', 'type']\n})\n@Component({\n selector: 'ion-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['button', 'color', 'detail', 'detailIcon', 'disabled', 'download', 'href', 'lines', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'target', 'type'],\n standalone: true\n})\nexport class IonItem {\n protected el: HTMLIonItemElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonItem extends Components.IonItem {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonItemDivider,\n inputs: ['color', 'mode', 'sticky']\n})\n@Component({\n selector: 'ion-item-divider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'mode', 'sticky'],\n standalone: true\n})\nexport class IonItemDivider {\n protected el: HTMLIonItemDividerElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonItemDivider extends Components.IonItemDivider {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonItemGroup\n})\n@Component({\n selector: 'ion-item-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: [],\n standalone: true\n})\nexport class IonItemGroup {\n protected el: HTMLIonItemGroupElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonItemGroup extends Components.IonItemGroup {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonItemOption,\n inputs: ['color', 'disabled', 'download', 'expandable', 'href', 'mode', 'rel', 'target', 'type']\n})\n@Component({\n selector: 'ion-item-option',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'disabled', 'download', 'expandable', 'href', 'mode', 'rel', 'target', 'type'],\n standalone: true\n})\nexport class IonItemOption {\n protected el: HTMLIonItemOptionElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonItemOption extends Components.IonItemOption {}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonItemOptions,\n inputs: ['side']\n})\n@Component({\n selector: 'ion-item-options',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['side'],\n standalone: true\n})\nexport class IonItemOptions {\n protected el: HTMLIonItemOptionsElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionSwipe']);\n }\n}\n\n\nexport declare interface IonItemOptions extends Components.IonItemOptions {\n /**\n * Emitted when the item has been fully swiped.\n */\n ionSwipe: EventEmitter<CustomEvent<any>>;\n}\n\n\n@ProxyCmp({\n defineCustomElementFn: defineIonItemSliding,\n inputs: ['disabled'],\n methods: ['getOpenAmount', 'getSlidingRatio', 'open', 'close', 'closeOpened']\n})\n@Component({\n se