@ionic/angular
Version:
Angular specific wrappers for @ionic/core
1 lines • 244 kB
Source Map (JSON)
{"version":3,"file":"ionic-angular.mjs","sources":["../../src/directives/control-value-accessors/boolean-value-accessor.ts","../../src/directives/control-value-accessors/numeric-value-accessor.ts","../../src/directives/control-value-accessors/select-value-accessor.ts","../../src/directives/control-value-accessors/text-value-accessor.ts","../../src/directives/angular-component-lib/utils.ts","../../src/directives/proxies.ts","../../src/directives/navigation/ion-router-outlet.ts","../../src/directives/navigation/ion-tabs.ts","../../src/directives/navigation/ion-back-button.ts","../../src/directives/navigation/ion-nav.ts","../../src/directives/navigation/router-link-delegate.ts","../../src/directives/overlays/modal.ts","../../src/directives/overlays/popover.ts","../../src/directives/validators/max-validator.ts","../../src/directives/validators/min-validator.ts","../../src/providers/alert-controller.ts","../../src/providers/animation-controller.ts","../../src/providers/action-sheet-controller.ts","../../src/providers/gesture-controller.ts","../../src/providers/loading-controller.ts","../../src/providers/menu-controller.ts","../../src/providers/modal-controller.ts","../../src/providers/picker-controller.ts","../../src/providers/popover-controller.ts","../../src/providers/toast-controller.ts","../../src/app-initialize.ts","../../src/directives/proxies-list.ts","../../src/ionic-module.ts","../../src/index.ts","../../src/ionic-angular.ts"],"sourcesContent":["import { Directive, HostListener, ElementRef, Injector } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessor, setIonicClasses } from '@ionic/angular/common';\n\n@Directive({\n selector: 'ion-checkbox,ion-toggle',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: BooleanValueAccessorDirective,\n multi: true,\n },\n ],\n})\nexport class BooleanValueAccessorDirective extends ValueAccessor {\n constructor(injector: Injector, el: ElementRef) {\n super(injector, el);\n }\n\n writeValue(value: boolean): void {\n this.elementRef.nativeElement.checked = this.lastValue = value;\n setIonicClasses(this.elementRef);\n }\n\n @HostListener('ionChange', ['$event.target'])\n _handleIonChange(el: HTMLIonCheckboxElement | HTMLIonToggleElement): void {\n this.handleValueChange(el, el.checked);\n }\n}\n","import { Directive, HostListener, ElementRef, Injector } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessor } from '@ionic/angular/common';\n\n@Directive({\n selector: 'ion-input[type=number],ion-range',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NumericValueAccessorDirective,\n multi: true,\n },\n ],\n})\nexport class NumericValueAccessorDirective extends ValueAccessor {\n constructor(injector: Injector, private el: ElementRef<HTMLInputElement | HTMLIonRangeElement>) {\n super(injector, el);\n }\n\n @HostListener('ionInput', ['$event.target'])\n handleInputEvent(el: HTMLIonInputElement | HTMLIonRangeElement): void {\n this.handleValueChange(el, el.value);\n }\n\n registerOnChange(fn: (_: number | null) => void): void {\n if (this.el.nativeElement.tagName === 'ION-INPUT') {\n super.registerOnChange((value: string) => {\n fn(value === '' ? null : parseFloat(value));\n });\n } else {\n super.registerOnChange(fn);\n }\n }\n}\n","import { ElementRef, Injector, Directive, HostListener } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessor } from '@ionic/angular/common';\n\n@Directive({\n /* tslint:disable-next-line:directive-selector */\n selector: 'ion-select, ion-radio-group, ion-segment, ion-datetime',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SelectValueAccessorDirective,\n multi: true,\n },\n ],\n})\nexport class SelectValueAccessorDirective extends ValueAccessor {\n constructor(injector: Injector, el: ElementRef) {\n super(injector, el);\n }\n\n @HostListener('ionChange', ['$event.target'])\n _handleChangeEvent(\n el: HTMLIonSelectElement | HTMLIonRadioGroupElement | HTMLIonSegmentElement | HTMLIonDatetimeElement\n ): void {\n this.handleValueChange(el, el.value);\n }\n}\n","import { ElementRef, Injector, Directive, HostListener } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessor } from '@ionic/angular/common';\n\n@Directive({\n selector: 'ion-input:not([type=number]),ion-textarea,ion-searchbar',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: TextValueAccessorDirective,\n multi: true,\n },\n ],\n})\nexport class TextValueAccessorDirective extends ValueAccessor {\n constructor(injector: Injector, el: ElementRef) {\n super(injector, el);\n }\n\n @HostListener('ionInput', ['$event.target'])\n _handleInputEvent(el: HTMLIonInputElement | HTMLIonTextareaElement | HTMLIonSearchbarElement): void {\n this.handleValueChange(el, el.value);\n }\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 * 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 { Components } from '@ionic/core';\n\n\n@ProxyCmp({\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})\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 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})\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';\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 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})\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';\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 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})\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';\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 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})\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})\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})\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 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})\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 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})\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 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})\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 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})\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';\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 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})\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 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})\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 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})\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 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})\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 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})\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 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})\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 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})\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 inputs: ['alignment', 'checked', 'color', 'disabled', 'errorText', 'helperText', 'indeterminate', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value']\n})\n@Component({\n selector: 'ion-checkbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['alignment', 'checked', 'color', 'disabled', 'errorText', 'helperText', 'indeterminate', 'justify', 'labelPlacement', 'mode', 'name', 'required', 'value'],\n})\nexport class IonCheckbox {\n protected el: HTMLIonCheckboxElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionChange', 'ionFocus', 'ionBlur']);\n }\n}\n\n\nimport type { CheckboxChangeEventDetail as IIonCheckboxCheckboxChangeEventDetail } from '@ionic/core';\n\nexport declare interface IonCheckbox extends Components.IonCheckbox {\n /**\n * Emitted when the checked property has changed as a result of a user action such as a click.\n\nThis event will not emit when programmatically setting the `checked` property.\n */\n ionChange: EventEmitter<CustomEvent<IIonCheckboxCheckboxChangeEventDetail>>;\n /**\n * Emitted when the checkbox has focus.\n */\n ionFocus: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted when the checkbox loses focus.\n */\n ionBlur: EventEmitter<CustomEvent<void>>;\n}\n\n\n@ProxyCmp({\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})\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 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})\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 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})\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';\nimport type { ScrollDetail as IIonContentScrollDetail } from '@ionic/core';\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 inputs: ['cancelText', 'clearText', 'color', 'dayValues', 'disabled', 'doneText', 'firstDayOfWeek', 'formatOptions', 'highlightedDates', 'hourCycle', 'hourValues', 'isDateEnabled', 'locale', 'max', 'min', 'minuteValues', 'mode', 'monthValues', 'multiple', 'name', 'preferWheel', 'presentation', 'readonly', 'showClearButton', 'showDefaultButtons', 'showDefaultTimeLabel', 'showDefaultTitle', 'size', 'titleSelectedDatesFormatter', 'value', 'yearValues'],\n methods: ['confirm', 'reset', 'cancel']\n})\n@Component({\n selector: 'ion-datetime',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['cancelText', 'clearText', 'color', 'dayValues', 'disabled', 'doneText', 'firstDayOfWeek', 'formatOptions', 'highlightedDates', 'hourCycle', 'hourValues', 'isDateEnabled', 'locale', 'max', 'min', 'minuteValues', 'mode', 'monthValues', 'multiple', 'name', 'preferWheel', 'presentation', 'readonly', 'showClearButton', 'showDefaultButtons', 'showDefaultTimeLabel', 'showDefaultTitle', 'size', 'titleSelectedDatesFormatter', 'value', 'yearValues'],\n})\nexport class IonDatetime {\n protected el: HTMLIonDatetimeElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionCancel', 'ionChange', 'ionFocus', 'ionBlur']);\n }\n}\n\n\nimport type { DatetimeChangeEventDetail as IIonDatetimeDatetimeChangeEventDetail } from '@ionic/core';\n\nexport declare interface IonDatetime extends Components.IonDatetime {\n /**\n * Emitted when the datetime selection was cancelled.\n */\n ionCancel: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted when the value (selected date) has changed.\n\nThis event will not emit when programmatically setting the `value` property.\n */\n ionChange: EventEmitter<CustomEvent<IIonDatetimeDatetimeChangeEventDetail>>;\n /**\n * Emitted when the datetime has focus.\n */\n ionFocus: EventEmitter<CustomEvent<void>>;\n /**\n * Emitted when the datetime loses focus.\n */\n ionBlur: EventEmitter<CustomEvent<void>>;\n}\n\n\n@ProxyCmp({\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})\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 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})\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 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})\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 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})\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 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})\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 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})\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 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})\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 inputs: ['color', 'flipRtl', 'icon', 'ios', 'lazy', 'md', 'mode', 'name', 'sanitize', 'size', 'src']\n})\n@Component({\n selector: 'ion-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['color', 'flipRtl', 'icon', 'ios', 'lazy', 'md', 'mode', 'name', 'sanitize', 'size', 'src'],\n})\nexport class IonIcon {\n protected el: HTMLIonIconElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonIcon extends Components.IonIcon {}\n\n\n@ProxyCmp({\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})\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 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})\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 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})\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 inputs: ['autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'clearInput', 'clearInputIcon', 'clearOnEdit', 'color', 'counter', 'counterFormatter', 'debounce', 'disabled', 'enterkeyhint', 'errorText', 'fill', 'helperText', 'inputmode', 'label', 'labelPlacement', 'max', 'maxlength', 'min', 'minlength', 'mode', 'multiple', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'shape', 'spellcheck', 'step', 'type', 'value'],\n methods: ['setFocus', 'getInputElement']\n})\n@Component({\n selector: 'ion-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'clearInput', 'clearInputIcon', 'clearOnEdit', 'color', 'counter', 'counterFormatter', 'debounce', 'disabled', 'enterkeyhint', 'errorText', 'fill', 'helperText', 'inputmode', 'label', 'labelPlacement', 'max', 'maxlength', 'min', 'minlength', 'mode', 'multiple', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'shape', 'spellcheck', 'step', 'type', 'value'],\n})\nexport class IonInput {\n protected el: HTMLIonInputElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionInput', 'ionChange', 'ionBlur', 'ionFocus']);\n }\n}\n\n\nimport type { InputInputEventDetail as IIonInputInputInputEventDetail } from '@ionic/core';\nimport type { InputChangeEventDetail as IIonInputInputChangeEventDetail } from '@ionic/core';\n\nexport declare interface IonInput extends Components.IonInput {\n /**\n * The `ionInput` event is fired each time the user modifies the input's value.\nUnlike the `ionChange` event, the `ionInput` event is fired for each alteration\nto the input's value. This typically happens for each keystroke as the user types.\n\nFor elements that accept text input (`type=text`, `type=tel`, etc.), the interface\nis [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others,\nthe interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If\nthe input is cleared on edit, the type is `null`.\n */\n ionInput: EventEmitter<CustomEvent<IIonInputInputInputEventDetail>>;\n /**\n * The `ionChange` event is fired when the user modifies the input's value.\nUnlike the `ionInput` event, the `ionChange` event is only fired when changes\nare committed, not as the user types.\n\nDepending on the way the users interacts with the element, the `ionChange`\nevent fires at a different moment:\n- When the user commits the change explicitly (e.g. by selecting a date\nfrom a date picker for `<ion-input type=\"date\">`, pressing the \"Enter\" key, etc.).\n- When the element loses focus after its value has changed: for elements\nwhere the user's interaction is typing.\n\nThis event will not emit when programmatically setting the `value` property.\n */\n ionChange: EventEmitter<CustomEvent<IIonInputInputChangeEventDetail>>;\n /**\n * Emitted when the input loses focus.\n */\n ionBlur: EventEmitter<CustomEvent<FocusEvent>>;\n /**\n * Emitted when the input has focus.\n */\n ionFocus: EventEmitter<CustomEvent<FocusEvent>>;\n}\n\n\n@ProxyCmp({\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})\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 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})\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 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})\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})\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})\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 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})\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 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})\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 inputs: ['disabled'],\n methods: ['getOpenAmount', 'getSlidingRatio', 'open', 'close', 'closeOpened']\n})\n@Component({\n selector: 'ion-item-sliding',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['disabled'],\n})\nexport class IonItemSliding {\n protected el: HTMLIonItemSlidingElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionDrag']);\n }\n}\n\n\nexport declare interface IonItemSliding extends Components.IonItemSliding {\n /**\n * Emitted when the sliding position changes.\n */\n ionDrag: EventEmitter<CustomEvent<any>>;\n}\n\n\n@ProxyCmp({\n inputs: ['color', 'mode', 'position']\n})\n@Component({\n selector: 'ion-label',\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', 'position'],\n})\nexport class IonLabel {\n protected el: HTMLIonLabelElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonLabel extends Components.IonLabel {}\n\n\n@ProxyCmp({\n inputs: ['inset', 'lines', 'mode'],\n methods: ['closeSlidingItems']\n})\n@Component({\n selector: 'ion-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content></ng-content>',\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['inset', 'lines', 'mode'],\n})\nexport class IonList {\n protected el: HTMLIonListElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonList extends Components.IonList {}\n\n\n@ProxyCmp({\n inputs: ['color', 'lines', 'mode']\n})\n@Component({\n selector: 'ion-list-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', 'lines', 'mode'],\n})\nexport class IonListHeader {\n protected el: HTMLIonListHeaderElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n }\n}\n\n\nexport declare interface IonListHeader extends Components.IonListHeader {}\n\n\n@ProxyCmp({\n inputs: ['animated', 'backdropDismiss', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'showBackdrop', 'spinner', 'translucent', 'trigger'],\n methods: ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss']\n})\n@Component({\n selector: 'ion-loading',\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', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'showBackdrop', 'spinner', 'translucent', 'trigger'],\n})\nexport class IonLoading {\n protected el: HTMLIonLoadingElement;\n constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {\n c.detach();\n this.el = r.nativeElement;\n proxyOutputs(this, this.el, ['ionLoadingDidPresent', 'ionLoadingWillPresent', 'ionLoadingWillDismiss', 'ionLoadingDidDismiss', 'didPresent', 'willPresent', 'willDismiss', 'didDismiss']);\n }\n}\n\n\nimport type { OverlayEventDetail as IIonLoadingOverlayEventDetail } from '@ionic/core';\n\nexport declare interface I