{"version":3,"file":"3515.0e281cf29b101b30e623.js","mappings":"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","sources":["webpack:///../node_modules/@ionic/core/components/dir.js","webpack:///../node_modules/@ionic/core/components/framework-delegate.js","webpack:///../node_modules/@ionic/core/components/gesture-controller.js","webpack:///../node_modules/@ionic/core/components/hardware-back-button.js","webpack:///../node_modules/@ionic/core/components/helpers.js","webpack:///../node_modules/@ionic/core/components/icon.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * Returns `true` if the document or host element\n * has a `dir` set to `rtl`. The host value will always\n * take priority over the root document value.\n */\nconst isRTL = (hostEl) => {\n if (hostEl) {\n if (hostEl.dir !== '') {\n return hostEl.dir.toLowerCase() === 'rtl';\n }\n }\n return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';\n};\n\nexport { isRTL as i };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { c as componentOnReady } from './helpers.js';\n\n// TODO(FW-2832): types\nconst attachComponent = async (delegate, container, component, cssClasses, componentProps, inline) => {\n var _a;\n if (delegate) {\n return delegate.attachViewToDom(container, component, componentProps, cssClasses);\n }\n if (!inline && typeof component !== 'string' && !(component instanceof HTMLElement)) {\n throw new Error('framework delegate is missing');\n }\n const el = typeof component === 'string' ? (_a = container.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(component) : component;\n if (cssClasses) {\n cssClasses.forEach((c) => el.classList.add(c));\n }\n if (componentProps) {\n Object.assign(el, componentProps);\n }\n container.appendChild(el);\n await new Promise((resolve) => componentOnReady(el, resolve));\n return el;\n};\nconst detachComponent = (delegate, element) => {\n if (element) {\n if (delegate) {\n const container = element.parentElement;\n return delegate.removeViewFromDom(container, element);\n }\n element.remove();\n }\n return Promise.resolve();\n};\nconst CoreDelegate = () => {\n let BaseComponent;\n let Reference;\n const attachViewToDom = async (parentElement, userComponent, userComponentProps = {}, cssClasses = []) => {\n var _a, _b;\n BaseComponent = parentElement;\n /**\n * If passing in a component via the `component` props\n * we need to append it inside of our overlay component.\n */\n if (userComponent) {\n /**\n * If passing in the tag name, create\n * the element otherwise just get a reference\n * to the component.\n */\n const el = typeof userComponent === 'string' ? (_a = BaseComponent.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(userComponent) : userComponent;\n /**\n * Add any css classes passed in\n * via the cssClasses prop on the overlay.\n */\n cssClasses.forEach((c) => el.classList.add(c));\n /**\n * Add any props passed in\n * via the componentProps prop on the overlay.\n */\n Object.assign(el, userComponentProps);\n /**\n * Finally, append the component\n * inside of the overlay component.\n */\n BaseComponent.appendChild(el);\n await new Promise((resolve) => componentOnReady(el, resolve));\n }\n else if (BaseComponent.children.length > 0) {\n const root = BaseComponent.children[0];\n if (!root.classList.contains('ion-delegate-host')) {\n /**\n * If the root element is not a delegate host, it means\n * that the overlay has not been presented yet and we need\n * to create the containing element with the specified classes.\n */\n const el = (_b = BaseComponent.ownerDocument) === null || _b === void 0 ? void 0 : _b.createElement('div');\n // Add a class to track if the root element was created by the delegate.\n el.classList.add('ion-delegate-host');\n cssClasses.forEach((c) => el.classList.add(c));\n // Move each child from the original template to the new parent element.\n el.append(...BaseComponent.children);\n // Append the new parent element to the original parent element.\n BaseComponent.appendChild(el);\n }\n }\n /**\n * Get the root of the app and\n * add the overlay there.\n */\n const app = document.querySelector('ion-app') || document.body;\n /**\n * Create a placeholder comment so that\n * we can return this component to where\n * it was previously.\n */\n Reference = document.createComment('ionic teleport');\n BaseComponent.parentNode.insertBefore(Reference, BaseComponent);\n app.appendChild(BaseComponent);\n return BaseComponent;\n };\n const removeViewFromDom = () => {\n /**\n * Return component to where it was previously in the DOM.\n */\n if (BaseComponent && Reference) {\n Reference.parentNode.insertBefore(BaseComponent, Reference);\n Reference.remove();\n }\n return Promise.resolve();\n };\n return { attachViewToDom, removeViewFromDom };\n};\n\nexport { CoreDelegate as C, attachComponent as a, detachComponent as d };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nclass GestureController {\n constructor() {\n this.gestureId = 0;\n this.requestedStart = new Map();\n this.disabledGestures = new Map();\n this.disabledScroll = new Set();\n }\n /**\n * Creates a gesture delegate based on the GestureConfig passed\n */\n createGesture(config) {\n var _a;\n return new GestureDelegate(this, this.newID(), config.name, (_a = config.priority) !== null && _a !== void 0 ? _a : 0, !!config.disableScroll);\n }\n /**\n * Creates a blocker that will block any other gesture events from firing. Set in the ion-gesture component.\n */\n createBlocker(opts = {}) {\n return new BlockerDelegate(this, this.newID(), opts.disable, !!opts.disableScroll);\n }\n start(gestureName, id, priority) {\n if (!this.canStart(gestureName)) {\n this.requestedStart.delete(id);\n return false;\n }\n this.requestedStart.set(id, priority);\n return true;\n }\n capture(gestureName, id, priority) {\n if (!this.start(gestureName, id, priority)) {\n return false;\n }\n const requestedStart = this.requestedStart;\n let maxPriority = -10000;\n requestedStart.forEach((value) => {\n maxPriority = Math.max(maxPriority, value);\n });\n if (maxPriority === priority) {\n this.capturedId = id;\n requestedStart.clear();\n const event = new CustomEvent('ionGestureCaptured', { detail: { gestureName } });\n document.dispatchEvent(event);\n return true;\n }\n requestedStart.delete(id);\n return false;\n }\n release(id) {\n this.requestedStart.delete(id);\n if (this.capturedId === id) {\n this.capturedId = undefined;\n }\n }\n disableGesture(gestureName, id) {\n let set = this.disabledGestures.get(gestureName);\n if (set === undefined) {\n set = new Set();\n this.disabledGestures.set(gestureName, set);\n }\n set.add(id);\n }\n enableGesture(gestureName, id) {\n const set = this.disabledGestures.get(gestureName);\n if (set !== undefined) {\n set.delete(id);\n }\n }\n disableScroll(id) {\n this.disabledScroll.add(id);\n if (this.disabledScroll.size === 1) {\n document.body.classList.add(BACKDROP_NO_SCROLL);\n }\n }\n enableScroll(id) {\n this.disabledScroll.delete(id);\n if (this.disabledScroll.size === 0) {\n document.body.classList.remove(BACKDROP_NO_SCROLL);\n }\n }\n canStart(gestureName) {\n if (this.capturedId !== undefined) {\n // a gesture already captured\n return false;\n }\n if (this.isDisabled(gestureName)) {\n return false;\n }\n return true;\n }\n isCaptured() {\n return this.capturedId !== undefined;\n }\n isScrollDisabled() {\n return this.disabledScroll.size > 0;\n }\n isDisabled(gestureName) {\n const disabled = this.disabledGestures.get(gestureName);\n if (disabled && disabled.size > 0) {\n return true;\n }\n return false;\n }\n newID() {\n this.gestureId++;\n return this.gestureId;\n }\n}\nclass GestureDelegate {\n constructor(ctrl, id, name, priority, disableScroll) {\n this.id = id;\n this.name = name;\n this.disableScroll = disableScroll;\n this.priority = priority * 1000000 + id;\n this.ctrl = ctrl;\n }\n canStart() {\n if (!this.ctrl) {\n return false;\n }\n return this.ctrl.canStart(this.name);\n }\n start() {\n if (!this.ctrl) {\n return false;\n }\n return this.ctrl.start(this.name, this.id, this.priority);\n }\n capture() {\n if (!this.ctrl) {\n return false;\n }\n const captured = this.ctrl.capture(this.name, this.id, this.priority);\n if (captured && this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n return captured;\n }\n release() {\n if (this.ctrl) {\n this.ctrl.release(this.id);\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n }\n destroy() {\n this.release();\n this.ctrl = undefined;\n }\n}\nclass BlockerDelegate {\n constructor(ctrl, id, disable, disableScroll) {\n this.id = id;\n this.disable = disable;\n this.disableScroll = disableScroll;\n this.ctrl = ctrl;\n }\n block() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.disableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n }\n unblock() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.enableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n destroy() {\n this.unblock();\n this.ctrl = undefined;\n }\n}\nconst BACKDROP_NO_SCROLL = 'backdrop-no-scroll';\nconst GESTURE_CONTROLLER = new GestureController();\n\nexport { GESTURE_CONTROLLER as G };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * When hardwareBackButton: false in config,\n * we need to make sure we also block the default\n * webview behavior. If we don't then it will be\n * possible for users to navigate backward while\n * an overlay is still open. Additionally, it will\n * give the appearance that the hardwareBackButton\n * config is not working as the page transition\n * will still happen.\n */\nconst blockHardwareBackButton = () => {\n document.addEventListener('backbutton', () => { }); // eslint-disable-line\n};\nconst startHardwareBackButton = () => {\n const doc = document;\n let busy = false;\n doc.addEventListener('backbutton', () => {\n if (busy) {\n return;\n }\n let index = 0;\n let handlers = [];\n const ev = new CustomEvent('ionBackButton', {\n bubbles: false,\n detail: {\n register(priority, handler) {\n handlers.push({ priority, handler, id: index++ });\n },\n },\n });\n doc.dispatchEvent(ev);\n const executeAction = async (handlerRegister) => {\n try {\n if (handlerRegister === null || handlerRegister === void 0 ? void 0 : handlerRegister.handler) {\n const result = handlerRegister.handler(processHandlers);\n if (result != null) {\n await result;\n }\n }\n }\n catch (e) {\n console.error(e);\n }\n };\n const processHandlers = () => {\n if (handlers.length > 0) {\n let selectedHandler = {\n priority: Number.MIN_SAFE_INTEGER,\n handler: () => undefined,\n id: -1,\n };\n handlers.forEach((handler) => {\n if (handler.priority >= selectedHandler.priority) {\n selectedHandler = handler;\n }\n });\n busy = true;\n handlers = handlers.filter((handler) => handler.id !== selectedHandler.id);\n executeAction(selectedHandler).then(() => (busy = false));\n }\n };\n processHandlers();\n });\n};\nconst OVERLAY_BACK_BUTTON_PRIORITY = 100;\nconst MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays\n\nexport { MENU_BACK_BUTTON_PRIORITY, OVERLAY_BACK_BUTTON_PRIORITY, blockHardwareBackButton, startHardwareBackButton };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst transitionEndAsync = (el, expectedDuration = 0) => {\n return new Promise((resolve) => {\n transitionEnd(el, expectedDuration, resolve);\n });\n};\n/**\n * Allows developer to wait for a transition\n * to finish and fallback to a timer if the\n * transition is cancelled or otherwise\n * never finishes. Also see transitionEndAsync\n * which is an await-able version of this.\n */\nconst transitionEnd = (el, expectedDuration = 0, callback) => {\n let unRegTrans;\n let animationTimeout;\n const opts = { passive: true };\n const ANIMATION_FALLBACK_TIMEOUT = 500;\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = (ev) => {\n if (ev === undefined || el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.addEventListener('transitionend', onTransitionEnd, opts);\n animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);\n unRegTrans = () => {\n if (animationTimeout) {\n clearTimeout(animationTimeout);\n animationTimeout = undefined;\n }\n el.removeEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.removeEventListener('transitionend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\n/**\n * Waits for a component to be ready for\n * both custom element and non-custom element builds.\n * If non-custom element build, el.componentOnReady\n * will be used.\n * For custom element builds, we wait a frame\n * so that the inner contents of the component\n * have a chance to render.\n *\n * Use this utility rather than calling\n * el.componentOnReady yourself.\n */\nconst componentOnReady = (el, callback) => {\n if (el.componentOnReady) {\n // eslint-disable-next-line custom-rules/no-component-on-ready-method\n el.componentOnReady().then((resolvedEl) => callback(resolvedEl));\n }\n else {\n raf(() => callback(el));\n }\n};\n/**\n * Elements inside of web components sometimes need to inherit global attributes\n * set on the host. For example, the inner input in `ion-input` should inherit\n * the `title` attribute that developers set directly on `ion-input`. This\n * helper function should be called in componentWillLoad and assigned to a variable\n * that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nconst inheritAttributes = (el, attributes = []) => {\n const attributeObject = {};\n attributes.forEach((attr) => {\n if (el.hasAttribute(attr)) {\n const value = el.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = el.getAttribute(attr);\n }\n el.removeAttribute(attr);\n }\n });\n return attributeObject;\n};\n/**\n * List of available ARIA attributes + `role`.\n * Removed deprecated attributes.\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes\n */\nconst ariaAttributes = [\n 'role',\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-braillelabel',\n 'aria-brailleroledescription',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colindextext',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-description',\n 'aria-details',\n 'aria-disabled',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowindextext',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext',\n];\n/**\n * Returns an array of aria attributes that should be copied from\n * the shadow host element to a target within the light DOM.\n * @param el The element that the attributes should be copied from.\n * @param ignoreList The list of aria-attributes to ignore reflecting and removing from the host.\n * Use this in instances where we manually specify aria attributes on the `` element.\n */\nconst inheritAriaAttributes = (el, ignoreList) => {\n let attributesToInherit = ariaAttributes;\n if (ignoreList && ignoreList.length > 0) {\n attributesToInherit = attributesToInherit.filter((attr) => !ignoreList.includes(attr));\n }\n return inheritAttributes(el, attributesToInherit);\n};\nconst addEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const ael = config.get('_ael');\n if (ael) {\n return ael(el, eventName, callback, opts);\n }\n else if (config._ael) {\n return config._ael(el, eventName, callback, opts);\n }\n }\n }\n return el.addEventListener(eventName, callback, opts);\n};\nconst removeEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const rel = config.get('_rel');\n if (rel) {\n return rel(el, eventName, callback, opts);\n }\n else if (config._rel) {\n return config._rel(el, eventName, callback, opts);\n }\n }\n }\n return el.removeEventListener(eventName, callback, opts);\n};\n/**\n * Gets the root context of a shadow dom element\n * On newer browsers this will be the shadowRoot,\n * but for older browser this may just be the\n * element itself.\n *\n * Useful for whenever you need to explicitly\n * do \"myElement.shadowRoot!.querySelector(...)\".\n */\nconst getElementRoot = (el, fallback = el) => {\n return el.shadowRoot || fallback;\n};\n/**\n * Patched version of requestAnimationFrame that avoids ngzone\n * Use only when you know ngzone should not run\n */\nconst raf = (h) => {\n if (typeof __zone_symbol__requestAnimationFrame === 'function') {\n return __zone_symbol__requestAnimationFrame(h);\n }\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame(h);\n }\n return setTimeout(h);\n};\nconst hasShadowDom = (el) => {\n return !!el.shadowRoot && !!el.attachShadow;\n};\nconst findItemLabel = (componentEl) => {\n const itemEl = componentEl.closest('ion-item');\n if (itemEl) {\n return itemEl.querySelector('ion-label');\n }\n return null;\n};\nconst focusElement = (el) => {\n el.focus();\n /**\n * When programmatically focusing an element,\n * the focus-visible utility will not run because\n * it is expecting a keyboard event to have triggered this;\n * however, there are times when we need to manually control\n * this behavior so we call the `setFocus` method on ion-app\n * which will let us explicitly set the elements to focus.\n */\n if (el.classList.contains('ion-focusable')) {\n const app = el.closest('ion-app');\n if (app) {\n app.setFocus([el]);\n }\n }\n};\n/**\n * This method is used for Ionic's input components that use Shadow DOM. In\n * order to properly label the inputs to work with screen readers, we need\n * to get the text content of the label outside of the shadow root and pass\n * it to the input inside of the shadow root.\n *\n * Referencing label elements by id from outside of the component is\n * impossible due to the shadow boundary, read more here:\n * https://developer.salesforce.com/blogs/2020/01/accessibility-for-web-components.html\n *\n * @param componentEl The shadow element that needs the aria label\n * @param inputId The unique identifier for the input\n */\nconst getAriaLabel = (componentEl, inputId) => {\n let labelText;\n // If the user provides their own label via the aria-labelledby attr\n // we should use that instead of looking for an ion-label\n const labelledBy = componentEl.getAttribute('aria-labelledby');\n // Grab the id off of the component in case they are using\n // a custom label using the label element\n const componentId = componentEl.id;\n let labelId = labelledBy !== null && labelledBy.trim() !== '' ? labelledBy : inputId + '-lbl';\n let label = labelledBy !== null && labelledBy.trim() !== '' ? document.getElementById(labelledBy) : findItemLabel(componentEl);\n if (label) {\n if (labelledBy === null) {\n label.id = labelId;\n }\n labelText = label.textContent;\n label.setAttribute('aria-hidden', 'true');\n // if there is no label, check to see if the user has provided\n // one by setting an id on the component and using the label element\n }\n else if (componentId.trim() !== '') {\n label = document.querySelector(`label[for=\"${componentId}\"]`);\n if (label) {\n if (label.id !== '') {\n labelId = label.id;\n }\n else {\n label.id = labelId = `${componentId}-lbl`;\n }\n labelText = label.textContent;\n }\n }\n return { label, labelId, labelText };\n};\n/**\n * This method is used to add a hidden input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param always Add a hidden input even if the container does not use Shadow\n * @param container The element where the input will be added\n * @param name The name of the input\n * @param value The value of the input\n * @param disabled If true, the input is disabled\n */\nconst renderHiddenInput = (always, container, name, value, disabled) => {\n if (always || hasShadowDom(container)) {\n let input = container.querySelector('input.aux-input');\n if (!input) {\n input = container.ownerDocument.createElement('input');\n input.type = 'hidden';\n input.classList.add('aux-input');\n container.appendChild(input);\n }\n input.disabled = disabled;\n input.name = name;\n input.value = value || '';\n }\n};\nconst clamp = (min, n, max) => {\n return Math.max(min, Math.min(n, max));\n};\nconst assert = (actual, reason) => {\n if (!actual) {\n const message = 'ASSERT: ' + reason;\n console.error(message);\n debugger; // eslint-disable-line\n throw new Error(message);\n }\n};\nconst now = (ev) => {\n return ev.timeStamp || Date.now();\n};\nconst pointerCoord = (ev) => {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n if (ev) {\n const changedTouches = ev.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n const touch = changedTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n if (ev.pageX !== undefined) {\n return { x: ev.pageX, y: ev.pageY };\n }\n }\n return { x: 0, y: 0 };\n};\n/**\n * @hidden\n * Given a side, return if it should be on the end\n * based on the value of dir\n * @param side the side\n * @param isRTL whether the application dir is rtl\n */\nconst isEndSide = (side) => {\n const isRTL = document.dir === 'rtl';\n switch (side) {\n case 'start':\n return isRTL;\n case 'end':\n return !isRTL;\n default:\n throw new Error(`\"${side}\" is not a valid value for [side]. Use \"start\" or \"end\" instead.`);\n }\n};\nconst debounceEvent = (event, wait) => {\n const original = event._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait),\n };\n};\nconst debounce = (func, wait = 0) => {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n/**\n * Check whether the two string maps are shallow equal.\n *\n * undefined is treated as an empty map.\n *\n * @returns whether the keys are the same and the values are shallow equal.\n */\nconst shallowEqualStringMap = (map1, map2) => {\n map1 !== null && map1 !== void 0 ? map1 : (map1 = {});\n map2 !== null && map2 !== void 0 ? map2 : (map2 = {});\n if (map1 === map2) {\n return true;\n }\n const keys1 = Object.keys(map1);\n if (keys1.length !== Object.keys(map2).length) {\n return false;\n }\n for (const k1 of keys1) {\n if (!(k1 in map2)) {\n return false;\n }\n if (map1[k1] !== map2[k1]) {\n return false;\n }\n }\n return true;\n};\n\nexport { addEventListener as a, removeEventListener as b, componentOnReady as c, inheritAttributes as d, renderHiddenInput as e, focusElement as f, getElementRoot as g, clamp as h, inheritAriaAttributes as i, debounceEvent as j, findItemLabel as k, isEndSide as l, assert as m, getAriaLabel as n, debounce as o, pointerCoord as p, hasShadowDom as q, raf as r, shallowEqualStringMap as s, transitionEndAsync as t, now as u };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { getAssetPath, proxyCustomElement, HTMLElement, Build, h, Host } from '@stencil/core/internal/client';\n\nlet CACHED_MAP;\nconst getIconMap = () => {\n if (typeof window === 'undefined') {\n return new Map();\n }\n else {\n if (!CACHED_MAP) {\n const win = window;\n win.Ionicons = win.Ionicons || {};\n CACHED_MAP = win.Ionicons.map = win.Ionicons.map || new Map();\n }\n return CACHED_MAP;\n }\n};\nconst getUrl = (i) => {\n let url = getSrc(i.src);\n if (url) {\n return url;\n }\n url = getName(i.name, i.icon, i.mode, i.ios, i.md);\n if (url) {\n return getNamedUrl(url);\n }\n if (i.icon) {\n url = getSrc(i.icon);\n if (url) {\n return url;\n }\n url = getSrc(i.icon[i.mode]);\n if (url) {\n return url;\n }\n }\n return null;\n};\nconst getNamedUrl = (iconName) => {\n const url = getIconMap().get(iconName);\n if (url) {\n return url;\n }\n return getAssetPath(`svg/${iconName}.svg`);\n};\nconst getName = (iconName, icon, mode, ios, md) => {\n // default to \"md\" if somehow the mode wasn't set\n mode = (mode && toLower(mode)) === 'ios' ? 'ios' : 'md';\n // if an icon was passed in using the ios or md attributes\n // set the iconName to whatever was passed in\n if (ios && mode === 'ios') {\n iconName = toLower(ios);\n }\n else if (md && mode === 'md') {\n iconName = toLower(md);\n }\n else {\n if (!iconName && icon && !isSrc(icon)) {\n iconName = icon;\n }\n if (isStr(iconName)) {\n iconName = toLower(iconName);\n }\n }\n if (!isStr(iconName) || iconName.trim() === '') {\n return null;\n }\n // only allow alpha characters and dash\n const invalidChars = iconName.replace(/[a-z]|-|\\d/gi, '');\n if (invalidChars !== '') {\n return null;\n }\n return iconName;\n};\nconst getSrc = (src) => {\n if (isStr(src)) {\n src = src.trim();\n if (isSrc(src)) {\n return src;\n }\n }\n return null;\n};\nconst isSrc = (str) => str.length > 0 && /(\\/|\\.)/.test(str);\nconst isStr = (val) => typeof val === 'string';\nconst toLower = (val) => val.toLowerCase();\n/**\n * Elements inside of web components sometimes need to inherit global attributes\n * set on the host. For example, the inner input in `ion-input` should inherit\n * the `title` attribute that developers set directly on `ion-input`. This\n * helper function should be called in componentWillLoad and assigned to a variable\n * that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nconst inheritAttributes = (el, attributes = []) => {\n const attributeObject = {};\n attributes.forEach(attr => {\n if (el.hasAttribute(attr)) {\n const value = el.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = el.getAttribute(attr);\n }\n el.removeAttribute(attr);\n }\n });\n return attributeObject;\n};\n/**\n * Returns `true` if the document or host element\n * has a `dir` set to `rtl`. The host value will always\n * take priority over the root document value.\n */\nconst isRTL = (hostEl) => {\n if (hostEl) {\n if (hostEl.dir !== '') {\n return hostEl.dir.toLowerCase() === 'rtl';\n }\n }\n return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';\n};\n\nconst validateContent = (svgContent) => {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n // setup this way to ensure it works on our buddy IE\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n const svgClass = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', (svgClass + ' s-ion-icon').trim());\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm)) {\n return div.innerHTML;\n }\n }\n return '';\n};\nconst isValid = (elm) => {\n if (elm.nodeType === 1) {\n if (elm.nodeName.toLowerCase() === 'script') {\n return false;\n }\n for (let i = 0; i < elm.attributes.length; i++) {\n const name = elm.attributes[i].name;\n if (isStr(name) && name.toLowerCase().indexOf('on') === 0) {\n return false;\n }\n }\n for (let i = 0; i < elm.childNodes.length; i++) {\n if (!isValid(elm.childNodes[i])) {\n return false;\n }\n }\n }\n return true;\n};\nconst isSvgDataUrl = (url) => url.startsWith('data:image/svg+xml');\nconst isEncodedDataUrl = (url) => url.indexOf(';utf8,') !== -1;\n\nconst ioniconContent = new Map();\nconst requests = new Map();\nlet parser;\nconst getSvgContent = (url, sanitize) => {\n // see if we already have a request for this url\n let req = requests.get(url);\n if (!req) {\n if (typeof fetch !== 'undefined' && typeof document !== 'undefined') {\n /**\n * If the url is a data url of an svg, then try to parse it\n * with the DOMParser. This works with content security policies enabled.\n */\n if (isSvgDataUrl(url) && isEncodedDataUrl(url)) {\n if (!parser) {\n /**\n * Create an instance of the DOM parser. This creates a single\n * parser instance for the entire app, which is more efficient.\n */\n parser = new DOMParser();\n }\n const doc = parser.parseFromString(url, 'text/html');\n const svg = doc.querySelector('svg');\n if (svg) {\n ioniconContent.set(url, svg.outerHTML);\n }\n return Promise.resolve();\n }\n else {\n // we don't already have a request\n req = fetch(url).then((rsp) => {\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n if (svgContent && sanitize !== false) {\n svgContent = validateContent(svgContent);\n }\n ioniconContent.set(url, svgContent || '');\n });\n }\n ioniconContent.set(url, '');\n });\n // cache for the same requests\n requests.set(url, req);\n }\n }\n else {\n // set to empty for ssr scenarios and resolve promise\n ioniconContent.set(url, '');\n return Promise.resolve();\n }\n }\n return req;\n};\n\nconst iconCss = \":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:32px;stroke-width:var(--ionicon-stroke-width, 32px)}.icon-inner,.ionicon,svg{display:block;height:100%;width:100%}:host(.flip-rtl) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.icon-small){font-size:18px !important}:host(.icon-large){font-size:32px !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)}\";\n\nconst Icon = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.iconName = null;\n this.inheritedAttributes = {};\n this.isVisible = false;\n /**\n * The mode determines which platform styles to use.\n */\n this.mode = getIonMode();\n /**\n * If enabled, ion-icon will be loaded lazily when it's visible in the viewport.\n * Default, `false`.\n */\n this.lazy = false;\n /**\n * When set to `false`, SVG content that is HTTP fetched will not be checked\n * if the response SVG content has any `