import { e as e4 } from "./chunk-GNWGUSZ7.js"; import { l as l2 } from "./chunk-HZ5GFC36.js"; import { i as i2 } from "./chunk-TVKJKZCT.js"; import { B, D, E, L, c as c2, l as l3, r, r2, s as s3, t as t2, v as v2 } from "./chunk-NEPL4PF4.js"; import { a, c as c3, o as o3 } from "./chunk-7OG4JOFU.js"; import { o as o4 } from "./chunk-VTS6MUXF.js"; import { h, i as i3, s as s4 } from "./chunk-TCEW23F2.js"; import { t as t5 } from "./chunk-EEEAY7BB.js"; import { i as i5, r as r3, t as t4 } from "./chunk-VHRMAIPY.js"; import { d, o as o2 } from "./chunk-WH2RCB7C.js"; import { a as a2, e as e3, f as f3, h as h2, i as i4, l as l4, n as n3, p as p2, t as t3 } from "./chunk-2SJGEPY5.js"; import { T, _, b, c, d as d2, e as e2, f as f2, i, l, m, n as n2, p, s as s2, t, u as u2, v, x, y } from "./chunk-S7GHTZCP.js"; import { Ct, Dn, I, It, Jt, P, Pt, Rn, Vn, W, Zn, e, f, n, o, q, qt, s, u } from "./chunk-EMI7KDEO.js"; import { NG_VALUE_ACCESSOR, NgControl } from "./chunk-QMHHQKP6.js"; import { ActivatedRoute, ChildrenOutletContexts, NavigationCancel, NavigationError, NavigationStart, PRIMARY_OUTLET, Router, RouterLink, UrlSerializer } from "./chunk-IUZF7AOX.js"; import "./chunk-OVEDGMY5.js"; import "./chunk-RDTKHKTF.js"; import "./chunk-ZKUNZJKW.js"; import { CommonModule, Location, LocationStrategy, NgIf, NgTemplateOutlet } from "./chunk-PSDIAYZ2.js"; import "./chunk-6UNWJBON.js"; import { APP_INITIALIZER, ApplicationRef, Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, DOCUMENT, Directive, ElementRef, EnvironmentInjector, EventEmitter, HostListener, Inject, Injectable, InjectionToken, Injector, Input, NgZone, Optional, Output, SkipSelf, TemplateRef, ViewChild, ViewContainerRef, createComponent, forwardRef, inject, makeEnvironmentProviders, reflectComponentType, setClassMetadata, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵadvance, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdirectiveInject, ɵɵdomElementContainerEnd, ɵɵdomElementContainerStart, ɵɵelementContainer, ɵɵelementEnd, ɵɵelementStart, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵinject, ɵɵinjectAttribute, ɵɵlistener, ɵɵloadQuery, ɵɵnextContext, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵqueryRefresh, ɵɵresetView, ɵɵrestoreView, ɵɵtemplate, ɵɵviewQuery } from "./chunk-COCNRMG2.js"; import { fromEvent } from "./chunk-576P5TAG.js"; import "./chunk-UQGLAMHP.js"; import { BehaviorSubject, Subject, __decorate, combineLatest, distinctUntilChanged, filter, of, switchMap } from "./chunk-2K3BB2X3.js"; import { __async, __objRest, __spreadProps, __spreadValues } from "./chunk-WDMUDEB6.js"; // node_modules/@ionic/core/components/p-hHmYLOfE.js var t6 = (t16, M6, r32, n15, e16) => h3(t16[1], M6[1], r32[1], n15[1], e16).map(((h19) => a3(t16[0], M6[0], r32[0], n15[0], h19))); var a3 = (t16, a16, h19, M6, r32) => r32 * (3 * a16 * Math.pow(r32 - 1, 2) + r32 * (-3 * h19 * r32 + 3 * h19 + M6 * r32)) - t16 * Math.pow(r32 - 1, 3); var h3 = (t16, a16, h19, r32, n15) => M((r32 -= n15) - 3 * (h19 -= n15) + 3 * (a16 -= n15) - (t16 -= n15), 3 * h19 - 6 * a16 + 3 * t16, 3 * a16 - 3 * t16, t16).filter(((t17) => t17 >= 0 && t17 <= 1)); var M = (t16, a16, h19, M6) => { if (0 === t16) return ((t17, a17, h20) => { const M7 = a17 * a17 - 4 * t17 * h20; return M7 < 0 ? [] : [(-a17 + Math.sqrt(M7)) / (2 * t17), (-a17 - Math.sqrt(M7)) / (2 * t17)]; })(a16, h19, M6); const r32 = (3 * (h19 /= t16) - (a16 /= t16) * a16) / 3, n15 = (2 * a16 * a16 * a16 - 9 * a16 * h19 + 27 * (M6 /= t16)) / 27; if (0 === r32) return [Math.pow(-n15, 1 / 3)]; if (0 === n15) return [Math.sqrt(-r32), -Math.sqrt(-r32)]; const e16 = Math.pow(n15 / 2, 2) + Math.pow(r32 / 3, 3); if (0 === e16) return [Math.pow(n15 / 2, 0.5) - a16 / 3]; if (e16 > 0) return [Math.pow(-n15 / 2 + Math.sqrt(e16), 1 / 3) - Math.pow(n15 / 2 + Math.sqrt(e16), 1 / 3) - a16 / 3]; const u19 = Math.sqrt(Math.pow(-r32 / 3, 3)), o14 = Math.acos(-n15 / (2 * Math.sqrt(Math.pow(-r32 / 3, 3)))), s21 = 2 * Math.pow(u19, 1 / 3); return [s21 * Math.cos(o14 / 3) - a16 / 3, s21 * Math.cos((o14 + 2 * Math.PI) / 3) - a16 / 3, s21 * Math.cos((o14 + 4 * Math.PI) / 3) - a16 / 3]; }; // node_modules/@ionic/core/components/p-CDfQnFrd.js var a4 = (o14) => l5(o14); var s5 = (o14, i16) => ("string" == typeof o14 && (i16 = o14, o14 = void 0), a4(o14).includes(i16)); var l5 = (o14 = window) => { if (void 0 === o14) return []; o14.Ionic = o14.Ionic || {}; let i16 = o14.Ionic.platforms; return null == i16 && (i16 = o14.Ionic.platforms = c4(o14), i16.forEach(((i17) => o14.document.documentElement.classList.add(`plt-${i17}`)))), i16; }; var c4 = (i16) => { const t16 = n.get("platform"); return Object.keys(j).filter(((o14) => { const n15 = null == t16 ? void 0 : t16[o14]; return "function" == typeof n15 ? n15(i16) : j[o14](i16); })); }; var u3 = (o14) => !!h4(o14, /iPad/i) || !(!h4(o14, /Macintosh/i) || !m2(o14)); var p3 = (o14) => h4(o14, /android|sink/i); var m2 = (o14) => w(o14, "(any-pointer:coarse)"); var f4 = (o14) => v3(o14) || b2(o14); var v3 = (o14) => !!(o14.cordova || o14.phonegap || o14.PhoneGap); var b2 = (o14) => { const i16 = o14.Capacitor; return !!((null == i16 ? void 0 : i16.isNative) || (null == i16 ? void 0 : i16.isNativePlatform) && i16.isNativePlatform()); }; var h4 = (o14, i16) => i16.test(o14.navigator.userAgent); var w = (o14, i16) => { var t16; return null === (t16 = o14.matchMedia) || void 0 === t16 ? void 0 : t16.call(o14, i16).matches; }; var j = { ipad: u3, iphone: (o14) => h4(o14, /iPhone/i), ios: (o14) => h4(o14, /iPhone|iPod/i) || u3(o14), android: p3, phablet: (o14) => { const i16 = o14.innerWidth, t16 = o14.innerHeight, n15 = Math.min(i16, t16), e16 = Math.max(i16, t16); return n15 > 390 && n15 < 520 && e16 > 620 && e16 < 800; }, tablet: (o14) => { const i16 = o14.innerWidth, t16 = o14.innerHeight, n15 = Math.min(i16, t16), e16 = Math.max(i16, t16); return u3(o14) || ((o15) => p3(o15) && !h4(o15, /mobile/i))(o14) || n15 > 460 && n15 < 820 && e16 > 780 && e16 < 1400; }, cordova: v3, capacitor: b2, electron: (o14) => h4(o14, /electron/i), pwa: (o14) => { var i16; return !(!(null === (i16 = o14.matchMedia) || void 0 === i16 ? void 0 : i16.call(o14, "(display-mode: standalone)").matches) && !o14.navigator.standalone); }, mobile: m2, mobileweb: (o14) => m2(o14) && !f4(o14), desktop: (o14) => !m2(o14), hybrid: f4 }; var O; var g = (o14) => o14 && qt(o14) || O; var y2 = (e16 = {}) => { if ("undefined" == typeof window) return; const a16 = window.document, c36 = window, u19 = c36.Ionic = c36.Ionic || {}, p33 = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, e(c36)), { persistConfig: false }), u19.config), s(c36)), e16); n.reset(p33), n.getBoolean("persistConfig") && o(c36, p33), l5(c36), u19.config = n, u19.mode = O = n.get("mode", a16.documentElement.getAttribute("mode") || (s5(c36, "ios") ? "ios" : "md")), n.set("mode", O), a16.documentElement.setAttribute("mode", O), a16.documentElement.classList.add(O), n.getBoolean("_testing") && n.set("animated", false); const m26 = (o14) => { var i16; return null === (i16 = o14.tagName) || void 0 === i16 ? void 0 : i16.startsWith("ION-"); }, f27 = (o14) => ["ios", "md"].includes(o14); Pt(((o14) => { for (; o14; ) { const i16 = o14.mode || o14.getAttribute("mode"); if (i16) { if (f27(i16)) return i16; m26(o14) && u('Invalid ionic mode: "' + i16 + '", expected: "ios" or "md"'); } o14 = o14.parentElement; } return O; })); }; // node_modules/@ionic/core/components/p-BUbsoBOV.js var n4 = (n15) => { try { if (n15 instanceof c5) return n15.value; if (!r4() || "string" != typeof n15 || "" === n15) return n15; if (n15.includes("onload=")) return ""; const t16 = document.createDocumentFragment(), s21 = document.createElement("div"); t16.appendChild(s21), s21.innerHTML = n15, i6.forEach(((n16) => { const r32 = t16.querySelectorAll(n16); for (let n17 = r32.length - 1; n17 >= 0; n17--) { const s22 = r32[n17]; s22.parentNode ? s22.parentNode.removeChild(s22) : t16.removeChild(s22); const i16 = e5(s22); for (let t17 = 0; t17 < i16.length; t17++) o5(i16[t17]); } })); const a16 = e5(t16); for (let t17 = 0; t17 < a16.length; t17++) o5(a16[t17]); const d24 = document.createElement("div"); d24.appendChild(t16); const l28 = d24.querySelector("div"); return null !== l28 ? l28.innerHTML : d24.innerHTML; } catch (n16) { return f("sanitizeDOMString", n16), ""; } }; var o5 = (t16) => { if (t16.nodeType && 1 !== t16.nodeType) return; if ("undefined" != typeof NamedNodeMap && !(t16.attributes instanceof NamedNodeMap)) return void t16.remove(); for (let n16 = t16.attributes.length - 1; n16 >= 0; n16--) { const o14 = t16.attributes.item(n16), e16 = o14.name; if (!s6.includes(e16.toLowerCase())) { t16.removeAttribute(e16); continue; } const r32 = o14.value, i16 = t16[e16]; (null != r32 && r32.toLowerCase().includes("javascript:") || null != i16 && i16.toLowerCase().includes("javascript:")) && t16.removeAttribute(e16); } const n15 = e5(t16); for (let t17 = 0; t17 < n15.length; t17++) o5(n15[t17]); }; var e5 = (t16) => null != t16.children ? t16.children : t16.childNodes; var r4 = () => { var t16; const n15 = window, o14 = null === (t16 = null == n15 ? void 0 : n15.Ionic) || void 0 === t16 ? void 0 : t16.config; return !o14 || (o14.get ? o14.get("sanitizerEnabled", true) : true === o14.sanitizerEnabled || void 0 === o14.sanitizerEnabled); }; var s6 = ["class", "id", "href", "src", "name", "slot"]; var i6 = ["script", "style", "iframe", "meta", "link", "object", "embed"]; var c5 = class { constructor(t16) { this.value = t16; } }; var l6 = false; // node_modules/@ionic/core/components/p-DiVJyqlX.js var n5 = (n15, o14) => null !== o14.closest(n15); var o6 = (n15, o14) => "string" == typeof n15 && n15.length > 0 ? Object.assign({ "ion-color": true, [`ion-color-${n15}`]: true }, o14) : o14; var r5 = (n15) => { const o14 = {}; return ((n16) => void 0 !== n16 ? (Array.isArray(n16) ? n16 : n16.split(" ")).filter(((n17) => null != n17)).map(((n17) => n17.trim())).filter(((n17) => "" !== n17)) : [])(n15).forEach(((n16) => o14[n16] = true)), o14; }; var t7 = /^[a-z][a-z0-9+\-.]*:/; var l7 = (n15, o14, r32, l28) => __async(null, null, function* () { if (null != n15 && "#" !== n15[0] && !t7.test(n15)) { const t16 = document.querySelector("ion-router"); if (t16) return null != o14 && o14.preventDefault(), t16.push(n15, r32, l28); } return false; }); // node_modules/@ionic/core/components/p-D6NJwNJN.js var o7 = (t16) => r().duration(t16 ? 400 : 300); var i7 = (t16) => { let e16, n15; const r32 = t16.width + 8, i16 = r(), u19 = r(); t16.isEndSide ? (e16 = r32 + "px", n15 = "0px") : (e16 = -r32 + "px", n15 = "0px"), i16.addElement(t16.menuInnerEl).fromTo("transform", `translateX(${e16})`, `translateX(${n15})`); const c36 = "ios" === g(t16), p33 = c36 ? 0.2 : 0.25; return u19.addElement(t16.backdropEl).fromTo("opacity", 0.01, p33), o7(c36).addAnimation([i16, u19]); }; var u4 = (t16) => { let e16, n15; const r32 = g(t16), i16 = t16.width; t16.isEndSide ? (e16 = -i16 + "px", n15 = i16 + "px") : (e16 = i16 + "px", n15 = -i16 + "px"); const u19 = r().addElement(t16.menuInnerEl).fromTo("transform", `translateX(${n15})`, "translateX(0px)"), c36 = r().addElement(t16.contentEl).fromTo("transform", "translateX(0px)", `translateX(${e16})`), p33 = r().addElement(t16.backdropEl).fromTo("opacity", 0.01, 0.32); return o7("ios" === r32).addAnimation([u19, c36, p33]); }; var c6 = (t16) => { const e16 = g(t16), n15 = t16.width * (t16.isEndSide ? -1 : 1) + "px", r32 = r().addElement(t16.contentEl).fromTo("transform", "translateX(0px)", `translateX(${n15})`); return o7("ios" === e16).addAnimation(r32); }; var p4 = (() => { const s21 = /* @__PURE__ */ new Map(), a16 = [], o14 = (t16, e16 = false) => __async(null, null, function* () { if (yield d24(), "start" === t16 || "end" === t16) { const r32 = a16.filter(((e17) => e17.side === t16 && !e17.disabled)); if (r32.length >= 1) return r32.length > 1 && e16 && u(`menuController queried for a menu on the "${t16}" side, but ${r32.length} menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.`, r32.map(((t17) => t17.el))), r32[0].el; const s22 = a16.filter(((e17) => e17.side === t16)); if (s22.length >= 1) return s22.length > 1 && e16 && u(`menuController queried for a menu on the "${t16}" side, but ${s22.length} menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.`, s22.map(((t17) => t17.el))), s22[0].el; } else if (null != t16) return w11(((e17) => e17.menuId === t16)); return w11(((t17) => !t17.disabled)) || (a16.length > 0 ? a16[0].el : void 0); }), p33 = () => __async(null, null, function* () { return yield d24(), m26(); }), f27 = (t16, e16) => { s21.set(t16, e16); }, m26 = () => w11(((t16) => t16._isOpen)), l28 = () => a16.some(((t16) => t16.isAnimating)), w11 = (t16) => { const e16 = a16.find(t16); if (void 0 !== e16) return e16.el; }, d24 = () => Promise.all(Array.from(document.querySelectorAll("ion-menu")).map(((t16) => new Promise(((e16) => e2(t16, e16)))))); return f27("reveal", c6), f27("push", u4), f27("overlay", i7), null == o2 || o2.addEventListener("ionBackButton", ((t16) => { const n15 = m26(); n15 && t16.detail.register(c3, (() => n15.close())); })), { registerAnimation: f27, get: o14, getMenus: () => __async(null, null, function* () { return yield d24(), a16.map(((t16) => t16.el)); }), getOpen: p33, isEnabled: (t16) => __async(null, null, function* () { const e16 = yield o14(t16); return !!e16 && !e16.disabled; }), swipeGesture: (t16, e16) => __async(null, null, function* () { const n15 = yield o14(e16); return n15 && (n15.swipeGesture = t16), n15; }), isAnimating: () => __async(null, null, function* () { return yield d24(), l28(); }), isOpen: (t16) => __async(null, null, function* () { if (null != t16) { const e16 = yield o14(t16); return void 0 !== e16 && e16.isOpen(); } return void 0 !== (yield p33()); }), enable: (t16, e16) => __async(null, null, function* () { const n15 = yield o14(e16); return n15 && (n15.disabled = !t16), n15; }), toggle: (t16) => __async(null, null, function* () { const e16 = yield o14(t16, true); return !!e16 && e16.toggle(); }), close: (t16) => __async(null, null, function* () { const e16 = yield void 0 !== t16 ? o14(t16, true) : p33(); return void 0 !== e16 && e16.close(); }), open: (t16) => __async(null, null, function* () { const e16 = yield o14(t16, true); return !!e16 && e16.open(); }), _getOpenSync: m26, _createAnimation: (t16, e16) => { const n15 = s21.get(t16); if (!n15) throw new Error("animation not registered"); return n15(e16); }, _register: (t16) => { a16.indexOf(t16) < 0 && a16.push(t16); }, _unregister: (t16) => { const e16 = a16.indexOf(t16); e16 > -1 && a16.splice(e16, 1); }, _setOpen: (t16, e16, n15, r32) => __async(null, null, function* () { if (l28()) return false; if (e16) { const e17 = yield p33(); e17 && t16.el !== e17 && (yield e17.setOpen(false, false)); } return t16._setOpen(e16, n15, r32); }) }; })(); // node_modules/@ionic/core/components/p-BR3tZJmu.js var o8 = (o14, t16, i16, n15, r32, s21) => __async(null, null, function* () { var a16; if (o14) return o14.attachViewToDom(t16, i16, r32, n15); if (!(s21 || "string" == typeof i16 || i16 instanceof HTMLElement)) throw new Error("framework delegate is missing"); const c36 = "string" == typeof i16 ? null === (a16 = t16.ownerDocument) || void 0 === a16 ? void 0 : a16.createElement(i16) : i16; return n15 && n15.forEach(((e16) => c36.classList.add(e16))), r32 && Object.assign(c36, r32), t16.appendChild(c36), yield new Promise(((o15) => e2(c36, o15))), c36; }); var t8 = (e16, o14) => { if (o14) { if (e16) return e16.removeViewFromDom(o14.parentElement, o14); o14.remove(); } return Promise.resolve(); }; var i8 = () => { let o14, t16; return { attachViewToDom: (_0, _1, ..._22) => __async(null, [_0, _1, ..._22], function* (i16, n15, r32 = {}, s21 = []) { var a16, c36; let l28; if (o14 = i16, n15) { const t17 = "string" == typeof n15 ? null === (a16 = o14.ownerDocument) || void 0 === a16 ? void 0 : a16.createElement(n15) : n15; s21.forEach(((e16) => t17.classList.add(e16))), Object.assign(t17, r32), o14.appendChild(t17), l28 = t17, yield new Promise(((o15) => e2(t17, o15))); } else if (o14.children.length > 0 && ("ION-MODAL" === o14.tagName || "ION-POPOVER" === o14.tagName) && !(l28 = o14.children[0]).classList.contains("ion-delegate-host")) { const e16 = null === (c36 = o14.ownerDocument) || void 0 === c36 ? void 0 : c36.createElement("div"); e16.classList.add("ion-delegate-host"), s21.forEach(((o15) => e16.classList.add(o15))), e16.append(...o14.children), o14.appendChild(e16), l28 = e16; } const m26 = document.querySelector("ion-app") || document.body; return t16 = document.createComment("ionic teleport"), o14.parentNode.insertBefore(t16, o14), m26.appendChild(o14), null != l28 ? l28 : o14; }), removeViewFromDom: () => (o14 && t16 && (t16.parentNode.insertBefore(o14, t16), t16.remove()), Promise.resolve()) }; }; // node_modules/@ionic/core/components/p-Cq8cQ0NL.js var v4 = '[tabindex]:not([tabindex^="-"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^="-"]):not([hidden]):not([disabled]), textarea:not([tabindex^="-"]):not([hidden]):not([disabled]), button:not([tabindex^="-"]):not([hidden]):not([disabled]), select:not([tabindex^="-"]):not([hidden]):not([disabled]), ion-checkbox:not([tabindex^="-"]):not([hidden]):not([disabled]), ion-radio:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable[disabled="false"]:not([tabindex^="-"]):not([hidden])'; var f5 = (n15, o14) => { const e16 = n15.querySelector(v4); b3(e16, null != o14 ? o14 : n15); }; var h5 = (n15, o14) => { const e16 = Array.from(n15.querySelectorAll(v4)); b3(e16.length > 0 ? e16[e16.length - 1] : null, null != o14 ? o14 : n15); }; var b3 = (n15, e16) => { let t16 = n15; const i16 = null == n15 ? void 0 : n15.shadowRoot; if (i16 && (t16 = i16.querySelector(v4) || n15), t16) { const n16 = t16.closest("ion-radio-group"); n16 ? n16.setFocus() : p(t16); } else e16.focus(); }; var w2 = 0; var y3 = 0; var g2 = /* @__PURE__ */ new WeakMap(); var O2 = (n15) => { var o14; return false !== n15.showBackdrop && !((null !== (o14 = n15.backdropBreakpoint) && void 0 !== o14 ? o14 : 0) > 0); }; var T2 = (n15) => ({ create: (o14) => S(n15, o14), dismiss: (o14, e16, t16) => E2(document, o14, e16, n15, t16), getTop: () => __async(null, null, function* () { return V(document, n15); }) }); var x2 = T2("ion-alert"); var k = T2("ion-action-sheet"); var j2 = T2("ion-loading"); var A = T2("ion-modal"); var C = T2("ion-picker-legacy"); var B2 = T2("ion-popover"); var D2 = T2("ion-toast"); var I2 = (n15) => { "undefined" != typeof document && P2(document); const o14 = w2++; n15.overlayIndex = o14; }; var N = (n15) => (n15.hasAttribute("id") || (n15.id = "ion-overlay-" + ++y3), n15.id); var S = (n15, o14) => "undefined" != typeof window && void 0 !== window.customElements ? window.customElements.whenDefined(n15).then((() => { const t16 = document.createElement(n15); return t16.classList.add("overlay-hidden"), Object.assign(t16, Object.assign(Object.assign({}, o14), { hasController: true })), L2(document).appendChild(t16), new Promise(((n16) => e2(t16, n16))); })) : Promise.resolve(); var M2 = (n15, e16) => { let t16 = n15; const i16 = null == n15 ? void 0 : n15.shadowRoot; i16 && (t16 = i16.querySelector(v4) || n15), t16 ? p(t16) : e16.focus(); }; var P2 = (n15) => { 0 === w2 && (w2 = 1, n15.addEventListener("focus", ((o14) => { ((n16, o15) => { const e16 = V(o15, "ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover"), t16 = n16.target; e16 && t16 && (e16.classList.contains(nn) || (e16.shadowRoot ? (() => { if (e16.contains(t16)) e16.lastFocus = t16; else if ("ION-TOAST" === t16.tagName) M2(e16.lastFocus, e16); else { const n17 = e16.lastFocus; f5(e16), n17 === o15.activeElement && h5(e16), e16.lastFocus = o15.activeElement; } })() : (() => { if (e16 === t16) e16.lastFocus = void 0; else if ("ION-TOAST" === t16.tagName) M2(e16.lastFocus, e16); else { const n17 = c(e16); if (!n17.contains(t16)) return; const i16 = n17.querySelector(".ion-overlay-wrapper"); if (!i16) return; if (i16.contains(t16) || t16 === n17.querySelector("ion-backdrop")) e16.lastFocus = t16; else { const n18 = e16.lastFocus; f5(i16, e16), n18 === o15.activeElement && h5(i16, e16), e16.lastFocus = o15.activeElement; } } })())); })(o14, n15); }), true), n15.addEventListener("ionBackButton", ((o14) => { const e16 = V(n15); (null == e16 ? void 0 : e16.backdropDismiss) && o14.detail.register(a, (() => { e16.dismiss(void 0, H); })); })), o3() || n15.addEventListener("keydown", ((o14) => { if ("Escape" === o14.key) { const o15 = V(n15); (null == o15 ? void 0 : o15.backdropDismiss) && o15.dismiss(void 0, H); } }))); }; var E2 = (n15, o14, e16, t16, i16) => { const a16 = V(n15, t16, i16); return a16 ? a16.dismiss(o14, e16) : Promise.reject("overlay does not exist"); }; var F = (n15, o14) => ((n16, o15) => (void 0 === o15 && (o15 = "ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast"), Array.from(n16.querySelectorAll(o15)).filter(((n17) => n17.overlayIndex > 0))))(n15, o14).filter(((n16) => !n16.classList.contains("overlay-hidden"))); var V = (n15, o14, e16) => { const t16 = F(n15, o14); return (void 0 === e16 ? t16 : t16.filter(((n16) => n16.id === e16))).slice(-1)[0]; }; var Z = (n15 = false) => { const o14 = L2(document).querySelector("ion-router-outlet, #ion-view-container-root"); o14 && (n15 ? o14.setAttribute("aria-hidden", "true") : o14.removeAttribute("aria-hidden")); }; var $ = (n15, o14, e16, t16, i16) => __async(null, null, function* () { var a16, r32; if (n15.presented) return; "ION-TOAST" !== n15.el.tagName && G(n15.el); const d24 = n15.el, l28 = "ION-TOAST" !== d24.tagName && false !== d24.focusTrap && O2(d24); if (n15.presented = true, n15.willPresent.emit(), l28) { const n16 = L2(document).querySelector("ion-router-outlet, #ion-view-container-root"); !!n16 && n16.contains(d24) || Z(true), document.body.classList.add(i3); } null === (a16 = n15.willPresentShorthand) || void 0 === a16 || a16.emit(); const c36 = g(n15), m26 = n15.enterAnimation ? n15.enterAnimation : n.get(o14, "ios" === c36 ? e16 : t16); (yield R(n15, m26, n15.el, i16)) && (n15.didPresent.emit(), null === (r32 = n15.didPresentShorthand) || void 0 === r32 || r32.emit()), !n15.keyboardClose || null !== document.activeElement && n15.el.contains(document.activeElement) || n15.el.focus(), n15.el.removeAttribute("aria-hidden"), n15.el.removeAttribute("inert"); }); var G = (n15) => __async(null, null, function* () { let o14 = document.activeElement; if (!o14) return; o14.blur(); const e16 = null == o14 ? void 0 : o14.shadowRoot; e16 && (o14 = e16.querySelector(v4) || o14), yield n15.onDidDismiss(), null !== document.activeElement && document.activeElement !== document.body || o14.focus(); }); var J = (o14, e16, t16, i16, a16, r32, d24) => __async(null, null, function* () { var c36, m26; if (!o14.presented) return false; const v18 = (void 0 !== o2 ? F(o2) : []).filter(((n15) => "ION-TOAST" !== n15.tagName && false !== n15.focusTrap && O2(n15))), f27 = o14.el; "ION-TOAST" !== f27.tagName && false !== f27.focusTrap && O2(f27) && 1 === v18.length && v18[0].id === f27.id && (Z(false), document.body.classList.remove(i3)), o14.presented = false; try { o14.el.style.setProperty("pointer-events", "none"), o14.willDismiss.emit({ data: e16, role: t16 }), null === (c36 = o14.willDismissShorthand) || void 0 === c36 || c36.emit({ data: e16, role: t16 }); const n15 = g(o14), l28 = o14.leaveAnimation ? o14.leaveAnimation : n.get(i16, "ios" === n15 ? a16 : r32); t16 !== K && (yield R(o14, l28, o14.el, d24)), o14.didDismiss.emit({ data: e16, role: t16 }), null === (m26 = o14.didDismissShorthand) || void 0 === m26 || m26.emit({ data: e16, role: t16 }), (g2.get(o14) || []).forEach(((n16) => n16.destroy())), g2.delete(o14), o14.el.classList.add("overlay-hidden"), o14.el.style.removeProperty("pointer-events"), void 0 !== o14.el.lastFocus && (o14.el.lastFocus = void 0); } catch (n15) { f(`[${o14.el.tagName.toLowerCase()}] - `, n15); } return o14.el.remove(), true; }); var L2 = (n15) => n15.querySelector("ion-app") || n15.body; var R = (n15, o14, e16, t16) => __async(null, null, function* () { e16.classList.remove("overlay-hidden"); const i16 = o14(n15.el, t16); n15.animated && n.getBoolean("animated", true) || i16.duration(0), n15.keyboardClose && i16.beforeAddWrite((() => { const n16 = e16.ownerDocument.activeElement; (null == n16 ? void 0 : n16.matches("input,ion-input, ion-textarea")) && n16.blur(); })); const a16 = g2.get(n15) || []; return g2.set(n15, [...a16, i16]), yield i16.play(), true; }); var q2 = (n15, o14) => { let e16; const t16 = new Promise(((n16) => e16 = n16)); return z(n15, o14, ((n16) => { e16(n16.detail); })), t16; }; var z = (n15, o14, e16) => { const a16 = (t16) => { u2(n15, o14, a16), e16(t16); }; l(n15, o14, a16); }; var Q = (n15) => "cancel" === n15 || n15 === H; var W2 = (n15) => n15(); var _2 = (n15, o14) => { if ("function" == typeof n15) return n.get("_zoneGate", W2)((() => { try { return n15(o14); } catch (n16) { throw n16; } })); }; var H = "backdrop"; var K = "gesture"; var U = 39; var X = (n15) => { let o14, e16 = false; const t16 = i8(), i16 = (i17 = false) => { if (o14 && !i17) return { delegate: o14, inline: e16 }; const { el: a16, hasController: r32, delegate: d24 } = n15; return e16 = null !== a16.parentNode && !r32, o14 = e16 ? d24 || t16 : d24, { inline: e16, delegate: o14 }; }; return { attachViewToDom: (o15) => __async(null, null, function* () { const { delegate: e17 } = i16(true); if (e17) return yield e17.attachViewToDom(n15.el, o15); const { hasController: t17 } = n15; if (t17 && void 0 !== o15) throw new Error("framework delegate is missing"); return null; }), removeViewFromDom: () => { const { delegate: o15 } = i16(); o15 && void 0 !== n15.el && o15.removeViewFromDom(n15.el.parentElement, n15.el); } }; }; var Y = () => { let n15; const o14 = () => { n15 && (n15(), n15 = void 0); }; return { addClickListener: (e16, t16) => { o14(); const i16 = void 0 !== t16 ? document.getElementById(t16) : null; i16 ? n15 = ((n16, o15) => { const e17 = () => { o15.present(); }; return n16.addEventListener("click", e17), () => { n16.removeEventListener("click", e17); }; })(i16, e16) : u(`[${e16.tagName.toLowerCase()}] - A trigger element with the ID "${t16}" was not found in the DOM. The trigger element must be in the DOM when the "trigger" property is set on an overlay component.`, e16); }, removeClickListener: o14 }; }; var nn = "ion-disable-focus-trap"; // node_modules/@ionic/core/components/index.js var e6 = (e16) => { const { swiper: o14, extendParams: s21 } = e16, t16 = { effect: void 0, direction: "horizontal", initialSlide: 0, loop: false, parallax: false, slidesPerView: 1, spaceBetween: 0, speed: 300, slidesPerColumn: 1, slidesPerColumnFill: "column", slidesPerGroup: 1, centeredSlides: false, slidesOffsetBefore: 0, slidesOffsetAfter: 0, touchEventsTarget: "container", freeMode: false, freeModeMomentum: true, freeModeMomentumRatio: 1, freeModeMomentumBounce: true, freeModeMomentumBounceRatio: 1, freeModeMomentumVelocityRatio: 1, freeModeSticky: false, freeModeMinimumVelocity: 0.02, autoHeight: false, setWrapperSize: false, zoom: { maxRatio: 3, minRatio: 1, toggle: false }, touchRatio: 1, touchAngle: 45, simulateTouch: true, touchStartPreventDefault: false, shortSwipes: true, longSwipes: true, longSwipesRatio: 0.5, longSwipesMs: 300, followFinger: true, threshold: 0, touchMoveStopPropagation: true, touchReleaseOnEdges: false, iOSEdgeSwipeDetection: false, iOSEdgeSwipeThreshold: 20, resistance: true, resistanceRatio: 0.85, watchSlidesProgress: false, watchSlidesVisibility: false, preventClicks: true, preventClicksPropagation: true, slideToClickedSlide: false, loopAdditionalSlides: 0, noSwiping: true, runCallbacksOnInit: true, coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: true }, flipEffect: { slideShadows: true, limitRotation: true }, cubeEffect: { slideShadows: true, shadow: true, shadowOffset: 20, shadowScale: 0.94 }, fadeEffect: { crossFade: false }, a11y: { prevSlideMessage: "Previous slide", nextSlideMessage: "Next slide", firstSlideMessage: "This is the first slide", lastSlideMessage: "This is the last slide" } }; o14.pagination && (t16.pagination = { type: "bullets", clickable: false, hideOnClick: false }), o14.scrollbar && (t16.scrollbar = { hide: true }), s21(t16); }; // node_modules/@ionic/angular/fesm2022/ionic-angular-common.mjs var _c0 = ["tabsInner"]; var DomController = class _DomController { /** * Schedules a task to run during the READ phase of the next frame. * This task should only read the DOM, but never modify it. */ read(cb) { getQueue().read(cb); } /** * Schedules a task to run during the WRITE phase of the next frame. * This task should write the DOM, but never READ it. */ write(cb) { getQueue().write(cb); } /** @nocollapse */ static ɵfac = function DomController_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _DomController)(); }; /** @nocollapse */ static ɵprov = ɵɵdefineInjectable({ token: _DomController, factory: _DomController.ɵfac, providedIn: "root" }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DomController, [{ type: Injectable, args: [{ providedIn: "root" }] }], null, null); })(); var getQueue = () => { const win2 = typeof window !== "undefined" ? window : null; if (win2 != null) { const Ionic = win2.Ionic; if (Ionic?.queue) { return Ionic.queue; } return { read: (cb) => win2.requestAnimationFrame(cb), write: (cb) => win2.requestAnimationFrame(cb) }; } return { read: (cb) => cb(), write: (cb) => cb() }; }; var MenuController = class { menuController; constructor(menuController) { this.menuController = menuController; } /** * Programmatically open the Menu. * @param [menuId] Optionally get the menu by its id, or side. * @return returns a promise when the menu is fully opened */ open(menuId) { return this.menuController.open(menuId); } /** * Programmatically close the Menu. If no `menuId` is given as the first * argument then it'll close any menu which is open. If a `menuId` * is given then it'll close that exact menu. * @param [menuId] Optionally get the menu by its id, or side. * @return returns a promise when the menu is fully closed */ close(menuId) { return this.menuController.close(menuId); } /** * Toggle the menu. If it's closed, it will open, and if opened, it * will close. * @param [menuId] Optionally get the menu by its id, or side. * @return returns a promise when the menu has been toggled */ toggle(menuId) { return this.menuController.toggle(menuId); } /** * Used to enable or disable a menu. For example, there could be multiple * left menus, but only one of them should be able to be opened at the same * time. If there are multiple menus on the same side, then enabling one menu * will also automatically disable all the others that are on the same side. * @param [menuId] Optionally get the menu by its id, or side. * @return Returns the instance of the menu, which is useful for chaining. */ enable(shouldEnable, menuId) { return this.menuController.enable(shouldEnable, menuId); } /** * Used to enable or disable the ability to swipe open the menu. * @param shouldEnable True if it should be swipe-able, false if not. * @param [menuId] Optionally get the menu by its id, or side. * @return Returns the instance of the menu, which is useful for chaining. */ swipeGesture(shouldEnable, menuId) { return this.menuController.swipeGesture(shouldEnable, menuId); } /** * @param [menuId] Optionally get the menu by its id, or side. * @return Returns true if the specified menu is currently open, otherwise false. * If the menuId is not specified, it returns true if ANY menu is currenly open. */ isOpen(menuId) { return this.menuController.isOpen(menuId); } /** * @param [menuId] Optionally get the menu by its id, or side. * @return Returns true if the menu is currently enabled, otherwise false. */ isEnabled(menuId) { return this.menuController.isEnabled(menuId); } /** * Used to get a menu instance. If a `menuId` is not provided then it'll * return the first menu found. If a `menuId` is `left` or `right`, then * it'll return the enabled menu on that side. Otherwise, if a `menuId` is * provided, then it'll try to find the menu using the menu's `id` * property. If a menu is not found then it'll return `null`. * @param [menuId] Optionally get the menu by its id, or side. * @return Returns the instance of the menu if found, otherwise `null`. */ get(menuId) { return this.menuController.get(menuId); } /** * @return Returns the instance of the menu already opened, otherwise `null`. */ getOpen() { return this.menuController.getOpen(); } /** * @return Returns an array of all menu instances. */ getMenus() { return this.menuController.getMenus(); } registerAnimation(name, animation) { return this.menuController.registerAnimation(name, animation); } isAnimating() { return this.menuController.isAnimating(); } _getOpenSync() { return this.menuController._getOpenSync(); } _createAnimation(type, menuCmp) { return this.menuController._createAnimation(type, menuCmp); } _register(menu) { return this.menuController._register(menu); } _unregister(menu) { return this.menuController._unregister(menu); } _setOpen(menu, shouldOpen, animated) { return this.menuController._setOpen(menu, shouldOpen, animated); } }; var Platform = class _Platform { doc; _readyPromise; win; /** * @hidden */ backButton = new Subject(); /** * The keyboardDidShow event emits when the * on-screen keyboard is presented. */ keyboardDidShow = new Subject(); /** * The keyboardDidHide event emits when the * on-screen keyboard is hidden. */ keyboardDidHide = new Subject(); /** * The pause event emits when the native platform puts the application * into the background, typically when the user switches to a different * application. This event would emit when a Cordova app is put into * the background, however, it would not fire on a standard web browser. */ pause = new Subject(); /** * The resume event emits when the native platform pulls the application * out from the background. This event would emit when a Cordova app comes * out from the background, however, it would not fire on a standard web browser. */ resume = new Subject(); /** * The resize event emits when the browser window has changed dimensions. This * could be from a browser window being physically resized, or from a device * changing orientation. */ resize = new Subject(); constructor(doc, zone) { this.doc = doc; zone.run(() => { this.win = doc.defaultView; this.backButton.subscribeWithPriority = function(priority, callback) { return this.subscribe((ev) => { return ev.register(priority, (processNextHandler) => zone.run(() => callback(processNextHandler))); }); }; proxyEvent(this.pause, doc, "pause", zone); proxyEvent(this.resume, doc, "resume", zone); proxyEvent(this.backButton, doc, "ionBackButton", zone); proxyEvent(this.resize, this.win, "resize", zone); proxyEvent(this.keyboardDidShow, this.win, "ionKeyboardDidShow", zone); proxyEvent(this.keyboardDidHide, this.win, "ionKeyboardDidHide", zone); let readyResolve; this._readyPromise = new Promise((res) => { readyResolve = res; }); if (this.win?.["cordova"]) { doc.addEventListener("deviceready", () => { readyResolve("cordova"); }, { once: true }); } else { readyResolve("dom"); } }); } /** * @returns returns true/false based on platform. * @description * Depending on the platform the user is on, `is(platformName)` will * return `true` or `false`. Note that the same app can return `true` * for more than one platform name. For example, an app running from * an iPad would return `true` for the platform names: `mobile`, * `ios`, `ipad`, and `tablet`. Additionally, if the app was running * from Cordova then `cordova` would be true, and if it was running * from a web browser on the iPad then `mobileweb` would be `true`. * * ``` * import { Platform } from 'ionic-angular'; * * @Component({...}) * export MyPage { * constructor(public platform: Platform) { * if (this.platform.is('ios')) { * // This will only print when on iOS * console.log('I am an iOS device!'); * } * } * } * ``` * * | Platform Name | Description | * |-----------------|------------------------------------| * | android | on a device running Android. | * | capacitor | on a device running Capacitor. | * | cordova | on a device running Cordova. | * | ios | on a device running iOS. | * | ipad | on an iPad device. | * | iphone | on an iPhone device. | * | phablet | on a phablet device. | * | tablet | on a tablet device. | * | electron | in Electron on a desktop device. | * | pwa | as a PWA app. | * | mobile | on a mobile device. | * | mobileweb | on a mobile device in a browser. | * | desktop | on a desktop device. | * | hybrid | is a cordova or capacitor app. | * */ is(platformName) { return s5(this.win, platformName); } /** * @returns the array of platforms * @description * Depending on what device you are on, `platforms` can return multiple values. * Each possible value is a hierarchy of platforms. For example, on an iPhone, * it would return `mobile`, `ios`, and `iphone`. * * ``` * import { Platform } from 'ionic-angular'; * * @Component({...}) * export MyPage { * constructor(public platform: Platform) { * // This will print an array of the current platforms * console.log(this.platform.platforms()); * } * } * ``` */ platforms() { return a4(this.win); } /** * Returns a promise when the platform is ready and native functionality * can be called. If the app is running from within a web browser, then * the promise will resolve when the DOM is ready. When the app is running * from an application engine such as Cordova, then the promise will * resolve when Cordova triggers the `deviceready` event. * * The resolved value is the `readySource`, which states which platform * ready was used. For example, when Cordova is ready, the resolved ready * source is `cordova`. The default ready source value will be `dom`. The * `readySource` is useful if different logic should run depending on the * platform the app is running from. For example, only Cordova can execute * the status bar plugin, so the web should not run status bar plugin logic. * * ``` * import { Component } from '@angular/core'; * import { Platform } from 'ionic-angular'; * * @Component({...}) * export MyApp { * constructor(public platform: Platform) { * this.platform.ready().then((readySource) => { * console.log('Platform ready from', readySource); * // Platform now ready, execute any required native code * }); * } * } * ``` */ ready() { return this._readyPromise; } /** * Returns if this app is using right-to-left language direction or not. * We recommend the app's `index.html` file already has the correct `dir` * attribute value set, such as `` or ``. * [W3C: Structural markup and right-to-left text in HTML](http://www.w3.org/International/questions/qa-html-dir) */ get isRTL() { return this.doc.dir === "rtl"; } /** * Get the query string parameter */ getQueryParam(key) { return readQueryParam(this.win.location.href, key); } /** * Returns `true` if the app is in landscape mode. */ isLandscape() { return !this.isPortrait(); } /** * Returns `true` if the app is in portrait mode. */ isPortrait() { return this.win.matchMedia?.("(orientation: portrait)").matches; } testUserAgent(expression) { const nav = this.win.navigator; return !!(nav?.userAgent && nav.userAgent.indexOf(expression) >= 0); } /** * Get the current url. */ url() { return this.win.location.href; } /** * Gets the width of the platform's viewport using `window.innerWidth`. */ width() { return this.win.innerWidth; } /** * Gets the height of the platform's viewport using `window.innerHeight`. */ height() { return this.win.innerHeight; } /** @nocollapse */ static ɵfac = function Platform_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _Platform)(ɵɵinject(DOCUMENT), ɵɵinject(NgZone)); }; /** @nocollapse */ static ɵprov = ɵɵdefineInjectable({ token: _Platform, factory: _Platform.ɵfac, providedIn: "root" }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Platform, [{ type: Injectable, args: [{ providedIn: "root" }] }], function() { return [{ type: void 0, decorators: [{ type: Inject, args: [DOCUMENT] }] }, { type: NgZone }]; }, null); })(); var readQueryParam = (url, key) => { key = key.replace(/[[\]\\]/g, "\\$&"); const regex = new RegExp("[\\?&]" + key + "=([^]*)"); const results = regex.exec(url); return results ? decodeURIComponent(results[1].replace(/\+/g, " ")) : null; }; var proxyEvent = (emitter, el, eventName, zone) => { if (el) { el.addEventListener(eventName, (ev) => { zone.run(() => { const value = ev != null ? ev.detail : void 0; emitter.next(value); }); }); } }; var NavController = class _NavController { location; serializer; router; topOutlet; direction = DEFAULT_DIRECTION; animated = DEFAULT_ANIMATED; animationBuilder; guessDirection = "forward"; guessAnimation; lastNavId = -1; constructor(platform, location, serializer, router) { this.location = location; this.serializer = serializer; this.router = router; if (router) { router.events.subscribe((ev) => { if (ev instanceof NavigationStart) { const id = ev.restoredState ? ev.restoredState.navigationId : ev.id; this.guessDirection = this.guessAnimation = id < this.lastNavId ? "back" : "forward"; this.lastNavId = this.guessDirection === "forward" ? ev.id : id; } if (ev instanceof NavigationCancel || ev instanceof NavigationError) { this.direction = DEFAULT_DIRECTION; this.animated = DEFAULT_ANIMATED; this.animationBuilder = void 0; } }); } platform.backButton.subscribeWithPriority(0, (processNextHandler) => { this.pop(); processNextHandler(); }); } /** * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood, * it's equivalent to calling `this.router.navigateByUrl()`, but it's explicit about the **direction** of the transition. * * Going **forward** means that a new page is going to be pushed to the stack of the outlet (ion-router-outlet), * and that it will show a "forward" animation by default. * * Navigating forward can also be triggered in a declarative manner by using the `[routerDirection]` directive: * * ```html * Link * ``` */ navigateForward(url, options = {}) { this.setDirection("forward", options.animated, options.animationDirection, options.animation); return this.navigate(url, options); } /** * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood, * it's equivalent to calling: * * ```ts * this.navController.setDirection('back'); * this.router.navigateByUrl(path); * ``` * * Going **back** means that all the pages in the stack until the navigated page is found will be popped, * and that it will show a "back" animation by default. * * Navigating back can also be triggered in a declarative manner by using the `[routerDirection]` directive: * * ```html * Link * ``` */ navigateBack(url, options = {}) { this.setDirection("back", options.animated, options.animationDirection, options.animation); return this.navigate(url, options); } /** * This method uses Angular's [Router](https://angular.io/api/router/Router) under the hood, * it's equivalent to calling: * * ```ts * this.navController.setDirection('root'); * this.router.navigateByUrl(path); * ``` * * Going **root** means that all existing pages in the stack will be removed, * and the navigated page will become the single page in the stack. * * Navigating root can also be triggered in a declarative manner by using the `[routerDirection]` directive: * * ```html * Link * ``` */ navigateRoot(url, options = {}) { this.setDirection("root", options.animated, options.animationDirection, options.animation); return this.navigate(url, options); } /** * Same as [Location](https://angular.io/api/common/Location)'s back() method. * It will use the standard `window.history.back()` under the hood, but featuring a `back` animation * by default. */ back(options = { animated: true, animationDirection: "back" }) { this.setDirection("back", options.animated, options.animationDirection, options.animation); return this.location.back(); } /** * This methods goes back in the context of Ionic's stack navigation. * * It recursively finds the top active `ion-router-outlet` and calls `pop()`. * This is the recommended way to go back when you are using `ion-router-outlet`. * * Resolves to `true` if it was able to pop. */ pop() { return __async(this, null, function* () { let outlet = this.topOutlet; while (outlet) { if (yield outlet.pop()) { return true; } else { outlet = outlet.parentOutlet; } } return false; }); } /** * This methods specifies the direction of the next navigation performed by the Angular router. * * `setDirection()` does not trigger any transition, it just sets some flags to be consumed by `ion-router-outlet`. * * It's recommended to use `navigateForward()`, `navigateBack()` and `navigateRoot()` instead of `setDirection()`. */ setDirection(direction, animated, animationDirection, animationBuilder) { this.direction = direction; this.animated = getAnimation(direction, animated, animationDirection); this.animationBuilder = animationBuilder; } /** * @internal */ setTopOutlet(outlet) { this.topOutlet = outlet; } /** * @internal */ consumeTransition() { let direction = "root"; let animation; const animationBuilder = this.animationBuilder; if (this.direction === "auto") { direction = this.guessDirection; animation = this.guessAnimation; } else { animation = this.animated; direction = this.direction; } this.direction = DEFAULT_DIRECTION; this.animated = DEFAULT_ANIMATED; this.animationBuilder = void 0; return { direction, animation, animationBuilder }; } navigate(url, options) { if (Array.isArray(url)) { return this.router.navigate(url, options); } else { const urlTree = this.serializer.parse(url.toString()); if (options.queryParams !== void 0) { urlTree.queryParams = __spreadValues({}, options.queryParams); } if (options.fragment !== void 0) { urlTree.fragment = options.fragment; } return this.router.navigateByUrl(urlTree, options); } } /** @nocollapse */ static ɵfac = function NavController_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _NavController)(ɵɵinject(Platform), ɵɵinject(Location), ɵɵinject(UrlSerializer), ɵɵinject(Router, 8)); }; /** @nocollapse */ static ɵprov = ɵɵdefineInjectable({ token: _NavController, factory: _NavController.ɵfac, providedIn: "root" }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NavController, [{ type: Injectable, args: [{ providedIn: "root" }] }], function() { return [{ type: Platform }, { type: Location }, { type: UrlSerializer }, { type: Router, decorators: [{ type: Optional }] }]; }, null); })(); var getAnimation = (direction, animated, animationDirection) => { if (animated === false) { return void 0; } if (animationDirection !== void 0) { return animationDirection; } if (direction === "forward" || direction === "back") { return direction; } else if (direction === "root" && animated === true) { return "forward"; } return void 0; }; var DEFAULT_DIRECTION = "auto"; var DEFAULT_ANIMATED = void 0; var Config = class _Config { get(key, fallback) { const c36 = getConfig(); if (c36) { return c36.get(key, fallback); } return null; } getBoolean(key, fallback) { const c36 = getConfig(); if (c36) { return c36.getBoolean(key, fallback); } return false; } getNumber(key, fallback) { const c36 = getConfig(); if (c36) { return c36.getNumber(key, fallback); } return 0; } /** @nocollapse */ static ɵfac = function Config_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _Config)(); }; /** @nocollapse */ static ɵprov = ɵɵdefineInjectable({ token: _Config, factory: _Config.ɵfac, providedIn: "root" }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Config, [{ type: Injectable, args: [{ providedIn: "root" }] }], null, null); })(); var ConfigToken = new InjectionToken("USERCONFIG"); var getConfig = () => { if (typeof window !== "undefined") { const Ionic = window.Ionic; if (Ionic?.config) { return Ionic.config; } } return null; }; var NavParams = class { data; constructor(data = {}) { this.data = data; console.warn(`[Ionic Warning]: NavParams has been deprecated in favor of using Angular's input API. Developers should migrate to either the @Input decorator or the Signals-based input API.`); } /** * Get the value of a nav-parameter for the current view * * ```ts * import { NavParams } from 'ionic-angular'; * * export class MyClass{ * constructor(public navParams: NavParams){ * // userParams is an object we have in our nav-parameters * this.navParams.get('userParams'); * } * } * ``` * * @param param Which param you want to look up */ get(param) { return this.data[param]; } }; var IonModalToken = new InjectionToken("IonModalToken"); var AngularDelegate = class _AngularDelegate { zone = inject(NgZone); applicationRef = inject(ApplicationRef); config = inject(ConfigToken); create(environmentInjector, injector, elementReferenceKey, customInjector) { return new AngularFrameworkDelegate(environmentInjector, injector, this.applicationRef, this.zone, elementReferenceKey, this.config.useSetInputAPI ?? false, customInjector); } /** @nocollapse */ static ɵfac = function AngularDelegate_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _AngularDelegate)(); }; /** @nocollapse */ static ɵprov = ɵɵdefineInjectable({ token: _AngularDelegate, factory: _AngularDelegate.ɵfac }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AngularDelegate, [{ type: Injectable }], null, null); })(); var AngularFrameworkDelegate = class { environmentInjector; injector; applicationRef; zone; elementReferenceKey; enableSignalsSupport; customInjector; elRefMap = /* @__PURE__ */ new WeakMap(); elEventsMap = /* @__PURE__ */ new WeakMap(); constructor(environmentInjector, injector, applicationRef, zone, elementReferenceKey, enableSignalsSupport, customInjector) { this.environmentInjector = environmentInjector; this.injector = injector; this.applicationRef = applicationRef; this.zone = zone; this.elementReferenceKey = elementReferenceKey; this.enableSignalsSupport = enableSignalsSupport; this.customInjector = customInjector; } attachViewToDom(container, component, params, cssClasses) { return this.zone.run(() => { return new Promise((resolve) => { const componentProps = __spreadValues({}, params); if (this.elementReferenceKey !== void 0) { componentProps[this.elementReferenceKey] = container; } const el = attachView(this.zone, this.environmentInjector, this.injector, this.applicationRef, this.elRefMap, this.elEventsMap, container, component, componentProps, cssClasses, this.elementReferenceKey, this.enableSignalsSupport, this.customInjector); resolve(el); }); }); } removeViewFromDom(_container, component) { return this.zone.run(() => { return new Promise((resolve) => { const componentRef = this.elRefMap.get(component); if (componentRef) { componentRef.destroy(); this.elRefMap.delete(component); const unbindEvents = this.elEventsMap.get(component); if (unbindEvents) { unbindEvents(); this.elEventsMap.delete(component); } } resolve(); }); }); } }; var attachView = (zone, environmentInjector, injector, applicationRef, elRefMap, elEventsMap, container, component, params, cssClasses, elementReferenceKey, enableSignalsSupport, customInjector) => { const providers = getProviders(params); if (container.tagName.toLowerCase() === "ion-modal") { providers.push({ provide: IonModalToken, useValue: container }); } const childInjector = Injector.create({ providers, parent: customInjector ?? injector }); const componentRef = createComponent(component, { environmentInjector, elementInjector: childInjector }); const instance = componentRef.instance; const hostElement = componentRef.location.nativeElement; if (params) { if (elementReferenceKey && instance[elementReferenceKey] !== void 0) { console.error(`[Ionic Error]: ${elementReferenceKey} is a reserved property when using ${container.tagName.toLowerCase()}. Rename or remove the "${elementReferenceKey}" property from ${component.name}.`); } if (enableSignalsSupport === true && componentRef.setInput !== void 0) { const _a = params, { modal, popover } = _a, otherParams = __objRest(_a, [ "modal", "popover" ]); for (const key in otherParams) { componentRef.setInput(key, otherParams[key]); } if (modal !== void 0) { Object.assign(instance, { modal }); } if (popover !== void 0) { Object.assign(instance, { popover }); } } else { Object.assign(instance, params); } } if (cssClasses) { for (const cssClass of cssClasses) { hostElement.classList.add(cssClass); } } const unbindEvents = bindLifecycleEvents(zone, instance, hostElement); container.appendChild(hostElement); applicationRef.attachView(componentRef.hostView); elRefMap.set(hostElement, componentRef); elEventsMap.set(hostElement, unbindEvents); return hostElement; }; var LIFECYCLES = [r2, t2, s3, c2, l3]; var bindLifecycleEvents = (zone, instance, element) => { return zone.run(() => { const unregisters = LIFECYCLES.filter((eventName) => typeof instance[eventName] === "function").map((eventName) => { const handler = (ev) => instance[eventName](ev.detail); element.addEventListener(eventName, handler); return () => element.removeEventListener(eventName, handler); }); return () => unregisters.forEach((fn) => fn()); }); }; var NavParamsToken = new InjectionToken("NavParamsToken"); var getProviders = (params) => { return [{ provide: NavParamsToken, useValue: params }, { provide: NavParams, useFactory: provideNavParamsInjectable, deps: [NavParamsToken] }]; }; var provideNavParamsInjectable = (params) => { return new NavParams(params); }; var proxyInputs = (Cmp, inputs) => { const Prototype = Cmp.prototype; inputs.forEach((item) => { Object.defineProperty(Prototype, item, { get() { return this.el[item]; }, set(val) { this.z.runOutsideAngular(() => this.el[item] = val); } }); }); }; var proxyMethods = (Cmp, methods) => { const Prototype = Cmp.prototype; methods.forEach((methodName) => { Prototype[methodName] = function() { const args = arguments; return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args)); }; }); }; var proxyOutputs = (instance, el, events) => { events.forEach((eventName) => instance[eventName] = fromEvent(el, eventName)); }; function ProxyCmp(opts) { const decorator = function(cls) { const { defineCustomElementFn, inputs, methods } = opts; if (defineCustomElementFn !== void 0) { defineCustomElementFn(); } if (inputs) { proxyInputs(cls, inputs); } if (methods) { proxyMethods(cls, methods); } return cls; }; return decorator; } var MODAL_INPUTS = ["animated", "keepContentsMounted", "backdropBreakpoint", "backdropDismiss", "breakpoints", "canDismiss", "cssClass", "enterAnimation", "expandToScroll", "event", "focusTrap", "handle", "handleBehavior", "initialBreakpoint", "isOpen", "keyboardClose", "leaveAnimation", "mode", "presentingElement", "showBackdrop", "translucent", "trigger"]; var MODAL_METHODS = ["present", "dismiss", "onDidDismiss", "onWillDismiss", "setCurrentBreakpoint", "getCurrentBreakpoint"]; var IonModal = ( /** * @Component extends from @Directive * so by defining the inputs here we * do not need to re-define them for the * lazy loaded popover. */ class IonModal2 { z; // TODO(FW-2827): type template; isCmpOpen = false; el; constructor(c36, r32, z11) { this.z = z11; this.el = r32.nativeElement; this.el.addEventListener("ionMount", () => { this.isCmpOpen = true; c36.detectChanges(); }); this.el.addEventListener("didDismiss", () => { this.isCmpOpen = false; c36.detectChanges(); }); proxyOutputs(this, this.el, ["ionModalDidPresent", "ionModalWillPresent", "ionModalWillDismiss", "ionModalDidDismiss", "ionBreakpointDidChange", "didPresent", "willPresent", "willDismiss", "didDismiss", "ionDragStart", "ionDragMove", "ionDragEnd"]); } /** @nocollapse */ static ɵfac = function IonModal_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || IonModal2)(ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(NgZone)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: IonModal2, selectors: [["ion-modal"]], contentQueries: function IonModal_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { ɵɵcontentQuery(dirIndex, TemplateRef, 5); } if (rf & 2) { let _t; ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.template = _t.first); } }, inputs: { animated: "animated", keepContentsMounted: "keepContentsMounted", backdropBreakpoint: "backdropBreakpoint", backdropDismiss: "backdropDismiss", breakpoints: "breakpoints", canDismiss: "canDismiss", cssClass: "cssClass", enterAnimation: "enterAnimation", expandToScroll: "expandToScroll", event: "event", focusTrap: "focusTrap", handle: "handle", handleBehavior: "handleBehavior", initialBreakpoint: "initialBreakpoint", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", presentingElement: "presentingElement", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger" }, standalone: false }); } ); IonModal = __decorate([ ProxyCmp({ inputs: MODAL_INPUTS, methods: MODAL_METHODS }) /** * @Component extends from @Directive * so by defining the inputs here we * do not need to re-define them for the * lazy loaded popover. */ ], IonModal); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(IonModal, [{ type: Directive, args: [{ selector: "ion-modal", // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property inputs: MODAL_INPUTS }] }], function() { return [{ type: ChangeDetectorRef }, { type: ElementRef }, { type: NgZone }]; }, { template: [{ type: ContentChild, args: [TemplateRef, { static: false }] }] }); })(); var POPOVER_INPUTS = ["alignment", "animated", "arrow", "keepContentsMounted", "backdropDismiss", "cssClass", "dismissOnSelect", "enterAnimation", "event", "focusTrap", "isOpen", "keyboardClose", "leaveAnimation", "mode", "showBackdrop", "translucent", "trigger", "triggerAction", "reference", "size", "side"]; var POPOVER_METHODS = ["present", "dismiss", "onDidDismiss", "onWillDismiss"]; var IonPopover = ( /** * @Component extends from @Directive * so by defining the inputs here we * do not need to re-define them for the * lazy loaded popover. */ class IonPopover2 { z; // TODO(FW-2827): type template; isCmpOpen = false; el; constructor(c36, r32, z11) { this.z = z11; this.el = r32.nativeElement; this.el.addEventListener("ionMount", () => { this.isCmpOpen = true; c36.detectChanges(); }); this.el.addEventListener("didDismiss", () => { this.isCmpOpen = false; c36.detectChanges(); }); proxyOutputs(this, this.el, ["ionPopoverDidPresent", "ionPopoverWillPresent", "ionPopoverWillDismiss", "ionPopoverDidDismiss", "didPresent", "willPresent", "willDismiss", "didDismiss"]); } /** @nocollapse */ static ɵfac = function IonPopover_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || IonPopover2)(ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(NgZone)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: IonPopover2, selectors: [["ion-popover"]], contentQueries: function IonPopover_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { ɵɵcontentQuery(dirIndex, TemplateRef, 5); } if (rf & 2) { let _t; ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.template = _t.first); } }, inputs: { alignment: "alignment", animated: "animated", arrow: "arrow", keepContentsMounted: "keepContentsMounted", backdropDismiss: "backdropDismiss", cssClass: "cssClass", dismissOnSelect: "dismissOnSelect", enterAnimation: "enterAnimation", event: "event", focusTrap: "focusTrap", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger", triggerAction: "triggerAction", reference: "reference", size: "size", side: "side" }, standalone: false }); } ); IonPopover = __decorate([ ProxyCmp({ inputs: POPOVER_INPUTS, methods: POPOVER_METHODS }) /** * @Component extends from @Directive * so by defining the inputs here we * do not need to re-define them for the * lazy loaded popover. */ ], IonPopover); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(IonPopover, [{ type: Directive, args: [{ selector: "ion-popover", // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property inputs: POPOVER_INPUTS }] }], function() { return [{ type: ChangeDetectorRef }, { type: ElementRef }, { type: NgZone }]; }, { template: [{ type: ContentChild, args: [TemplateRef, { static: false }] }] }); })(); var insertView = (views, view, direction) => { if (direction === "root") { return setRoot(views, view); } else if (direction === "forward") { return setForward(views, view); } else { return setBack(views, view); } }; var setRoot = (views, view) => { views = views.filter((v18) => v18.stackId !== view.stackId); views.push(view); return views; }; var setForward = (views, view) => { const index = views.indexOf(view); if (index >= 0) { views = views.filter((v18) => v18.stackId !== view.stackId || v18.id <= view.id); } else { views.push(view); } return views; }; var setBack = (views, view) => { const index = views.indexOf(view); if (index >= 0) { return views.filter((v18) => v18.stackId !== view.stackId || v18.id <= view.id); } else { return setRoot(views, view); } }; var getUrl = (router, activatedRoute) => { const urlTree = router.createUrlTree(["."], { relativeTo: activatedRoute }); return router.serializeUrl(urlTree); }; var isTabSwitch = (enteringView, leavingView) => { if (!leavingView) { return true; } return enteringView.stackId !== leavingView.stackId; }; var computeStackId = (prefixUrl, url) => { if (!prefixUrl) { return void 0; } const segments = toSegments(url); for (let i16 = 0; i16 < segments.length; i16++) { if (i16 >= prefixUrl.length) { return segments[i16]; } if (segments[i16] !== prefixUrl[i16]) { return void 0; } } return void 0; }; var toSegments = (path) => { return path.split("/").map((s21) => s21.trim()).filter((s21) => s21 !== ""); }; var destroyView = (view) => { if (view) { view.ref.destroy(); view.unlistenEvents(); } }; var StackController = class { containerEl; router; navCtrl; zone; location; views = []; runningTask; skipTransition = false; tabsPrefix; activeView; nextId = 0; constructor(tabsPrefix, containerEl, router, navCtrl, zone, location) { this.containerEl = containerEl; this.router = router; this.navCtrl = navCtrl; this.zone = zone; this.location = location; this.tabsPrefix = tabsPrefix !== void 0 ? toSegments(tabsPrefix) : void 0; } createView(ref, activatedRoute) { const url = getUrl(this.router, activatedRoute); const element = ref?.location?.nativeElement; const unlistenEvents = bindLifecycleEvents(this.zone, ref.instance, element); return { id: this.nextId++, stackId: computeStackId(this.tabsPrefix, url), unlistenEvents, element, ref, url }; } getExistingView(activatedRoute) { const activatedUrlKey = getUrl(this.router, activatedRoute); const view = this.views.find((vw) => vw.url === activatedUrlKey); if (view) { view.ref.changeDetectorRef.reattach(); } return view; } setActive(enteringView) { const consumeResult = this.navCtrl.consumeTransition(); let { direction, animation, animationBuilder } = consumeResult; const leavingView = this.activeView; const tabSwitch = isTabSwitch(enteringView, leavingView); if (tabSwitch) { direction = "back"; animation = void 0; } const viewsSnapshot = this.views.slice(); let currentNavigation; const router = this.router; if (router.getCurrentNavigation) { currentNavigation = router.getCurrentNavigation(); } else if (router.navigations?.value) { currentNavigation = router.navigations.value; } if (currentNavigation?.extras?.replaceUrl) { if (this.views.length > 0) { this.views.splice(-1, 1); } } const reused = this.views.includes(enteringView); const views = this.insertView(enteringView, direction); if (!reused) { enteringView.ref.changeDetectorRef.detectChanges(); } const customAnimation = enteringView.animationBuilder; if (animationBuilder === void 0 && direction === "back" && !tabSwitch && customAnimation !== void 0) { animationBuilder = customAnimation; } if (leavingView) { leavingView.animationBuilder = animationBuilder; } return this.zone.runOutsideAngular(() => { return this.wait(() => { if (leavingView) { leavingView.ref.changeDetectorRef.detach(); } enteringView.ref.changeDetectorRef.reattach(); return this.transition(enteringView, leavingView, animation, this.canGoBack(1), false, animationBuilder).then(() => cleanupAsync(enteringView, views, viewsSnapshot, this.location, this.zone)).then(() => ({ enteringView, direction, animation, tabSwitch })); }); }); } canGoBack(deep, stackId = this.getActiveStackId()) { return this.getStack(stackId).length > deep; } pop(deep, stackId = this.getActiveStackId()) { return this.zone.run(() => { const views = this.getStack(stackId); if (views.length <= deep) { return Promise.resolve(false); } const view = views[views.length - deep - 1]; let url = view.url; const viewSavedData = view.savedData; if (viewSavedData) { const primaryOutlet = viewSavedData.get("primary"); if (primaryOutlet?.route?._routerState?.snapshot.url) { url = primaryOutlet.route._routerState.snapshot.url; } } const { animationBuilder } = this.navCtrl.consumeTransition(); return this.navCtrl.navigateBack(url, __spreadProps(__spreadValues({}, view.savedExtras), { animation: animationBuilder })).then(() => true); }); } startBackTransition() { const leavingView = this.activeView; if (leavingView) { const views = this.getStack(leavingView.stackId); const enteringView = views[views.length - 2]; const customAnimation = enteringView.animationBuilder; return this.wait(() => { return this.transition( enteringView, // entering view leavingView, // leaving view "back", this.canGoBack(2), true, customAnimation ); }); } return Promise.resolve(); } endBackTransition(shouldComplete) { if (shouldComplete) { this.skipTransition = true; this.pop(1); } else if (this.activeView) { cleanup(this.activeView, this.views, this.views, this.location, this.zone); } } getLastUrl(stackId) { const views = this.getStack(stackId); return views.length > 0 ? views[views.length - 1] : void 0; } /** * @internal */ getRootUrl(stackId) { const views = this.getStack(stackId); return views.length > 0 ? views[0] : void 0; } getActiveStackId() { return this.activeView ? this.activeView.stackId : void 0; } /** * @internal */ getActiveView() { return this.activeView; } hasRunningTask() { return this.runningTask !== void 0; } destroy() { this.containerEl = void 0; this.views.forEach(destroyView); this.activeView = void 0; this.views = []; } getStack(stackId) { return this.views.filter((v18) => v18.stackId === stackId); } insertView(enteringView, direction) { this.activeView = enteringView; this.views = insertView(this.views, enteringView, direction); return this.views.slice(); } transition(enteringView, leavingView, direction, showGoBack, progressAnimation, animationBuilder) { if (this.skipTransition) { this.skipTransition = false; return Promise.resolve(false); } if (leavingView === enteringView) { return Promise.resolve(false); } const enteringEl = enteringView ? enteringView.element : void 0; const leavingEl = leavingView ? leavingView.element : void 0; const containerEl = this.containerEl; if (enteringEl && enteringEl !== leavingEl) { enteringEl.classList.add("ion-page"); enteringEl.classList.add("ion-page-invisible"); if (containerEl.commit) { return containerEl.commit(enteringEl, leavingEl, { duration: direction === void 0 ? 0 : void 0, direction, showGoBack, progressAnimation, animationBuilder }); } } return Promise.resolve(false); } wait(task) { return __async(this, null, function* () { if (this.runningTask !== void 0) { yield this.runningTask; this.runningTask = void 0; } const promise = this.runningTask = task(); promise.finally(() => this.runningTask = void 0); return promise; }); } }; var cleanupAsync = (activeRoute, views, viewsSnapshot, location, zone) => { if (typeof requestAnimationFrame === "function") { return new Promise((resolve) => { requestAnimationFrame(() => { cleanup(activeRoute, views, viewsSnapshot, location, zone); resolve(); }); }); } return Promise.resolve(); }; var cleanup = (activeRoute, views, viewsSnapshot, location, zone) => { zone.run(() => viewsSnapshot.filter((view) => !views.includes(view)).forEach(destroyView)); views.forEach((view) => { const locationWithoutParams = location.path().split("?")[0]; const locationWithoutFragment = locationWithoutParams.split("#")[0]; if (view !== activeRoute && view.url !== locationWithoutFragment) { const element = view.element; element.setAttribute("aria-hidden", "true"); element.classList.add("ion-page-hidden"); view.ref.changeDetectorRef.detach(); } }); }; var IonRouterOutlet = class _IonRouterOutlet { parentOutlet; nativeEl; activatedView = null; tabsPrefix; _swipeGesture; stackCtrl; // Maintain map of activated route proxies for each component instance proxyMap = /* @__PURE__ */ new WeakMap(); // Keep the latest activated route in a subject for the proxy routes to switch map to currentActivatedRoute$ = new BehaviorSubject(null); activated = null; /** @internal */ get activatedComponentRef() { return this.activated; } _activatedRoute = null; /** * The name of the outlet */ name = PRIMARY_OUTLET; /** @internal */ stackWillChange = new EventEmitter(); /** @internal */ stackDidChange = new EventEmitter(); // eslint-disable-next-line @angular-eslint/no-output-rename activateEvents = new EventEmitter(); // eslint-disable-next-line @angular-eslint/no-output-rename deactivateEvents = new EventEmitter(); parentContexts = inject(ChildrenOutletContexts); location = inject(ViewContainerRef); environmentInjector = inject(EnvironmentInjector); inputBinder = inject(INPUT_BINDER, { optional: true }); /** @nodoc */ supportsBindingToComponentInputs = true; // Ionic providers config = inject(Config); navCtrl = inject(NavController); set animation(animation) { this.nativeEl.animation = animation; } set animated(animated) { this.nativeEl.animated = animated; } set swipeGesture(swipe) { this._swipeGesture = swipe; this.nativeEl.swipeHandler = swipe ? { canStart: () => this.stackCtrl.canGoBack(1) && !this.stackCtrl.hasRunningTask(), onStart: () => this.stackCtrl.startBackTransition(), onEnd: (shouldContinue) => this.stackCtrl.endBackTransition(shouldContinue) } : void 0; } constructor(name, tabs, commonLocation, elementRef, router, zone, activatedRoute, parentOutlet) { this.parentOutlet = parentOutlet; this.nativeEl = elementRef.nativeElement; this.name = name || PRIMARY_OUTLET; this.tabsPrefix = tabs === "true" ? getUrl(router, activatedRoute) : void 0; this.stackCtrl = new StackController(this.tabsPrefix, this.nativeEl, router, this.navCtrl, zone, commonLocation); this.parentContexts.onChildOutletCreated(this.name, this); } ngOnDestroy() { this.stackCtrl.destroy(); this.inputBinder?.unsubscribeFromRouteData(this); } getContext() { return this.parentContexts.getContext(this.name); } ngOnInit() { this.initializeOutletWithName(); } // Note: Ionic deviates from the Angular Router implementation here initializeOutletWithName() { if (!this.activated) { const context = this.getContext(); if (context?.route) { this.activateWith(context.route, context.injector); } } new Promise((resolve) => e2(this.nativeEl, resolve)).then(() => { if (this._swipeGesture === void 0) { this.swipeGesture = this.config.getBoolean("swipeBackEnabled", this.nativeEl.mode === "ios"); } }); } get isActivated() { return !!this.activated; } get component() { if (!this.activated) { throw new Error("Outlet is not activated"); } return this.activated.instance; } get activatedRoute() { if (!this.activated) { throw new Error("Outlet is not activated"); } return this._activatedRoute; } get activatedRouteData() { if (this._activatedRoute) { return this._activatedRoute.snapshot.data; } return {}; } /** * Called when the `RouteReuseStrategy` instructs to detach the subtree */ detach() { throw new Error("incompatible reuse strategy"); } /** * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree */ // eslint-disable-next-line @typescript-eslint/no-unused-vars attach(_ref, _activatedRoute) { throw new Error("incompatible reuse strategy"); } deactivate() { if (this.activated) { if (this.activatedView) { const context = this.getContext(); this.activatedView.savedData = new Map(context.children["contexts"]); const primaryOutlet = this.activatedView.savedData.get("primary"); if (primaryOutlet && context.route) { primaryOutlet.route = __spreadValues({}, context.route); } this.activatedView.savedExtras = {}; if (context.route) { const contextSnapshot = context.route.snapshot; this.activatedView.savedExtras.queryParams = contextSnapshot.queryParams; this.activatedView.savedExtras.fragment = contextSnapshot.fragment; } } const c36 = this.component; this.activatedView = null; this.activated = null; this._activatedRoute = null; this.deactivateEvents.emit(c36); } } activateWith(activatedRoute, environmentInjector) { if (this.isActivated) { throw new Error("Cannot activate an already activated outlet"); } this._activatedRoute = activatedRoute; let cmpRef; let enteringView = this.stackCtrl.getExistingView(activatedRoute); if (enteringView) { cmpRef = this.activated = enteringView.ref; const saved = enteringView.savedData; if (saved) { const context = this.getContext(); context.children["contexts"] = saved; } this.updateActivatedRouteProxy(cmpRef.instance, activatedRoute); } else { const snapshot = activatedRoute._futureSnapshot; const childContexts = this.parentContexts.getOrCreateContext(this.name).children; const component$ = new BehaviorSubject(null); const activatedRouteProxy = this.createActivatedRouteProxy(component$, activatedRoute); const injector = new OutletInjector(activatedRouteProxy, childContexts, this.location.injector); const component = snapshot.routeConfig.component ?? snapshot.component; cmpRef = this.activated = this.outletContent.createComponent(component, { index: this.outletContent.length, injector, environmentInjector: environmentInjector ?? this.environmentInjector }); component$.next(cmpRef.instance); enteringView = this.stackCtrl.createView(this.activated, activatedRoute); this.proxyMap.set(cmpRef.instance, activatedRouteProxy); this.currentActivatedRoute$.next({ component: cmpRef.instance, activatedRoute }); } this.inputBinder?.bindActivatedRouteToOutletComponent(this); this.activatedView = enteringView; this.navCtrl.setTopOutlet(this); const leavingView = this.stackCtrl.getActiveView(); this.stackWillChange.emit({ enteringView, tabSwitch: isTabSwitch(enteringView, leavingView) }); this.stackCtrl.setActive(enteringView).then((data) => { this.activateEvents.emit(cmpRef.instance); this.stackDidChange.emit(data); }); } /** * Returns `true` if there are pages in the stack to go back. */ canGoBack(deep = 1, stackId) { return this.stackCtrl.canGoBack(deep, stackId); } /** * Resolves to `true` if it the outlet was able to sucessfully pop the last N pages. */ pop(deep = 1, stackId) { return this.stackCtrl.pop(deep, stackId); } /** * Returns the URL of the active page of each stack. */ getLastUrl(stackId) { const active = this.stackCtrl.getLastUrl(stackId); return active ? active.url : void 0; } /** * Returns the RouteView of the active page of each stack. * @internal */ getLastRouteView(stackId) { return this.stackCtrl.getLastUrl(stackId); } /** * Returns the root view in the tab stack. * @internal */ getRootView(stackId) { return this.stackCtrl.getRootUrl(stackId); } /** * Returns the active stack ID. In the context of ion-tabs, it means the active tab. */ getActiveStackId() { return this.stackCtrl.getActiveStackId(); } /** * Since the activated route can change over the life time of a component in an ion router outlet, we create * a proxy so that we can update the values over time as a user navigates back to components already in the stack. */ createActivatedRouteProxy(component$, activatedRoute) { const proxy = new ActivatedRoute(); proxy._futureSnapshot = activatedRoute._futureSnapshot; proxy._routerState = activatedRoute._routerState; proxy.snapshot = activatedRoute.snapshot; proxy.outlet = activatedRoute.outlet; proxy.component = activatedRoute.component; proxy._paramMap = this.proxyObservable(component$, "paramMap"); proxy._queryParamMap = this.proxyObservable(component$, "queryParamMap"); proxy.url = this.proxyObservable(component$, "url"); proxy.params = this.proxyObservable(component$, "params"); proxy.queryParams = this.proxyObservable(component$, "queryParams"); proxy.fragment = this.proxyObservable(component$, "fragment"); proxy.data = this.proxyObservable(component$, "data"); return proxy; } /** * Create a wrapped observable that will switch to the latest activated route matched by the given component */ proxyObservable(component$, path) { return component$.pipe( // First wait until the component instance is pushed filter((component) => !!component), switchMap((component) => this.currentActivatedRoute$.pipe(filter((current) => current !== null && current.component === component), switchMap((current) => current && current.activatedRoute[path]), distinctUntilChanged())) ); } /** * Updates the activated route proxy for the given component to the new incoming router state */ updateActivatedRouteProxy(component, activatedRoute) { const proxy = this.proxyMap.get(component); if (!proxy) { throw new Error(`Could not find activated route proxy for view`); } proxy._futureSnapshot = activatedRoute._futureSnapshot; proxy._routerState = activatedRoute._routerState; proxy.snapshot = activatedRoute.snapshot; proxy.outlet = activatedRoute.outlet; proxy.component = activatedRoute.component; this.currentActivatedRoute$.next({ component, activatedRoute }); } /** @nocollapse */ static ɵfac = function IonRouterOutlet_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _IonRouterOutlet)(ɵɵinjectAttribute("name"), ɵɵinjectAttribute("tabs"), ɵɵdirectiveInject(Location), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Router), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ActivatedRoute), ɵɵdirectiveInject(_IonRouterOutlet, 12)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: _IonRouterOutlet, selectors: [["ion-router-outlet"]], inputs: { animated: "animated", animation: "animation", mode: "mode", swipeGesture: "swipeGesture", name: "name" }, outputs: { stackWillChange: "stackWillChange", stackDidChange: "stackDidChange", activateEvents: "activate", deactivateEvents: "deactivate" }, exportAs: ["outlet"], standalone: false }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(IonRouterOutlet, [{ type: Directive, args: [{ selector: "ion-router-outlet", exportAs: "outlet", // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property inputs: ["animated", "animation", "mode", "swipeGesture"] }] }], function() { return [{ type: void 0, decorators: [{ type: Attribute, args: ["name"] }] }, { type: void 0, decorators: [{ type: Optional }, { type: Attribute, args: ["tabs"] }] }, { type: Location }, { type: ElementRef }, { type: Router }, { type: NgZone }, { type: ActivatedRoute }, { type: IonRouterOutlet, decorators: [{ type: SkipSelf }, { type: Optional }] }]; }, { name: [{ type: Input }], stackWillChange: [{ type: Output }], stackDidChange: [{ type: Output }], activateEvents: [{ type: Output, args: ["activate"] }], deactivateEvents: [{ type: Output, args: ["deactivate"] }] }); })(); var OutletInjector = class { route; childContexts; parent; constructor(route, childContexts, parent) { this.route = route; this.childContexts = childContexts; this.parent = parent; } get(token, notFoundValue) { if (token === ActivatedRoute) { return this.route; } if (token === ChildrenOutletContexts) { return this.childContexts; } return this.parent.get(token, notFoundValue); } }; var INPUT_BINDER = new InjectionToken(""); var RoutedComponentInputBinder = class _RoutedComponentInputBinder { outletDataSubscriptions = /* @__PURE__ */ new Map(); bindActivatedRouteToOutletComponent(outlet) { this.unsubscribeFromRouteData(outlet); this.subscribeToRouteData(outlet); } unsubscribeFromRouteData(outlet) { this.outletDataSubscriptions.get(outlet)?.unsubscribe(); this.outletDataSubscriptions.delete(outlet); } subscribeToRouteData(outlet) { const { activatedRoute } = outlet; const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data]).pipe(switchMap(([queryParams, params, data], index) => { data = __spreadValues(__spreadValues(__spreadValues({}, queryParams), params), data); if (index === 0) { return of(data); } return Promise.resolve(data); })).subscribe((data) => { if (!outlet.isActivated || !outlet.activatedComponentRef || outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) { this.unsubscribeFromRouteData(outlet); return; } const mirror = reflectComponentType(activatedRoute.component); if (!mirror) { this.unsubscribeFromRouteData(outlet); return; } for (const { templateName } of mirror.inputs) { outlet.activatedComponentRef.setInput(templateName, data[templateName]); } }); this.outletDataSubscriptions.set(outlet, dataSubscription); } /** @nocollapse */ static ɵfac = function RoutedComponentInputBinder_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _RoutedComponentInputBinder)(); }; /** @nocollapse */ static ɵprov = ɵɵdefineInjectable({ token: _RoutedComponentInputBinder, factory: _RoutedComponentInputBinder.ɵfac }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RoutedComponentInputBinder, [{ type: Injectable }], null, null); })(); var provideComponentInputBinding = () => { return { provide: INPUT_BINDER, useFactory: componentInputBindingFactory, deps: [Router] }; }; function componentInputBindingFactory(router) { if (router?.componentInputBindingEnabled) { return new RoutedComponentInputBinder(); } return null; } var raf = (h19) => { if (typeof __zone_symbol__requestAnimationFrame === "function") { return __zone_symbol__requestAnimationFrame(h19); } if (typeof requestAnimationFrame === "function") { return requestAnimationFrame(h19); } return setTimeout(h19); }; var ValueAccessor = class _ValueAccessor { injector; elementRef; onChange = () => { }; onTouched = () => { }; lastValue; statusChanges; constructor(injector, elementRef) { this.injector = injector; this.elementRef = elementRef; } writeValue(value) { this.elementRef.nativeElement.value = this.lastValue = value; setIonicClasses(this.elementRef); } /** * Notifies the ControlValueAccessor of a change in the value of the control. * * This is called by each of the ValueAccessor directives when we want to update * the status and validity of the form control. For example with text components this * is called when the ionInput event is fired. For select components this is called * when the ionChange event is fired. * * This also updates the Ionic form status classes on the element. * * @param el The component element. * @param value The new value of the control. */ handleValueChange(el, value) { if (el === this.elementRef.nativeElement) { if (value !== this.lastValue) { this.lastValue = value; this.onChange(value); } setIonicClasses(this.elementRef); } } _handleBlurEvent(el) { if (el === this.elementRef.nativeElement) { this.onTouched(); setIonicClasses(this.elementRef); } else if (el.closest("ion-radio-group") === this.elementRef.nativeElement) { this.onTouched(); } } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } setDisabledState(isDisabled) { this.elementRef.nativeElement.disabled = isDisabled; } ngOnDestroy() { if (this.statusChanges) { this.statusChanges.unsubscribe(); } } ngAfterViewInit() { let ngControl; try { ngControl = this.injector.get(NgControl); } catch { } if (!ngControl) { return; } if (ngControl.statusChanges) { this.statusChanges = ngControl.statusChanges.subscribe(() => setIonicClasses(this.elementRef)); } const formControl = ngControl.control; if (formControl) { const methodsToPatch = ["markAsTouched", "markAllAsTouched", "markAsUntouched", "markAsDirty", "markAsPristine"]; methodsToPatch.forEach((method) => { if (typeof formControl[method] !== "undefined") { const oldFn = formControl[method].bind(formControl); formControl[method] = (...params) => { oldFn(...params); setIonicClasses(this.elementRef); }; } }); } } /** @nocollapse */ static ɵfac = function ValueAccessor_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _ValueAccessor)(ɵɵdirectiveInject(Injector), ɵɵdirectiveInject(ElementRef)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: _ValueAccessor, hostBindings: function ValueAccessor_HostBindings(rf, ctx) { if (rf & 1) { ɵɵlistener("ionBlur", function ValueAccessor_ionBlur_HostBindingHandler($event) { return ctx._handleBlurEvent($event.target); }); } }, standalone: false }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ValueAccessor, [{ type: Directive }], function() { return [{ type: Injector }, { type: ElementRef }]; }, { _handleBlurEvent: [{ type: HostListener, args: ["ionBlur", ["$event.target"]] }] }); })(); var setIonicClasses = (element) => { raf(() => { const input = element.nativeElement; const hasValue = input.value != null && input.value.toString().length > 0; const classes = getClasses(input); setClasses(input, classes); const item = input.closest("ion-item"); if (item) { if (hasValue) { setClasses(item, [...classes, "item-has-value"]); } else { setClasses(item, classes); } } }); }; var getClasses = (element) => { const classList = element.classList; const classes = []; for (let i16 = 0; i16 < classList.length; i16++) { const item = classList.item(i16); if (item !== null && startsWith(item, "ng-")) { classes.push(`ion-${item.substring(3)}`); } } return classes; }; var setClasses = (element, classes) => { const classList = element.classList; classList.remove("ion-valid", "ion-invalid", "ion-touched", "ion-untouched", "ion-dirty", "ion-pristine"); classList.add(...classes); }; var startsWith = (input, search) => { return input.substring(0, search.length) === search; }; var BACK_BUTTON_INPUTS = ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"]; var IonBackButton = class IonBackButton2 { routerOutlet; navCtrl; config; r; z; el; constructor(routerOutlet, navCtrl, config, r32, z11, c36) { this.routerOutlet = routerOutlet; this.navCtrl = navCtrl; this.config = config; this.r = r32; this.z = z11; c36.detach(); this.el = this.r.nativeElement; } /** * @internal */ onClick(ev) { const defaultHref = this.defaultHref || this.config.get("backButtonDefaultHref"); if (this.routerOutlet?.canGoBack()) { this.navCtrl.setDirection("back", void 0, void 0, this.routerAnimation); this.routerOutlet.pop(); ev.preventDefault(); } else if (defaultHref != null) { this.navCtrl.navigateBack(defaultHref, { animation: this.routerAnimation }); ev.preventDefault(); } } /** @nocollapse */ static ɵfac = function IonBackButton_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || IonBackButton2)(ɵɵdirectiveInject(IonRouterOutlet, 8), ɵɵdirectiveInject(NavController), ɵɵdirectiveInject(Config), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ChangeDetectorRef)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: IonBackButton2, hostBindings: function IonBackButton_HostBindings(rf, ctx) { if (rf & 1) { ɵɵlistener("click", function IonBackButton_click_HostBindingHandler($event) { return ctx.onClick($event); }); } }, inputs: { color: "color", defaultHref: "defaultHref", disabled: "disabled", icon: "icon", mode: "mode", routerAnimation: "routerAnimation", text: "text", type: "type" }, standalone: false }); }; IonBackButton = __decorate([ProxyCmp({ inputs: BACK_BUTTON_INPUTS })], IonBackButton); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(IonBackButton, [{ type: Directive, args: [{ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property inputs: BACK_BUTTON_INPUTS }] }], function() { return [{ type: IonRouterOutlet, decorators: [{ type: Optional }] }, { type: NavController }, { type: Config }, { type: ElementRef }, { type: NgZone }, { type: ChangeDetectorRef }]; }, { onClick: [{ type: HostListener, args: ["click", ["$event"]] }] }); })(); var NAV_INPUTS = ["animated", "animation", "root", "rootParams", "swipeGesture"]; var NAV_METHODS = ["push", "insert", "insertPages", "pop", "popTo", "popToRoot", "removeIndex", "setRoot", "setPages", "getActive", "getByIndex", "canGoBack", "getPrevious"]; var IonNav = class IonNav2 { z; el; constructor(ref, environmentInjector, injector, angularDelegate, z11, c36) { this.z = z11; c36.detach(); this.el = ref.nativeElement; ref.nativeElement.delegate = angularDelegate.create(environmentInjector, injector); proxyOutputs(this, this.el, ["ionNavDidChange", "ionNavWillChange"]); } /** @nocollapse */ static ɵfac = function IonNav_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || IonNav2)(ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(EnvironmentInjector), ɵɵdirectiveInject(Injector), ɵɵdirectiveInject(AngularDelegate), ɵɵdirectiveInject(NgZone), ɵɵdirectiveInject(ChangeDetectorRef)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: IonNav2, inputs: { animated: "animated", animation: "animation", root: "root", rootParams: "rootParams", swipeGesture: "swipeGesture" }, standalone: false }); }; IonNav = __decorate([ProxyCmp({ inputs: NAV_INPUTS, methods: NAV_METHODS })], IonNav); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(IonNav, [{ type: Directive, args: [{ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property inputs: NAV_INPUTS }] }], function() { return [{ type: ElementRef }, { type: EnvironmentInjector }, { type: Injector }, { type: AngularDelegate }, { type: NgZone }, { type: ChangeDetectorRef }]; }, null); })(); var RouterLinkDelegateDirective = class _RouterLinkDelegateDirective { locationStrategy; navCtrl; elementRef; router; routerLink; routerDirection = "forward"; routerAnimation; constructor(locationStrategy, navCtrl, elementRef, router, routerLink) { this.locationStrategy = locationStrategy; this.navCtrl = navCtrl; this.elementRef = elementRef; this.router = router; this.routerLink = routerLink; } ngOnInit() { this.updateTargetUrlAndHref(); this.updateTabindex(); } ngOnChanges() { this.updateTargetUrlAndHref(); } /** * The `tabindex` is set to `0` by default on the host element when * the `routerLink` directive is used. This causes issues with Ionic * components that wrap an `a` or `button` element, such as `ion-item`. * See issue https://github.com/angular/angular/issues/28345 * * This method removes the `tabindex` attribute from the host element * to allow the Ionic component to manage the focus state correctly. */ updateTabindex() { const ionicComponents = ["ION-BACK-BUTTON", "ION-BREADCRUMB", "ION-BUTTON", "ION-CARD", "ION-FAB-BUTTON", "ION-ITEM", "ION-ITEM-OPTION", "ION-MENU-BUTTON", "ION-SEGMENT-BUTTON", "ION-TAB-BUTTON"]; const hostElement = this.elementRef.nativeElement; if (ionicComponents.includes(hostElement.tagName)) { if (hostElement.getAttribute("tabindex") === "0") { hostElement.removeAttribute("tabindex"); } } } updateTargetUrlAndHref() { if (this.routerLink?.urlTree) { const href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.routerLink.urlTree)); this.elementRef.nativeElement.href = href; } } /** * @internal */ onClick(ev) { this.navCtrl.setDirection(this.routerDirection, void 0, void 0, this.routerAnimation); ev.preventDefault(); } /** @nocollapse */ static ɵfac = function RouterLinkDelegateDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _RouterLinkDelegateDirective)(ɵɵdirectiveInject(LocationStrategy), ɵɵdirectiveInject(NavController), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Router), ɵɵdirectiveInject(RouterLink, 8)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: _RouterLinkDelegateDirective, selectors: [["", "routerLink", "", 5, "a", 5, "area"]], hostBindings: function RouterLinkDelegateDirective_HostBindings(rf, ctx) { if (rf & 1) { ɵɵlistener("click", function RouterLinkDelegateDirective_click_HostBindingHandler($event) { return ctx.onClick($event); }); } }, inputs: { routerDirection: "routerDirection", routerAnimation: "routerAnimation" }, standalone: false, features: [ɵɵNgOnChangesFeature] }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterLinkDelegateDirective, [{ type: Directive, args: [{ selector: ":not(a):not(area)[routerLink]" }] }], function() { return [{ type: LocationStrategy }, { type: NavController }, { type: ElementRef }, { type: Router }, { type: RouterLink, decorators: [{ type: Optional }] }]; }, { routerDirection: [{ type: Input }], routerAnimation: [{ type: Input }], onClick: [{ type: HostListener, args: ["click", ["$event"]] }] }); })(); var RouterLinkWithHrefDelegateDirective = class _RouterLinkWithHrefDelegateDirective { locationStrategy; navCtrl; elementRef; router; routerLink; routerDirection = "forward"; routerAnimation; constructor(locationStrategy, navCtrl, elementRef, router, routerLink) { this.locationStrategy = locationStrategy; this.navCtrl = navCtrl; this.elementRef = elementRef; this.router = router; this.routerLink = routerLink; } ngOnInit() { this.updateTargetUrlAndHref(); } ngOnChanges() { this.updateTargetUrlAndHref(); } updateTargetUrlAndHref() { if (this.routerLink?.urlTree) { const href = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.routerLink.urlTree)); this.elementRef.nativeElement.href = href; } } /** * @internal */ onClick() { this.navCtrl.setDirection(this.routerDirection, void 0, void 0, this.routerAnimation); } /** @nocollapse */ static ɵfac = function RouterLinkWithHrefDelegateDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _RouterLinkWithHrefDelegateDirective)(ɵɵdirectiveInject(LocationStrategy), ɵɵdirectiveInject(NavController), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Router), ɵɵdirectiveInject(RouterLink, 8)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: _RouterLinkWithHrefDelegateDirective, selectors: [["a", "routerLink", ""], ["area", "routerLink", ""]], hostBindings: function RouterLinkWithHrefDelegateDirective_HostBindings(rf, ctx) { if (rf & 1) { ɵɵlistener("click", function RouterLinkWithHrefDelegateDirective_click_HostBindingHandler() { return ctx.onClick(); }); } }, inputs: { routerDirection: "routerDirection", routerAnimation: "routerAnimation" }, standalone: false, features: [ɵɵNgOnChangesFeature] }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterLinkWithHrefDelegateDirective, [{ type: Directive, args: [{ selector: "a[routerLink],area[routerLink]" }] }], function() { return [{ type: LocationStrategy }, { type: NavController }, { type: ElementRef }, { type: Router }, { type: RouterLink, decorators: [{ type: Optional }] }]; }, { routerDirection: [{ type: Input }], routerAnimation: [{ type: Input }], onClick: [{ type: HostListener, args: ["click"] }] }); })(); var IonTabs = class _IonTabs { navCtrl; tabsInner; /** * Emitted before the tab view is changed. */ ionTabsWillChange = new EventEmitter(); /** * Emitted after the tab view is changed. */ ionTabsDidChange = new EventEmitter(); tabBarSlot = "bottom"; hasTab = false; selectedTab; leavingTab; constructor(navCtrl) { this.navCtrl = navCtrl; } ngAfterViewInit() { const firstTab = this.tabs.length > 0 ? this.tabs.first : void 0; if (firstTab) { this.hasTab = true; this.setActiveTab(firstTab.tab); this.tabSwitch(); } } ngAfterContentInit() { this.detectSlotChanges(); } ngAfterContentChecked() { this.detectSlotChanges(); } /** * @internal */ onStackWillChange({ enteringView, tabSwitch }) { const stackId = enteringView.stackId; if (tabSwitch && stackId !== void 0) { this.ionTabsWillChange.emit({ tab: stackId }); } } /** * @internal */ onStackDidChange({ enteringView, tabSwitch }) { const stackId = enteringView.stackId; if (tabSwitch && stackId !== void 0) { if (this.tabBar) { this.tabBar.selectedTab = stackId; } this.ionTabsDidChange.emit({ tab: stackId }); } } /** * When a tab button is clicked, there are several scenarios: * 1. If the selected tab is currently active (the tab button has been clicked * again), then it should go to the root view for that tab. * * a. Get the saved root view from the router outlet. If the saved root view * matches the tabRootUrl, set the route view to this view including the * navigation extras. * b. If the saved root view from the router outlet does * not match, navigate to the tabRootUrl. No navigation extras are * included. * * 2. If the current tab tab is not currently selected, get the last route * view from the router outlet. * * a. If the last route view exists, navigate to that view including any * navigation extras * b. If the last route view doesn't exist, then navigate * to the default tabRootUrl */ select(tabOrEvent) { const isTabString = typeof tabOrEvent === "string"; const tab = isTabString ? tabOrEvent : tabOrEvent.detail.tab; if (this.hasTab) { this.setActiveTab(tab); this.tabSwitch(); return; } const alreadySelected = this.outlet.getActiveStackId() === tab; const tabRootUrl = `${this.outlet.tabsPrefix}/${tab}`; if (!isTabString) { tabOrEvent.stopPropagation(); } if (alreadySelected) { const activeStackId = this.outlet.getActiveStackId(); const activeView = this.outlet.getLastRouteView(activeStackId); if (activeView?.url === tabRootUrl) { return; } const rootView = this.outlet.getRootView(tab); const navigationExtras = rootView && tabRootUrl === rootView.url && rootView.savedExtras; return this.navCtrl.navigateRoot(tabRootUrl, __spreadProps(__spreadValues({}, navigationExtras), { animated: true, animationDirection: "back" })); } else { const lastRoute = this.outlet.getLastRouteView(tab); const url = lastRoute?.url || tabRootUrl; const navigationExtras = lastRoute?.savedExtras; return this.navCtrl.navigateRoot(url, __spreadProps(__spreadValues({}, navigationExtras), { animated: true, animationDirection: "back" })); } } setActiveTab(tab) { const tabs = this.tabs; const selectedTab = tabs.find((t16) => t16.tab === tab); if (!selectedTab) { console.error(`[Ionic Error]: Tab with id: "${tab}" does not exist`); return; } this.leavingTab = this.selectedTab; this.selectedTab = selectedTab; this.ionTabsWillChange.emit({ tab }); selectedTab.el.active = true; } tabSwitch() { const { selectedTab, leavingTab } = this; if (this.tabBar && selectedTab) { this.tabBar.selectedTab = selectedTab.tab; } if (leavingTab?.tab !== selectedTab?.tab) { if (leavingTab?.el) { leavingTab.el.active = false; } } if (selectedTab) { this.ionTabsDidChange.emit({ tab: selectedTab.tab }); } } getSelected() { if (this.hasTab) { return this.selectedTab?.tab; } return this.outlet.getActiveStackId(); } /** * Detects changes to the slot attribute of the tab bar. * * If the slot attribute has changed, then the tab bar * should be relocated to the new slot position. */ detectSlotChanges() { this.tabBars.forEach((tabBar) => { const currentSlot = tabBar.el.getAttribute("slot"); if (currentSlot !== this.tabBarSlot) { this.tabBarSlot = currentSlot; this.relocateTabBar(); } }); } /** * Relocates the tab bar to the new slot position. */ relocateTabBar() { const tabBar = this.tabBar.el; if (this.tabBarSlot === "top") { this.tabsInner.nativeElement.before(tabBar); } else { this.tabsInner.nativeElement.after(tabBar); } } /** @nocollapse */ static ɵfac = function IonTabs_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || _IonTabs)(ɵɵdirectiveInject(NavController)); }; /** @nocollapse */ static ɵdir = ɵɵdefineDirective({ type: _IonTabs, selectors: [["ion-tabs"]], viewQuery: function IonTabs_Query(rf, ctx) { if (rf & 1) { ɵɵviewQuery(_c0, 7, ElementRef); } if (rf & 2) { let _t; ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.tabsInner = _t.first); } }, hostBindings: function IonTabs_HostBindings(rf, ctx) { if (rf & 1) { ɵɵlistener("ionTabButtonClick", function IonTabs_ionTabButtonClick_HostBindingHandler($event) { return ctx.select($event); }); } }, outputs: { ionTabsWillChange: "ionTabsWillChange", ionTabsDidChange: "ionTabsDidChange" }, standalone: false }); }; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(IonTabs, [{ type: Directive, args: [{ selector: "ion-tabs" }] }], function() { return [{ type: NavController }]; }, { tabsInner: [{ type: ViewChild, args: ["tabsInner", { read: ElementRef, static: true }] }], ionTabsWillChange: [{ type: Output }], ionTabsDidChange: [{ type: Output }], select: [{ type: HostListener, args: ["ionTabButtonClick", ["$event"]] }] }); })(); var OverlayBaseController = class { ctrl; constructor(ctrl) { this.ctrl = ctrl; } /** * Creates a new overlay */ create(opts) { return this.ctrl.create(opts || {}); } /** * When `id` is not provided, it dismisses the top overlay. */ dismiss(data, role, id) { return this.ctrl.dismiss(data, role, id); } /** * Returns the top overlay. */ getTop() { return this.ctrl.getTop(); } }; var IonicRouteStrategy = class { /** * Whether the given route should detach for later reuse. */ shouldDetach(_route) { return false; } /** * Returns `false`, meaning the route (and its subtree) is never reattached */ shouldAttach(_route) { return false; } /** * A no-op; the route is never stored since this strategy never detaches routes for later re-use. */ store(_route, _detachedTree) { return; } /** * Returns `null` because this strategy does not store routes for later re-use. */ retrieve(_route) { return null; } /** * Determines if a route should be reused. * This strategy returns `true` when the future route config and * current route config are identical and all route parameters are identical. */ shouldReuseRoute(future, curr) { if (future.routeConfig !== curr.routeConfig) { return false; } const futureParams = future.params; const currentParams = curr.params; const keysA = Object.keys(futureParams); const keysB = Object.keys(currentParams); if (keysA.length !== keysB.length) { return false; } for (const key of keysA) { if (currentParams[key] !== futureParams[key]) { return false; } } return true; } }; // node_modules/@ionic/core/components/p-CO7fmmxt.js var s7 = "data:image/svg+xml;utf8,"; var o9 = "data:image/svg+xml;utf8,"; var i9 = "data:image/svg+xml;utf8,"; var n6 = "data:image/svg+xml;utf8,"; var a6 = "data:image/svg+xml;utf8,"; var t9 = "data:image/svg+xml;utf8,"; var l8 = "data:image/svg+xml;utf8,"; var g3 = "data:image/svg+xml;utf8,"; var e7 = "data:image/svg+xml;utf8,"; var w3 = "data:image/svg+xml;utf8,"; var c8 = "data:image/svg+xml;utf8,"; var v5 = "data:image/svg+xml;utf8,"; var r6 = "data:image/svg+xml;utf8,"; var m3 = "data:image/svg+xml;utf8,"; var d4 = "data:image/svg+xml;utf8,"; var x4 = "data:image/svg+xml;utf8,"; var h6 = "data:image/svg+xml;utf8,"; var p5 = "data:image/svg+xml;utf8,"; var u5 = "data:image/svg+xml;utf8,"; var k2 = "data:image/svg+xml;utf8,"; var f6 = "data:image/svg+xml;utf8,"; var M3 = "data:image/svg+xml;utf8,"; var B3 = "data:image/svg+xml;utf8,"; var j3 = "data:image/svg+xml;utf8,"; var Z2 = "data:image/svg+xml;utf8,"; // node_modules/@ionic/core/components/p-YLXPWgVj.js var e8; var c9 = (o14, t16, n15, i16, r32) => (n15 = "ios" === (n15 && h7(n15)) ? "ios" : "md", i16 && "ios" === n15 ? o14 = h7(i16) : r32 && "md" === n15 ? o14 = h7(r32) : (o14 || !t16 || a7(t16) || (o14 = t16), d5(o14) && (o14 = h7(o14))), d5(o14) && "" !== o14.trim() ? "" !== o14.replace(/[a-z]|-|\d/gi, "") ? null : o14 : null); var l9 = (o14) => d5(o14) && (o14 = o14.trim(), a7(o14)) ? o14 : null; var a7 = (o14) => o14.length > 0 && /(\/|\.)/.test(o14); var d5 = (o14) => "string" == typeof o14; var h7 = (o14) => o14.toLowerCase(); var f7 = (o14) => { if (1 === o14.nodeType) { if ("script" === o14.nodeName.toLowerCase()) return false; for (let t16 = 0; t16 < o14.attributes.length; t16++) { const n15 = o14.attributes[t16].name; if (d5(n15) && 0 === n15.toLowerCase().indexOf("on")) return false; } for (let t16 = 0; t16 < o14.childNodes.length; t16++) if (!f7(o14.childNodes[t16])) return false; } return true; }; var u6 = /* @__PURE__ */ new Map(); var m4 = /* @__PURE__ */ new Map(); var p6; function g4(o14) { return u6.set(o14, ""), ""; } var w4 = Dn(class extends I { constructor(o14) { super(), false !== o14 && this.__registerHost(), this.__attachShadow(), this.iconName = null, this.inheritedAttributes = {}, this.didLoadIcon = false, this.isVisible = false, this.mode = b4(), this.lazy = false, this.sanitize = true; } componentWillLoad() { this.inheritedAttributes = ((o14, t16 = []) => { const n15 = {}; return t16.forEach(((t17) => { o14.hasAttribute(t17) && (null !== o14.getAttribute(t17) && (n15[t17] = o14.getAttribute(t17)), o14.removeAttribute(t17)); })), n15; })(this.el, ["aria-label"]); } connectedCallback() { this.waitUntilVisible(this.el, "50px", (() => { this.isVisible = true, this.loadIcon(); })); } componentDidLoad() { this.didLoadIcon || this.loadIcon(); } disconnectedCallback() { this.io && (this.io.disconnect(), this.io = void 0); } waitUntilVisible(o14, t16, n15) { if (!Boolean(this.lazy && "undefined" != typeof window && window.IntersectionObserver)) return n15(); const i16 = this.io = new window.IntersectionObserver(((o15) => { o15[0].isIntersecting && (i16.disconnect(), this.io = void 0, n15()); }), { rootMargin: t16 }); i16.observe(o14); } loadIcon() { if (this.isVisible) { const t16 = ((t17) => { let n15 = l9(t17.src); if (n15) return n15; if (n15 = c9(t17.name, t17.icon, t17.mode, t17.ios, t17.md), n15) return ((t18, n16) => { const i16 = (() => { if ("undefined" == typeof window) return /* @__PURE__ */ new Map(); if (!e8) { const o14 = window; o14.Ionicons = o14.Ionicons || {}, e8 = o14.Ionicons.map = o14.Ionicons.map || /* @__PURE__ */ new Map(); } return e8; })().get(t18); if (i16) return i16; try { return q(`svg/${t18}.svg`); } catch (o14) { console.log("e", o14), console.warn(`[Ionicons Warning]: Could not load icon with name "${t18}". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to the icon component.`, n16); } })(n15, t17); if (t17.icon) { if (n15 = l9(t17.icon), n15) return n15; if (n15 = l9(t17.icon[t17.mode]), n15) return n15; } return null; })(this); t16 && (u6.has(t16) ? this.svgContent = u6.get(t16) : ((o14, t17) => m4.get(o14) || ("undefined" != typeof fetch && "undefined" != typeof document ? ((o15) => o15.startsWith("data:image/svg+xml"))(o14) && ((o15) => -1 !== o15.indexOf(";utf8,"))(o14) ? Promise.resolve((function(o15) { p6 || (p6 = new DOMParser()); const t18 = p6.parseFromString(o15, "text/html").querySelector("svg"); if (t18) return u6.set(o15, t18.outerHTML), t18.outerHTML; throw new Error(`Could not parse svg from ${o15}`); })(o14)) : (function(o15, t18) { const n15 = fetch(o15).then(((n16) => n16.text().then(((n17) => { n17 && false !== t18 && (n17 = ((o16) => { const t19 = document.createElement("div"); t19.innerHTML = o16; for (let o17 = t19.childNodes.length - 1; o17 >= 0; o17--) "svg" !== t19.childNodes[o17].nodeName.toLowerCase() && t19.removeChild(t19.childNodes[o17]); const n18 = t19.firstElementChild; if (n18 && "svg" === n18.nodeName.toLowerCase()) { const o17 = n18.getAttribute("class") || ""; if (n18.setAttribute("class", (o17 + " s-ion-icon").trim()), f7(n18)) return t19.innerHTML; } return ""; })(n17)); const i16 = n17 || ""; return u6.set(o15, i16), i16; })).catch((() => g4(o15))))).catch((() => g4(o15))); return m4.set(o15, n15), n15; })(o14, t17) : Promise.resolve(g4(o14))))(t16, this.sanitize).then((() => this.svgContent = u6.get(t16))), this.didLoadIcon = true); } this.iconName = c9(this.name, this.icon, this.mode, this.ios, this.md); } render() { const { flipRtl: o14, iconName: t16, inheritedAttributes: n15, el: s21 } = this, e16 = this.mode || "md", c36 = !!t16 && (t16.includes("arrow") || t16.includes("chevron")) && false !== o14, l28 = o14 || c36; return Ct(It, Object.assign({ key: "0578c899781ca145dd8205acd9670af39b57cf2e", role: "img", class: Object.assign(Object.assign({ [e16]: true }, v6(this.color)), { [`icon-${this.size}`]: !!this.size, "flip-rtl": l28, "icon-rtl": l28 && (a16 = s21, a16 && "" !== a16.dir ? "rtl" === a16.dir.toLowerCase() : "rtl" === (null === document || void 0 === document ? void 0 : document.dir.toLowerCase())) }) }, n15), Ct("div", this.svgContent ? { class: "icon-inner", innerHTML: this.svgContent } : { class: "icon-inner" })); var a16; } static get assetsDirs() { return ["svg"]; } get el() { return this; } static get watchers() { return { name: [{ loadIcon: 0 }], src: [{ loadIcon: 0 }], icon: [{ loadIcon: 0 }], ios: [{ loadIcon: 0 }], md: [{ loadIcon: 0 }] }; } static get style() { return ":host{display:inline-block;width:1em;height:1em;contain:strict;fill:currentColor;-webkit-box-sizing:content-box !important;box-sizing:content-box !important}:host .ionicon{stroke:currentColor}.ionicon-fill-none{fill:none}.ionicon-stroke-width{stroke-width:var(--ionicon-stroke-width, 32px)}.icon-inner,.ionicon,svg{display:block;height:100%;width:100%}@supports (background: -webkit-named-image(i)){:host(.icon-rtl) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])){:host(.icon-rtl) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}:host(.flip-rtl):host-context([dir='rtl']) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@supports selector(:dir(rtl)){:host(.flip-rtl:dir(rtl)) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.flip-rtl:dir(ltr)) .icon-inner{-webkit-transform:scaleX(1);transform:scaleX(1)}}:host(.icon-small){font-size:1.125rem !important}:host(.icon-large){font-size:2rem !important}:host(.ion-color){color:var(--ion-color-base) !important}:host(.ion-color-primary){--ion-color-base:var(--ion-color-primary, #3880ff)}:host(.ion-color-secondary){--ion-color-base:var(--ion-color-secondary, #0cd1e8)}:host(.ion-color-tertiary){--ion-color-base:var(--ion-color-tertiary, #f4a942)}:host(.ion-color-success){--ion-color-base:var(--ion-color-success, #10dc60)}:host(.ion-color-warning){--ion-color-base:var(--ion-color-warning, #ffce00)}:host(.ion-color-danger){--ion-color-base:var(--ion-color-danger, #f14141)}:host(.ion-color-light){--ion-color-base:var(--ion-color-light, #f4f5f8)}:host(.ion-color-medium){--ion-color-base:var(--ion-color-medium, #989aa2)}:host(.ion-color-dark){--ion-color-base:var(--ion-color-dark, #222428)}"; } }, [1, "ion-icon", { mode: [1025], color: [1], ios: [1], md: [1], flipRtl: [4, "flip-rtl"], name: [513], src: [1], icon: [8], size: [1], lazy: [4], sanitize: [4], svgContent: [32], isVisible: [32] }, void 0, { name: [{ loadIcon: 0 }], src: [{ loadIcon: 0 }], icon: [{ loadIcon: 0 }], ios: [{ loadIcon: 0 }], md: [{ loadIcon: 0 }] }]); var b4 = () => "undefined" != typeof document && document.documentElement.getAttribute("mode") || "md"; var v6 = (o14) => o14 ? { "ion-color": true, [`ion-color-${o14}`]: true } : null; function y4() { "undefined" != typeof customElements && ["ion-icon"].forEach(((o14) => { "ion-icon" === o14 && (customElements.get(Zn(o14)) || customElements.define(Zn(o14), w4)); })); } // node_modules/@ionic/core/components/p-fpbh6w3f.js var m5 = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(), this.__attachShadow(), this.type = "bounded"; } addRipple(t16, n15) { return __async(this, null, function* () { return new Promise(((e16) => { W((() => { const i16 = this.el.getBoundingClientRect(), o14 = i16.width, r32 = i16.height, s21 = Math.sqrt(o14 * o14 + r32 * r32), m26 = Math.max(r32, o14), p33 = this.unbounded ? m26 : s21 + f8, u19 = Math.floor(m26 * l10), d24 = p33 / u19; let b20 = t16 - i16.left, k11 = n15 - i16.top; this.unbounded && (b20 = 0.5 * o14, k11 = 0.5 * r32); const w11 = b20 - 0.5 * u19, y12 = k11 - 0.5 * u19, h19 = 0.5 * o14 - b20, g20 = 0.5 * r32 - k11; P((() => { const t17 = document.createElement("div"); t17.classList.add("ripple-effect"); const n16 = t17.style; n16.top = y12 + "px", n16.left = w11 + "px", n16.width = n16.height = u19 + "px", n16.setProperty("--final-scale", `${d24}`), n16.setProperty("--translate-end", `${h19}px, ${g20}px`), (this.el.shadowRoot || this.el).appendChild(t17), setTimeout((() => { e16((() => { c10(t17); })); }), 325); })); })); })); }); } get unbounded() { return "unbounded" === this.type; } render() { const t16 = g(this); return Ct(It, { key: "3b59cbb44741569a7350f9638b4392add673b6f1", role: "presentation", class: { [t16]: true, unbounded: this.unbounded } }); } get el() { return this; } static get style() { return ":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:strict;pointer-events:none}:host(.unbounded){contain:layout size style}.ripple-effect{border-radius:50%;position:absolute;background-color:currentColor;color:inherit;contain:strict;opacity:0;-webkit-animation:225ms rippleAnimation forwards, 75ms fadeInAnimation forwards;animation:225ms rippleAnimation forwards, 75ms fadeInAnimation forwards;will-change:transform, opacity;pointer-events:none}.fade-out{-webkit-transform:translate(var(--translate-end)) scale(var(--final-scale, 1));transform:translate(var(--translate-end)) scale(var(--final-scale, 1));-webkit-animation:150ms fadeOutAnimation forwards;animation:150ms fadeOutAnimation forwards}@-webkit-keyframes rippleAnimation{from{-webkit-animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:translate(var(--translate-end)) scale(var(--final-scale, 1));transform:translate(var(--translate-end)) scale(var(--final-scale, 1))}}@keyframes rippleAnimation{from{-webkit-animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:translate(var(--translate-end)) scale(var(--final-scale, 1));transform:translate(var(--translate-end)) scale(var(--final-scale, 1))}}@-webkit-keyframes fadeInAnimation{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:0.16}}@keyframes fadeInAnimation{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:0.16}}@-webkit-keyframes fadeOutAnimation{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0.16}to{opacity:0}}@keyframes fadeOutAnimation{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0.16}to{opacity:0}}"; } }, [1, "ion-ripple-effect", { type: [1], addRipple: [64] }]); var c10 = (t16) => { t16.classList.add("fade-out"), setTimeout((() => { t16.remove(); }), 200); }; var f8 = 10; var l10 = 0.5; function p7() { "undefined" != typeof customElements && ["ion-ripple-effect"].forEach(((t16) => { "ion-ripple-effect" === t16 && (customElements.get(Zn(t16)) || customElements.define(Zn(t16), m5)); })); } // node_modules/@ionic/core/components/ion-back-button.js var m6 = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(), this.__attachShadow(), this.inheritedAttributes = {}, this.disabled = false, this.type = "button", this.onClick = (t17) => __async(this, null, function* () { const n15 = this.el.closest("ion-nav"); return t17.preventDefault(), n15 && (yield n15.canGoBack()) ? n15.pop({ animationBuilder: this.routerAnimation, skipIfBusy: true }) : l7(this.defaultHref, t17, "back", this.routerAnimation); }); } componentWillLoad() { this.inheritedAttributes = s2(this.el), void 0 === this.defaultHref && (this.defaultHref = n.get("backButtonDefaultHref")); } get backButtonIcon() { const t16 = this.icon; return null != t16 ? t16 : "ios" === g(this) ? n.get("backButtonIcon", l8) : n.get("backButtonIcon", s7); } get backButtonText() { const t16 = "ios" === g(this) ? "Back" : null; return null != this.text ? this.text : n.get("backButtonText", t16); } get hasIconOnly() { return this.backButtonIcon && !this.backButtonText; } get rippleType() { return this.hasIconOnly ? "unbounded" : "bounded"; } render() { const { color: t16, defaultHref: n15, disabled: o14, type: a16, hasIconOnly: r32, backButtonIcon: d24, backButtonText: l28, icon: p33, inheritedAttributes: b20 } = this, h19 = void 0 !== n15, m26 = g(this), u19 = b20["aria-label"] || l28 || "back"; return Ct(It, { key: "5466624a10f1ab56f5469e6dc07080303880f2fe", onClick: this.onClick, class: o6(t16, { [m26]: true, button: true, "back-button-disabled": o14, "back-button-has-icon-only": r32, "in-toolbar": n5("ion-toolbar", this.el), "in-toolbar-color": n5("ion-toolbar[color]", this.el), "ion-activatable": true, "ion-focusable": true, "show-back-button": h19 }) }, Ct("button", { key: "63bc75ef0ad7cc9fb79e58217a3314b20acd73e3", type: a16, disabled: o14, class: "button-native", part: "native", "aria-label": u19 }, Ct("span", { key: "5d3eacbd11af2245c6e1151cab446a0d96559ad8", class: "button-inner" }, d24 && Ct("ion-icon", { key: "6439af0ae463764174e7d3207f02267811df666d", part: "icon", icon: d24, "aria-hidden": "true", lazy: false, "flip-rtl": void 0 === p33 }), l28 && Ct("span", { key: "8ee89fb18dfdb5b75948a8b197ff4cdbc008742f", part: "text", "aria-hidden": "true", class: "button-text" }, l28)), "md" === m26 && Ct("ion-ripple-effect", { key: "63803a884998bc73bea5afe0b2a0a14e3fa4d6bf", type: this.rippleType }))); } get el() { return this; } static get style() { return { ios: ':host{--background:transparent;--color-focused:currentColor;--color-hover:currentColor;--icon-margin-top:0;--icon-margin-bottom:0;--icon-padding-top:0;--icon-padding-end:0;--icon-padding-bottom:0;--icon-padding-start:0;--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--min-width:auto;--min-height:auto;--padding-top:0;--padding-end:0;--padding-bottom:0;--padding-start:0;--opacity:1;--ripple-color:currentColor;--transition:background-color, opacity 100ms linear;display:none;min-width:var(--min-width);min-height:var(--min-height);color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-font-kerning:none;font-kerning:none}ion-ripple-effect{color:var(--ripple-color)}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host(.show-back-button){display:block}:host(.back-button-disabled){cursor:default;opacity:0.5;pointer-events:none}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;opacity:var(--opacity);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}ion-icon{-webkit-padding-start:var(--icon-padding-start);padding-inline-start:var(--icon-padding-start);-webkit-padding-end:var(--icon-padding-end);padding-inline-end:var(--icon-padding-end);padding-top:var(--icon-padding-top);padding-bottom:var(--icon-padding-bottom);-webkit-margin-start:var(--icon-margin-start);margin-inline-start:var(--icon-margin-start);-webkit-margin-end:var(--icon-margin-end);margin-inline-end:var(--icon-margin-end);margin-top:var(--icon-margin-top);margin-bottom:var(--icon-margin-bottom);display:inherit;font-size:var(--icon-font-size);font-weight:var(--icon-font-weight);pointer-events:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-color.ion-focused) .button-native{color:var(--ion-color-base)}@media (any-hover: hover){:host(.ion-color:hover) .button-native{color:var(--ion-color-base)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-hover:transparent;--background-hover-opacity:1;--background-focused:currentColor;--background-focused-opacity:.1;--border-radius:4px;--color:var(--ion-color-primary, #0054e9);--icon-margin-end:1px;--icon-margin-start:-4px;--icon-font-size:1.6em;--min-height:32px;font-size:clamp(17px, 1.0625rem, 21.998px)}.button-native{-webkit-transform:translateZ(0);transform:translateZ(0);overflow:visible;z-index:99}:host(.ion-activated) .button-native{opacity:0.4}@media (any-hover: hover){:host(:hover){opacity:0.6}}', md: ':host{--background:transparent;--color-focused:currentColor;--color-hover:currentColor;--icon-margin-top:0;--icon-margin-bottom:0;--icon-padding-top:0;--icon-padding-end:0;--icon-padding-bottom:0;--icon-padding-start:0;--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--min-width:auto;--min-height:auto;--padding-top:0;--padding-end:0;--padding-bottom:0;--padding-start:0;--opacity:1;--ripple-color:currentColor;--transition:background-color, opacity 100ms linear;display:none;min-width:var(--min-width);min-height:var(--min-height);color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-font-kerning:none;font-kerning:none}ion-ripple-effect{color:var(--ripple-color)}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host(.show-back-button){display:block}:host(.back-button-disabled){cursor:default;opacity:0.5;pointer-events:none}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;opacity:var(--opacity);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}ion-icon{-webkit-padding-start:var(--icon-padding-start);padding-inline-start:var(--icon-padding-start);-webkit-padding-end:var(--icon-padding-end);padding-inline-end:var(--icon-padding-end);padding-top:var(--icon-padding-top);padding-bottom:var(--icon-padding-bottom);-webkit-margin-start:var(--icon-margin-start);margin-inline-start:var(--icon-margin-start);-webkit-margin-end:var(--icon-margin-end);margin-inline-end:var(--icon-margin-end);margin-top:var(--icon-margin-top);margin-bottom:var(--icon-margin-bottom);display:inherit;font-size:var(--icon-font-size);font-weight:var(--icon-font-weight);pointer-events:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-color.ion-focused) .button-native{color:var(--ion-color-base)}@media (any-hover: hover){:host(.ion-color:hover) .button-native{color:var(--ion-color-base)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--border-radius:4px;--background-focused:currentColor;--background-focused-opacity:.12;--background-hover:currentColor;--background-hover-opacity:0.04;--color:currentColor;--icon-margin-end:0;--icon-margin-start:0;--icon-font-size:1.5rem;--icon-font-weight:normal;--min-height:32px;--min-width:44px;--padding-start:12px;--padding-end:12px;font-size:0.875rem;font-weight:500;text-transform:uppercase}:host(.back-button-has-icon-only){--border-radius:50%;min-width:48px;min-height:48px;aspect-ratio:1/1}.button-native{-webkit-box-shadow:none;box-shadow:none}.button-text{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0}ion-icon{line-height:0.67;text-align:start}@media (any-hover: hover){:host(.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}:host(.ion-color.ion-focused) .button-native::after{background:var(--ion-color-base)}' }; } }, [33, "ion-back-button", { color: [513], defaultHref: [1025, "default-href"], disabled: [516], icon: [1], text: [1], type: [1], routerAnimation: [16] }]); var v7 = function() { "undefined" != typeof customElements && ["ion-back-button", "ion-icon", "ion-ripple-effect"].forEach(((t16) => { switch (t16) { case "ion-back-button": customElements.get(Zn(t16)) || customElements.define(Zn(t16), m6); break; case "ion-icon": customElements.get(Zn(t16)) || y4(); break; case "ion-ripple-effect": customElements.get(Zn(t16)) || p7(); } })); }; // node_modules/@ionic/core/components/p-B-hirT0v.js var t10 = () => { let t16; return { lock: () => __async(null, null, function* () { const e16 = t16; let n15; return t16 = new Promise(((t17) => n15 = t17)), void 0 !== e16 && (yield e16), n15; }) }; }; // node_modules/@ionic/core/components/ion-router-outlet.js var b5 = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(), this.__attachShadow(), this.ionNavWillLoad = Jt(this, "ionNavWillLoad", 7), this.ionNavWillChange = Jt(this, "ionNavWillChange", 3), this.ionNavDidChange = Jt(this, "ionNavDidChange", 3), this.lockController = t10(), this.gestureOrAnimationInProgress = false, this.mode = g(this), this.animated = true; } swipeHandlerChanged() { this.gesture && this.gesture.enable(void 0 !== this.swipeHandler); } connectedCallback() { return __async(this, null, function* () { const t16 = () => { this.gestureOrAnimationInProgress = true, this.swipeHandler && this.swipeHandler.onStart(); }; this.gesture = (yield import("./p-Cz5nLPGT-CBYZEIZW.js")).createSwipeBackGesture(this.el, (() => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart()), (() => t16()), ((t17) => { var i16; return null === (i16 = this.ani) || void 0 === i16 ? void 0 : i16.progressStep(t17); }), ((t17, i16, s21) => { if (this.ani) { this.ani.onFinish((() => { this.gestureOrAnimationInProgress = false, this.swipeHandler && this.swipeHandler.onEnd(t17); }), { oneTimeCallback: true }); let e16 = t17 ? -1e-3 : 1e-3; t17 ? e16 += t6([0, 0], [0.32, 0.72], [0, 1], [1, 1], i16)[0] : (this.ani.easing("cubic-bezier(1, 0, 0.68, 0.28)"), e16 += t6([0, 0], [1, 0], [0.68, 0.28], [1, 1], i16)[0]), this.ani.progressEnd(t17 ? 1 : 0, e16, s21); } else this.gestureOrAnimationInProgress = false; })), this.swipeHandlerChanged(); }); } componentWillLoad() { this.ionNavWillLoad.emit(); } disconnectedCallback() { this.gesture && (this.gesture.destroy(), this.gesture = void 0); } commit(t16, i16, s21) { return __async(this, null, function* () { const a16 = yield this.lockController.lock(); let o14 = false; try { o14 = yield this.transition(t16, i16, s21); } catch (t17) { f("[ion-router-outlet] - Exception in commit:", t17); } return a16(), o14; }); } setRouteId(t16, i16, s21, e16) { return __async(this, null, function* () { return { changed: yield this.setRoot(t16, i16, { duration: "root" === s21 ? 0 : void 0, direction: "back" === s21 ? "back" : "forward", animationBuilder: e16 }), element: this.activeEl }; }); } getRouteId() { return __async(this, null, function* () { const t16 = this.activeEl; return t16 ? { id: t16.tagName, element: t16, params: this.activeParams } : void 0; }); } setRoot(t16, i16, s21) { return __async(this, null, function* () { if (this.activeComponent === t16 && _(i16, this.activeParams)) return false; const e16 = this.activeEl, a16 = yield o8(this.delegate, this.el, t16, ["ion-page", "ion-page-invisible"], i16); return this.activeComponent = t16, this.activeEl = a16, this.activeParams = i16, yield this.commit(a16, e16, s21), yield t8(this.delegate, e16), true; }); } transition(_0, _1) { return __async(this, arguments, function* (t16, i16, s21 = {}) { if (i16 === t16) return false; this.ionNavWillChange.emit(); const { el: e16, mode: o14 } = this, n15 = this.animated && n.getBoolean("animated", true), h19 = s21.animationBuilder || this.animation || n.get("navAnimation"); return yield v2(Object.assign(Object.assign({ mode: o14, animated: n15, enteringEl: t16, leavingEl: i16, baseEl: e16, deepWait: t(e16), progressCallback: s21.progressAnimation ? (t17) => { void 0 === t17 || this.gestureOrAnimationInProgress ? this.ani = t17 : (this.gestureOrAnimationInProgress = true, t17.onFinish((() => { this.gestureOrAnimationInProgress = false, this.swipeHandler && this.swipeHandler.onEnd(false); }), { oneTimeCallback: true }), t17.progressEnd(0, 0, 0)); } : void 0 }, s21), { animationBuilder: h19 })), this.ionNavDidChange.emit(), true; }); } render() { return Ct("slot", { key: "386c41745b61daba161cf75063da97fe29ba36cb" }); } get el() { return this; } static get watchers() { return { swipeHandler: [{ swipeHandlerChanged: 0 }] }; } static get style() { return ":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}"; } }, [257, "ion-router-outlet", { mode: [1025], delegate: [16], animated: [4], animation: [16], swipeHandler: [16], commit: [64], setRouteId: [64], getRouteId: [64] }, void 0, { swipeHandler: [{ swipeHandlerChanged: 0 }] }]); var f9 = function() { "undefined" != typeof customElements && ["ion-router-outlet"].forEach(((t16) => { "ion-router-outlet" === t16 && (customElements.get(Zn(t16)) || customElements.define(Zn(t16), b5)); })); }; // node_modules/@ionic/core/components/p-CoA-aqGF.js var e9 = Dn(class extends I { constructor(o14) { super(), false !== o14 && this.__registerHost(), this.__attachShadow(), this.ionBackdropTap = Jt(this, "ionBackdropTap", 7), this.visible = true, this.tappable = true, this.stopPropagation = true; } onMouseDown(o14) { this.emitTap(o14); } emitTap(o14) { this.stopPropagation && (o14.preventDefault(), o14.stopPropagation()), this.tappable && this.ionBackdropTap.emit(); } render() { const o14 = g(this); return Ct(It, { key: "7abaf2c310aa399607451b14063265e8a5846938", "aria-hidden": "true", class: { [o14]: true, "backdrop-hide": !this.visible, "backdrop-no-tappable": !this.tappable } }); } static get style() { return { ios: ":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}", md: ":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}" }; } }, [33, "ion-backdrop", { visible: [4], tappable: [4], stopPropagation: [4, "stop-propagation"] }, [[2, "click", "onMouseDown"]]]); function c11() { "undefined" != typeof customElements && ["ion-backdrop"].forEach(((o14) => { "ion-backdrop" === o14 && (customElements.get(Zn(o14)) || customElements.define(Zn(o14), e9)); })); } // node_modules/@ionic/core/components/p-BVnB3eEn.js var Z3; !(function(t16) { t16.Dark = "DARK", t16.Light = "LIGHT", t16.Default = "DEFAULT"; })(Z3 || (Z3 = {})); var G2 = { getEngine() { const t16 = r3(); if (null == t16 ? void 0 : t16.isPluginAvailable("StatusBar")) return t16.Plugins.StatusBar; }, setStyle(t16) { const i16 = this.getEngine(); i16 && i16.setStyle(t16); }, getStyle: function() { return __async(this, null, function* () { const t16 = this.getEngine(); if (!t16) return Z3.Default; const { style: i16 } = yield t16.getInfo(); return i16; }); } }; var K2 = (t16, i16) => { if (1 === i16) return 0; const o14 = 1 / (1 - i16); return t16 * o14 + -i16 * o14; }; var U2 = () => { !d || d.innerWidth >= 768 || G2.setStyle({ style: Z3.Dark }); }; var q3 = (t16 = Z3.Default) => { !d || d.innerWidth >= 768 || G2.setStyle({ style: t16 }); }; var J2 = (t16, i16) => __async(null, null, function* () { "function" == typeof t16.canDismiss && (yield t16.canDismiss(void 0, K)) && (i16.isRunning() ? i16.onFinish((() => { t16.dismiss(void 0, "handler"); }), { oneTimeCallback: true }) : t16.dismiss(void 0, "handler")); }); var X2 = (t16) => 255275e-8 * 2.71828 ** (-14.9619 * t16) - 1.00255 * 2.71828 ** (-0.0380968 * t16) + 1; var _3 = 0.915; var Q2 = (t16, i16) => b(400, t16 / Math.abs(1.1 * i16), 500); var tt = (t16, i16) => { const o14 = window.innerHeight, e16 = t16.getBoundingClientRect().top, a16 = Math.round(1e3 * (1 - i16 / (o14 - e16))) / 1e3; return Math.max(0, Math.min(1, a16)); }; var it = (t16) => { const { currentBreakpoint: i16, backdropBreakpoint: o14, expandToScroll: e16 } = t16, a16 = void 0 === o14 || o14 < i16, r32 = a16 ? `calc(var(--backdrop-opacity) * ${i16})` : "0", s21 = r("backdropAnimation").fromTo("opacity", 0, r32); return a16 && s21.beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), { wrapperAnimation: r("wrapperAnimation").keyframes([{ offset: 0, opacity: 1, transform: "translateY(100%)" }, { offset: 1, opacity: 1, transform: `translateY(${100 - 100 * i16}%)` }]), backdropAnimation: s21, contentAnimation: e16 ? void 0 : r("contentAnimation").keyframes([{ offset: 0, opacity: 1, maxHeight: 100 * (1 - i16) + "%" }, { offset: 1, opacity: 1, maxHeight: 100 * i16 + "%" }]) }; }; var ot = (t16) => { const { currentBreakpoint: i16, backdropBreakpoint: o14 } = t16, e16 = `calc(var(--backdrop-opacity) * ${K2(i16, o14)})`, a16 = [{ offset: 0, opacity: e16 }, { offset: 1, opacity: 0 }], r32 = [{ offset: 0, opacity: e16 }, { offset: o14, opacity: 0 }, { offset: 1, opacity: 0 }], s21 = r("backdropAnimation").keyframes(0 !== o14 ? r32 : a16); return { wrapperAnimation: r("wrapperAnimation").keyframes([{ offset: 0, opacity: 1, transform: `translateY(${100 - 100 * i16}%)` }, { offset: 1, opacity: 1, transform: "translateY(100%)" }]), backdropAnimation: s21 }; }; var et = (t16, i16) => { const { presentingEl: o14, currentBreakpoint: e16, expandToScroll: a16 } = i16, r32 = c(t16), { wrapperAnimation: s21, backdropAnimation: n15, contentAnimation: d24 } = void 0 !== e16 ? it(i16) : { backdropAnimation: r().fromTo("opacity", 0.01, "var(--backdrop-opacity)").beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), wrapperAnimation: r().fromTo("transform", "translateY(100vh)", "translateY(0vh)"), contentAnimation: void 0 }; n15.addElement(r32.querySelector("ion-backdrop")), s21.addElement(r32.querySelectorAll(".modal-wrapper, .modal-shadow")).beforeStyles({ opacity: 1 }), !a16 && (null == d24 || d24.addElement(t16.querySelector(".ion-page"))); const h19 = r("entering-base").addElement(t16).easing("cubic-bezier(0.32,0.72,0,1)").duration(500).addAnimation([s21]); if (d24 && h19.addAnimation(d24), o14) { const t17 = window.innerWidth < 768, i17 = "ION-MODAL" === o14.tagName && void 0 !== o14.presentingElement, e17 = c(o14), a17 = r().beforeStyles({ transform: "translateY(0)", "transform-origin": "top center", overflow: "hidden" }), r33 = document.body; if (t17) { const t18 = CSS.supports("width", "max(0px, 1px)") ? "max(30px, var(--ion-safe-area-top))" : "30px", e18 = `translateY(${i17 ? "-10px" : t18}) scale(0.915)`; a17.afterStyles({ transform: e18 }).beforeAddWrite((() => r33.style.setProperty("background-color", "black"))).addElement(o14).keyframes([{ offset: 0, filter: "contrast(1)", transform: "translateY(0px) scale(1)", borderRadius: "0px" }, { offset: 1, filter: "contrast(0.85)", transform: e18, borderRadius: "10px 10px 0 0" }]), h19.addAnimation(a17); } else if (h19.addAnimation(n15), i17) { const t18 = `translateY(-10px) scale(${i17 ? _3 : 1})`; a17.afterStyles({ transform: t18 }).addElement(e17.querySelector(".modal-wrapper")).keyframes([{ offset: 0, filter: "contrast(1)", transform: "translateY(0) scale(1)" }, { offset: 1, filter: "contrast(0.85)", transform: t18 }]); const o15 = r().afterStyles({ transform: t18 }).addElement(e17.querySelector(".modal-shadow")).keyframes([{ offset: 0, opacity: "1", transform: "translateY(0) scale(1)" }, { offset: 1, opacity: "0", transform: t18 }]); h19.addAnimation([a17, o15]); } else s21.fromTo("opacity", "0", "1"); } else h19.addAnimation(n15); return h19; }; var at = (t16, i16, o14 = 500) => { const { presentingEl: e16, currentBreakpoint: a16 } = i16, r32 = c(t16), { wrapperAnimation: s21, backdropAnimation: n15 } = void 0 !== a16 ? ot(i16) : { backdropAnimation: r().fromTo("opacity", "var(--backdrop-opacity)", 0), wrapperAnimation: r().fromTo("transform", "translateY(0vh)", "translateY(100vh)") }; n15.addElement(r32.querySelector("ion-backdrop")), s21.addElement(r32.querySelectorAll(".modal-wrapper, .modal-shadow")).beforeStyles({ opacity: 1 }); const d24 = r("leaving-base").addElement(t16).easing("cubic-bezier(0.32,0.72,0,1)").duration(o14).addAnimation(s21); if (e16) { const t17 = window.innerWidth < 768, i17 = "ION-MODAL" === e16.tagName && void 0 !== e16.presentingElement, o15 = c(e16), a17 = r().beforeClearStyles(["transform"]).afterClearStyles(["transform"]).onFinish(((t18) => { 1 === t18 && (e16.style.setProperty("overflow", ""), Array.from(r33.querySelectorAll("ion-modal:not(.overlay-hidden)")).filter(((t19) => void 0 !== t19.presentingElement)).length <= 1 && r33.style.setProperty("background-color", "")); })), r33 = document.body; if (t17) { const t18 = CSS.supports("width", "max(0px, 1px)") ? "max(30px, var(--ion-safe-area-top))" : "30px", o16 = `translateY(${i17 ? "-10px" : t18}) scale(0.915)`; a17.addElement(e16).keyframes([{ offset: 0, filter: "contrast(0.85)", transform: o16, borderRadius: "10px 10px 0 0" }, { offset: 1, filter: "contrast(1)", transform: "translateY(0px) scale(1)", borderRadius: "0px" }]), d24.addAnimation(a17); } else if (d24.addAnimation(n15), i17) { const t18 = `translateY(-10px) scale(${i17 ? _3 : 1})`; a17.addElement(o15.querySelector(".modal-wrapper")).afterStyles({ transform: "translate3d(0, 0, 0)" }).keyframes([{ offset: 0, filter: "contrast(0.85)", transform: t18 }, { offset: 1, filter: "contrast(1)", transform: "translateY(0) scale(1)" }]); const e17 = r().addElement(o15.querySelector(".modal-shadow")).afterStyles({ transform: "translateY(0) scale(1)" }).keyframes([{ offset: 0, opacity: "0", transform: t18 }, { offset: 1, opacity: "1", transform: "translateY(0) scale(1)" }]); d24.addAnimation([a17, e17]); } else s21.fromTo("opacity", "1", "0"); } else d24.addAnimation(n15); return d24; }; var rt = (t16, i16) => { const { currentBreakpoint: o14, expandToScroll: e16 } = i16, a16 = c(t16), { wrapperAnimation: r32, backdropAnimation: s21, contentAnimation: n15 } = void 0 !== o14 ? it(i16) : { backdropAnimation: r().fromTo("opacity", 0.01, "var(--backdrop-opacity)").beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), wrapperAnimation: r().keyframes([{ offset: 0, opacity: 0.01, transform: "translateY(40px)" }, { offset: 1, opacity: 1, transform: "translateY(0px)" }]), contentAnimation: void 0 }; s21.addElement(a16.querySelector("ion-backdrop")), r32.addElement(a16.querySelector(".modal-wrapper")), !e16 && (null == n15 || n15.addElement(t16.querySelector(".ion-page"))); const d24 = r().addElement(t16).easing("cubic-bezier(0.36,0.66,0.04,1)").duration(280).addAnimation([s21, r32]); return n15 && d24.addAnimation(n15), d24; }; var st = (t16, i16) => { const { currentBreakpoint: o14 } = i16, e16 = c(t16), { wrapperAnimation: a16, backdropAnimation: r32 } = void 0 !== o14 ? ot(i16) : { backdropAnimation: r().fromTo("opacity", "var(--backdrop-opacity)", 0), wrapperAnimation: r().keyframes([{ offset: 0, opacity: 0.99, transform: "translateY(0px)" }, { offset: 1, opacity: 0, transform: "translateY(40px)" }]) }; return r32.addElement(e16.querySelector("ion-backdrop")), a16.addElement(e16.querySelector(".modal-wrapper")), r().easing("cubic-bezier(0.47,0,0.745,0.715)").duration(200).addAnimation([r32, a16]); }; var nt = null; var dt = false; var ht = (t16, i16) => { t16.style.setProperty("--ion-safe-area-top", i16.top), t16.style.setProperty("--ion-safe-area-bottom", i16.bottom), t16.style.setProperty("--ion-safe-area-left", i16.left), t16.style.setProperty("--ion-safe-area-right", i16.right); }; var lt = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(), this.__attachShadow(), this.didPresent = Jt(this, "ionModalDidPresent", 7), this.willPresent = Jt(this, "ionModalWillPresent", 7), this.willDismiss = Jt(this, "ionModalWillDismiss", 7), this.didDismiss = Jt(this, "ionModalDidDismiss", 7), this.ionBreakpointDidChange = Jt(this, "ionBreakpointDidChange", 7), this.didPresentShorthand = Jt(this, "didPresent", 7), this.willPresentShorthand = Jt(this, "willPresent", 7), this.willDismissShorthand = Jt(this, "willDismiss", 7), this.didDismissShorthand = Jt(this, "didDismiss", 7), this.ionMount = Jt(this, "ionMount", 7), this.ionDragStart = Jt(this, "ionDragStart", 7), this.ionDragMove = Jt(this, "ionDragMove", 7), this.ionDragEnd = Jt(this, "ionDragEnd", 7), this.lockController = t10(), this.triggerController = Y(), this.coreDelegate = i8(), this.isSheetModal = false, this.inheritedAttributes = {}, this.inline = false, this.gestureAnimationDismissing = false, this.presented = false, this.hasController = false, this.keyboardClose = true, this.expandToScroll = true, this.backdropBreakpoint = 0, this.handleBehavior = "none", this.backdropDismiss = true, this.showBackdrop = true, this.animated = true, this.isOpen = false, this.keepContentsMounted = false, this.focusTrap = true, this.canDismiss = true, this.onHandleClick = () => { const { sheetTransition: t17, handleBehavior: i16 } = this; "cycle" === i16 && void 0 === t17 && this.moveToNextBreakpoint(); }, this.onBackdropTap = () => { const { sheetTransition: t17 } = this; void 0 === t17 && this.dismiss(void 0, H); }, this.onLifecycle = (t17) => { const i16 = this.usersElement, o14 = pt[t17.type]; if (i16 && o14) { const e16 = new CustomEvent(o14, { bubbles: false, cancelable: false, detail: t17.detail }); i16.dispatchEvent(e16); } }, this.onModalFocus = (t17) => { const { dragHandleEl: i16, el: o14 } = this; t17.target === o14 && i16 && -1 !== i16.tabIndex && i16.focus(); }, this.onSlotChange = ({ target: t17 }) => { t17.assignedElements().forEach(((t18) => { t18.querySelectorAll("ion-modal").forEach(((t19) => { null === t19.getAttribute("data-parent-ion-modal") && t19.setAttribute("data-parent-ion-modal", this.el.id); })); })); }; } onIsOpenChange(t16, i16) { true === t16 && false === i16 ? this.present() : false === t16 && true === i16 && this.dismiss(); } triggerChanged() { const { trigger: t16, el: i16, triggerController: o14 } = this; t16 && o14.addClickListener(i16, t16); } onWindowResize() { this.presented && (clearTimeout(this.resizeTimeout), this.resizeTimeout = setTimeout((() => { const t16 = this.getSafeAreaContext(); !t16.isCardModal || this.enterAnimation || this.leaveAnimation || this.handleViewTransition(), t16.isSheetModal && this.updateSheetOffsetTop(), t16.isSheetModal || t16.isCardModal || (this.updateSafeAreaOverrides(), this.wrapperEl && (this.wrapperEl.style.removeProperty("height"), this.wrapperEl.style.removeProperty("padding-bottom")), this.applyFullscreenSafeArea()); }), 50)); } breakpointsChanged(t16) { void 0 !== t16 && (this.sortedBreakpoints = t16.sort(((t17, i16) => t17 - i16))); } connectedCallback() { const { el: t16 } = this; I2(t16), this.triggerChanged(); } disconnectedCallback() { this.triggerController.removeClickListener(), this.cleanupViewTransitionListener(), this.cleanupParentRemovalObserver(), this.cleanupSafeAreaOverrides(); } componentWillLoad() { var t16; const { breakpoints: i16, initialBreakpoint: o14, el: a16, htmlAttributes: r32 } = this, s21 = this.isSheetModal = void 0 !== i16 && void 0 !== o14, n15 = ["aria-label", "role"]; this.inheritedAttributes = n2(a16, n15), a16.parentNode && (this.cachedOriginalParent = a16.parentNode), void 0 !== r32 && n15.forEach(((t17) => { r32[t17] && (this.inheritedAttributes = Object.assign(Object.assign({}, this.inheritedAttributes), { [t17]: r32[t17] }), delete r32[t17]); })), s21 && (this.currentBreakpoint = this.initialBreakpoint), void 0 === i16 || void 0 === o14 || i16.includes(o14) || u("[ion-modal] - Your breakpoints array must include the initialBreakpoint value."), (null === (t16 = this.htmlAttributes) || void 0 === t16 ? void 0 : t16.id) || N(this.el); } componentDidLoad() { true === this.isOpen && d2((() => this.present())), this.breakpointsChanged(this.breakpoints), this.triggerChanged(); } getDelegate(t16 = false) { if (this.workingDelegate && !t16) return { delegate: this.workingDelegate, inline: this.inline }; const i16 = this.inline = null !== this.el.parentNode && !this.hasController; return { inline: i16, delegate: this.workingDelegate = i16 ? this.delegate || this.coreDelegate : this.delegate }; } checkCanDismiss(t16, i16) { return __async(this, null, function* () { const { canDismiss: o14 } = this; return "function" == typeof o14 ? o14(t16, i16) : o14; }); } present() { return __async(this, null, function* () { const t16 = yield this.lockController.lock(); if (this.presented) return void t16(); const { presentingElement: i16, el: o14 } = this; this.currentBreakpoint = this.initialBreakpoint; const { inline: e16, delegate: r32 } = this.getDelegate(true); this.ionMount.emit(), this.usersElement = yield o8(r32, o14, this.component, ["ion-page"], this.componentProps, e16), t(o14) ? yield B(this.usersElement) : this.keepContentsMounted || (yield L()), P((() => this.el.classList.add("show-modal"))), this.isSheetModal = void 0 !== this.breakpoints && void 0 !== this.initialBreakpoint, this.setInitialSafeAreaOverrides(); const s21 = void 0 !== i16; s21 && "ios" === g(this) && (this.statusBarStyle = yield G2.getStyle(), U2()), yield $(this, "modalEnter", et, rt, { presentingEl: i16, currentBreakpoint: this.initialBreakpoint, backdropBreakpoint: this.backdropBreakpoint, expandToScroll: this.expandToScroll }), this.updateSafeAreaOverrides(), this.applyFullscreenSafeArea(), "undefined" != typeof window && (this.keyboardOpenCallback = () => { this.gesture && (this.gesture.enable(false), d2((() => { this.gesture && this.gesture.enable(true); }))); }, window.addEventListener(t5, this.keyboardOpenCallback)), this.isSheetModal ? this.initSheetGesture() : s21 && this.initSwipeToClose(), this.initViewTransitionListener(), this.initParentRemovalObserver(), t16(); }); } initSwipeToClose() { var t16; if ("ios" !== g(this)) return; const { el: i16 } = this, o14 = this.leaveAnimation || n.get("modalLeave", at), e16 = this.animation = o14(i16, { presentingEl: this.presentingElement, expandToScroll: this.expandToScroll }); if (!n3(i16)) return void p2(i16); const a16 = null !== (t16 = this.statusBarStyle) && void 0 !== t16 ? t16 : Z3.Default; this.gesture = ((t17, i17, o15, e17, a17, r32, s21) => { const n15 = 0.5, d24 = t17.offsetHeight; let m26 = false, f27 = false, u19 = null, b20 = null, v18 = true, g20 = 0; const k11 = s4({ el: t17, gestureName: "modalSwipeToClose", gesturePriority: U, direction: "y", threshold: 10, canStart: (t18) => { const i18 = t18.event.target; if (null === i18 || !i18.closest) return true; if (u19 = f3(i18), u19) { if (e3(u19)) { const t19 = c(u19); b20 = t19.querySelector(".inner-scroll"); } else b20 = u19; return !u19.querySelector("ion-refresher") && 0 === b20.scrollTop; } return null === i18.closest("ion-footer"); }, onStart: (o16) => { const { deltaY: e18 } = o16; v18 = !u19 || !e3(u19) || u19.scrollY, f27 = void 0 !== t17.canDismiss && true !== t17.canDismiss, e18 > 0 && u19 && h2(u19), i17.progressStart(true, m26 ? 1 : 0), a17(); }, onMove: (e18) => { const { deltaY: a18 } = e18; a18 > 0 && u19 && h2(u19); const s22 = e18.deltaY / d24, h19 = s22 >= 0 && f27, l28 = h19 ? 0.2 : 0.9999, c36 = h19 ? X2(s22 / l28) : s22, m27 = b(1e-4, c36, l28); i17.progressStep(m27), m27 >= n15 && g20 < n15 ? q3(o15) : m27 < n15 && g20 >= n15 && U2(), g20 = m27; const b21 = { currentY: e18.currentY, deltaY: e18.deltaY, velocityY: e18.velocityY, progress: tt(t17, e18.deltaY) }; r32(b21); }, onEnd: (o16) => { const a18 = o16.velocityY, r33 = o16.deltaY / d24, h19 = r33 >= 0 && f27, l28 = h19 ? 0.2 : 0.9999, p33 = h19 ? X2(r33 / l28) : r33, b21 = b(1e-4, p33, l28), w11 = !h19 && (o16.deltaY + 1e3 * a18) / d24 >= n15; let g21 = w11 ? -1e-3 : 1e-3; w11 ? (i17.easing("cubic-bezier(0.32, 0.72, 0, 1)"), g21 += t6([0, 0], [0.32, 0.72], [0, 1], [1, 1], b21)[0]) : (i17.easing("cubic-bezier(1, 0, 0.68, 0.28)"), g21 += t6([0, 0], [1, 0], [0.68, 0.28], [1, 1], b21)[0]); const y12 = Q2(w11 ? r33 * d24 : (1 - b21) * d24, a18); m26 = w11, k11.enable(false), u19 && l4(u19, v18), i17.onFinish((() => { w11 || k11.enable(true); })).progressEnd(w11 ? 1 : 0, g21, y12), h19 && b21 > l28 / 4 ? J2(t17, i17) : w11 && e17(); const A6 = { currentY: o16.currentY, deltaY: o16.deltaY, velocityY: o16.velocityY, progress: tt(t17, o16.deltaY) }; s21(A6); } }); return k11; })(i16, e16, a16, (() => this.cardOnDismiss()), (() => this.onDragStart()), ((t17) => this.onDragMove(t17)), ((t17) => this.onDragEnd(t17))), this.gesture.enable(true); } initSheetGesture() { const { wrapperEl: t16, initialBreakpoint: i16, backdropBreakpoint: o14 } = this; if (!t16 || void 0 === i16) return; const e16 = this.enterAnimation || n.get("modalEnter", et), a16 = this.animation = e16(this.el, { presentingEl: this.presentingElement, currentBreakpoint: i16, backdropBreakpoint: o14, expandToScroll: this.expandToScroll }); a16.progressStart(true, 1); const { gesture: s21, moveSheetToBreakpoint: n15 } = ((t17, i17, o15, e17, a17, r32, s22 = [], n16, d24, p33, c36, m26, f27, u19) => { const b20 = { WRAPPER_KEYFRAMES: [{ offset: 0, transform: "translateY(0%)" }, { offset: 1, transform: "translateY(100%)" }], BACKDROP_KEYFRAMES: 0 !== a17 ? [{ offset: 0, opacity: "var(--backdrop-opacity)" }, { offset: 1 - a17, opacity: 0 }, { offset: 1, opacity: 0 }] : [{ offset: 0, opacity: "var(--backdrop-opacity)" }, { offset: 1, opacity: 0.01 }], CONTENT_KEYFRAMES: [{ offset: 0, maxHeight: "100%" }, { offset: 1, maxHeight: "0%" }] }, v18 = t17.querySelector("ion-content"), k11 = o15.clientHeight; let y12 = e17, A6 = 0, Y5 = false, D6 = null, O9 = null, E10 = null, S6 = null; const M6 = s22[s22.length - 1], T7 = s22[0], B11 = r32.childAnimations.find(((t18) => "wrapperAnimation" === t18.id)), P6 = r32.childAnimations.find(((t18) => "backdropAnimation" === t18.id)), I7 = r32.childAnimations.find(((t18) => "contentAnimation" === t18.id)), N4 = () => { false !== t17.focusTrap && false !== t17.showBackdrop && (t17.style.setProperty("pointer-events", "auto"), i17.style.setProperty("pointer-events", "auto"), t17.classList.remove(nn)); }, R4 = () => { t17.style.setProperty("pointer-events", "none"), i17.style.setProperty("pointer-events", "none"), t17.classList.add(nn); }, j8 = (i18) => { if (!O9 && (O9 = Array.from(t17.querySelectorAll("ion-footer")), !O9.length)) return; const o16 = t17.querySelector(".ion-page"); if (S6 = i18, "stationary" === i18) O9.forEach(((t18) => { t18.classList.remove("modal-footer-moving"), t18.style.removeProperty("position"), t18.style.removeProperty("width"), t18.style.removeProperty("height"), t18.style.removeProperty("top"), t18.style.removeProperty("left"), null == o16 || o16.style.removeProperty("padding-bottom"), null == o16 || o16.appendChild(t18); })); else { let i19 = 0; O9.forEach(((o17, e18) => { const a18 = o17.getBoundingClientRect(), r33 = document.body.getBoundingClientRect(); i19 += o17.clientHeight; const s23 = a18.top - r33.top, n17 = a18.left - r33.left; if (o17.style.setProperty("--pinned-width", `${o17.clientWidth}px`), o17.style.setProperty("--pinned-height", `${o17.clientHeight}px`), o17.style.setProperty("--pinned-top", `${s23}px`), o17.style.setProperty("--pinned-left", `${n17}px`), 0 === e18) { E10 = s23; const i20 = t17.querySelector("ion-header"); i20 && (E10 -= i20.clientHeight); } })), O9.forEach(((t18) => { null == o16 || o16.style.setProperty("padding-bottom", `${i19}px`), t18.classList.add("modal-footer-moving"), t18.style.setProperty("position", "absolute"), t18.style.setProperty("width", "var(--pinned-width)"), t18.style.setProperty("height", "var(--pinned-height)"), t18.style.setProperty("top", "var(--pinned-top)"), t18.style.setProperty("left", "var(--pinned-left)"), document.body.appendChild(t18); })); } }; B11 && P6 && (B11.keyframes([...b20.WRAPPER_KEYFRAMES]), P6.keyframes([...b20.BACKDROP_KEYFRAMES]), null == I7 || I7.keyframes([...b20.CONTENT_KEYFRAMES]), r32.progressStart(true, 1 - y12), y12 > a17 && false !== t17.focusTrap && false !== t17.showBackdrop ? N4() : R4()), v18 && y12 !== M6 && n16 && (v18.scrollY = false); const $4 = (i18) => { const { breakpoint: o16, canDismiss: e18, breakpointOffset: d25, animated: h19 } = i18, l28 = e18 && 0 === o16, m27 = l28 ? y12 : o16, f28 = 0 !== m27; return y12 = 0, B11 && P6 && (B11.keyframes([{ offset: 0, transform: `translateY(${100 * d25}%)` }, { offset: 1, transform: `translateY(${100 * (1 - m27)}%)` }]), P6.keyframes([{ offset: 0, opacity: `calc(var(--backdrop-opacity) * ${K2(1 - d25, a17)})` }, { offset: 1, opacity: `calc(var(--backdrop-opacity) * ${K2(m27, a17)})` }]), I7 && I7.keyframes([{ offset: 0, maxHeight: 100 * (1 - d25) + "%" }, { offset: 1, maxHeight: 100 * m27 + "%" }]), r32.progressStep(0)), H7.enable(false), l28 ? J2(t17, r32) : f28 || p33(), !v18 || m27 !== s22[s22.length - 1] && n16 || (v18.scrollY = true), n16 || 0 !== m27 || j8("stationary"), new Promise(((i19) => { r32.onFinish((() => { f28 ? (n16 || j8("stationary"), B11 && P6 ? d2((() => { B11.keyframes([...b20.WRAPPER_KEYFRAMES]), P6.keyframes([...b20.BACKDROP_KEYFRAMES]), null == I7 || I7.keyframes([...b20.CONTENT_KEYFRAMES]), r32.progressStart(true, 1 - m27), y12 = m27, c36(y12), y12 > a17 && false !== t17.focusTrap && false !== t17.showBackdrop ? N4() : R4(), H7.enable(true), i19(); })) : (H7.enable(true), i19())) : i19(); }), { oneTimeCallback: true }).progressEnd(1, 0, h19 ? 500 : 0); })); }, L8 = (t18) => { const i18 = o15.getBoundingClientRect().top + t18, e18 = z11(i18); return s22.reduce(((t19, i19) => Math.abs(i19 - e18) < Math.abs(t19 - e18) ? i19 : t19)); }, z11 = (t18) => { const i18 = s22[s22.length - 1], o16 = W7(s22[0]), e18 = W7(i18), a18 = Math.round((o16 - t18) / (o16 - e18) * 1e3) / 1e3; return Math.max(0, Math.min(1, a18)); }, W7 = (i18) => { const o16 = t17.getBoundingClientRect(); return window.innerHeight - o16.height * i18; }, H7 = s4({ el: o15, gestureName: "modalSheet", gesturePriority: 40, direction: "y", threshold: 10, canStart: (t18) => { const i18 = f3(t18.event.target); if (y12 = d24(), !n16 && i18) return 0 === (e3(i18) ? c(i18).querySelector(".inner-scroll") : i18).scrollTop; if (1 === y12 && i18) { const t19 = e3(i18) ? c(i18).querySelector(".inner-scroll") : i18; return !i18.querySelector("ion-refresher") && 0 === t19.scrollTop; } return true; }, onStart: (i18) => { if (Y5 = void 0 !== t17.canDismiss && true !== t17.canDismiss && 0 === T7, !n16) { const t18 = f3(i18.event.target); D6 = t18 && e3(t18) ? c(t18).querySelector(".inner-scroll") : t18; } n16 || j8("moving"), i18.deltaY > 0 && v18 && (v18.scrollY = false), d2((() => { t17.focus(); })), r32.progressStart(true, 1 - y12), m26(); }, onMove: (t18) => { if (n16 || null === E10 || null === S6 || (t18.currentY >= E10 && "moving" === S6 ? j8("stationary") : t18.currentY < E10 && "stationary" === S6 && j8("moving")), !n16 && t18.deltaY <= 0 && D6) return; t18.deltaY > 0 && v18 && (v18.scrollY = false); const i18 = s22.length > 1 ? 1 - s22[1] : void 0, o16 = 1 - y12 + t18.deltaY / k11, e18 = void 0 !== i18 && o16 >= i18 && Y5, a18 = e18 ? 0.95 : 0.9999, d25 = e18 && void 0 !== i18 ? i18 + X2((o16 - i18) / (a18 - i18)) : o16; A6 = b(1e-4, d25, a18), r32.progressStep(A6); const h19 = L8(t18.deltaY), l28 = { currentY: t18.currentY, deltaY: t18.deltaY, velocityY: t18.velocityY, progress: z11(t18.currentY), snapBreakpoint: h19 }; f27(l28); }, onEnd: (t18) => { const i18 = L8(t18.deltaY), o16 = { currentY: t18.currentY, deltaY: t18.deltaY, velocityY: t18.velocityY, progress: z11(t18.currentY), snapBreakpoint: i18 }; if (!n16 && t18.deltaY <= 0 && D6 && D6.scrollTop > 0) return j8("stationary"), void u19(o16); $4({ breakpoint: i18, breakpointOffset: A6, canDismiss: Y5, animated: true }), u19(o16); } }); return { gesture: H7, moveSheetToBreakpoint: $4 }; })(this.el, this.backdropEl, t16, i16, o14, a16, this.sortedBreakpoints, this.expandToScroll, (() => { var t17; return null !== (t17 = this.currentBreakpoint) && void 0 !== t17 ? t17 : 0; }), (() => this.sheetOnDismiss()), ((t17) => { this.currentBreakpoint !== t17 && (this.currentBreakpoint = t17, this.ionBreakpointDidChange.emit({ breakpoint: t17 })); }), (() => this.onDragStart()), ((t17) => this.onDragMove(t17)), ((t17) => this.onDragEnd(t17))); this.gesture = s21, this.moveSheetToBreakpoint = n15, this.gesture.enable(true), (false === this.showBackdrop || false === this.focusTrap || o14 > 0) && this.setupChildRoutePassthrough(); } setupChildRoutePassthrough() { var t16; this.cachedPageParent = this.getOriginalPageParent(); const o14 = this.cachedPageParent; if (!o14 || "ION-APP" === o14.tagName) return; const e16 = Array.from(o14.children).some(((t17) => { var o15; return !(t17 === this.el || t17 instanceof I && "none" === window.getComputedStyle(t17).display || "TEMPLATE" === t17.tagName || "SLOT" === t17.tagName || t17.nodeType === Node.TEXT_NODE && !(null === (o15 = t17.textContent) || void 0 === o15 ? void 0 : o15.trim())); })); if (e16) return; o14.classList.add("ion-page-overlay-passthrough"); const a16 = o14.parentElement; "ION-ROUTER-OUTLET" === (null == a16 ? void 0 : a16.tagName) && "ION-APP" !== (null === (t16 = a16.parentElement) || void 0 === t16 ? void 0 : t16.tagName) && (a16.style.setProperty("pointer-events", "none"), a16.setAttribute("data-overlay-passthrough", "true")); } getOriginalPageParent() { if (!this.cachedOriginalParent) return null; let t16 = this.cachedOriginalParent; for (; t16 && !t16.classList.contains("ion-page"); ) t16 = t16.parentElement; return t16; } cleanupChildRoutePassthrough() { const t16 = this.cachedPageParent; if (!t16) return; t16.classList.remove("ion-page-overlay-passthrough"); const i16 = t16.parentElement; (null == i16 ? void 0 : i16.hasAttribute("data-overlay-passthrough")) && (i16.style.removeProperty("pointer-events"), i16.removeAttribute("data-overlay-passthrough")), this.cachedPageParent = void 0; } sheetOnDismiss() { this.gestureAnimationDismissing = true, this.animation.onFinish((() => __async(this, null, function* () { this.currentBreakpoint = 0, this.ionBreakpointDidChange.emit({ breakpoint: this.currentBreakpoint }), yield this.dismiss(void 0, K), this.gestureAnimationDismissing = false; }))); } cardOnDismiss() { this.gestureAnimationDismissing = true, q3(this.statusBarStyle), this.animation.onFinish((() => __async(this, null, function* () { yield this.dismiss(void 0, K), this.gestureAnimationDismissing = false; }))); } dismiss(t16, i16) { return __async(this, null, function* () { var o14; if (this.gestureAnimationDismissing && i16 !== K) return false; clearTimeout(this.resizeTimeout), this.resizeTimeout = void 0; const e16 = yield this.lockController.lock(); if (yield this.dismissNestedModals(), "handler" !== i16 && !(yield this.checkCanDismiss(t16, i16))) return e16(), false; const { presentingElement: r32 } = this; void 0 !== r32 && "ios" === g(this) && q3(this.statusBarStyle), "undefined" != typeof window && this.keyboardOpenCallback && (window.removeEventListener(t5, this.keyboardOpenCallback), this.keyboardOpenCallback = void 0); const s21 = yield J(this, t16, i16, "modalLeave", at, st, { presentingEl: r32, currentBreakpoint: null !== (o14 = this.currentBreakpoint) && void 0 !== o14 ? o14 : this.initialBreakpoint, backdropBreakpoint: this.backdropBreakpoint, expandToScroll: this.expandToScroll }); if (s21) { const { delegate: t17 } = this.getDelegate(); yield t8(t17, this.usersElement), P((() => this.el.classList.remove("show-modal"))), this.animation && this.animation.destroy(), this.gesture && this.gesture.destroy(), this.cleanupViewTransitionListener(), this.cleanupParentRemovalObserver(), this.cleanupSafeAreaOverrides(), this.cleanupChildRoutePassthrough(); } return this.currentBreakpoint = void 0, this.animation = void 0, e16(), s21; }); } onDidDismiss() { return q2(this.el, "ionModalDidDismiss"); } onWillDismiss() { return q2(this.el, "ionModalWillDismiss"); } setCurrentBreakpoint(t16) { return __async(this, null, function* () { if (!this.isSheetModal) return void u("[ion-modal] - setCurrentBreakpoint is only supported on sheet modals."); if (!this.breakpoints.includes(t16)) return void u(`[ion-modal] - Attempted to set invalid breakpoint value ${t16}. Please double check that the breakpoint value is part of your defined breakpoints.`); const { currentBreakpoint: i16, moveSheetToBreakpoint: o14, canDismiss: a16, breakpoints: r32, animated: s21 } = this; i16 !== t16 && o14 && (this.sheetTransition = o14({ breakpoint: t16, breakpointOffset: 1 - i16, canDismiss: void 0 !== a16 && true !== a16 && 0 === r32[0], animated: s21 }), yield this.sheetTransition, this.sheetTransition = void 0); }); } getCurrentBreakpoint() { return __async(this, null, function* () { return this.currentBreakpoint; }); } moveToNextBreakpoint() { return __async(this, null, function* () { const { breakpoints: t16, currentBreakpoint: i16 } = this; if (!t16 || null == i16) return false; const o14 = t16.filter(((t17) => 0 !== t17)), e16 = o14.indexOf(i16), a16 = o14[(e16 + 1) % o14.length]; return yield this.setCurrentBreakpoint(a16), true; }); } initViewTransitionListener() { "ios" !== g(this) || !this.presentingElement || this.enterAnimation || this.leaveAnimation || (this.currentViewIsPortrait = window.innerWidth < 768); } handleViewTransition() { if (!this.presented) return; const t16 = window.innerWidth < 768; if (this.currentViewIsPortrait === t16) return; this.viewTransitionAnimation && (this.viewTransitionAnimation.destroy(), this.viewTransitionAnimation = void 0); const { presentingElement: i16 } = this; if (!i16) return; let o14; o14 = this.currentViewIsPortrait && !t16 ? ((t17, i17, o15 = 300) => { const { presentingEl: e16 } = i17; if (!e16) return r("portrait-to-landscape-transition"); const a16 = "ION-MODAL" === e16.tagName && void 0 !== e16.presentingElement, r32 = c(e16), s21 = document.body, n15 = r("portrait-to-landscape-transition").addElement(t17).easing("cubic-bezier(0.32,0.72,0,1)").duration(o15), d24 = r().beforeStyles({ transform: "translateY(0)", "transform-origin": "top center", overflow: "hidden" }); if (a16) { const t18 = "translateY(-10px) scale(0.915)", i18 = "translateY(0px) scale(1)"; d24.addElement(e16).afterStyles({ transform: i18 }).fromTo("transform", t18, i18).fromTo("filter", "contrast(0.85)", "contrast(1)"); const o16 = r().addElement(r32.querySelector(".modal-shadow")).afterStyles({ transform: i18, opacity: "0" }).fromTo("transform", t18, i18); n15.addAnimation([d24, o16]); } else { const i18 = c(t17), o16 = r().addElement(i18.querySelectorAll(".modal-wrapper, .modal-shadow")).fromTo("opacity", "1", "1"), a17 = r().addElement(i18.querySelector("ion-backdrop")).fromTo("opacity", "var(--backdrop-opacity)", "var(--backdrop-opacity)"), r33 = `translateY(${CSS.supports("width", "max(0px, 1px)") ? "max(30px, var(--ion-safe-area-top))" : "30px"}) scale(0.915)`; d24.addElement(e16).afterStyles({ transform: "translateY(0px) scale(1)", "border-radius": "0px" }).beforeAddWrite((() => s21.style.setProperty("background-color", ""))).fromTo("transform", r33, "translateY(0px) scale(1)").fromTo("filter", "contrast(0.85)", "contrast(1)").fromTo("border-radius", "10px 10px 0 0", "0px"), n15.addAnimation([d24, o16, a17]); } return n15; })(this.el, { presentingEl: i16 }) : ((t17, i17, o15 = 300) => { const { presentingEl: e16 } = i17; if (!e16) return r("landscape-to-portrait-transition"); const a16 = "ION-MODAL" === e16.tagName && void 0 !== e16.presentingElement, r32 = c(e16), s21 = document.body, n15 = r("landscape-to-portrait-transition").addElement(t17).easing("cubic-bezier(0.32,0.72,0,1)").duration(o15), d24 = r().beforeStyles({ transform: "translateY(0)", "transform-origin": "top center", overflow: "hidden" }); if (a16) { const t18 = "translateY(-10px) scale(0.915)", i18 = "translateY(0) scale(1)"; d24.addElement(e16).afterStyles({ transform: i18 }).fromTo("transform", t18, i18); const o16 = r().addElement(r32.querySelector(".modal-shadow")).afterStyles({ transform: i18, opacity: "0" }).fromTo("transform", t18, i18); n15.addAnimation([d24, o16]); } else { const i18 = c(t17), o16 = r().addElement(i18.querySelectorAll(".modal-wrapper, .modal-shadow")).fromTo("opacity", "1", "1"), a17 = r().addElement(i18.querySelector("ion-backdrop")).fromTo("opacity", "var(--backdrop-opacity)", "var(--backdrop-opacity)"), r33 = `translateY(${CSS.supports("width", "max(0px, 1px)") ? "max(30px, var(--ion-safe-area-top))" : "30px"}) scale(0.915)`; d24.addElement(e16).afterStyles({ transform: r33 }).beforeAddWrite((() => s21.style.setProperty("background-color", "black"))).keyframes([{ offset: 0, transform: "translateY(0px) scale(1)", filter: "contrast(1)", borderRadius: "0px" }, { offset: 0.2, transform: "translateY(0px) scale(1)", filter: "contrast(1)", borderRadius: "10px 10px 0 0" }, { offset: 1, transform: r33, filter: "contrast(0.85)", borderRadius: "10px 10px 0 0" }]), n15.addAnimation([d24, o16, a17]); } return n15; })(this.el, { presentingEl: i16 }), this.currentViewIsPortrait = t16, this.viewTransitionAnimation = o14, o14.play().then((() => { this.viewTransitionAnimation = void 0, d2((() => this.updateSafeAreaOverrides())), this.reinitSwipeToClose(); })); } cleanupViewTransitionListener() { this.resizeTimeout && (clearTimeout(this.resizeTimeout), this.resizeTimeout = void 0), this.viewTransitionAnimation && (this.viewTransitionAnimation.destroy(), this.viewTransitionAnimation = void 0); } reinitSwipeToClose() { "ios" === g(this) && this.presentingElement && (this.gesture && (this.gesture.destroy(), this.gesture = void 0), this.animation && (this.animation.progressEnd(0, 0, 0), this.animation.destroy(), this.animation = void 0), d2((() => { this.ensureCorrectModalPosition(), this.initSwipeToClose(); }))); } ensureCorrectModalPosition() { const { el: t16, presentingElement: i16 } = this, o14 = c(t16).querySelector(".modal-wrapper"); if (o14 && (o14.style.transform = "translateY(0vh)", o14.style.opacity = "1"), "ION-MODAL" === (null == i16 ? void 0 : i16.tagName)) if (window.innerWidth < 768) { const t17 = CSS.supports("width", "max(0px, 1px)") ? "max(30px, var(--ion-safe-area-top))" : "30px"; i16.style.transform = `translateY(${t17}) scale(0.915)`; } else i16.style.transform = "translateY(0px) scale(1)"; } dismissNestedModals() { return __async(this, null, function* () { const t16 = document.querySelectorAll(`ion-modal[data-parent-ion-modal="${this.el.id}"]`); null == t16 || t16.forEach(((t17) => __async(this, null, function* () { yield t17.dismiss(void 0, "parent-dismissed"); }))); }); } initParentRemovalObserver() { "undefined" != typeof MutationObserver && "undefined" != typeof window && this.cachedOriginalParent && this.cachedOriginalParent.nodeType !== Node.DOCUMENT_NODE && this.cachedOriginalParent.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && (this.hasController || this.cachedOriginalParent === document.body || "ION-APP" === this.cachedOriginalParent.tagName || (this.parentRemovalObserver = new MutationObserver(((t16) => { t16.forEach(((t17) => { "childList" === t17.type && t17.removedNodes.length > 0 && (Array.from(t17.removedNodes).some(((t18) => { var i16, o14; const e16 = t18 === this.cachedOriginalParent, a16 = !!this.cachedOriginalParent && (null === (o14 = (i16 = t18).contains) || void 0 === o14 ? void 0 : o14.call(i16, this.cachedOriginalParent)); return e16 || a16; })) || this.cachedOriginalParent && !this.cachedOriginalParent.isConnected) && (this.dismiss(void 0, "parent-removed"), this.cachedOriginalParent = void 0); })); })), this.parentRemovalObserver.observe(document.body, { childList: true, subtree: true }))); } cleanupParentRemovalObserver() { var t16; null === (t16 = this.parentRemovalObserver) || void 0 === t16 || t16.disconnect(), this.parentRemovalObserver = void 0; } onDragStart() { this.ionDragStart.emit(); } onDragMove(t16) { this.ionDragMove.emit(t16); } onDragEnd(t16) { this.ionDragEnd.emit(t16); } getSafeAreaContext() { return { isSheetModal: this.isSheetModal, isCardModal: void 0 !== this.presentingElement && "ios" === g(this), presentingElement: this.presentingElement, breakpoints: this.breakpoints, currentBreakpoint: this.currentBreakpoint }; } setInitialSafeAreaOverrides() { const t16 = this.getSafeAreaContext(), i16 = ((t17) => { const { isSheetModal: i17, isCardModal: o14 } = t17; return i17 ? { top: "0px", bottom: "inherit", left: "0px", right: "0px" } : o14 ? { top: "inherit", bottom: "inherit", left: "0px", right: "0px" } : d && d.matchMedia("(min-width: 768px) and (min-height: 600px)").matches ? { top: "0px", bottom: "0px", left: "0px", right: "0px" } : { top: "inherit", bottom: "inherit", left: "inherit", right: "inherit" }; })(t16); ht(this.el, i16), t16.isSheetModal && this.updateSheetOffsetTop(); } updateSheetOffsetTop() { const t16 = (() => { if (null !== nt) return nt; const t17 = null == d ? void 0 : d.document; if (!(null == t17 ? void 0 : t17.body)) return 0; const i16 = t17.createElement("div"); i16.style.cssText = "position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;padding-top:var(--ion-safe-area-top,0px);", t17.body.appendChild(i16); const o14 = parseFloat(getComputedStyle(i16).paddingTop) || 0; return i16.remove(), nt = o14, dt || (dt = true, d2((() => { nt = null, dt = false; }))), o14; })(); this.el.style.setProperty("--ion-modal-offset-top", `${t16}px`); } updateSafeAreaOverrides() { const { wrapperEl: t16, el: i16 } = this, o14 = this.getSafeAreaContext(); if (o14.isSheetModal) return; if (o14.isCardModal) return; if (!t16) return; const e16 = ((t17) => { var i17, o15; const e17 = t17.getBoundingClientRect(), a16 = null !== (i17 = null == d ? void 0 : d.innerHeight) && void 0 !== i17 ? i17 : 0, r32 = null !== (o15 = null == d ? void 0 : d.innerWidth) && void 0 !== o15 ? o15 : 0; return { top: e17.top <= 5 ? "inherit" : "0px", bottom: e17.bottom >= a16 - 5 ? "inherit" : "0px", left: e17.left <= 5 ? "inherit" : "0px", right: e17.right >= r32 - 5 ? "inherit" : "0px" }; })(t16); ht(i16, e16); } applyFullscreenSafeArea() { const { wrapperEl: t16, el: i16 } = this; if (!t16) return; const o14 = this.getSafeAreaContext(); if (o14.isSheetModal || o14.isCardModal) return; let e16 = false, a16 = false; for (const t17 of Array.from(i16.children)) { "ION-CONTENT" === t17.tagName && (e16 = true), "ION-FOOTER" === t17.tagName && (a16 = true); for (const i17 of Array.from(t17.children)) "ION-CONTENT" === i17.tagName && (e16 = true), "ION-FOOTER" === i17.tagName && (a16 = true); } e16 && !a16 && (t16.style.setProperty("height", "calc(var(--height) - var(--ion-safe-area-bottom, 0px))"), t16.style.setProperty("padding-bottom", "var(--ion-safe-area-bottom, 0px)")); } cleanupSafeAreaOverrides() { var t16; (t16 = this.el).style.removeProperty("--ion-safe-area-top"), t16.style.removeProperty("--ion-safe-area-bottom"), t16.style.removeProperty("--ion-safe-area-left"), t16.style.removeProperty("--ion-safe-area-right"), this.el.style.removeProperty("--ion-modal-offset-top"), this.wrapperEl && (this.wrapperEl.style.removeProperty("height"), this.wrapperEl.style.removeProperty("padding-bottom")); } render() { const { handle: t16, isSheetModal: i16, presentingElement: o14, htmlAttributes: e16, handleBehavior: a16, inheritedAttributes: r32, focusTrap: d24, expandToScroll: h19 } = this, l28 = false !== t16 && i16, p33 = g(this), c36 = void 0 !== o14 && "ios" === p33, m26 = "cycle" === a16; return Ct(It, Object.assign({ key: "1a53e8f87532abccc169ca4b24973a39c5f9ba16", "no-router": true, tabIndex: m26 && i16 && l28 ? 0 : -1 }, e16, { style: { zIndex: `${2e4 + this.overlayIndex}` }, class: Object.assign({ [p33]: true, "modal-default": !c36 && !i16, "modal-card": c36, "modal-sheet": i16, "modal-no-expand-scroll": i16 && !h19, "overlay-hidden": true, [nn]: false === d24 }, r5(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), Ct("ion-backdrop", { key: "fa8e0a436c0d458331402e1850f87af3dc97b582", ref: (t17) => this.backdropEl = t17, visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), "ios" === p33 && Ct("div", { key: "f00de6027d3c8b5bc93db3b0f7a50a87628d40bb", class: "modal-shadow" }), Ct("div", Object.assign({ key: "ae5e33bd6c58e541edb2edbca92420ea02dd5175", role: "dialog" }, r32, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (t17) => this.wrapperEl = t17 }), l28 && Ct("button", { key: "141cdd8f8522331f4b764e2a4d79ec6596b1eb3a", class: "modal-handle", tabIndex: m26 ? 0 : -1, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: m26 ? this.onHandleClick : void 0, part: "handle", ref: (t17) => this.dragHandleEl = t17 }), Ct("slot", { key: "7de20298b61abee67a16d275c9ebd9a25ce7dd26", onSlotchange: this.onSlotChange }))); } get el() { return this; } static get watchers() { return { isOpen: [{ onIsOpenChange: 0 }], trigger: [{ triggerChanged: 0 }] }; } static get style() { return { ios: ':host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}', md: ':host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:""}:host(.modal-sheet){--height:calc(100% - (var(--ion-modal-offset-top, 0px) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}' }; } }, [289, "ion-modal", { hasController: [4, "has-controller"], overlayIndex: [2, "overlay-index"], delegate: [16], keyboardClose: [4, "keyboard-close"], enterAnimation: [16], leaveAnimation: [16], breakpoints: [16], expandToScroll: [4, "expand-to-scroll"], initialBreakpoint: [2, "initial-breakpoint"], backdropBreakpoint: [2, "backdrop-breakpoint"], handle: [4], handleBehavior: [1, "handle-behavior"], component: [1], componentProps: [16], cssClass: [1, "css-class"], backdropDismiss: [4, "backdrop-dismiss"], showBackdrop: [4, "show-backdrop"], animated: [4], presentingElement: [16], htmlAttributes: [16], isOpen: [4, "is-open"], trigger: [1], keepContentsMounted: [4, "keep-contents-mounted"], focusTrap: [4, "focus-trap"], canDismiss: [4, "can-dismiss"], isSheetModal: [32], presented: [32], present: [64], dismiss: [64], onDidDismiss: [64], onWillDismiss: [64], setCurrentBreakpoint: [64], getCurrentBreakpoint: [64] }, [[9, "resize", "onWindowResize"]], { isOpen: [{ onIsOpenChange: 0 }], trigger: [{ triggerChanged: 0 }] }]); var pt = { ionModalDidPresent: "ionViewDidEnter", ionModalWillPresent: "ionViewWillEnter", ionModalWillDismiss: "ionViewWillLeave", ionModalDidDismiss: "ionViewDidLeave" }; function ct() { "undefined" != typeof customElements && ["ion-modal", "ion-backdrop"].forEach(((t16) => { switch (t16) { case "ion-modal": customElements.get(Zn(t16)) || customElements.define(Zn(t16), lt); break; case "ion-backdrop": customElements.get(Zn(t16)) || c11(); } })); } // node_modules/@ionic/core/components/ion-modal.js var p8 = ct; // node_modules/@ionic/core/components/p-DHsZWn1l.js var O3 = null; var L3 = false; var N2 = (t16) => { if (null !== O3) return O3; if (null === t16.body) return { top: 0, bottom: 0, left: 0, right: 0 }; const e16 = t16.createElement("div"); e16.style.cssText = "position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;padding-top:var(--ion-safe-area-top,0px);padding-bottom:var(--ion-safe-area-bottom,0px);padding-left:var(--ion-safe-area-left,0px);padding-right:var(--ion-safe-area-right,0px);", t16.body.appendChild(e16); const o14 = getComputedStyle(e16), r32 = { top: parseFloat(o14.paddingTop) || 0, bottom: parseFloat(o14.paddingBottom) || 0, left: parseFloat(o14.paddingLeft) || 0, right: parseFloat(o14.paddingRight) || 0 }; return e16.remove(), O3 = r32, L3 || (L3 = true, d2((() => { O3 = null, L3 = false; }))), r32; }; var W3 = (t16, e16, o14) => { const r32 = e16.getBoundingClientRect(), i16 = r32.height; let s21 = r32.width; return "cover" === t16 && o14 && (s21 = o14.getBoundingClientRect().width), { contentWidth: s21, contentHeight: i16 }; }; var j4 = (t16, e16) => e16 && "ION-ITEM" === e16.tagName ? t16.findIndex(((t17) => t17 === e16)) : -1; var z3 = (t16) => { const e16 = c(t16).querySelector("button"); e16 && d2((() => e16.focus())); }; var E3 = (t16, e16, o14, r32, i16, s21, n15, a16, p33, c36, d24) => { var l28; let h19 = { top: 0, left: 0, width: 0, height: 0 }; if ("event" === s21) { if (!d24) return p33; h19 = { top: d24.clientY, left: d24.clientX, width: 1, height: 1 }; } else { const t17 = c36 || (null === (l28 = null == d24 ? void 0 : d24.detail) || void 0 === l28 ? void 0 : l28.ionShadowTarget) || (null == d24 ? void 0 : d24.target); if (!t17) return p33; const e17 = t17.getBoundingClientRect(); h19 = { top: e17.top, left: e17.left, width: e17.width, height: e17.height }; } const v18 = M4(n15, h19, e16, o14, r32, i16, t16), f27 = R2(a16, n15, h19, e16, o14), g20 = v18.top + f27.top, m26 = v18.left + f27.left, { arrowTop: x15, arrowLeft: b20 } = Y2(n15, r32, i16, g20, m26, e16, o14, t16), { originX: u19, originY: w11 } = S2(n15, a16, t16); return { top: g20, left: m26, referenceCoordinates: h19, arrowTop: x15, arrowLeft: b20, originX: u19, originY: w11 }; }; var S2 = (t16, e16, o14) => { switch (t16) { case "top": return { originX: X3(e16), originY: "bottom" }; case "bottom": return { originX: X3(e16), originY: "top" }; case "left": return { originX: "right", originY: B4(e16) }; case "right": return { originX: "left", originY: B4(e16) }; case "start": return { originX: o14 ? "left" : "right", originY: B4(e16) }; case "end": return { originX: o14 ? "right" : "left", originY: B4(e16) }; } }; var X3 = (t16) => { switch (t16) { case "start": return "left"; case "center": return "center"; case "end": return "right"; } }; var B4 = (t16) => { switch (t16) { case "start": return "top"; case "center": return "center"; case "end": return "bottom"; } }; var Y2 = (t16, e16, o14, r32, i16, s21, n15, a16) => { const p33 = { arrowTop: r32 + n15 / 2 - e16 / 2, arrowLeft: i16 + s21 - e16 / 2 }, c36 = { arrowTop: r32 + n15 / 2 - e16 / 2, arrowLeft: i16 - 1.5 * e16 }; switch (t16) { case "top": return { arrowTop: r32 + n15, arrowLeft: i16 + s21 / 2 - e16 / 2 }; case "bottom": return { arrowTop: r32 - o14, arrowLeft: i16 + s21 / 2 - e16 / 2 }; case "left": return p33; case "right": return c36; case "start": return a16 ? c36 : p33; case "end": return a16 ? p33 : c36; default: return { arrowTop: 0, arrowLeft: 0 }; } }; var M4 = (t16, e16, o14, r32, i16, s21, n15) => { const a16 = { top: e16.top, left: e16.left - o14 - i16 }, p33 = { top: e16.top, left: e16.left + e16.width + i16 }; switch (t16) { case "top": return { top: e16.top - r32 - s21, left: e16.left }; case "right": return p33; case "bottom": return { top: e16.top + e16.height + s21, left: e16.left }; case "left": return a16; case "start": return n15 ? p33 : a16; case "end": return n15 ? a16 : p33; } }; var R2 = (t16, e16, o14, r32, i16) => { switch (t16) { case "center": return H2(e16, o14, r32, i16); case "end": return F2(e16, o14, r32, i16); default: return { top: 0, left: 0 }; } }; var F2 = (t16, e16, o14, r32) => { switch (t16) { case "start": case "end": case "left": case "right": return { top: -(r32 - e16.height), left: 0 }; default: return { top: 0, left: -(o14 - e16.width) }; } }; var H2 = (t16, e16, o14, r32) => { switch (t16) { case "start": case "end": case "left": case "right": return { top: -(r32 / 2 - e16.height / 2), left: 0 }; default: return { top: 0, left: -(o14 / 2 - e16.width / 2) }; } }; var V2 = (t16, e16, o14, r32, i16, s21, n15, a16, p33, c36, d24, l28, h19 = 0, v18 = 0, f27 = 0) => { let g20, m26 = h19, x15 = o14, b20 = e16, u19 = c36, w11 = d24, k11 = false, y12 = false, P6 = false, D6 = false; const T7 = l28 ? l28.top + l28.height : s21 / 2 - a16 / 2, A6 = l28 ? l28.height : 0; let $4 = false; if (x15 < r32 + p33.left ? (x15 = r32, k11 = true, u19 = "left") : n15 + r32 + x15 + p33.right > i16 && (y12 = true, x15 = i16 - n15 - r32, u19 = "right"), T7 + A6 + a16 > s21 - p33.bottom && ("top" === t16 || "bottom" === t16)) { const t17 = T7 - a16 - A6 - (f27 - 1); t17 >= p33.top + r32 ? (b20 = t17, m26 = b20 + a16, w11 = "bottom", $4 = true) : (g20 = r32, D6 = true, b20 >= s21 - p33.bottom - r32 && (b20 = p33.top + r32, P6 = true)); } return { top: b20, left: x15, bottom: g20, originX: u19, originY: w11, checkSafeAreaLeft: k11, checkSafeAreaRight: y12, checkSafeAreaTop: P6, checkSafeAreaBottom: D6, arrowTop: m26, arrowLeft: v18, addPopoverBottomClass: $4, hideArrow: false }; }; var q4 = (t16, e16) => { var o14; const { event: r32, size: i16, trigger: s21, reference: n15, side: a16, align: p33 } = e16, c36 = t16.ownerDocument, d24 = "rtl" === c36.dir, l28 = c36.defaultView.innerWidth, h19 = c36.defaultView.innerHeight, v18 = c(t16), f27 = v18.querySelector(".popover-content"), g20 = v18.querySelector(".popover-arrow"), m26 = s21 || (null === (o14 = null == r32 ? void 0 : r32.detail) || void 0 === o14 ? void 0 : o14.ionShadowTarget) || (null == r32 ? void 0 : r32.target), { contentWidth: x15, contentHeight: u19 } = W3(i16, f27, m26), { arrowWidth: w11, arrowHeight: k11 } = ((t17) => { if (!t17) return { arrowWidth: 0, arrowHeight: 0 }; const { width: e17, height: o15 } = t17.getBoundingClientRect(); return { arrowWidth: e17, arrowHeight: o15 }; })(g20), y12 = E3(d24, x15, u19, w11, k11, n15, a16, p33, { top: h19 / 2 - u19 / 2, left: l28 / 2 - x15 / 2, originX: d24 ? "right" : "left", originY: "top" }, s21, r32), P6 = "cover" === i16 ? 0 : 5, D6 = N2(c36), T7 = "cover" === i16 ? { top: 0, bottom: 0, left: 0, right: 0 } : { top: Math.max(D6.top, 25), bottom: Math.max(D6.bottom, 25), left: Math.max(D6.left, 25), right: Math.max(D6.right, 25) }, { originX: A6, originY: $4, top: I7, left: O9, bottom: L8, checkSafeAreaLeft: j8, checkSafeAreaRight: z11, checkSafeAreaTop: S6, checkSafeAreaBottom: X6, arrowTop: B11, arrowLeft: Y5, addPopoverBottomClass: M6 } = V2(a16, y12.top, y12.left, P6, l28, h19, x15, u19, T7, y12.originX, y12.originY, y12.referenceCoordinates, y12.arrowTop, y12.arrowLeft, k11), R4 = r(), F4 = r(), H7 = r(); return F4.addElement(v18.querySelector("ion-backdrop")).fromTo("opacity", 0.01, "var(--backdrop-opacity)").beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), H7.addElement(v18.querySelector(".popover-arrow")).addElement(v18.querySelector(".popover-content")).fromTo("opacity", 0.01, 1), R4.easing("ease").duration(100).beforeAddWrite((() => { if ("cover" === i16 && t16.style.setProperty("--width", `${x15}px`), M6 && t16.classList.add("popover-bottom"), void 0 !== L8) { let t17 = `${L8}px`; X6 && (t17 = `${L8}px + var(--ion-safe-area-bottom, 0px)`), f27.style.setProperty("bottom", `calc(${t17})`); } let e17 = `${O9}px`; j8 && (e17 = `${O9}px + var(--ion-safe-area-left, 0px)`), z11 && (e17 = `${O9}px - var(--ion-safe-area-right, 0px)`); let o15 = `${I7}px`; if (S6 && (o15 = `${I7}px + var(--ion-safe-area-top, 0px)`), f27.style.setProperty("top", `calc(${o15} + var(--offset-y, 0))`), f27.style.setProperty("left", `calc(${e17} + var(--offset-x, 0))`), f27.style.setProperty("transform-origin", `${$4} ${A6}`), null !== g20) { const t17 = /* @__PURE__ */ ((t18, e18 = false, o16, r33) => !(!o16 && !r33 || "top" !== t18 && "bottom" !== t18 && e18))(a16, y12.top !== I7 || y12.left !== O9, r32, s21); t17 ? (g20.style.setProperty("top", `calc(${B11}px + var(--offset-y, 0))`), g20.style.setProperty("left", `calc(${Y5}px + var(--offset-x, 0))`)) : g20.style.setProperty("display", "none"); } })).addAnimation([F4, H7]); }; var J3 = (t16) => { const e16 = c(t16), o14 = e16.querySelector(".popover-content"), r32 = e16.querySelector(".popover-arrow"), i16 = r(), s21 = r(), n15 = r(); return s21.addElement(e16.querySelector("ion-backdrop")).fromTo("opacity", "var(--backdrop-opacity)", 0), n15.addElement(e16.querySelector(".popover-arrow")).addElement(e16.querySelector(".popover-content")).fromTo("opacity", 0.99, 0), i16.easing("ease").afterAddWrite((() => { t16.style.removeProperty("--width"), t16.classList.remove("popover-bottom"), o14.style.removeProperty("top"), o14.style.removeProperty("left"), o14.style.removeProperty("bottom"), o14.style.removeProperty("transform-origin"), r32 && (r32.style.removeProperty("top"), r32.style.removeProperty("left"), r32.style.removeProperty("display")); })).duration(300).addAnimation([s21, n15]); }; var K3 = (t16, e16) => { var o14; const { event: r32, size: i16, trigger: s21, reference: n15, side: a16, align: p33 } = e16, c36 = t16.ownerDocument, d24 = "rtl" === c36.dir, l28 = c36.defaultView.innerWidth, h19 = c36.defaultView.innerHeight, v18 = c(t16), f27 = v18.querySelector(".popover-content"), g20 = s21 || (null === (o14 = null == r32 ? void 0 : r32.detail) || void 0 === o14 ? void 0 : o14.ionShadowTarget) || (null == r32 ? void 0 : r32.target), { contentWidth: m26, contentHeight: x15 } = W3(i16, f27, g20), u19 = E3(d24, m26, x15, 0, 0, n15, a16, p33, { top: h19 / 2 - x15 / 2, left: l28 / 2 - m26 / 2, originX: d24 ? "right" : "left", originY: "top" }, s21, r32), w11 = "cover" === i16 ? 0 : 12, k11 = "cover" === i16 ? { top: 0, bottom: 0, left: 0, right: 0 } : N2(c36), { originX: y12, originY: P6, top: D6, left: T7, bottom: A6, checkSafeAreaLeft: $4, checkSafeAreaRight: I7, checkSafeAreaTop: O9, checkSafeAreaBottom: L8, addPopoverBottomClass: j8 } = V2(a16, u19.top, u19.left, w11, l28, h19, m26, x15, k11, u19.originX, u19.originY, u19.referenceCoordinates); let z11 = `${T7}px`; $4 && (z11 = `${T7}px + var(--ion-safe-area-left, 0px)`), I7 && (z11 = `${T7}px - var(--ion-safe-area-right, 0px)`); let S6 = `${D6}px`; O9 && (S6 = `${D6}px + var(--ion-safe-area-top, 0px)`); const X6 = r(), B11 = r(), Y5 = r(), M6 = r(), R4 = r(); return B11.addElement(v18.querySelector("ion-backdrop")).fromTo("opacity", 0.01, "var(--backdrop-opacity)").beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), Y5.addElement(v18.querySelector(".popover-wrapper")).duration(150).fromTo("opacity", 0.01, 1), M6.addElement(f27).beforeStyles({ top: `calc(${S6} + var(--offset-y, 0px))`, left: `calc(${z11} + var(--offset-x, 0px))`, "transform-origin": `${P6} ${y12}` }).beforeAddWrite((() => { if (void 0 !== A6) { let t17 = `${A6}px`; L8 && (t17 = `${A6}px + var(--ion-safe-area-bottom, 0px)`), f27.style.setProperty("bottom", `calc(${t17})`); } })).fromTo("transform", "scale(0.8)", "scale(1)"), R4.addElement(v18.querySelector(".popover-viewport")).fromTo("opacity", 0.01, 1), X6.easing("cubic-bezier(0.36,0.66,0.04,1)").duration(300).beforeAddWrite((() => { "cover" === i16 && t16.style.setProperty("--width", `${m26}px`), j8 && t16.classList.add("popover-bottom"); })).addAnimation([B11, Y5, M6, R4]); }; var Q3 = (t16) => { const e16 = c(t16), o14 = e16.querySelector(".popover-content"), r32 = r(), i16 = r(), s21 = r(); return i16.addElement(e16.querySelector("ion-backdrop")).fromTo("opacity", "var(--backdrop-opacity)", 0), s21.addElement(e16.querySelector(".popover-wrapper")).fromTo("opacity", 0.99, 0), r32.easing("ease").afterAddWrite((() => { t16.style.removeProperty("--width"), t16.classList.remove("popover-bottom"), o14.style.removeProperty("top"), o14.style.removeProperty("left"), o14.style.removeProperty("bottom"), o14.style.removeProperty("transform-origin"); })).duration(150).addAnimation([i16, s21]); }; var U3 = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(), this.__attachShadow(), this.didPresent = Jt(this, "ionPopoverDidPresent", 7), this.willPresent = Jt(this, "ionPopoverWillPresent", 7), this.willDismiss = Jt(this, "ionPopoverWillDismiss", 7), this.didDismiss = Jt(this, "ionPopoverDidDismiss", 7), this.didPresentShorthand = Jt(this, "didPresent", 7), this.willPresentShorthand = Jt(this, "willPresent", 7), this.willDismissShorthand = Jt(this, "willDismiss", 7), this.didDismissShorthand = Jt(this, "didDismiss", 7), this.ionMount = Jt(this, "ionMount", 7), this.parentPopover = null, this.coreDelegate = i8(), this.lockController = t10(), this.inline = false, this.focusDescendantOnPresent = false, this.presented = false, this.hasController = false, this.keyboardClose = true, this.backdropDismiss = true, this.showBackdrop = true, this.translucent = false, this.animated = true, this.triggerAction = "click", this.size = "auto", this.dismissOnSelect = false, this.reference = "trigger", this.side = "bottom", this.arrow = true, this.isOpen = false, this.keyboardEvents = false, this.focusTrap = true, this.keepContentsMounted = false, this.onBackdropTap = () => { this.dismiss(void 0, H); }, this.onLifecycle = (t17) => { const e16 = this.usersElement, o14 = G3[t17.type]; if (e16 && o14) { const r32 = new CustomEvent(o14, { bubbles: false, cancelable: false, detail: t17.detail }); e16.dispatchEvent(r32); } }, this.configureTriggerInteraction = () => { const { trigger: t17, triggerAction: e16, el: o14, destroyTriggerInteraction: i16 } = this; if (i16 && i16(), void 0 === t17) return; const s21 = this.triggerEl = void 0 !== t17 ? document.getElementById(t17) : null; s21 ? this.destroyTriggerInteraction = ((t18, e17, o15) => { let r32 = []; switch (e17) { case "hover": let t19; r32 = [{ eventName: "mouseenter", callback: (e18) => __async(this, null, function* () { e18.stopPropagation(), t19 && clearTimeout(t19), t19 = setTimeout((() => { d2((() => { o15.presentFromTrigger(e18), t19 = void 0; })); }), 100); }) }, { eventName: "mouseleave", callback: (e18) => { t19 && clearTimeout(t19); const r33 = e18.relatedTarget; r33 && r33.closest("ion-popover") !== o15 && o15.dismiss(void 0, void 0, false); } }, { eventName: "click", callback: (t20) => t20.stopPropagation() }, { eventName: "ionPopoverActivateTrigger", callback: (t20) => o15.presentFromTrigger(t20, true) }]; break; case "context-menu": r32 = [{ eventName: "contextmenu", callback: (t20) => { t20.preventDefault(), o15.presentFromTrigger(t20); } }, { eventName: "click", callback: (t20) => t20.stopPropagation() }, { eventName: "ionPopoverActivateTrigger", callback: (t20) => o15.presentFromTrigger(t20, true) }]; break; default: r32 = [{ eventName: "click", callback: (t20) => o15.presentFromTrigger(t20) }, { eventName: "ionPopoverActivateTrigger", callback: (t20) => o15.presentFromTrigger(t20, true) }]; } return r32.forEach((({ eventName: e18, callback: o16 }) => t18.addEventListener(e18, o16))), t18.setAttribute("data-ion-popover-trigger", "true"), () => { r32.forEach((({ eventName: e18, callback: o16 }) => t18.removeEventListener(e18, o16))), t18.removeAttribute("data-ion-popover-trigger"); }; })(s21, e16, o14) : u(`[ion-popover] - A trigger element with the ID "${t17}" was not found in the DOM. The trigger element must be in the DOM when the "trigger" property is set on ion-popover.`, this.el); }, this.configureKeyboardInteraction = () => { const { destroyKeyboardInteraction: t17, el: e16 } = this; t17 && t17(), this.destroyKeyboardInteraction = ((t18) => { const e17 = (e18) => __async(this, null, function* () { var o14; const r32 = document.activeElement; let i16 = []; const s21 = null === (o14 = e18.target) || void 0 === o14 ? void 0 : o14.tagName; if ("ION-POPOVER" === s21 || "ION-ITEM" === s21) { try { i16 = Array.from(t18.querySelectorAll("ion-item:not(ion-popover ion-popover *):not([disabled])")); } catch (t19) { } switch (e18.key) { case "ArrowLeft": (yield t18.getParentPopover()) && t18.dismiss(void 0, void 0, false); break; case "ArrowDown": e18.preventDefault(); const o15 = ((t19, e19) => t19[j4(t19, e19) + 1])(i16, r32); void 0 !== o15 && z3(o15); break; case "ArrowUp": e18.preventDefault(); const s22 = ((t19, e19) => t19[j4(t19, e19) - 1])(i16, r32); void 0 !== s22 && z3(s22); break; case "Home": e18.preventDefault(); const n15 = i16[0]; void 0 !== n15 && z3(n15); break; case "End": e18.preventDefault(); const a16 = i16[i16.length - 1]; void 0 !== a16 && z3(a16); break; case "ArrowRight": case " ": case "Enter": if (r32 && r32.hasAttribute("data-ion-popover-trigger")) { const t19 = new CustomEvent("ionPopoverActivateTrigger"); r32.dispatchEvent(t19); } } } }); return t18.addEventListener("keydown", e17), () => t18.removeEventListener("keydown", e17); })(e16); }, this.configureDismissInteraction = () => { const { destroyDismissInteraction: t17, parentPopover: e16, triggerAction: o14, triggerEl: r32, el: i16 } = this; e16 && r32 && (t17 && t17(), this.destroyDismissInteraction = ((t18, e17, o15, r33) => { let i17 = []; const s21 = c(r33).querySelector(".popover-content"); return i17 = "hover" === e17 ? [{ eventName: "mouseenter", callback: (e18) => { document.elementFromPoint(e18.clientX, e18.clientY) !== t18 && o15.dismiss(void 0, void 0, false); } }] : [{ eventName: "click", callback: (e18) => { e18.target.closest("[data-ion-popover-trigger]") !== t18 ? o15.dismiss(void 0, void 0, false) : e18.stopPropagation(); } }], i17.forEach((({ eventName: t19, callback: e18 }) => s21.addEventListener(t19, e18))), () => { i17.forEach((({ eventName: t19, callback: e18 }) => s21.removeEventListener(t19, e18))); }; })(r32, o14, i16, e16)); }; } onTriggerChange() { this.configureTriggerInteraction(); } onIsOpenChange(t16, e16) { true === t16 && false === e16 ? this.present() : false === t16 && true === e16 && this.dismiss(); } connectedCallback() { const { configureTriggerInteraction: t16, el: e16 } = this; I2(e16), t16(); } disconnectedCallback() { const { destroyTriggerInteraction: t16 } = this; t16 && t16(), this.headerResizeObserver && (this.headerResizeObserver.disconnect(), this.headerResizeObserver = void 0); } componentWillLoad() { var t16, e16; const { el: o14 } = this, r32 = null !== (e16 = null === (t16 = this.htmlAttributes) || void 0 === t16 ? void 0 : t16.id) && void 0 !== e16 ? e16 : N(o14); this.parentPopover = o14.closest(`ion-popover:not(#${r32})`), void 0 === this.alignment && (this.alignment = "ios" === g(this) ? "center" : "start"); } componentDidLoad() { const { parentPopover: t16, isOpen: e16 } = this; true === e16 && d2((() => this.present())), t16 && l(t16, "ionPopoverWillDismiss", (() => { this.dismiss(void 0, void 0, false); })), this.configureTriggerInteraction(); } presentFromTrigger(t16, e16 = false) { return __async(this, null, function* () { this.focusDescendantOnPresent = e16, yield this.present(t16), this.focusDescendantOnPresent = false; }); } getDelegate(t16 = false) { if (this.workingDelegate && !t16) return { delegate: this.workingDelegate, inline: this.inline }; const e16 = this.inline = null !== this.el.parentNode && !this.hasController; return { inline: e16, delegate: this.workingDelegate = e16 ? this.delegate || this.coreDelegate : this.delegate }; } present(t16) { return __async(this, null, function* () { const e16 = yield this.lockController.lock(); if (this.presented) return void e16(); const { el: o14 } = this, { inline: r32, delegate: i16 } = this.getDelegate(true); this.ionMount.emit(), this.usersElement = yield o8(i16, o14, this.component, ["popover-viewport"], this.componentProps, r32), this.recalculateContentOnHeaderReady(), this.keyboardEvents || this.configureKeyboardInteraction(), this.configureDismissInteraction(), t(o14) ? yield B(this.usersElement) : this.keepContentsMounted || (yield L()), yield $(this, "popoverEnter", q4, K3, { event: t16 || this.event, size: this.size, trigger: this.triggerEl, reference: this.reference, side: this.side, align: this.alignment }), this.focusDescendantOnPresent && f5(o14), e16(); }); } recalculateContentOnHeaderReady() { var t16; const e16 = null === (t16 = this.el.shadowRoot) || void 0 === t16 ? void 0 : t16.querySelector(".popover-content"); if (!e16) return; const o14 = this.usersElement || e16, r32 = o14.querySelector("ion-header"), i16 = o14.querySelectorAll("ion-content"); r32 && 0 !== i16.length && (this.headerResizeObserver = new ResizeObserver((() => __async(this, null, function* () { var t17; if (r32.offsetHeight > 0) { null === (t17 = this.headerResizeObserver) || void 0 === t17 || t17.disconnect(), this.headerResizeObserver = void 0; for (const t18 of i16) yield t18.recalculateDimensions(); } }))), this.headerResizeObserver.observe(r32)); } dismiss(t16, e16, o14 = true) { return __async(this, null, function* () { const r32 = yield this.lockController.lock(), { destroyKeyboardInteraction: i16, destroyDismissInteraction: s21 } = this; o14 && this.parentPopover && this.parentPopover.dismiss(t16, e16, o14); const n15 = yield J(this, t16, e16, "popoverLeave", J3, Q3, this.event); if (n15) { i16 && (i16(), this.destroyKeyboardInteraction = void 0), s21 && (s21(), this.destroyDismissInteraction = void 0); const { delegate: t17 } = this.getDelegate(); yield t8(t17, this.usersElement); } return r32(), n15; }); } getParentPopover() { return __async(this, null, function* () { return this.parentPopover; }); } onDidDismiss() { return q2(this.el, "ionPopoverDidDismiss"); } onWillDismiss() { return q2(this.el, "ionPopoverWillDismiss"); } render() { const t16 = g(this), { onLifecycle: e16, parentPopover: o14, dismissOnSelect: r32, side: n15, arrow: a16, htmlAttributes: p33, focusTrap: c36 } = this, d24 = s5("desktop"), l28 = a16 && !o14; return Ct(It, Object.assign({ key: "2edd8333c630efbce59071f8a383e4326e928dbc", "aria-modal": "true", "no-router": true, tabindex: "-1" }, p33, { style: { zIndex: `${2e4 + this.overlayIndex}` }, class: Object.assign(Object.assign({}, r5(this.cssClass)), { [t16]: true, "popover-translucent": this.translucent, "overlay-hidden": true, "popover-desktop": d24, [`popover-side-${n15}`]: true, [nn]: false === c36, "popover-nested": !!o14 }), onIonPopoverDidPresent: e16, onIonPopoverWillPresent: e16, onIonPopoverWillDismiss: e16, onIonPopoverDidDismiss: e16, onIonBackdropTap: this.onBackdropTap }), !o14 && Ct("ion-backdrop", { key: "aac4e68b08197534375e8ea3f8c9ea0c10ab2af4", tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), Ct("div", { key: "b7f4ebf57d4148b32856b0075d286f454be8de5d", class: "popover-wrapper ion-overlay-wrapper", onClick: r32 ? () => this.dismiss() : void 0 }, l28 && Ct("div", { key: "607d94c28d73e8e957175a7c0f6e8a99ec4dcd53", class: "popover-arrow", part: "arrow" }), Ct("div", { key: "4366a5a5de550c09895e923f345583508e1ec30c", class: "popover-content", part: "content" }, Ct("slot", { key: "eb7886fbc99c15b667b7d825d24f1c12d9380f03" })))); } get el() { return this; } static get watchers() { return { trigger: [{ onTriggerChange: 0 }], triggerAction: [{ onTriggerChange: 0 }], isOpen: [{ onIsOpenChange: 0 }] }; } static get style() { return { ios: ':host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:200px;--max-height:90%;--box-shadow:none;--backdrop-opacity:var(--ion-backdrop-opacity, 0.08)}:host(.popover-desktop){--box-shadow:0px 4px 16px 0px rgba(0, 0, 0, 0.12)}.popover-content{border-radius:10px}:host(.popover-desktop) .popover-content{border:0.5px solid var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.popover-arrow{display:block;position:absolute;width:20px;height:10px;overflow:hidden;z-index:11}.popover-arrow::after{top:3px;border-radius:3px;position:absolute;width:14px;height:14px;-webkit-transform:rotate(45deg);transform:rotate(45deg);background:var(--background);content:"";z-index:10}.popover-arrow::after{inset-inline-start:3px}:host(.popover-bottom) .popover-arrow{top:auto;bottom:-10px}:host(.popover-bottom) .popover-arrow::after{top:-6px}:host(.popover-side-left) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host(.popover-side-right) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host(.popover-side-top) .popover-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.popover-side-start) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host-context([dir=rtl]):host(.popover-side-start) .popover-arrow,:host-context([dir=rtl]).popover-side-start .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}@supports selector(:dir(rtl)){:host(.popover-side-start:dir(rtl)) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}}:host(.popover-side-end) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host-context([dir=rtl]):host(.popover-side-end) .popover-arrow,:host-context([dir=rtl]).popover-side-end .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}@supports selector(:dir(rtl)){:host(.popover-side-end:dir(rtl)) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.popover-arrow,.popover-content{opacity:0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.popover-translucent) .popover-content,:host(.popover-translucent) .popover-arrow::after{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}', md: ":host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:250px;--max-height:90%;--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}.popover-content{border-radius:4px;-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]) .popover-content{-webkit-transform-origin:right top;transform-origin:right top}[dir=rtl] .popover-content{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.popover-content:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.popover-viewport{-webkit-transition-delay:100ms;transition-delay:100ms}.popover-wrapper{opacity:0}" }; } }, [289, "ion-popover", { hasController: [4, "has-controller"], delegate: [16], overlayIndex: [2, "overlay-index"], enterAnimation: [16], leaveAnimation: [16], component: [1], componentProps: [16], keyboardClose: [4, "keyboard-close"], cssClass: [1, "css-class"], backdropDismiss: [4, "backdrop-dismiss"], event: [8], showBackdrop: [4, "show-backdrop"], translucent: [4], animated: [4], htmlAttributes: [16], triggerAction: [1, "trigger-action"], trigger: [1], size: [1], dismissOnSelect: [4, "dismiss-on-select"], reference: [1], side: [1], alignment: [1025], arrow: [4], isOpen: [4, "is-open"], keyboardEvents: [4, "keyboard-events"], focusTrap: [4, "focus-trap"], keepContentsMounted: [4, "keep-contents-mounted"], presented: [32], presentFromTrigger: [64], present: [64], dismiss: [64], getParentPopover: [64], onDidDismiss: [64], onWillDismiss: [64] }, void 0, { trigger: [{ onTriggerChange: 0 }], triggerAction: [{ onTriggerChange: 0 }], isOpen: [{ onIsOpenChange: 0 }] }]); var G3 = { ionPopoverDidPresent: "ionViewDidEnter", ionPopoverWillPresent: "ionViewWillEnter", ionPopoverWillDismiss: "ionViewWillLeave", ionPopoverDidDismiss: "ionViewDidLeave" }; function Z4() { "undefined" != typeof customElements && ["ion-popover", "ion-backdrop"].forEach(((t16) => { switch (t16) { case "ion-popover": customElements.get(Zn(t16)) || customElements.define(Zn(t16), U3); break; case "ion-backdrop": customElements.get(Zn(t16)) || c11(); } })); } // node_modules/@ionic/core/components/ion-popover.js var r7 = Z4; // node_modules/@ionic/core/components/ion-accordion.js var u7 = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(), this.__attachShadow(), this.accordionGroupUpdateHandler = () => { const t17 = this.accordionGroupEl; if (t17) { const i16 = t17.value, o14 = this.value, e16 = Array.isArray(i16) ? i16.includes(o14) : i16 === o14; this.hasReceivedFirstUpdate && e16 !== (4 === this.state || 8 === this.state) && (this.hasInteracted = true), void 0 !== i16 && (this.hasReceivedFirstUpdate = true); } this.updateState(); }, this.state = 1, this.isNext = false, this.isPrevious = false, this.hasInteracted = false, this.hasEverBeenExpanded = false, this.hasReceivedFirstUpdate = false, this.value = "ion-accordion-" + b6++, this.disabled = false, this.readonly = false, this.toggleIcon = g3, this.toggleIconSlot = "end", this.setItemDefaults = () => { const t17 = this.getSlottedHeaderIonItem(); t17 && (t17.button = true, t17.detail = false, void 0 === t17.lines && (t17.lines = "full")); }, this.getSlottedHeaderIonItem = () => { const { headerEl: t17 } = this; if (!t17) return; const i16 = t17.querySelector("slot"); return i16 && void 0 !== i16.assignedElements ? i16.assignedElements().find(((t18) => "ION-ITEM" === t18.tagName)) : void 0; }, this.setAria = (t17 = false) => { const i16 = this.getSlottedHeaderIonItem(); if (!i16) return; const o14 = c(i16).querySelector("button"); o14 && o14.setAttribute("aria-expanded", "" + t17); }, this.slotToggleIcon = () => { const t17 = this.getSlottedHeaderIonItem(); if (!t17) return; const { toggleIconSlot: i16, toggleIcon: o14 } = this; if (t17.querySelector(".ion-accordion-toggle-icon")) return; const e16 = document.createElement("ion-icon"); e16.slot = i16, e16.lazy = false, e16.classList.add("ion-accordion-toggle-icon"), e16.icon = o14, e16.setAttribute("aria-hidden", "true"), t17.appendChild(e16); }, this.expandAccordion = () => { const { contentEl: t17, contentElWrapper: i16 } = this; if (void 0 === t17 || void 0 === i16) return this.state = 4, void (this.hasEverBeenExpanded = true); 4 !== this.state && (void 0 !== this.currentRaf && cancelAnimationFrame(this.currentRaf), this.hasEverBeenExpanded = true, this.shouldAnimate() ? d2((() => { this.state = 8, this.currentRaf = d2((() => __async(this, null, function* () { const o14 = i16.offsetHeight, e16 = i(t17, 2e3); t17.style.setProperty("max-height", o14 + "px"), yield e16, this.state = 4, t17.style.removeProperty("max-height"); }))); })) : this.state = 4); }, this.collapseAccordion = () => { const { contentEl: t17 } = this; void 0 !== t17 ? 1 !== this.state && (void 0 !== this.currentRaf && cancelAnimationFrame(this.currentRaf), this.shouldAnimate() ? this.currentRaf = d2((() => __async(this, null, function* () { t17.style.setProperty("max-height", t17.offsetHeight + "px"), d2((() => __async(this, null, function* () { const i16 = i(t17, 2e3); this.state = 2, yield i16, this.state = 1, t17.style.removeProperty("max-height"); }))); }))) : this.state = 1) : this.state = 1; }, this.shouldAnimate = () => !(!this.hasInteracted || !this.hasEverBeenExpanded) && ("undefined" != typeof window && (!matchMedia("(prefers-reduced-motion: reduce)").matches && !(!n.get("animated", true) || this.accordionGroupEl && !this.accordionGroupEl.animated))), this.updateState = () => __async(this, null, function* () { const t17 = this.accordionGroupEl, i16 = this.value; if (!t17) return; const o14 = t17.value; if (Array.isArray(o14) ? o14.includes(i16) : o14 === i16) this.expandAccordion(), this.isNext = this.isPrevious = false; else { this.collapseAccordion(); const t18 = this.getNextSibling(), i17 = null == t18 ? void 0 : t18.value; void 0 !== i17 && (this.isPrevious = Array.isArray(o14) ? o14.includes(i17) : o14 === i17); const e16 = this.getPreviousSibling(), n15 = null == e16 ? void 0 : e16.value; void 0 !== n15 && (this.isNext = Array.isArray(o14) ? o14.includes(n15) : o14 === n15); } }), this.getNextSibling = () => { if (!this.el) return; const t17 = this.el.nextElementSibling; return "ION-ACCORDION" === (null == t17 ? void 0 : t17.tagName) ? t17 : void 0; }, this.getPreviousSibling = () => { if (!this.el) return; const t17 = this.el.previousElementSibling; return "ION-ACCORDION" === (null == t17 ? void 0 : t17.tagName) ? t17 : void 0; }; } valueChanged() { this.updateState(); } connectedCallback() { var t16; const i16 = this.accordionGroupEl = null === (t16 = this.el) || void 0 === t16 ? void 0 : t16.closest("ion-accordion-group"); i16 && (this.updateState(), l(i16, "ionValueChange", this.accordionGroupUpdateHandler)); } disconnectedCallback() { const t16 = this.accordionGroupEl; t16 && u2(t16, "ionValueChange", this.accordionGroupUpdateHandler); } componentDidLoad() { this.setItemDefaults(), this.slotToggleIcon(), d2((() => { this.setAria(4 === this.state || 8 === this.state); })); } toggleExpanded() { const { accordionGroupEl: t16, disabled: i16, readonly: o14, value: e16, state: n15 } = this; i16 || o14 || (this.hasInteracted = true, !t16) || t16.requestAccordionToggle(e16, 1 === n15 || 2 === n15); } render() { const { disabled: t16, readonly: i16 } = this, o14 = g(this), e16 = 4 === this.state || 8 === this.state, a16 = e16 ? "header expanded" : "header", c36 = e16 ? "content expanded" : "content"; return this.setAria(e16), Ct(It, { key: "5c58b3809a4636d69f0f9957ecf1f50c42cdfc03", class: { [o14]: true, "accordion-expanding": 8 === this.state, "accordion-expanded": 4 === this.state, "accordion-collapsing": 2 === this.state, "accordion-collapsed": 1 === this.state, "accordion-next": this.isNext, "accordion-previous": this.isPrevious, "accordion-disabled": t16, "accordion-readonly": i16, "accordion-animated": this.shouldAnimate() }, tabindex: t16 ? "-1" : void 0 }, Ct("div", { key: "f76bc02347639b41c9a5be8a9488a8be8559cba7", onClick: () => this.toggleExpanded(), id: "header", part: a16, "aria-controls": "content", ref: (t17) => this.headerEl = t17 }, Ct("slot", { key: "e01744bf0af3200239e82c60c632ed36295db2da", name: "header" })), Ct("div", { key: "c613345a7e244ee361f76ff4ebed139d2a1b9572", id: "content", part: c36, role: "region", "aria-labelledby": "header", ref: (t17) => this.contentEl = t17 }, Ct("div", { key: "943b65d9a129759b4c213974ae5ed777b5f6166e", id: "content-wrapper", ref: (t17) => this.contentElWrapper = t17 }, Ct("slot", { key: "b0df520dad9d5557df63a35f8206ada4a765d238", name: "content" })))); } static get delegatesFocus() { return true; } get el() { return this; } static get watchers() { return { value: [{ valueChanged: 0 }] }; } static get style() { return { ios: ":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-expanding) #content-wrapper{overflow:auto}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}:host(.accordion-next) ::slotted(ion-item[slot=header]){--border-width:0.55px 0px 0.55px 0px}", md: ":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-expanding) #content-wrapper{overflow:auto}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}" }; } }, [305, "ion-accordion", { value: [1], disabled: [4], readonly: [4], toggleIcon: [1, "toggle-icon"], toggleIconSlot: [1, "toggle-icon-slot"], state: [32], isNext: [32], isPrevious: [32], hasInteracted: [32] }, void 0, { value: [{ valueChanged: 0 }] }]); var b6 = 0; var f10 = function() { "undefined" != typeof customElements && ["ion-accordion", "ion-icon"].forEach(((t16) => { switch (t16) { case "ion-accordion": customElements.get(Zn(t16)) || customElements.define(Zn(t16), u7); break; case "ion-icon": customElements.get(Zn(t16)) || y4(); } })); }; // node_modules/@ionic/core/components/ion-accordion-group.js var d6 = Dn(class extends I { constructor(o14) { super(), false !== o14 && this.__registerHost(), this.__attachShadow(), this.ionChange = Jt(this, "ionChange", 7), this.ionValueChange = Jt(this, "ionValueChange", 7), this.animated = true, this.disabled = false, this.readonly = false, this.expand = "compact"; } valueChanged() { const { value: o14, multiple: n15 } = this; !n15 && Array.isArray(o14) && u(`[ion-accordion-group] - An array of values was passed, but multiple is "false". This is incorrect usage and may result in unexpected behaviors. To dismiss this warning, pass a string to the "value" property when multiple="false". Value Passed: [${o14.map(((o15) => `'${o15}'`)).join(", ")}] `, this.el), this.ionValueChange.emit({ value: this.value }); } disabledChanged() { return __async(this, null, function* () { const { disabled: o14 } = this, n15 = yield this.getAccordions(); for (const i16 of n15) i16.disabled = o14; }); } readonlyChanged() { return __async(this, null, function* () { const { readonly: o14 } = this, n15 = yield this.getAccordions(); for (const i16 of n15) i16.readonly = o14; }); } onKeydown(o14) { return __async(this, null, function* () { const n15 = document.activeElement; if (!n15) return; if (!n15.closest('ion-accordion [slot="header"]')) return; const i16 = "ION-ACCORDION" === n15.tagName ? n15 : n15.closest("ion-accordion"); if (!i16) return; if (i16.closest("ion-accordion-group") !== this.el) return; const t16 = yield this.getAccordions(), e16 = t16.findIndex(((o15) => o15 === i16)); if (-1 === e16) return; let a16; "ArrowDown" === o14.key ? a16 = this.findNextAccordion(t16, e16) : "ArrowUp" === o14.key ? a16 = this.findPreviousAccordion(t16, e16) : "Home" === o14.key ? a16 = t16[0] : "End" === o14.key && (a16 = t16[t16.length - 1]), void 0 !== a16 && a16 !== n15 && a16.focus(); }); } componentDidLoad() { return __async(this, null, function* () { this.disabled && this.disabledChanged(), this.readonly && this.readonlyChanged(), this.valueChanged(); }); } setValue(o14) { const n15 = this.value = o14; this.ionChange.emit({ value: n15 }); } requestAccordionToggle(o14, n15) { return __async(this, null, function* () { const { multiple: i16, value: t16, readonly: e16, disabled: a16 } = this; if (!e16 && !a16) if (n15) if (i16) { const n16 = null != t16 ? t16 : [], i17 = Array.isArray(n16) ? n16 : [n16]; void 0 === i17.find(((n17) => n17 === o14)) && void 0 !== o14 && this.setValue([...i17, o14]); } else this.setValue(o14); else if (i16) { const n16 = null != t16 ? t16 : []; this.setValue((Array.isArray(n16) ? n16 : [n16]).filter(((n17) => n17 !== o14))); } else this.setValue(void 0); }); } findNextAccordion(o14, n15) { const i16 = o14[n15 + 1]; return void 0 === i16 ? o14[0] : i16; } findPreviousAccordion(o14, n15) { const i16 = o14[n15 - 1]; return void 0 === i16 ? o14[o14.length - 1] : i16; } getAccordions() { return __async(this, null, function* () { return Array.from(this.el.querySelectorAll(":scope > ion-accordion")); }); } render() { const { disabled: o14, readonly: n15, expand: i16 } = this, t16 = g(this); return Ct(It, { key: "d1a79a93179474fbba66fcf11a92f4871dacc975", class: { [t16]: true, "accordion-group-disabled": o14, "accordion-group-readonly": n15, ["accordion-group-expand-" + i16]: true }, role: "presentation" }, Ct("slot", { key: "e6b8954b686d1fbb4fc92adb07fddc97a24b0a31" })); } get el() { return this; } static get watchers() { return { value: [{ valueChanged: 0 }], disabled: [{ disabledChanged: 0 }], readonly: [{ readonlyChanged: 0 }] }; } static get style() { return { ios: ":host{display:block}:host(.accordion-group-expand-inset){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:16px;margin-bottom:16px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanding),:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanded){border-bottom:none}", md: ":host{display:block}:host(.accordion-group-expand-inset){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:16px;margin-bottom:16px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion){-webkit-box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanding),:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanded){margin-left:0;margin-right:0;margin-top:16px;margin-bottom:16px;border-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-previous){border-end-end-radius:6px;border-end-start-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-next){border-start-start-radius:6px;border-start-end-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion):first-of-type{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}" }; } }, [289, "ion-accordion-group", { animated: [4], multiple: [4], value: [1025], disabled: [4], readonly: [4], expand: [1], requestAccordionToggle: [64], getAccordions: [64] }, [[0, "keydown", "onKeydown"]], { value: [{ valueChanged: 0 }], disabled: [{ disabledChanged: 0 }], readonly: [{ readonlyChanged: 0 }] }]); var p9 = function() { "undefined" != typeof customElements && ["ion-accordion-group"].forEach(((o14) => { "ion-accordion-group" === o14 && (customElements.get(Zn(o14)) || customElements.define(Zn(o14), d6)); })); }; // node_modules/@ionic/core/components/p-cyNmxje6.js var n7; var s8; !(function(t16) { t16.Heavy = "HEAVY", t16.Medium = "MEDIUM", t16.Light = "LIGHT"; })(n7 || (n7 = {})), (function(t16) { t16.Success = "SUCCESS", t16.Warning = "WARNING", t16.Error = "ERROR"; })(s8 || (s8 = {})); var i10 = { getEngine() { const n15 = r3(); if (null == n15 ? void 0 : n15.isPluginAvailable("Haptics")) return n15.Plugins.Haptics; }, available() { if (!this.getEngine()) return false; const n15 = r3(); return "web" !== (null == n15 ? void 0 : n15.getPlatform()) || "undefined" != typeof navigator && void 0 !== navigator.vibrate; }, impact(t16) { const n15 = this.getEngine(); n15 && n15.impact({ style: t16.style }); }, notification(t16) { const n15 = this.getEngine(); n15 && n15.notification({ type: t16.type }); }, selection() { this.impact({ style: n7.Light }); }, selectionStart() { const t16 = this.getEngine(); t16 && t16.selectionStart(); }, selectionChanged() { const t16 = this.getEngine(); t16 && t16.selectionChanged(); }, selectionEnd() { const t16 = this.getEngine(); t16 && t16.selectionEnd(); } }; var o10 = () => i10.available(); var e10 = () => { o10() && i10.selection(); }; var a8 = () => { o10() && i10.selectionStart(); }; var c12 = () => { o10() && i10.selectionChanged(); }; var r8 = () => { o10() && i10.selectionEnd(); }; var l11 = (t16) => { o10() && i10.impact(t16); }; // node_modules/@ionic/core/components/p-C4jPsTQa.js var s9 = (s21, a16) => { let i16, c36; const d24 = (t16, o14, e16) => { if ("undefined" == typeof document) return; const n15 = document.elementFromPoint(t16, o14); n15 && a16(n15) && !n15.disabled ? n15 !== i16 && (f27(), m26(n15, e16)) : f27(); }, m26 = (o14, e16) => { i16 = o14, c36 || (c36 = i16); const n15 = i16; P((() => n15.classList.add("ion-activated"))), e16(); }, f27 = (o14 = false) => { if (!i16) return; const e16 = i16; P((() => e16.classList.remove("ion-activated"))), o14 && c36 !== i16 && i16.click(), i16 = void 0; }; return s4({ el: s21, gestureName: "buttonActiveDrag", threshold: 0, onStart: (t16) => d24(t16.currentX, t16.currentY, a8), onMove: (t16) => d24(t16.currentX, t16.currentY, c12), onEnd: () => { f27(true), r8(), c36 = void 0; } }); }; // node_modules/@ionic/core/components/p-1KVKSLu5.js var D3 = (t16) => { const o14 = r(), e16 = r(), i16 = r(); return e16.addElement(t16.querySelector("ion-backdrop")).fromTo("opacity", 0.01, "var(--backdrop-opacity)").beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), i16.addElement(t16.querySelector(".action-sheet-wrapper")).fromTo("transform", "translateY(100%)", "translateY(0%)"), o14.addElement(t16).easing("cubic-bezier(.36,.66,.04,1)").duration(400).addAnimation([e16, i16]); }; var A2 = (t16) => { const o14 = r(), e16 = r(), i16 = r(); return e16.addElement(t16.querySelector("ion-backdrop")).fromTo("opacity", "var(--backdrop-opacity)", 0), i16.addElement(t16.querySelector(".action-sheet-wrapper")).fromTo("transform", "translateY(0%)", "translateY(100%)"), o14.addElement(t16).easing("cubic-bezier(.36,.66,.04,1)").duration(450).addAnimation([e16, i16]); }; var O4 = (t16) => { const o14 = r(), e16 = r(), i16 = r(); return e16.addElement(t16.querySelector("ion-backdrop")).fromTo("opacity", 0.01, "var(--backdrop-opacity)").beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), i16.addElement(t16.querySelector(".action-sheet-wrapper")).fromTo("transform", "translateY(100%)", "translateY(0%)"), o14.addElement(t16).easing("cubic-bezier(.36,.66,.04,1)").duration(400).addAnimation([e16, i16]); }; var I3 = (t16) => { const o14 = r(), e16 = r(), i16 = r(); return e16.addElement(t16.querySelector("ion-backdrop")).fromTo("opacity", "var(--backdrop-opacity)", 0), i16.addElement(t16.querySelector(".action-sheet-wrapper")).fromTo("transform", "translateY(0%)", "translateY(100%)"), o14.addElement(t16).easing("cubic-bezier(.36,.66,.04,1)").duration(450).addAnimation([e16, i16]); }; var B5 = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(), this.didPresent = Jt(this, "ionActionSheetDidPresent", 7), this.willPresent = Jt(this, "ionActionSheetWillPresent", 7), this.willDismiss = Jt(this, "ionActionSheetWillDismiss", 7), this.didDismiss = Jt(this, "ionActionSheetDidDismiss", 7), this.didPresentShorthand = Jt(this, "didPresent", 7), this.willPresentShorthand = Jt(this, "willPresent", 7), this.willDismissShorthand = Jt(this, "willDismiss", 7), this.didDismissShorthand = Jt(this, "didDismiss", 7), this.delegateController = X(this), this.lockController = t10(), this.triggerController = Y(), this.hasRadioButtons = false, this.presented = false, this.hasController = false, this.keyboardClose = true, this.buttons = [], this.backdropDismiss = true, this.translucent = false, this.animated = true, this.isOpen = false, this.onBackdropTap = () => { this.dismiss(void 0, H); }, this.dispatchCancelHandler = (t17) => { if (Q(t17.detail.role)) { const t18 = this.getButtons().find(((t19) => "cancel" === t19.role)); this.callButtonHandler(t18); } }; } buttonsChanged() { const t16 = this.getRadioButtons(); if (this.hasRadioButtons = t16.length > 0, this.hasRadioButtons) { const o14 = t16.find(((t17) => { var o15; return "true" === (null === (o15 = t17.htmlAttributes) || void 0 === o15 ? void 0 : o15["aria-checked"]); })); if (o14) { const t17 = this.getButtons().indexOf(o14); this.activeRadioId = this.getButtonId(o14, t17); } } } onIsOpenChange(t16, o14) { true === t16 && false === o14 ? this.present() : false === t16 && true === o14 && this.dismiss(); } triggerChanged() { const { trigger: t16, el: o14, triggerController: e16 } = this; t16 && e16.addClickListener(o14, t16); } present() { return __async(this, null, function* () { const t16 = yield this.lockController.lock(); yield this.delegateController.attachViewToDom(), yield $(this, "actionSheetEnter", D3, O4), t16(); }); } dismiss(t16, o14) { return __async(this, null, function* () { const e16 = yield this.lockController.lock(), i16 = yield J(this, t16, o14, "actionSheetLeave", A2, I3); return i16 && this.delegateController.removeViewFromDom(), e16(), i16; }); } onDidDismiss() { return q2(this.el, "ionActionSheetDidDismiss"); } onWillDismiss() { return q2(this.el, "ionActionSheetWillDismiss"); } buttonClick(t16) { return __async(this, null, function* () { const o14 = t16.role; return Q(o14) ? this.dismiss(t16.data, o14) : (yield this.callButtonHandler(t16)) ? this.dismiss(t16.data, t16.role) : Promise.resolve(); }); } callButtonHandler(t16) { return __async(this, null, function* () { return !t16 || false !== (yield _2(t16.handler)); }); } getButtons() { return this.buttons.map(((t16) => "string" == typeof t16 ? { text: t16 } : t16)); } getRadioButtons() { return this.getButtons().filter(((t16) => { var o14; const e16 = null === (o14 = t16.htmlAttributes) || void 0 === o14 ? void 0 : o14.role; return "radio" === e16 && !Q(e16); })); } selectRadioButton(t16) { const o14 = this.getButtonId(t16); this.activeRadioId = o14; } getButtonId(t16, o14) { if (t16.id) return t16.id; const e16 = this.getButtons(), i16 = void 0 !== o14 ? o14 : e16.indexOf(t16); return `action-sheet-button-${this.overlayIndex}-${i16}`; } onKeydown(t16) { if (!this.hasRadioButtons || !this.presented) return; const o14 = t16.target; if (!this.el.contains(o14) || !o14.classList.contains("action-sheet-button") || "radio" !== o14.getAttribute("role")) return; const e16 = Array.from(this.el.querySelectorAll('.action-sheet-button[role="radio"]')).filter(((t17) => !t17.disabled)), i16 = e16.findIndex(((t17) => t17.id === o14.id)); if (-1 === i16) return; const n15 = this.getButtons(), a16 = this.getRadioButtons(), s21 = /* @__PURE__ */ new Map(); let r32; if (a16.forEach(((t17) => { const o15 = n15.indexOf(t17), e17 = this.getButtonId(t17, o15); s21.set(e17, t17); })), ["ArrowDown", "ArrowRight"].includes(t16.key)) t16.preventDefault(), t16.stopPropagation(), r32 = i16 === e16.length - 1 ? e16[0] : e16[i16 + 1]; else if (["ArrowUp", "ArrowLeft"].includes(t16.key)) t16.preventDefault(), t16.stopPropagation(), r32 = 0 === i16 ? e16[e16.length - 1] : e16[i16 - 1]; else if (" " === t16.key || "Enter" === t16.key) { t16.preventDefault(), t16.stopPropagation(); const e17 = s21.get(o14.id); return void (e17 && (this.selectRadioButton(e17), this.buttonClick(e17))); } if (r32) { const t17 = s21.get(r32.id); t17 && (this.selectRadioButton(t17), r32.focus()); } } connectedCallback() { I2(this.el), this.triggerChanged(); } disconnectedCallback() { this.gesture && (this.gesture.destroy(), this.gesture = void 0), this.triggerController.removeClickListener(); } componentWillLoad() { var t16; (null === (t16 = this.htmlAttributes) || void 0 === t16 ? void 0 : t16.id) || N(this.el), this.buttonsChanged(); } componentDidLoad() { const { groupEl: t16, wrapperEl: o14 } = this; !this.gesture && "ios" === g(this) && o14 && t16 && W((() => { t16.scrollHeight > t16.clientHeight || (this.gesture = s9(o14, ((t17) => t17.classList.contains("action-sheet-button"))), this.gesture.enable(true)); })), true === this.isOpen && d2((() => this.present())), this.triggerChanged(); } renderActionSheetButtons(t16) { const o14 = g(this), { activeRadioId: e16 } = this; return t16.map(((t17, i16) => { var a16; const s21 = "radio" === (null === (a16 = t17.htmlAttributes) || void 0 === a16 ? void 0 : a16.role), r32 = this.getButtonId(t17, i16), c36 = this.getRadioButtons(), d24 = s21 && r32 === e16; let l28; l28 = s21 ? d24 || !e16 && s21 && t17 === c36[0] ? 0 : -1 : void 0; const h19 = Object.assign({}, t17.htmlAttributes); return s21 && (h19["aria-checked"] = d24 ? "true" : "false"), Ct("button", Object.assign({}, h19, { role: s21 ? "radio" : void 0, type: "button", id: r32, class: Object.assign(Object.assign({}, E4(t17)), { "action-sheet-selected": d24 }), onClick: () => { s21 && this.selectRadioButton(t17), this.buttonClick(t17); }, disabled: t17.disabled, tabIndex: l28 }), Ct("span", { class: "action-sheet-button-inner" }, t17.icon && Ct("ion-icon", { icon: t17.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), t17.text), "md" === o14 && Ct("ion-ripple-effect", null)); })); } render() { const { header: t16, htmlAttributes: o14, overlayIndex: e16, hasRadioButtons: i16 } = this, s21 = g(this), r32 = this.getButtons(), c36 = r32.find(((t17) => "cancel" === t17.role)), d24 = r32.filter(((t17) => "cancel" !== t17.role)), l28 = `action-sheet-${e16}-header`; return Ct(It, Object.assign({ key: "173fcff5b1da7c33c267de4667591c946b8c8d03", role: "dialog", "aria-modal": "true", "aria-labelledby": void 0 !== t16 ? l28 : null, tabindex: "-1" }, o14, { style: { zIndex: `${2e4 + this.overlayIndex}` }, class: Object.assign(Object.assign({ [s21]: true }, r5(this.cssClass)), { "overlay-hidden": true, "action-sheet-translucent": this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), Ct("ion-backdrop", { key: "521ede659f747864f6c974e09016436eceb7158c", tappable: this.backdropDismiss }), Ct("div", { key: "7a7946fc434bc444f16a70638f5e948c69d33fcd", tabindex: "0", "aria-hidden": "true" }), Ct("div", { key: "bcff39a580489dbafa255842e57aa8602c6d0f18", class: "action-sheet-wrapper ion-overlay-wrapper", ref: (t17) => this.wrapperEl = t17 }, Ct("div", { key: "84bba13ce14261f0f0daa3f9c77648c9e7f36e0e", class: "action-sheet-container" }, Ct("div", { key: "d9c8ac404fd6719a7adf8cb36549f67616f9a0c4", class: "action-sheet-group", ref: (t17) => this.groupEl = t17, role: i16 ? "radiogroup" : void 0 }, void 0 !== t16 && Ct("div", { key: "180433a8ad03ef5c54728a1a8f34715b6921d658", id: l28, class: { "action-sheet-title": true, "action-sheet-has-sub-title": void 0 !== this.subHeader } }, t16, this.subHeader && Ct("div", { key: "7138e79e61b1a8f42bc5a9175c57fa2f15d7ec5a", class: "action-sheet-sub-title" }, this.subHeader)), this.renderActionSheetButtons(d24)), c36 && Ct("div", { key: "b617c722f5b8028d73ed34b69310f312c65f34a7", class: "action-sheet-group action-sheet-group-cancel" }, Ct("button", Object.assign({ key: "d0dd876fc48815df3710413c201c0b445a8e16c0" }, c36.htmlAttributes, { type: "button", class: E4(c36), onClick: () => this.buttonClick(c36) }), Ct("span", { key: "e7b960157cc6fc5fe92a12090b2be55e8ae072e4", class: "action-sheet-button-inner" }, c36.icon && Ct("ion-icon", { key: "05498ffc60cab911dbff0ecbc6168dea59ada9a5", icon: c36.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), c36.text), "md" === s21 && Ct("ion-ripple-effect", { key: "3d401346cea301be4ca03671f7370f6f4b0b6bde" }))))), Ct("div", { key: "971f3c5fcc07f36c28eb469a47ec0290c692e139", tabindex: "0", "aria-hidden": "true" })); } get el() { return this; } static get watchers() { return { buttons: [{ buttonsChanged: 0 }], isOpen: [{ onIsOpenChange: 0 }], trigger: [{ triggerChanged: 0 }] }; } static get style() { return { ios: '.sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:.08;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color-step-150, var(--ion-background-color, #fff)));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #0054e9);--button-color-disabled:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--color:var(--ion-color-step-400, var(--ion-text-color-step-600, #999999));text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);padding-bottom:var(--ion-safe-area-bottom, 0);-webkit-box-sizing:content-box;box-sizing:content-box}.action-sheet-container.sc-ion-action-sheet-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-size:max(13px, 0.8125rem);font-weight:400;text-align:center}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:max(13px, 0.8125rem);font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{-webkit-padding-start:14px;padding-inline-start:14px;-webkit-padding-end:14px;padding-inline-end:14px;padding-top:14px;padding-bottom:14px;min-height:56px;font-size:max(20px, 1.25rem);contain:content}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:max(28px, 1.75rem);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #c5000f)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #c5000f)}}', md: '.sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--button-color-disabled:var(--button-color);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}.action-sheet-title.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:1rem;text-align:start}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:0.875rem}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;position:relative;min-height:52px;font-size:1rem;text-align:start;contain:content;overflow:hidden}.action-sheet-icon.sc-ion-action-sheet-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:1.5rem}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}' }; } }, [34, "ion-action-sheet", { overlayIndex: [2, "overlay-index"], delegate: [16], hasController: [4, "has-controller"], keyboardClose: [4, "keyboard-close"], enterAnimation: [16], leaveAnimation: [16], buttons: [16], cssClass: [1, "css-class"], backdropDismiss: [4, "backdrop-dismiss"], header: [1], subHeader: [1, "sub-header"], translucent: [4], animated: [4], htmlAttributes: [16], isOpen: [4, "is-open"], trigger: [1], activeRadioId: [32], present: [64], dismiss: [64], onDidDismiss: [64], onWillDismiss: [64] }, [[0, "keydown", "onKeydown"]], { buttons: [{ buttonsChanged: 0 }], isOpen: [{ onIsOpenChange: 0 }], trigger: [{ triggerChanged: 0 }] }]); var E4 = (t16) => Object.assign({ "action-sheet-button": true, "ion-activatable": !t16.disabled, "ion-focusable": !t16.disabled, [`action-sheet-${t16.role}`]: void 0 !== t16.role }, r5(t16.cssClass)); function S3() { "undefined" != typeof customElements && ["ion-action-sheet", "ion-backdrop", "ion-icon", "ion-ripple-effect"].forEach(((t16) => { switch (t16) { case "ion-action-sheet": customElements.get(Zn(t16)) || customElements.define(Zn(t16), B5); break; case "ion-backdrop": customElements.get(Zn(t16)) || c11(); break; case "ion-icon": customElements.get(Zn(t16)) || y4(); break; case "ion-ripple-effect": customElements.get(Zn(t16)) || p7(); } })); } // node_modules/@ionic/core/components/ion-action-sheet.js var r9 = S3; // node_modules/@ionic/core/components/p-CH0NYjKq.js var I4 = (t16) => { const e16 = r(), i16 = r(), r32 = r(); return i16.addElement(t16.querySelector("ion-backdrop")).fromTo("opacity", 0.01, "var(--backdrop-opacity)").beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), r32.addElement(t16.querySelector(".alert-wrapper")).keyframes([{ offset: 0, opacity: "0.01", transform: "scale(1.1)" }, { offset: 1, opacity: "1", transform: "scale(1)" }]), e16.addElement(t16).easing("ease-in-out").duration(200).addAnimation([i16, r32]); }; var $2 = (t16) => { const e16 = r(), i16 = r(), r32 = r(); return i16.addElement(t16.querySelector("ion-backdrop")).fromTo("opacity", "var(--backdrop-opacity)", 0), r32.addElement(t16.querySelector(".alert-wrapper")).keyframes([{ offset: 0, opacity: 0.99, transform: "scale(1)" }, { offset: 1, opacity: 0, transform: "scale(0.9)" }]), e16.addElement(t16).easing("ease-in-out").duration(200).addAnimation([i16, r32]); }; var E5 = (t16) => { const e16 = r(), i16 = r(), r32 = r(); return i16.addElement(t16.querySelector("ion-backdrop")).fromTo("opacity", 0.01, "var(--backdrop-opacity)").beforeStyles({ "pointer-events": "none" }).afterClearStyles(["pointer-events"]), r32.addElement(t16.querySelector(".alert-wrapper")).keyframes([{ offset: 0, opacity: "0.01", transform: "scale(0.9)" }, { offset: 1, opacity: "1", transform: "scale(1)" }]), e16.addElement(t16).easing("ease-in-out").duration(150).addAnimation([i16, r32]); }; var T3 = (t16) => { const e16 = r(), i16 = r(), r32 = r(); return i16.addElement(t16.querySelector("ion-backdrop")).fromTo("opacity", "var(--backdrop-opacity)", 0), r32.addElement(t16.querySelector(".alert-wrapper")).fromTo("opacity", 0.99, 0), e16.addElement(t16).easing("ease-in-out").duration(150).addAnimation([i16, r32]); }; var B6 = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(), this.didPresent = Jt(this, "ionAlertDidPresent", 7), this.willPresent = Jt(this, "ionAlertWillPresent", 7), this.willDismiss = Jt(this, "ionAlertWillDismiss", 7), this.didDismiss = Jt(this, "ionAlertDidDismiss", 7), this.didPresentShorthand = Jt(this, "didPresent", 7), this.willPresentShorthand = Jt(this, "willPresent", 7), this.willDismissShorthand = Jt(this, "willDismiss", 7), this.didDismissShorthand = Jt(this, "didDismiss", 7), this.delegateController = X(this), this.lockController = t10(), this.triggerController = Y(), this.customHTMLEnabled = n.get("innerHTMLTemplatesEnabled", l6), this.processedInputs = [], this.processedButtons = [], this.presented = false, this.hasController = false, this.keyboardClose = true, this.buttons = [], this.inputs = [], this.backdropDismiss = true, this.translucent = false, this.animated = true, this.isOpen = false, this.onBackdropTap = () => { this.dismiss(void 0, H); }, this.dispatchCancelHandler = (t17) => { if (Q(t17.detail.role)) { const t18 = this.processedButtons.find(((t19) => "cancel" === t19.role)); this.callButtonHandler(t18); } }; } onIsOpenChange(t16, e16) { true === t16 && false === e16 ? this.present() : false === t16 && true === e16 && this.dismiss(); } triggerChanged() { const { trigger: t16, el: e16, triggerController: i16 } = this; t16 && i16.addClickListener(e16, t16); } onKeydown(t16) { var e16; const i16 = new Set(this.processedInputs.map(((t17) => t17.type))); if (i16.has("checkbox") && "Enter" === t16.key) return void t16.preventDefault(); if (t16.target.classList.contains("alert-wrapper") && "Tab" === t16.key && t16.shiftKey) return t16.preventDefault(), void (null === (e16 = this.wrapperEl) || void 0 === e16 ? void 0 : e16.querySelector(".alert-button:last-child")).focus(); if (!i16.has("radio") || t16.target && !this.el.contains(t16.target) || t16.target.classList.contains("alert-button")) return; const r32 = this.el.querySelectorAll(".alert-radio"), o14 = Array.from(r32).filter(((t17) => !t17.disabled)), a16 = o14.findIndex(((e17) => e17.id === t16.target.id)); let n15; if (["ArrowDown", "ArrowRight"].includes(t16.key) && (n15 = a16 === o14.length - 1 ? o14[0] : o14[a16 + 1]), ["ArrowUp", "ArrowLeft"].includes(t16.key) && (n15 = 0 === a16 ? o14[o14.length - 1] : o14[a16 - 1]), n15 && o14.includes(n15)) { const t17 = this.processedInputs.find(((t18) => t18.id === (null == n15 ? void 0 : n15.id))); t17 && (this.rbClick(t17), n15.focus()); } } buttonsChanged() { this.processedButtons = this.buttons.map(((t16) => "string" == typeof t16 ? { text: t16, role: "cancel" === t16.toLowerCase() ? "cancel" : void 0 } : t16)); } inputsChanged() { const t16 = this.inputs, e16 = t16.find(((t17) => !t17.disabled)), i16 = t16.find(((t17) => t17.checked && !t17.disabled)) || e16, r32 = new Set(t16.map(((t17) => t17.type))); r32.has("checkbox") && r32.has("radio") && u(`[ion-alert] - Alert cannot mix input types: ${Array.from(r32.values()).join("/")}. Please see alert docs for more info.`), this.inputType = r32.values().next().value, this.processedInputs = t16.map(((t17, e17) => { var r33; return { type: t17.type || "text", name: t17.name || `${e17}`, placeholder: t17.placeholder || "", value: t17.value, label: t17.label, checked: !!t17.checked, disabled: !!t17.disabled, id: t17.id || `alert-input-${this.overlayIndex}-${e17}`, handler: t17.handler, min: t17.min, max: t17.max, cssClass: null !== (r33 = t17.cssClass) && void 0 !== r33 ? r33 : "", attributes: t17.attributes || {}, tabindex: "radio" === t17.type && t17 !== i16 ? -1 : 0 }; })); } connectedCallback() { I2(this.el), this.triggerChanged(); } componentWillLoad() { var t16; (null === (t16 = this.htmlAttributes) || void 0 === t16 ? void 0 : t16.id) || N(this.el), this.inputsChanged(), this.buttonsChanged(); } disconnectedCallback() { this.triggerController.removeClickListener(), this.gesture && (this.gesture.destroy(), this.gesture = void 0); } componentDidLoad() { !this.gesture && "ios" === g(this) && this.wrapperEl && (this.gesture = s9(this.wrapperEl, ((t16) => t16.classList.contains("alert-button"))), this.gesture.enable(true)), true === this.isOpen && d2((() => this.present())), this.triggerChanged(); } present() { return __async(this, null, function* () { const t16 = yield this.lockController.lock(); yield this.delegateController.attachViewToDom(), yield $(this, "alertEnter", I4, E5).then((() => { var t17, e16; 1 === this.buttons.length && 0 === this.inputs.length ? (null === (t17 = this.wrapperEl) || void 0 === t17 ? void 0 : t17.querySelector(".alert-button")).focus() : null === (e16 = this.wrapperEl) || void 0 === e16 || e16.focus(); })), t16(); }); } dismiss(t16, e16) { return __async(this, null, function* () { const i16 = yield this.lockController.lock(), r32 = yield J(this, t16, e16, "alertLeave", $2, T3); return r32 && this.delegateController.removeViewFromDom(), i16(), r32; }); } onDidDismiss() { return q2(this.el, "ionAlertDidDismiss"); } onWillDismiss() { return q2(this.el, "ionAlertWillDismiss"); } rbClick(t16) { for (const e16 of this.processedInputs) e16.checked = e16 === t16, e16.tabindex = e16 === t16 ? 0 : -1; this.activeId = t16.id, _2(t16.handler, t16), Rn(this); } cbClick(t16) { t16.checked = !t16.checked, _2(t16.handler, t16), Rn(this); } buttonClick(t16) { return __async(this, null, function* () { const e16 = t16.role, i16 = this.getValues(); if (Q(e16)) return this.dismiss({ values: i16 }, e16); const r32 = yield this.callButtonHandler(t16, i16); return false !== r32 && this.dismiss(Object.assign({ values: i16 }, r32), t16.role); }); } callButtonHandler(t16, e16) { return __async(this, null, function* () { if (null == t16 ? void 0 : t16.handler) { const i16 = yield _2(t16.handler, e16); if (false === i16) return false; if ("object" == typeof i16) return i16; } return {}; }); } getValues() { if (0 === this.processedInputs.length) return; if ("radio" === this.inputType) { const t17 = this.processedInputs.find(((t18) => !!t18.checked)); return t17 ? t17.value : void 0; } if ("checkbox" === this.inputType) return this.processedInputs.filter(((t17) => t17.checked)).map(((t17) => t17.value)); const t16 = {}; return this.processedInputs.forEach(((e16) => { t16[e16.name] = e16.value || ""; })), t16; } renderAlertInputs() { switch (this.inputType) { case "checkbox": return this.renderCheckbox(); case "radio": return this.renderRadio(); default: return this.renderInput(); } } renderCheckbox() { const t16 = this.processedInputs, e16 = g(this); return 0 === t16.length ? null : Ct("div", { class: "alert-checkbox-group" }, t16.map(((t17) => Ct("button", { type: "button", onClick: () => this.cbClick(t17), "aria-checked": `${t17.checked}`, id: t17.id, disabled: t17.disabled, tabIndex: t17.tabindex, role: "checkbox", class: Object.assign(Object.assign({}, r5(t17.cssClass)), { "alert-tappable": true, "alert-checkbox": true, "alert-checkbox-button": true, "ion-focusable": true, "alert-checkbox-button-disabled": t17.disabled || false }) }, Ct("div", { class: "alert-button-inner" }, Ct("div", { class: "alert-checkbox-icon" }, Ct("div", { class: "alert-checkbox-inner" })), Ct("div", { class: "alert-checkbox-label" }, t17.label)), "md" === e16 && Ct("ion-ripple-effect", null))))); } renderRadio() { const t16 = this.processedInputs; return 0 === t16.length ? null : Ct("div", { class: "alert-radio-group", role: "radiogroup", "aria-activedescendant": this.activeId }, t16.map(((t17) => Ct("button", { type: "button", onClick: () => this.rbClick(t17), "aria-checked": `${t17.checked}`, disabled: t17.disabled, id: t17.id, tabIndex: t17.tabindex, class: Object.assign(Object.assign({}, r5(t17.cssClass)), { "alert-radio-button": true, "alert-tappable": true, "alert-radio": true, "ion-focusable": true, "alert-radio-button-disabled": t17.disabled || false }), role: "radio" }, Ct("div", { class: "alert-button-inner" }, Ct("div", { class: "alert-radio-icon" }, Ct("div", { class: "alert-radio-inner" })), Ct("div", { class: "alert-radio-label" }, t17.label)))))); } renderInput() { const t16 = this.processedInputs; return 0 === t16.length ? null : Ct("div", { class: "alert-input-group" }, t16.map(((t17) => { var e16, i16, r32, o14; return Ct("div", { class: "alert-input-wrapper" }, "textarea" === t17.type ? Ct("textarea", Object.assign({ placeholder: t17.placeholder, value: t17.value, id: t17.id, tabIndex: t17.tabindex }, t17.attributes, { disabled: null !== (i16 = null === (e16 = t17.attributes) || void 0 === e16 ? void 0 : e16.disabled) && void 0 !== i16 ? i16 : t17.disabled, class: L4(t17), onInput: (e17) => { var i17; t17.value = e17.target.value, (null === (i17 = t17.attributes) || void 0 === i17 ? void 0 : i17.onInput) && t17.attributes.onInput(e17); } })) : Ct("input", Object.assign({ placeholder: t17.placeholder, type: t17.type, min: t17.min, max: t17.max, value: t17.value, id: t17.id, tabIndex: t17.tabindex }, t17.attributes, { disabled: null !== (o14 = null === (r32 = t17.attributes) || void 0 === r32 ? void 0 : r32.disabled) && void 0 !== o14 ? o14 : t17.disabled, class: L4(t17), onInput: (e17) => { var i17; t17.value = e17.target.value, (null === (i17 = t17.attributes) || void 0 === i17 ? void 0 : i17.onInput) && t17.attributes.onInput(e17); } }))); }))); } renderAlertButtons() { const t16 = this.processedButtons, e16 = g(this); return Ct("div", { class: { "alert-button-group": true, "alert-button-group-vertical": t16.length > 2 } }, t16.map(((t17) => Ct("button", Object.assign({}, t17.htmlAttributes, { type: "button", id: t17.id, class: W4(t17), tabIndex: 0, onClick: () => this.buttonClick(t17) }), Ct("span", { class: "alert-button-inner" }, t17.text), "md" === e16 && Ct("ion-ripple-effect", null))))); } renderAlertMessage(t16) { const { customHTMLEnabled: e16, message: i16 } = this; return e16 ? Ct("div", { id: t16, class: "alert-message", innerHTML: n4(i16) }) : Ct("div", { id: t16, class: "alert-message" }, i16); } render() { const { overlayIndex: t16, header: e16, subHeader: i16, message: r32, htmlAttributes: o14 } = this, a16 = g(this), s21 = `alert-${t16}-hdr`, d24 = `alert-${t16}-msg`, c36 = `alert-${t16}-sub-hdr`, p33 = this.inputs.length > 0 || this.buttons.length > 0 ? "alertdialog" : "alert", b20 = e16 && i16 ? `${s21} ${c36}` : e16 ? s21 : i16 ? c36 : null; return Ct(It, { key: "6025440b9cd369d4fac89e7e4296c84a10a0b8e0", tabindex: "-1", style: { zIndex: `${2e4 + t16}` }, class: Object.assign(Object.assign({}, r5(this.cssClass)), { [a16]: true, "overlay-hidden": true, "alert-translucent": this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, Ct("ion-backdrop", { key: "3cd5ca8b99cb95b11dd22ab41a820d841142896f", tappable: this.backdropDismiss }), Ct("div", { key: "4cc62ae6e21424057d22aeef1e8fc77011e77cd5", tabindex: "0", "aria-hidden": "true" }), Ct("div", Object.assign({ key: "364057a69f25aa88904df17bdcf7e5bf714e7830", class: "alert-wrapper ion-overlay-wrapper", role: p33, "aria-modal": "true", "aria-labelledby": b20, "aria-describedby": void 0 !== r32 ? d24 : null, tabindex: "0", ref: (t17) => this.wrapperEl = t17 }, o14), Ct("div", { key: "78694e3c0db2d408df3899fb1a90859bcc8d14cc", class: "alert-head" }, e16 && Ct("h2", { key: "ec88ff3e4e1ea871b5975133fdcf4cac38b05e0f", id: s21, class: "alert-title" }, e16), i16 && !e16 && Ct("h2", { key: "9b09bc8bb68af255ef8b7d22587acc946148e544", id: c36, class: "alert-sub-title" }, i16), i16 && e16 && Ct("h3", { key: "99abe815f75d2df7f1b77c0df9f3436724fea76f", id: c36, class: "alert-sub-title" }, i16)), this.renderAlertMessage(d24), this.renderAlertInputs(), this.renderAlertButtons()), Ct("div", { key: "a43d0c22c0e46b1ef911f92ffeb253d7911b85f7", tabindex: "0", "aria-hidden": "true" })); } get el() { return this; } static get watchers() { return { isOpen: [{ onIsOpenChange: 0 }], trigger: [{ triggerChanged: 0 }], buttons: [{ buttonsChanged: 0 }], inputs: [{ inputsChanged: 0 }] }; } static get style() { return { ios: ".sc-ion-alert-ios-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-ios-h{display:none}.alert-top.sc-ion-alert-ios-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-ios,.alert-radio-label.sc-ion-alert-ios{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-message.sc-ion-alert-ios::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-ios,.alert-tappable.ion-focused.sc-ion-alert-ios{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.alert-input-disabled.sc-ion-alert-ios,.alert-checkbox-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios,.alert-radio-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-ios,.alert-checkbox.sc-ion-alert-ios,.alert-input.sc-ion-alert-ios,.alert-radio.sc-ion-alert-ios{outline:none}.alert-radio-icon.sc-ion-alert-ios,.alert-checkbox-icon.sc-ion-alert-ios,.alert-checkbox-inner.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-ios{min-height:37px;resize:none}.sc-ion-alert-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--max-width:clamp(270px, 16.875rem, 324px);--backdrop-opacity:var(--ion-backdrop-opacity, 0.3);font-size:max(14px, 0.875rem)}.alert-wrapper.sc-ion-alert-ios{border-radius:13px;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.alert-button.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{pointer-events:none}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.alert-translucent.sc-ion-alert-ios-h .alert-wrapper.sc-ion-alert-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.alert-head.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:7px;text-align:center}.alert-title.sc-ion-alert-ios{margin-top:8px;color:var(--ion-text-color, #000);font-size:max(17px, 1.0625rem);font-weight:600}.alert-sub-title.sc-ion-alert-ios{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666));font-size:max(14px, 0.875rem)}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:21px;color:var(--ion-text-color, #000);font-size:max(13px, 0.8125rem);text-align:center}.alert-message.sc-ion-alert-ios{max-height:240px}.alert-message.sc-ion-alert-ios:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:12px}.alert-input.sc-ion-alert-ios{border-radius:7px;margin-top:10px;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px;padding-top:7px;padding-bottom:7px;border:0.55px solid var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf));background-color:var(--ion-background-color, #fff);-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:1rem}.alert-input.sc-ion-alert-ios::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-clear{display:none}.alert-input.sc-ion-alert-ios::-webkit-date-and-time-value{height:18px}.alert-radio-group.sc-ion-alert-ios,.alert-checkbox-group.sc-ion-alert-ios{-ms-scroll-chaining:none;overscroll-behavior:contain;max-height:240px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);overflow-y:auto;-webkit-overflow-scrolling:touch}.alert-tappable.sc-ion-alert-ios{min-height:44px}.alert-radio-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;-ms-flex-order:0;order:0;color:var(--ion-text-color, #000)}[aria-checked=true].sc-ion-alert-ios .alert-radio-label.sc-ion-alert-ios{color:var(--ion-color-primary, #0054e9)}.alert-radio-icon.sc-ion-alert-ios{position:relative;-ms-flex-order:1;order:1;min-width:30px}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{top:-7px;position:absolute;width:6px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{inset-inline-start:7px}.alert-checkbox-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-text-color, #000)}.alert-checkbox-icon.sc-ion-alert-ios{border-radius:50%;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:6px;margin-inline-end:6px;margin-top:10px;margin-bottom:10px;position:relative;width:min(1.375rem, 55.836px);height:min(1.375rem, 55.836px);border-width:0.125rem;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));background-color:var(--ion-item-background, var(--ion-background-color, #fff));contain:strict}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{top:calc(min(1.375rem, 55.836px) / 8);position:absolute;width:calc(min(1.375rem, 55.836px) / 6 + 1px);height:calc(min(1.375rem, 55.836px) * 0.5);-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-background-color, #fff)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{inset-inline-start:calc(min(1.375rem, 55.836px) / 3)}.alert-button-group.sc-ion-alert-ios{-webkit-margin-end:-0.55px;margin-inline-end:-0.55px;-ms-flex-wrap:wrap;flex-wrap:wrap}.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios{border-right:none}[dir=rtl].sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}[dir=rtl].sc-ion-alert-ios .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}@supports selector(:dir(rtl)){.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:none}}.alert-button.sc-ion-alert-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:0;-ms-flex:1 1 auto;flex:1 1 auto;min-width:50%;height:max(44px, 2.75rem);border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);background-color:transparent;color:var(--ion-color-primary, #0054e9);font-size:max(17px, 1.0625rem);overflow:hidden}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child{border-right:0}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:first-child{border-right:0}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:first-child:dir(rtl){border-right:0}}.alert-button.sc-ion-alert-ios:last-child{border-right:0;font-weight:bold}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}}.alert-button.ion-activated.sc-ion-alert-ios{background-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.1)}.alert-button-role-destructive.sc-ion-alert-ios,.alert-button-role-destructive.ion-activated.sc-ion-alert-ios,.alert-button-role-destructive.ion-focused.sc-ion-alert-ios{color:var(--ion-color-danger, #c5000f)}", md: ".sc-ion-alert-md-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-md-h{display:none}.alert-top.sc-ion-alert-md-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-md,.alert-radio-label.sc-ion-alert-md{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-md::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-md::-webkit-scrollbar,.alert-message.sc-ion-alert-md::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-md,.alert-tappable.ion-focused.sc-ion-alert-md{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.alert-input-disabled.sc-ion-alert-md,.alert-checkbox-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md,.alert-radio-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-md,.alert-checkbox.sc-ion-alert-md,.alert-input.sc-ion-alert-md,.alert-radio.sc-ion-alert-md{outline:none}.alert-radio-icon.sc-ion-alert-md,.alert-checkbox-icon.sc-ion-alert-md,.alert-checkbox-inner.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-md{min-height:37px;resize:none}.sc-ion-alert-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--max-width:280px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);font-size:0.875rem}.alert-wrapper.sc-ion-alert-md{border-radius:4px;-webkit-box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12)}.alert-head.sc-ion-alert-md{-webkit-padding-start:23px;padding-inline-start:23px;-webkit-padding-end:23px;padding-inline-end:23px;padding-top:20px;padding-bottom:15px;text-align:start}.alert-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1.25rem;font-weight:500}.alert-sub-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1rem}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px;padding-top:20px;padding-bottom:20px;color:var(--ion-color-step-550, var(--ion-text-color-step-450, #737373))}.alert-message.sc-ion-alert-md{font-size:1rem}@media screen and (max-width: 767px){.alert-message.sc-ion-alert-md{max-height:266px}}.alert-message.sc-ion-alert-md:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-head.sc-ion-alert-md+.alert-message.sc-ion-alert-md{padding-top:0}.alert-input.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:5px;border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));color:var(--ion-text-color, #000)}.alert-input.sc-ion-alert-md::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-clear{display:none}.alert-input.sc-ion-alert-md:focus{margin-bottom:4px;border-bottom:2px solid var(--ion-color-primary, #0054e9)}.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{position:relative;border-top:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));overflow:auto}@media screen and (max-width: 767px){.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{max-height:266px}}.alert-tappable.sc-ion-alert-md{position:relative;min-height:48px}.alert-radio-label.sc-ion-alert-md{-webkit-padding-start:52px;padding-inline-start:52px;-webkit-padding-end:26px;padding-inline-end:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.alert-radio-icon.sc-ion-alert-md{top:0;border-radius:50%;display:block;position:relative;width:20px;height:20px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373))}.alert-radio-icon.sc-ion-alert-md{inset-inline-start:26px}.alert-radio-inner.sc-ion-alert-md{top:3px;border-radius:50%;position:absolute;width:10px;height:10px;-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--ion-color-primary, #0054e9)}.alert-radio-inner.sc-ion-alert-md{inset-inline-start:3px}[aria-checked=true].sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626))}[aria-checked=true].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}.alert-checkbox-label.sc-ion-alert-md{-webkit-padding-start:53px;padding-inline-start:53px;-webkit-padding-end:26px;padding-inline-end:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;width:calc(100% - 53px);color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.alert-checkbox-icon.sc-ion-alert-md{top:0;border-radius:2px;position:relative;width:16px;height:16px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373));contain:strict}.alert-checkbox-icon.sc-ion-alert-md{inset-inline-start:26px}[aria-checked=true].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{top:0;position:absolute;width:6px;height:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary-contrast, #fff)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{inset-inline-start:3px}.alert-button-group.sc-ion-alert-md{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;-ms-flex-pack:end;justify-content:flex-end}.alert-button.sc-ion-alert-md{border-radius:2px;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:0;margin-bottom:0;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;color:var(--ion-color-primary, #0054e9);font-weight:500;text-align:end;text-transform:uppercase;overflow:hidden}.alert-button-inner.sc-ion-alert-md{-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width: 768px){.sc-ion-alert-md-h{--max-width:min(100vw - 96px, 560px);--max-height:min(100vh - 96px, 560px)}}" }; } }, [34, "ion-alert", { overlayIndex: [2, "overlay-index"], delegate: [16], hasController: [4, "has-controller"], keyboardClose: [4, "keyboard-close"], enterAnimation: [16], leaveAnimation: [16], cssClass: [1, "css-class"], header: [1], subHeader: [1, "sub-header"], message: [1], buttons: [16], inputs: [1040], backdropDismiss: [4, "backdrop-dismiss"], translucent: [4], animated: [4], htmlAttributes: [16], isOpen: [4, "is-open"], trigger: [1], present: [64], dismiss: [64], onDidDismiss: [64], onWillDismiss: [64] }, [[4, "keydown", "onKeydown"]], { isOpen: [{ onIsOpenChange: 0 }], trigger: [{ triggerChanged: 0 }], buttons: [{ buttonsChanged: 0 }], inputs: [{ inputsChanged: 0 }] }]); var L4 = (t16) => { var e16, i16, r32; return Object.assign(Object.assign({ "alert-input": true, "alert-input-disabled": (null !== (i16 = null === (e16 = t16.attributes) || void 0 === e16 ? void 0 : e16.disabled) && void 0 !== i16 ? i16 : t16.disabled) || false }, r5(t16.cssClass)), r5(t16.attributes ? null === (r32 = t16.attributes.class) || void 0 === r32 ? void 0 : r32.toString() : "")); }; var W4 = (t16) => Object.assign({ "alert-button": true, "ion-focusable": true, "ion-activatable": true, [`alert-button-role-${t16.role}`]: void 0 !== t16.role }, r5(t16.cssClass)); function H3() { "undefined" != typeof customElements && ["ion-alert", "ion-backdrop", "ion-ripple-effect"].forEach(((t16) => { switch (t16) { case "ion-alert": customElements.get(Zn(t16)) || customElements.define(Zn(t16), B6); break; case "ion-backdrop": customElements.get(Zn(t16)) || c11(); break; case "ion-ripple-effect": customElements.get(Zn(t16)) || p7(); } })); } // node_modules/@ionic/core/components/ion-alert.js var r10 = H3; // node_modules/@ionic/core/components/ion-app.js var d7 = Dn(class extends I { constructor(t16) { super(), false !== t16 && this.__registerHost(); } componentDidLoad() { this.rIC((() => __async(this, null, function* () { const t16 = s5(window, "hybrid"); if (n.getBoolean("_testing") || import("./p-BgwEQWW6-7UMWWZOQ.js").then(((t17) => t17.startTapClick(n))), n.getBoolean("statusTap", t16) && import("./p-CneGxKsZ-L7LCWPIG.js").then(((t17) => t17.startStatusTap())), n.getBoolean("inputShims", m7())) { const t17 = s5(window, "ios") ? "ios" : "android"; import("./p-Cwv-vmkN-JMIGKRIJ.js").then(((e17) => e17.startInputShims(n, t17))); } const e16 = yield import("./p-vEbVo2hO-5KN2ULFU.js"), i16 = t16 || o3(); n.getBoolean("hardwareBackButton", i16) ? e16.startHardwareBackButton() : (o3() && u("[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used."), e16.blockHardwareBackButton()), "undefined" != typeof window && import("./p-D6Ynv7Xh-QQS7GUVE.js").then(((t17) => t17.startKeyboardAssist(window))), import("./p-BmVRXR1y-HVY3VTQM.js").then(((t17) => this.focusVisible = t17.startFocusVisible())); }))); } disconnectedCallback() { this.loadTimeout && clearTimeout(this.loadTimeout); } setFocus(t16) { return __async(this, null, function* () { this.focusVisible && this.focusVisible.setFocus(t16); }); } rIC(t16) { "requestIdleCallback" in window ? window.requestIdleCallback(t16) : this.loadTimeout = setTimeout(t16, 32); } render() { const t16 = g(this); return Ct(It, { key: "77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb", class: { [t16]: true, "ion-page": true, "force-statusbar-padding": n.getBoolean("_forceStatusbarPadding") } }); } get el() { return this; } static get style() { return "html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}"; } }, [0, "ion-app", { setFocus: [64] }]); var m7 = () => !(!s5(window, "ios") || !s5(window, "mobile")) || !(!s5(window, "android") || !s5(window, "mobileweb")); var l12 = function() { "undefined" != typeof customElements && ["ion-app"].forEach(((t16) => { "ion-app" === t16 && (customElements.get(Zn(t16)) || customElements.define(Zn(t16), d7)); })); }; // node_modules/@ionic/core/components/ion-avatar.js var i11 = Dn(class extends I { constructor(r32) { super(), false !== r32 && this.__registerHost(), this.__attachShadow(); } render() { return Ct(It, { key: "998217066084f966bf5d356fed85bcbd451f675a", class: g(this) }, Ct("slot", { key: "1a6f7c9d4dc6a875f86b5b3cda6d59cb39587f22" })); } static get style() { return { ios: ":host{border-radius:var(--border-radius);display:block}::slotted(ion-img),::slotted(img){border-radius:var(--border-radius);width:100%;height:100%;-o-object-fit:cover;object-fit:cover;overflow:hidden}:host{--border-radius:50%;width:48px;height:48px}", md: ":host{border-radius:var(--border-radius);display:block}::slotted(ion-img),::slotted(img){border-radius:var(--border-radius);width:100%;height:100%;-o-object-fit:cover;object-fit:cover;overflow:hidden}:host{--border-radius:50%;width:64px;height:64px}" }; } }, [289, "ion-avatar"]); var c13 = function() { "undefined" != typeof customElements && ["ion-avatar"].forEach(((r32) => { "ion-avatar" === r32 && (customElements.get(Zn(r32)) || customElements.define(Zn(r32), i11)); })); }; // node_modules/@ionic/core/components/ion-backdrop.js var p10 = c11; // node_modules/@ionic/core/components/ion-badge.js var e11 = Dn(class extends I { constructor(o14) { super(), false !== o14 && this.__registerHost(), this.__attachShadow(); } render() { const o14 = g(this); return Ct(It, { key: "1a2d39c5deec771a2f2196447627b62a7d4c8389", class: o6(this.color, { [o14]: true }) }, Ct("slot", { key: "fc1b6587f1ed24715748eb6785e7fb7a57cdd5cd" })); } static get style() { return { ios: ":host{--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff);--padding-top:3px;--padding-end:8px;--padding-bottom:3px;--padding-start:8px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:inline-block;min-width:10px;background:var(--background);color:var(--color);font-family:var(--ion-font-family, inherit);font-size:0.8125rem;font-weight:bold;line-height:1;text-align:center;white-space:nowrap;contain:content;vertical-align:baseline}:host(.ion-color){background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(:empty){display:none}:host{border-radius:10px;font-size:max(13px, 0.8125rem)}", md: ":host{--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff);--padding-top:3px;--padding-end:8px;--padding-bottom:3px;--padding-start:8px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:inline-block;min-width:10px;background:var(--background);color:var(--color);font-family:var(--ion-font-family, inherit);font-size:0.8125rem;font-weight:bold;line-height:1;text-align:center;white-space:nowrap;contain:content;vertical-align:baseline}:host(.ion-color){background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(:empty){display:none}:host{--padding-top:3px;--padding-end:4px;--padding-bottom:4px;--padding-start:4px;border-radius:4px}" }; } }, [289, "ion-badge", { color: [513] }]); var s10 = function() { "undefined" != typeof customElements && ["ion-badge"].forEach(((o14) => { "ion-badge" === o14 && (customElements.get(Zn(o14)) || customElements.define(Zn(o14), e11)); })); }; // node_modules/@ionic/core/components/ion-breadcrumb.js var h8 = Dn(class extends I { constructor(o14) { super(), false !== o14 && this.__registerHost(), this.__attachShadow(), this.ionFocus = Jt(this, "ionFocus", 7), this.ionBlur = Jt(this, "ionBlur", 7), this.collapsedClick = Jt(this, "collapsedClick", 7), this.inheritedAttributes = {}, this.collapsed = false, this.active = false, this.disabled = false, this.routerDirection = "forward", this.onFocus = () => { this.ionFocus.emit(); }, this.onBlur = () => { this.ionBlur.emit(); }, this.collapsedIndicatorClick = () => { this.collapsedClick.emit({ ionShadowTarget: this.collapsedRef }); }; } componentWillLoad() { this.inheritedAttributes = s2(this.el); } isClickable() { return void 0 !== this.href; } render() { const { color: o14, active: r32, collapsed: e16, disabled: a16, download: n15, el: m26, inheritedAttributes: h19, last: u19, routerAnimation: f27, routerDirection: g20, separator: x15, showCollapsedIndicator: v18, target: k11 } = this, y12 = this.isClickable(), w11 = void 0 === this.href ? "span" : "a", z11 = a16 ? void 0 : this.href, j8 = g(this), C7 = "span" === w11 ? {} : { download: n15, href: z11, target: k11 }, D6 = !u19 && (e16 ? !(!v18 || u19) : x15); return Ct(It, { key: "32ca61c83721dff52b5e97171ed449dce3584a55", onClick: (o15) => l7(z11, o15, g20, f27), "aria-disabled": a16 ? "true" : null, class: o6(o14, { [j8]: true, "breadcrumb-active": r32, "breadcrumb-collapsed": e16, "breadcrumb-disabled": a16, "in-breadcrumbs-color": n5("ion-breadcrumbs[color]", m26), "in-toolbar": n5("ion-toolbar", this.el), "in-toolbar-color": n5("ion-toolbar[color]", this.el), "ion-activatable": y12, "ion-focusable": y12 }) }, Ct(w11, Object.assign({ key: "479feb845f4a6d8009d5422b33eb423730b9722b" }, C7, { class: "breadcrumb-native", part: "native", disabled: a16, onFocus: this.onFocus, onBlur: this.onBlur }, h19), Ct("slot", { key: "3c5dcaeb0d258235d1b7707868026ff1d1404099", name: "start" }), Ct("slot", { key: "f1cfb934443cd97dc220882c5e3596ea879d66cf" }), Ct("slot", { key: "539710121b5b1f3ee8d4c24a9651b67c2ae08add", name: "end" })), v18 && Ct("button", { key: "ed53a95ccd89022c8b7bee0658a221ec62a5c73b", part: "collapsed-indicator", "aria-label": "Show more breadcrumbs", onClick: () => this.collapsedIndicatorClick(), ref: (o15) => this.collapsedRef = o15, class: { "breadcrumbs-collapsed-indicator": true } }, Ct("ion-icon", { key: "a849e1142a86f06f207cf11662fa2a560ab7fc6a", "aria-hidden": "true", icon: x4, lazy: false })), D6 && Ct("span", { key: "fc3c741cb01fafef8b26046c7ee5b190efc69a7c", class: "breadcrumb-separator", part: "separator", "aria-hidden": "true" }, Ct("slot", { key: "4871932ae1dae520767e0713e7cee2d11b0bba6d", name: "separator" }, "ios" === j8 ? Ct("ion-icon", { icon: c8, lazy: false, "flip-rtl": true }) : Ct("span", null, "/")))); } get el() { return this; } static get style() { return { ios: ":host{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center;align-items:center;color:var(--color);font-size:1rem;font-weight:400;line-height:1.5}.breadcrumb-native{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%;outline:none;background:inherit}:host(.breadcrumb-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.breadcrumb-active){color:var(--color-active)}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .breadcrumb-native{background:var(--background-focused)}@media (any-hover: hover){:host(.ion-activatable:hover){color:var(--color-hover)}:host(.ion-activatable.in-breadcrumbs-color:hover),:host(.ion-activatable.ion-color:hover){color:var(--ion-color-shade)}}.breadcrumb-separator{display:-ms-inline-flexbox;display:inline-flex}:host(.breadcrumb-collapsed) .breadcrumb-native{display:none}:host(.in-breadcrumbs-color),:host(.in-breadcrumbs-color.breadcrumb-active){color:var(--ion-color-base)}:host(.in-breadcrumbs-color) .breadcrumb-separator{color:var(--ion-color-base)}:host(.ion-color){color:var(--ion-color-base)}:host(.in-toolbar-color),:host(.in-toolbar-color) .breadcrumb-separator{color:rgba(var(--ion-color-contrast-rgb), 0.8)}:host(.in-toolbar-color.breadcrumb-active){color:var(--ion-color-contrast)}.breadcrumbs-collapsed-indicator{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;-webkit-margin-start:14px;margin-inline-start:14px;-webkit-margin-end:14px;margin-inline-end:14px;margin-top:0;margin-bottom:0;display:-ms-flexbox;display:flex;-ms-flex:1 1 100%;flex:1 1 100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:32px;height:18px;border:0;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.breadcrumbs-collapsed-indicator ion-icon{margin-top:1px;font-size:1.375rem}:host{--color:var(--ion-color-step-850, var(--ion-text-color-step-150, #2d4665));--color-active:var(--ion-text-color, #03060b);--color-hover:var(--ion-text-color, #03060b);--color-focused:var(--color-active);--background-focused:var(--ion-color-step-50, var(--ion-background-color-step-50, rgba(233, 237, 243, 0.7)));font-size:clamp(16px, 1rem, 22px)}:host(.breadcrumb-active){font-weight:600}.breadcrumb-native{border-radius:4px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:5px;padding-bottom:5px;border:1px solid transparent}:host(.ion-focused) .breadcrumb-native{border-radius:8px}:host(.in-breadcrumbs-color.ion-focused) .breadcrumb-native,:host(.ion-color.ion-focused) .breadcrumb-native{background:rgba(var(--ion-color-base-rgb), 0.1);color:var(--ion-color-base)}:host(.ion-focused) ::slotted(ion-icon),:host(.in-breadcrumbs-color.ion-focused) ::slotted(ion-icon),:host(.ion-color.ion-focused) ::slotted(ion-icon){color:var(--ion-color-step-750, var(--ion-text-color-step-250, #445b78))}.breadcrumb-separator{color:var(--ion-color-step-550, var(--ion-text-color-step-450, #73849a))}::slotted(ion-icon){color:var(--ion-color-step-400, var(--ion-text-color-step-600, #92a0b3));font-size:min(1.125rem, 21.6px)}::slotted(ion-icon[slot=start]){-webkit-margin-end:8px;margin-inline-end:8px}::slotted(ion-icon[slot=end]){-webkit-margin-start:8px;margin-inline-start:8px}:host(.breadcrumb-active) ::slotted(ion-icon){color:var(--ion-color-step-850, var(--ion-text-color-step-150, #242d39))}.breadcrumbs-collapsed-indicator{border-radius:4px;background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e9edf3));color:var(--ion-color-step-550, var(--ion-text-color-step-450, #73849a))}.breadcrumbs-collapsed-indicator:hover{opacity:0.45}.breadcrumbs-collapsed-indicator:focus{background:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9e0ea))}.breadcrumbs-collapsed-indicator ion-icon{font-size:min(1.375rem, 22px)}", md: ":host{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center;align-items:center;color:var(--color);font-size:1rem;font-weight:400;line-height:1.5}.breadcrumb-native{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%;outline:none;background:inherit}:host(.breadcrumb-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.breadcrumb-active){color:var(--color-active)}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .breadcrumb-native{background:var(--background-focused)}@media (any-hover: hover){:host(.ion-activatable:hover){color:var(--color-hover)}:host(.ion-activatable.in-breadcrumbs-color:hover),:host(.ion-activatable.ion-color:hover){color:var(--ion-color-shade)}}.breadcrumb-separator{display:-ms-inline-flexbox;display:inline-flex}:host(.breadcrumb-collapsed) .breadcrumb-native{display:none}:host(.in-breadcrumbs-color),:host(.in-breadcrumbs-color.breadcrumb-active){color:var(--ion-color-base)}:host(.in-breadcrumbs-color) .breadcrumb-separator{color:var(--ion-color-base)}:host(.ion-color){color:var(--ion-color-base)}:host(.in-toolbar-color),:host(.in-toolbar-color) .breadcrumb-separator{color:rgba(var(--ion-color-contrast-rgb), 0.8)}:host(.in-toolbar-color.breadcrumb-active){color:var(--ion-color-contrast)}.breadcrumbs-collapsed-indicator{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;-webkit-margin-start:14px;margin-inline-start:14px;-webkit-margin-end:14px;margin-inline-end:14px;margin-top:0;margin-bottom:0;display:-ms-flexbox;display:flex;-ms-flex:1 1 100%;flex:1 1 100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:32px;height:18px;border:0;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.breadcrumbs-collapsed-indicator ion-icon{margin-top:1px;font-size:1.375rem}:host{--color:var(--ion-color-step-600, var(--ion-text-color-step-400, #677483));--color-active:var(--ion-text-color, #03060b);--color-hover:var(--ion-text-color, #03060b);--color-focused:var(--ion-color-step-800, var(--ion-text-color-step-200, #35404e));--background-focused:var(--ion-color-step-50, var(--ion-background-color-step-50, #fff))}:host(.breadcrumb-active){font-weight:500}.breadcrumb-native{-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px}.breadcrumb-separator{-webkit-margin-start:10px;margin-inline-start:10px;-webkit-margin-end:10px;margin-inline-end:10px;margin-top:-1px}:host(.ion-focused) .breadcrumb-native{border-radius:4px;-webkit-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2), 0px 2px 8px rgba(0, 0, 0, 0.12);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2), 0px 2px 8px rgba(0, 0, 0, 0.12)}.breadcrumb-separator{color:var(--ion-color-step-550, var(--ion-text-color-step-450, #73849a))}::slotted(ion-icon){color:var(--ion-color-step-550, var(--ion-text-color-step-450, #7d8894));font-size:1.125rem}::slotted(ion-icon[slot=start]){-webkit-margin-end:8px;margin-inline-end:8px}::slotted(ion-icon[slot=end]){-webkit-margin-start:8px;margin-inline-start:8px}:host(.breadcrumb-active) ::slotted(ion-icon){color:var(--ion-color-step-850, var(--ion-text-color-step-150, #222d3a))}.breadcrumbs-collapsed-indicator{border-radius:2px;background:var(--ion-color-step-100, var(--ion-background-color-step-100, #eef1f3));color:var(--ion-color-step-550, var(--ion-text-color-step-450, #73849a))}.breadcrumbs-collapsed-indicator:hover{opacity:0.7}.breadcrumbs-collapsed-indicator:focus{background:var(--ion-color-step-150, var(--ion-background-color-step-150, #dfe5e8))}" }; } }, [289, "ion-breadcrumb", { collapsed: [4], last: [4], showCollapsedIndicator: [4, "show-collapsed-indicator"], color: [1], active: [4], disabled: [4], download: [1], href: [1], rel: [1], separator: [4], target: [1], routerDirection: [1, "router-direction"], routerAnimation: [16] }]); var f11 = function() { "undefined" != typeof customElements && ["ion-breadcrumb", "ion-icon"].forEach(((o14) => { switch (o14) { case "ion-breadcrumb": customElements.get(Zn(o14)) || customElements.define(Zn(o14), h8); break; case "ion-icon": customElements.get(Zn(o14)) || y4(); } })); }; // node_modules/@ionic/core/components/ion-breadcrumbs.js var c14 = Dn(class extends I { constructor(o14) { super(), false !== o14 && this.__registerHost(), this.__attachShadow(), this.ionCollapsedClick = Jt(this, "ionCollapsedClick", 7), this.itemsBeforeCollapse = 1, this.itemsAfterCollapse = 1, this.breadcrumbsInit = () => { this.setBreadcrumbSeparator(), this.setMaxItems(); }, this.resetActiveBreadcrumb = () => { const o15 = this.getBreadcrumbs().find(((o16) => o16.active)); o15 && this.activeChanged && (o15.active = false); }, this.setMaxItems = () => { const { itemsAfterCollapse: o15, itemsBeforeCollapse: t16, maxItems: s21 } = this, e16 = this.getBreadcrumbs(); for (const o16 of e16) o16.showCollapsedIndicator = false, o16.collapsed = false; void 0 !== s21 && e16.length > s21 && t16 + o15 <= s21 && e16.forEach(((s22, a16) => { a16 === t16 && (s22.showCollapsedIndicator = true), a16 >= t16 && a16 < e16.length - o15 && (s22.collapsed = true); })); }, this.setBreadcrumbSeparator = () => { const { itemsAfterCollapse: o15, itemsBeforeCollapse: t16, maxItems: s21 } = this, e16 = this.getBreadcrumbs(), a16 = e16.find(((o16) => o16.active)); for (const i16 of e16) { const r32 = void 0 !== s21 && 0 === o15 ? i16 === e16[t16] : i16 === e16[e16.length - 1]; i16.last = r32, i16.separator = void 0 !== i16.separator ? i16.separator : !r32 || void 0, !a16 && r32 && (i16.active = true, this.activeChanged = true); } }, this.getBreadcrumbs = () => Array.from(this.el.querySelectorAll("ion-breadcrumb")), this.slotChanged = () => { this.resetActiveBreadcrumb(), this.breadcrumbsInit(); }; } onCollapsedClick(o14) { const t16 = this.getBreadcrumbs().filter(((o15) => o15.collapsed)); this.ionCollapsedClick.emit(Object.assign(Object.assign({}, o14.detail), { collapsedBreadcrumbs: t16 })); } maxItemsChanged() { this.resetActiveBreadcrumb(), this.breadcrumbsInit(); } componentWillLoad() { this.breadcrumbsInit(); } render() { const { color: o14, collapsed: t16 } = this, s21 = g(this); return Ct(It, { key: "fe64e9cdf597ede2db140bf5fa05a0359d82db57", class: o6(o14, { [s21]: true, "in-toolbar": n5("ion-toolbar", this.el), "in-toolbar-color": n5("ion-toolbar[color]", this.el), "breadcrumbs-collapsed": t16 }) }, Ct("slot", { key: "a2c99b579e339055c50a613d5c6b61032f5ddffe", onSlotchange: this.slotChanged })); } get el() { return this; } static get watchers() { return { maxItems: [{ maxItemsChanged: 0 }], itemsBeforeCollapse: [{ maxItemsChanged: 0 }], itemsAfterCollapse: [{ maxItemsChanged: 0 }] }; } static get style() { return { ios: ":host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center}:host(.in-toolbar-color),:host(.in-toolbar-color) .breadcrumbs-collapsed-indicator ion-icon{color:var(--ion-color-contrast)}:host(.in-toolbar-color) .breadcrumbs-collapsed-indicator{background:rgba(var(--ion-color-contrast-rgb), 0.11)}:host(.in-toolbar){-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;-ms-flex-pack:center;justify-content:center}", md: ":host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center}:host(.in-toolbar-color),:host(.in-toolbar-color) .breadcrumbs-collapsed-indicator ion-icon{color:var(--ion-color-contrast)}:host(.in-toolbar-color) .breadcrumbs-collapsed-indicator{background:rgba(var(--ion-color-contrast-rgb), 0.11)}:host(.in-toolbar){-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0}" }; } }, [289, "ion-breadcrumbs", { color: [513], maxItems: [2, "max-items"], itemsBeforeCollapse: [2, "items-before-collapse"], itemsAfterCollapse: [2, "items-after-collapse"], collapsed: [32], activeChanged: [32] }, [[0, "collapsedClick", "onCollapsedClick"]], { maxItems: [{ maxItemsChanged: 0 }], itemsBeforeCollapse: [{ maxItemsChanged: 0 }], itemsAfterCollapse: [{ maxItemsChanged: 0 }] }]); var m8 = function() { "undefined" != typeof customElements && ["ion-breadcrumbs"].forEach(((o14) => { "ion-breadcrumbs" === o14 && (customElements.get(Zn(o14)) || customElements.define(Zn(o14), c14)); })); }; // node_modules/@ionic/core/components/p-BTeL5HCK.js var g5 = Dn(class extends I { constructor(o14) { super(), false !== o14 && this.__registerHost(), this.__attachShadow(), this.ionFocus = Jt(this, "ionFocus", 7), this.ionBlur = Jt(this, "ionBlur", 7), this.inItem = false, this.inListHeader = false, this.inToolbar = false, this.formButtonEl = null, this.formEl = null, this.inheritedAttributes = {}, this.isCircle = false, this.buttonType = "button", this.disabled = false, this.routerDirection = "forward", this.strong = false, this.type = "button", this.handleClick = (o15) => { const { el: t16 } = this; "button" === this.type ? l7(this.href, o15, this.routerDirection, this.routerAnimation) : m(t16) && this.submitForm(o15); }, this.onFocus = () => { this.ionFocus.emit(); }, this.onBlur = () => { this.ionBlur.emit(); }, this.slotChanged = () => { this.isCircle = this.hasIconOnly; }; } disabledChanged() { const { disabled: o14 } = this; this.formButtonEl && (this.formButtonEl.disabled = o14); } onAriaChanged(o14, t16, n15) { this.inheritedAttributes = Object.assign(Object.assign({}, this.inheritedAttributes), { [n15]: o14 }), Rn(this); } renderHiddenButton() { const o14 = this.formEl = this.findForm(); if (o14) { const { formButtonEl: t16 } = this; if (null !== t16 && o14.contains(t16)) return; const n15 = this.formButtonEl = document.createElement("button"); n15.type = this.type, n15.style.display = "none", n15.disabled = this.disabled, o14.appendChild(n15); } } componentWillLoad() { this.inToolbar = !!this.el.closest("ion-buttons"), this.inListHeader = !!this.el.closest("ion-list-header"), this.inItem = !!this.el.closest("ion-item") || !!this.el.closest("ion-item-divider"), this.inheritedAttributes = s2(this.el); } get hasIconOnly() { return !!this.el.querySelector('[slot="icon-only"]'); } get rippleType() { return (void 0 === this.fill || "clear" === this.fill) && this.hasIconOnly && this.inToolbar ? "unbounded" : "bounded"; } findForm() { const { form: o14 } = this; if (o14 instanceof HTMLFormElement) return o14; if ("string" == typeof o14) { const t16 = document.getElementById(o14); return t16 ? t16 instanceof HTMLFormElement ? t16 : (u(`[ion-button] - Form with selector: "#${o14}" could not be found. Verify that the id is attached to a