{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Directive, HostListener, Component, ChangeDetectionStrategy, Injectable, Injector, InjectionToken, Inject, Optional, EventEmitter, Attribute, SkipSelf, Output, ViewChild, ContentChild, Input, TemplateRef, APP_INITIALIZER, NgZone, NgModule } from '@angular/core';\nimport { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { __decorate, __awaiter } from 'tslib';\nimport { fromEvent, Subject, BehaviorSubject } from 'rxjs';\nimport * as i3 from '@angular/router';\nimport { NavigationStart, PRIMARY_OUTLET, ActivatedRoute, ChildrenOutletContexts } from '@angular/router';\nimport { LIFECYCLE_WILL_ENTER, LIFECYCLE_DID_ENTER, LIFECYCLE_WILL_LEAVE, LIFECYCLE_DID_LEAVE, LIFECYCLE_WILL_UNLOAD, isPlatform, getPlatforms, componentOnReady, actionSheetController, alertController, loadingController, menuController, pickerController, modalController, popoverController, toastController, createAnimation, getTimeGivenProgression, createGesture, setupConfig } from '@ionic/core';\nexport { IonicSafeString, IonicSlides, IonicSwiper, createAnimation, createGesture, getPlatforms, getTimeGivenProgression, iosTransitionAnimation, isPlatform, mdTransitionAnimation } from '@ionic/core';\nimport { filter, switchMap, distinctUntilChanged } from 'rxjs/operators';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { applyPolyfills, defineCustomElements } from '@ionic/core/loader';\nconst _c0 = [\"*\"];\nconst _c1 = [\"outlet\"];\nconst _c2 = [[[\"\", \"slot\", \"top\"]], \"*\"];\nconst _c3 = [\"[slot=top]\", \"*\"];\n\nfunction IonModal_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵelementContainer(1, 2);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.template);\n }\n}\n\nfunction IonPopover_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 1);\n }\n\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.template);\n }\n}\n\nconst raf = h => {\n if (typeof __zone_symbol__requestAnimationFrame === 'function') {\n return __zone_symbol__requestAnimationFrame(h);\n }\n\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame(h);\n }\n\n return setTimeout(h);\n};\n\nconst isComponentFactoryResolver = item => {\n return !!item.resolveComponentFactory;\n};\n\nclass ValueAccessor {\n constructor(injector, el) {\n this.injector = injector;\n this.el = el;\n\n this.onChange = () => {\n /**/\n };\n\n this.onTouched = () => {\n /**/\n };\n }\n\n writeValue(value) {\n /**\n * TODO for Ionic 6:\n * Change `value == null ? '' : value;`\n * to `value`. This was a fix for IE9, but IE9\n * is no longer supported; however, this change\n * is potentially a breaking change\n */\n this.el.nativeElement.value = this.lastValue = value == null ? '' : value;\n setIonicClasses(this.el);\n }\n\n handleChangeEvent(el, value) {\n if (el === this.el.nativeElement) {\n if (value !== this.lastValue) {\n this.lastValue = value;\n this.onChange(value);\n }\n\n setIonicClasses(this.el);\n }\n }\n\n _handleBlurEvent(el) {\n if (el === this.el.nativeElement) {\n this.onTouched();\n setIonicClasses(this.el);\n }\n }\n\n registerOnChange(fn) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled) {\n this.el.nativeElement.disabled = isDisabled;\n }\n\n ngOnDestroy() {\n if (this.statusChanges) {\n this.statusChanges.unsubscribe();\n }\n }\n\n ngAfterViewInit() {\n let ngControl;\n\n try {\n ngControl = this.injector.get(NgControl);\n } catch (_a) {\n /* No FormControl or ngModel binding */\n }\n\n if (!ngControl) {\n return;\n } // Listen for changes in validity, disabled, or pending states\n\n\n if (ngControl.statusChanges) {\n this.statusChanges = ngControl.statusChanges.subscribe(() => setIonicClasses(this.el));\n }\n /**\n * TODO Remove this in favor of https://github.com/angular/angular/issues/10887\n * whenever it is implemented. Currently, Ionic's form status classes\n * do not react to changes when developers manually call\n * Angular form control methods such as markAsTouched.\n * This results in Ionic's form status classes being out\n * of sync with the ng form status classes.\n * This patches the methods to manually sync\n * the classes until this feature is implemented in Angular.\n */\n\n\n const formControl = ngControl.control;\n\n if (formControl) {\n const methodsToPatch = ['markAsTouched', 'markAllAsTouched', 'markAsUntouched', 'markAsDirty', 'markAsPristine'];\n methodsToPatch.forEach(method => {\n if (typeof formControl[method] !== 'undefined') {\n const oldFn = formControl[method].bind(formControl);\n\n formControl[method] = (...params) => {\n oldFn(...params);\n setIonicClasses(this.el);\n };\n }\n });\n }\n }\n\n}\n/** @nocollapse */\n\n\nValueAccessor.ɵfac = function ValueAccessor_Factory(t) {\n return new (t || ValueAccessor)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n/** @nocollapse */\n\n\nValueAccessor.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ValueAccessor,\n hostBindings: function ValueAccessor_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"ionBlur\", function ValueAccessor_ionBlur_HostBindingHandler($event) {\n return ctx._handleBlurEvent($event.target);\n });\n }\n }\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ValueAccessor, [{\n type: Directive\n }], function () {\n return [{\n type: i0.Injector\n }, {\n type: i0.ElementRef\n }];\n }, {\n _handleBlurEvent: [{\n type: HostListener,\n args: ['ionBlur', ['$event.target']]\n }]\n });\n})();\n\nconst setIonicClasses = element => {\n raf(() => {\n const input = element.nativeElement;\n const hasValue = input.value != null && input.value.toString().length > 0;\n const classes = getClasses(input);\n setClasses(input, classes);\n const item = input.closest('ion-item');\n\n if (item) {\n if (hasValue) {\n setClasses(item, [...classes, 'item-has-value']);\n } else {\n setClasses(item, classes);\n }\n }\n });\n};\n\nconst getClasses = element => {\n const classList = element.classList;\n const classes = [];\n\n for (let i = 0; i < classList.length; i++) {\n const item = classList.item(i);\n\n if (item !== null && startsWith(item, 'ng-')) {\n classes.push(`ion-${item.substring(3)}`);\n }\n }\n\n return classes;\n};\n\nconst setClasses = (element, classes) => {\n const classList = element.classList;\n classList.remove('ion-valid', 'ion-invalid', 'ion-touched', 'ion-untouched', 'ion-dirty', 'ion-pristine');\n classList.add(...classes);\n};\n\nconst startsWith = (input, search) => {\n return input.substring(0, search.length) === search;\n};\n\nclass BooleanValueAccessorDirective extends ValueAccessor {\n constructor(injector, el) {\n super(injector, el);\n }\n\n writeValue(value) {\n this.el.nativeElement.checked = this.lastValue = value == null ? false : value;\n setIonicClasses(this.el);\n }\n\n _handleIonChange(el) {\n this.handleChangeEvent(el, el.checked);\n }\n\n}\n/** @nocollapse */\n\n\nBooleanValueAccessorDirective.ɵfac = function BooleanValueAccessorDirective_Factory(t) {\n return new (t || BooleanValueAccessorDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n/** @nocollapse */\n\n\nBooleanValueAccessorDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BooleanValueAccessorDirective,\n selectors: [[\"ion-checkbox\"], [\"ion-toggle\"]],\n hostBindings: function BooleanValueAccessorDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"ionChange\", function BooleanValueAccessorDirective_ionChange_HostBindingHandler($event) {\n return ctx._handleIonChange($event.target);\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: BooleanValueAccessorDirective,\n multi: true\n }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BooleanValueAccessorDirective, [{\n type: Directive,\n args: [{\n selector: 'ion-checkbox,ion-toggle',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: BooleanValueAccessorDirective,\n multi: true\n }]\n }]\n }], function () {\n return [{\n type: i0.Injector\n }, {\n type: i0.ElementRef\n }];\n }, {\n _handleIonChange: [{\n type: HostListener,\n args: ['ionChange', ['$event.target']]\n }]\n });\n})();\n\nclass NumericValueAccessorDirective extends ValueAccessor {\n constructor(injector, el) {\n super(injector, el);\n }\n\n _handleIonChange(el) {\n this.handleChangeEvent(el, el.value);\n }\n\n registerOnChange(fn) {\n super.registerOnChange(value => {\n fn(value === '' ? null : parseFloat(value));\n });\n }\n\n}\n/** @nocollapse */\n\n\nNumericValueAccessorDirective.ɵfac = function NumericValueAccessorDirective_Factory(t) {\n return new (t || NumericValueAccessorDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n/** @nocollapse */\n\n\nNumericValueAccessorDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NumericValueAccessorDirective,\n selectors: [[\"ion-input\", \"type\", \"number\"]],\n hostBindings: function NumericValueAccessorDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"ionChange\", function NumericValueAccessorDirective_ionChange_HostBindingHandler($event) {\n return ctx._handleIonChange($event.target);\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: NumericValueAccessorDirective,\n multi: true\n }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NumericValueAccessorDirective, [{\n type: Directive,\n args: [{\n selector: 'ion-input[type=number]',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: NumericValueAccessorDirective,\n multi: true\n }]\n }]\n }], function () {\n return [{\n type: i0.Injector\n }, {\n type: i0.ElementRef\n }];\n }, {\n _handleIonChange: [{\n type: HostListener,\n args: ['ionChange', ['$event.target']]\n }]\n });\n})();\n\nclass RadioValueAccessorDirective extends ValueAccessor {\n constructor(injector, el) {\n super(injector, el);\n }\n\n _handleIonSelect(el) {\n this.handleChangeEvent(el, el.checked);\n }\n\n}\n/** @nocollapse */\n\n\nRadioValueAccessorDirective.ɵfac = function RadioValueAccessorDirective_Factory(t) {\n return new (t || RadioValueAccessorDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n/** @nocollapse */\n\n\nRadioValueAccessorDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RadioValueAccessorDirective,\n selectors: [[\"ion-radio\"]],\n hostBindings: function RadioValueAccessorDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"ionSelect\", function RadioValueAccessorDirective_ionSelect_HostBindingHandler($event) {\n return ctx._handleIonSelect($event.target);\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: RadioValueAccessorDirective,\n multi: true\n }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RadioValueAccessorDirective, [{\n type: Directive,\n args: [{\n /* tslint:disable-next-line:directive-selector */\n selector: 'ion-radio',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: RadioValueAccessorDirective,\n multi: true\n }]\n }]\n }], function () {\n return [{\n type: i0.Injector\n }, {\n type: i0.ElementRef\n }];\n }, {\n _handleIonSelect: [{\n type: HostListener,\n args: ['ionSelect', ['$event.target']]\n }]\n });\n})();\n\nclass SelectValueAccessorDirective extends ValueAccessor {\n constructor(injector, el) {\n super(injector, el);\n }\n\n _handleChangeEvent(el) {\n this.handleChangeEvent(el, el.value);\n }\n\n}\n/** @nocollapse */\n\n\nSelectValueAccessorDirective.ɵfac = function SelectValueAccessorDirective_Factory(t) {\n return new (t || SelectValueAccessorDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n/** @nocollapse */\n\n\nSelectValueAccessorDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SelectValueAccessorDirective,\n selectors: [[\"ion-range\"], [\"ion-select\"], [\"ion-radio-group\"], [\"ion-segment\"], [\"ion-datetime\"]],\n hostBindings: function SelectValueAccessorDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"ionChange\", function SelectValueAccessorDirective_ionChange_HostBindingHandler($event) {\n return ctx._handleChangeEvent($event.target);\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: SelectValueAccessorDirective,\n multi: true\n }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SelectValueAccessorDirective, [{\n type: Directive,\n args: [{\n /* tslint:disable-next-line:directive-selector */\n selector: 'ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: SelectValueAccessorDirective,\n multi: true\n }]\n }]\n }], function () {\n return [{\n type: i0.Injector\n }, {\n type: i0.ElementRef\n }];\n }, {\n _handleChangeEvent: [{\n type: HostListener,\n args: ['ionChange', ['$event.target']]\n }]\n });\n})();\n\nclass TextValueAccessorDirective extends ValueAccessor {\n constructor(injector, el) {\n super(injector, el);\n }\n\n _handleInputEvent(el) {\n this.handleChangeEvent(el, el.value);\n }\n\n}\n/** @nocollapse */\n\n\nTextValueAccessorDirective.ɵfac = function TextValueAccessorDirective_Factory(t) {\n return new (t || TextValueAccessorDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n/** @nocollapse */\n\n\nTextValueAccessorDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TextValueAccessorDirective,\n selectors: [[\"ion-input\", 3, \"type\", \"number\"], [\"ion-textarea\"], [\"ion-searchbar\"]],\n hostBindings: function TextValueAccessorDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"ionChange\", function TextValueAccessorDirective_ionChange_HostBindingHandler($event) {\n return ctx._handleInputEvent($event.target);\n });\n }\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: TextValueAccessorDirective,\n multi: true\n }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TextValueAccessorDirective, [{\n type: Directive,\n args: [{\n /* tslint:disable-next-line:directive-selector */\n selector: 'ion-input:not([type=number]),ion-textarea,ion-searchbar',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: TextValueAccessorDirective,\n multi: true\n }]\n }]\n }], function () {\n return [{\n type: i0.Injector\n }, {\n type: i0.ElementRef\n }];\n }, {\n _handleInputEvent: [{\n type: HostListener,\n args: ['ionChange', ['$event.target']]\n }]\n });\n})();\n/* eslint-disable */\n\n\nconst proxyInputs = (Cmp, inputs) => {\n const Prototype = Cmp.prototype;\n inputs.forEach(item => {\n Object.defineProperty(Prototype, item, {\n get() {\n return this.el[item];\n },\n\n set(val) {\n this.z.runOutsideAngular(() => this.el[item] = val);\n }\n\n });\n });\n};\n\nconst proxyMethods = (Cmp, methods) => {\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\nconst proxyOutputs = (instance, el, events) => {\n events.forEach(eventName => instance[eventName] = fromEvent(el, eventName));\n};\n\nconst defineCustomElement = (tagName, customElement) => {\n if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {\n customElements.define(tagName, customElement);\n }\n}; // tslint:disable-next-line: only-arrow-functions\n\n\nfunction ProxyCmp(opts) {\n const decorator = function (cls) {\n const {\n defineCustomElementFn,\n inputs,\n methods\n } = opts;\n\n if (defineCustomElementFn !== undefined) {\n defineCustomElementFn();\n }\n\n if (inputs) {\n proxyInputs(cls, inputs);\n }\n\n if (methods) {\n proxyMethods(cls, methods);\n }\n\n return cls;\n };\n\n return decorator;\n}\n\nlet IonAccordion = class IonAccordion {\n constructor(c, r, z) {\n this.z = z;\n c.detach();\n this.el = r.nativeElement;\n }\n\n};\n/** @nocollapse */\n\nIonAccordion.ɵfac = function IonAccordion_Factory(t) {\n return new (t || IonAccordion)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n};\n/** @nocollapse */\n\n\nIonAccordion.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: IonAccordion,\n selectors: [[\"ion-accordion\"]],\n inputs: {\n disabled: \"disabled\",\n mode: \"mode\",\n readonly: \"readonly\",\n toggleIcon: \"toggleIcon\",\n toggleIconSlot: \"toggleIconSlot\",\n value: \"value\"\n },\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function IonAccordion_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n});\nIonAccordion = __decorate([ProxyCmp({\n defineCustomElementFn: undefined,\n inputs: ['disabled', 'mode', 'readonly', 'toggleIcon', 'toggleIconSlot', 'value']\n})], IonAccordion);\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(IonAccordion, [{\n type: Component,\n args: [{\n selector: 'ion-accordion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '