{"version":3,"file":"8538.0e281cf29b101b30e623.js","mappings":"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","sources":["webpack:///../node_modules/@ionic/core/components/ion-item.js","webpack:///../node_modules/@ionic/core/components/ion-label.js","webpack:///../node_modules/@ionic/core/components/ion-modal.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { I as Item, d as defineCustomElement$1 } from './item.js';\n\nconst IonItem = Item;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonItem, defineCustomElement };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { L as Label, d as defineCustomElement$1 } from './label.js';\n\nconst IonLabel = Label;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonLabel, defineCustomElement };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, writeTask, h, Host } from '@stencil/core/internal/client';\nimport { b as getIonMode, c as config } from './ionic-global.js';\nimport { a as findClosestIonContent, i as isIonContent, d as disableContentScrollY, r as resetContentScrollY, f as findIonContent, p as printIonContentErrorMsg } from './index8.js';\nimport { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate.js';\nimport { g as getElementRoot, h as clamp, r as raf, d as inheritAttributes } from './helpers.js';\nimport { KEYBOARD_DID_OPEN } from './keyboard.js';\nimport { a as printIonWarning } from './index7.js';\nimport { w as win } from './index5.js';\nimport { G as GESTURE, B as BACKDROP, d as prepareOverlay, e as present, i as activeAnimations, f as dismiss, g as eventMethod } from './overlays.js';\nimport { g as getClassMap } from './theme.js';\nimport { e as deepReady } from './index3.js';\nimport { c as createAnimation } from './animation.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier.js';\nimport { createGesture } from './index2.js';\nimport { d as defineCustomElement$2 } from './backdrop.js';\n\nvar Style;\n(function (Style) {\n Style[\"Dark\"] = \"DARK\";\n Style[\"Light\"] = \"LIGHT\";\n Style[\"Default\"] = \"DEFAULT\";\n})(Style || (Style = {}));\nconst StatusBar = {\n getEngine() {\n var _a;\n return ((_a = win === null || win === void 0 ? void 0 : win.Capacitor) === null || _a === void 0 ? void 0 : _a.isPluginAvailable('StatusBar')) && (win === null || win === void 0 ? void 0 : win.Capacitor.Plugins.StatusBar);\n },\n supportsDefaultStatusBarStyle() {\n var _a;\n /**\n * The 'DEFAULT' status bar style was added\n * to the @capacitor/status-bar plugin in Capacitor 3.\n * PluginHeaders is only supported in Capacitor 3+,\n * so we can use this to detect Capacitor 3.\n */\n return !!((_a = win === null || win === void 0 ? void 0 : win.Capacitor) === null || _a === void 0 ? void 0 : _a.PluginHeaders);\n },\n setStyle(options) {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n engine.setStyle(options);\n },\n getStyle: async function () {\n const engine = this.getEngine();\n if (!engine) {\n return Style.Default;\n }\n const { style } = await engine.getInfo();\n return style;\n },\n};\n\n/**\n * Use y = mx + b to\n * figure out the backdrop value\n * at a particular x coordinate. This\n * is useful when the backdrop does\n * not begin to fade in until after\n * the 0 breakpoint.\n */\nconst getBackdropValueForSheet = (x, backdropBreakpoint) => {\n /**\n * We will use these points:\n * (backdropBreakpoint, 0)\n * (maxBreakpoint, 1)\n * We know that at the beginning breakpoint,\n * the backdrop will be hidden. We also\n * know that at the maxBreakpoint, the backdrop\n * must be fully visible. maxBreakpoint should\n * always be 1 even if the maximum value\n * of the breakpoints array is not 1 since\n * the animation runs from a progress of 0\n * to a progress of 1.\n * m = (y2 - y1) / (x2 - x1)\n *\n * This is simplified from:\n * m = (1 - 0) / (maxBreakpoint - backdropBreakpoint)\n *\n * If the backdropBreakpoint is 1, we return 0 as the\n * backdrop is completely hidden.\n *\n */\n if (backdropBreakpoint === 1) {\n return 0;\n }\n const slope = 1 / (1 - backdropBreakpoint);\n /**\n * From here, compute b which is\n * the backdrop opacity if the offset\n * is 0. If the backdrop does not\n * begin to fade in until after the\n * 0 breakpoint, this b value will be\n * negative. This is fine as we never pass\n * b directly into the animation keyframes.\n * b = y - mx\n * Use a known point: (backdropBreakpoint, 0)\n * This is simplified from:\n * b = 0 - (backdropBreakpoint * slope)\n */\n const b = -(backdropBreakpoint * slope);\n /**\n * Finally, we can now determine the\n * backdrop offset given an arbitrary\n * gesture offset.\n */\n return x * slope + b;\n};\n/**\n * The tablet/desktop card modal activates\n * when the window width is >= 768.\n * At that point, the presenting element\n * is not transformed, so we do not need to\n * adjust the status bar color.\n *\n * Note: We check supportsDefaultStatusBarStyle so that\n * Capacitor <= 2 users do not get their status bar\n * stuck in an inconsistent state due to a lack of\n * support for Style.Default.\n */\nconst setCardStatusBarDark = () => {\n if (!win || win.innerWidth >= 768 || !StatusBar.supportsDefaultStatusBarStyle()) {\n return;\n }\n StatusBar.setStyle({ style: Style.Dark });\n};\nconst setCardStatusBarDefault = (defaultStyle = Style.Default) => {\n if (!win || win.innerWidth >= 768 || !StatusBar.supportsDefaultStatusBarStyle()) {\n return;\n }\n StatusBar.setStyle({ style: defaultStyle });\n};\n\nconst handleCanDismiss = async (el, animation) => {\n /**\n * If canDismiss is not a function\n * then we can return early. If canDismiss is `true`,\n * then canDismissBlocksGesture is `false` as canDismiss\n * will never interrupt the gesture. As a result,\n * this code block is never reached. If canDismiss is `false`,\n * then we never dismiss.\n */\n if (typeof el.canDismiss !== 'function') {\n return;\n }\n /**\n * Run the canDismiss callback.\n * If the function returns `true`,\n * then we can proceed with dismiss.\n */\n const shouldDismiss = await el.canDismiss(undefined, GESTURE);\n if (!shouldDismiss) {\n return;\n }\n /**\n * If canDismiss resolved after the snap\n * back animation finished, we can\n * dismiss immediately.\n *\n * If canDismiss resolved before the snap\n * back animation finished, we need to\n * wait until the snap back animation is\n * done before dismissing.\n */\n if (animation.isRunning()) {\n animation.onFinish(() => {\n el.dismiss(undefined, 'handler');\n }, { oneTimeCallback: true });\n }\n else {\n el.dismiss(undefined, 'handler');\n }\n};\n/**\n * This function lets us simulate a realistic spring-like animation\n * when swiping down on the modal.\n * There are two forces that we need to use to compute the spring physics:\n *\n * 1. Stiffness, k: This is a measure of resistance applied a spring.\n * 2. Dampening, c: This value has the effect of reducing or preventing oscillation.\n *\n * Using these two values, we can calculate the Spring Force and the Dampening Force\n * to compute the total force applied to a spring.\n *\n * Spring Force: This force pulls a spring back into its equilibrium position.\n * Hooke's Law tells us that that spring force (FS) = kX.\n * k is the stiffness of a spring, and X is the displacement of the spring from its\n * equilibrium position. In this case, it is the amount by which the free end\n * of a spring was displaced (stretched/pushed) from its \"relaxed\" position.\n *\n * Dampening Force: This force slows down motion. Without it, a spring would oscillate forever.\n * The dampening force, FD, can be found via this formula: FD = -cv\n * where c the dampening value and v is velocity.\n *\n * Therefore, the resulting force that is exerted on the block is:\n * F = FS + FD = -kX - cv\n *\n * Newton's 2nd Law tells us that F = ma:\n * ma = -kX - cv.\n *\n * For Ionic's purposes, we can assume that m = 1:\n * a = -kX - cv\n *\n * Imagine a block attached to the end of a spring. At equilibrium\n * the block is at position x = 1.\n * Pressing on the block moves it to position x = 0;\n * So, to calculate the displacement, we need to take the\n * current position and subtract the previous position from it.\n * X = x - x0 = 0 - 1 = -1.\n *\n * For Ionic's purposes, we are only pushing on the spring modal\n * so we have a max position of 1.\n * As a result, we can expand displacement to this formula:\n * X = x - 1\n *\n * a = -k(x - 1) - cv\n *\n * We can represent the motion of something as a function of time: f(t) = x.\n * The derivative of position gives us the velocity: f'(t)\n * The derivative of the velocity gives us the acceleration: f''(t)\n *\n * We can substitute the formula above with these values:\n *\n * f\"(t) = -k * (f(t) - 1) - c * f'(t)\n *\n * This is called a differential equation.\n *\n * We know that at t = 0, we are at x = 0 because the modal does not move: f(0) = 0\n * This means our velocity is also zero: f'(0) = 0.\n *\n * We can cheat a bit and plug the formula into Wolfram Alpha.\n * However, we need to pick stiffness and dampening values:\n * k = 0.57\n * c = 15\n *\n * I picked these as they are fairly close to native iOS's spring effect\n * with the modal.\n *\n * What we plug in is this: f(0) = 0; f'(0) = 0; f''(t) = -0.57(f(t) - 1) - 15f'(t)\n *\n * The result is a formula that lets us calculate the acceleration\n * for a given time t.\n * Note: This is the approximate form of the solution. Wolfram Alpha will\n * give you a complex differential equation too.\n */\nconst calculateSpringStep = (t) => {\n return 0.00255275 * 2.71828 ** (-14.9619 * t) - 1.00255 * 2.71828 ** (-0.0380968 * t) + 1;\n};\n\n// Defaults for the card swipe animation\nconst SwipeToCloseDefaults = {\n MIN_PRESENTING_SCALE: 0.93,\n};\nconst createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) => {\n /**\n * The step value at which a card modal\n * is eligible for dismissing via gesture.\n */\n const DISMISS_THRESHOLD = 0.5;\n const height = el.offsetHeight;\n let isOpen = false;\n let canDismissBlocksGesture = false;\n let contentEl = null;\n let scrollEl = null;\n const canDismissMaxStep = 0.2;\n let initialScrollY = true;\n let lastStep = 0;\n const getScrollY = () => {\n if (contentEl && isIonContent(contentEl)) {\n return contentEl.scrollY;\n /**\n * Custom scroll containers are intended to be\n * used with virtual scrolling, so we assume\n * there is scrolling in this case.\n */\n }\n else {\n return true;\n }\n };\n const canStart = (detail) => {\n const target = detail.event.target;\n if (target === null || !target.closest) {\n return true;\n }\n /**\n * If we are swiping on the content,\n * swiping should only be possible if\n * the content is scrolled all the way\n * to the top so that we do not interfere\n * with scrolling.\n *\n * We cannot assume that the `ion-content`\n * target will remain consistent between\n * swipes. For example, when using\n * ion-nav within a card modal it is\n * possible to swipe, push a view, and then\n * swipe again. The target content will not\n * be the same between swipes.\n */\n contentEl = findClosestIonContent(target);\n if (contentEl) {\n /**\n * The card should never swipe to close\n * on the content with a refresher.\n * Note: We cannot solve this by making the\n * swipeToClose gesture have a higher priority\n * than the refresher gesture as the iOS native\n * refresh gesture uses a scroll listener in\n * addition to a gesture.\n *\n * Note: Do not use getScrollElement here\n * because we need this to be a synchronous\n * operation, and getScrollElement is\n * asynchronous.\n */\n if (isIonContent(contentEl)) {\n const root = getElementRoot(contentEl);\n scrollEl = root.querySelector('.inner-scroll');\n }\n else {\n scrollEl = contentEl;\n }\n const hasRefresherInContent = !!contentEl.querySelector('ion-refresher');\n return !hasRefresherInContent && scrollEl.scrollTop === 0;\n }\n /**\n * Card should be swipeable on all\n * parts of the modal except for the footer.\n */\n const footer = target.closest('ion-footer');\n if (footer === null) {\n return true;\n }\n return false;\n };\n const onStart = (detail) => {\n const { deltaY } = detail;\n /**\n * Get the initial scrollY value so\n * that we can correctly reset the scrollY\n * prop when the gesture ends.\n */\n initialScrollY = getScrollY();\n /**\n * If canDismiss is anything other than `true`\n * then users should be able to swipe down\n * until a threshold is hit. At that point,\n * the card modal should not proceed any further.\n * TODO (FW-937)\n * Remove undefined check\n */\n canDismissBlocksGesture = el.canDismiss !== undefined && el.canDismiss !== true;\n /**\n * If we are pulling down, then\n * it is possible we are pulling on the\n * content. We do not want scrolling to\n * happen at the same time as the gesture.\n */\n if (deltaY > 0 && contentEl) {\n disableContentScrollY(contentEl);\n }\n animation.progressStart(true, isOpen ? 1 : 0);\n };\n const onMove = (detail) => {\n const { deltaY } = detail;\n /**\n * If we are pulling down, then\n * it is possible we are pulling on the\n * content. We do not want scrolling to\n * happen at the same time as the gesture.\n */\n if (deltaY > 0 && contentEl) {\n disableContentScrollY(contentEl);\n }\n /**\n * If we are swiping on the content\n * then the swipe gesture should only\n * happen if we are pulling down.\n *\n * However, if we pull up and\n * then down such that the scroll position\n * returns to 0, we should be able to swipe\n * the card.\n */\n const step = detail.deltaY / height;\n /**\n * Check if user is swiping down and\n * if we have a canDismiss value that\n * should block the gesture from\n * proceeding,\n */\n const isAttemptingDismissWithCanDismiss = step >= 0 && canDismissBlocksGesture;\n /**\n * If we are blocking the gesture from dismissing,\n * set the max step value so that the sheet cannot be\n * completely hidden.\n */\n const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;\n /**\n * If we are blocking the gesture from\n * dismissing, calculate the spring modifier value\n * this will be added to the starting breakpoint\n * value to give the gesture a spring-like feeling.\n * Note that the starting breakpoint is always 0,\n * so we omit adding 0 to the result.\n */\n const processedStep = isAttemptingDismissWithCanDismiss ? calculateSpringStep(step / maxStep) : step;\n const clampedStep = clamp(0.0001, processedStep, maxStep);\n animation.progressStep(clampedStep);\n /**\n * When swiping down half way, the status bar style\n * should be reset to its default value.\n *\n * We track lastStep so that we do not fire these\n * functions on every onMove, only when the user has\n * crossed a certain threshold.\n */\n if (clampedStep >= DISMISS_THRESHOLD && lastStep < DISMISS_THRESHOLD) {\n setCardStatusBarDefault(statusBarStyle);\n /**\n * However, if we swipe back up, then the\n * status bar style should be set to have light\n * text on a dark background.\n */\n }\n else if (clampedStep < DISMISS_THRESHOLD && lastStep >= DISMISS_THRESHOLD) {\n setCardStatusBarDark();\n }\n lastStep = clampedStep;\n };\n const onEnd = (detail) => {\n const velocity = detail.velocityY;\n const step = detail.deltaY / height;\n const isAttemptingDismissWithCanDismiss = step >= 0 && canDismissBlocksGesture;\n const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;\n const processedStep = isAttemptingDismissWithCanDismiss ? calculateSpringStep(step / maxStep) : step;\n const clampedStep = clamp(0.0001, processedStep, maxStep);\n const threshold = (detail.deltaY + velocity * 1000) / height;\n /**\n * If canDismiss blocks\n * the swipe gesture, then the\n * animation can never complete until\n * canDismiss is checked.\n */\n const shouldComplete = !isAttemptingDismissWithCanDismiss && threshold >= DISMISS_THRESHOLD;\n let newStepValue = shouldComplete ? -0.001 : 0.001;\n if (!shouldComplete) {\n animation.easing('cubic-bezier(1, 0, 0.68, 0.28)');\n newStepValue += getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], clampedStep)[0];\n }\n else {\n animation.easing('cubic-bezier(0.32, 0.72, 0, 1)');\n newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], clampedStep)[0];\n }\n const duration = shouldComplete\n ? computeDuration(step * height, velocity)\n : computeDuration((1 - clampedStep) * height, velocity);\n isOpen = shouldComplete;\n gesture.enable(false);\n if (contentEl) {\n resetContentScrollY(contentEl, initialScrollY);\n }\n animation\n .onFinish(() => {\n if (!shouldComplete) {\n gesture.enable(true);\n }\n })\n .progressEnd(shouldComplete ? 1 : 0, newStepValue, duration);\n /**\n * If the canDismiss value blocked the gesture\n * from proceeding, then we should ignore whatever\n * shouldComplete is. Whether or not the modal\n * animation should complete is now determined by\n * canDismiss.\n *\n * If the user swiped >25% of the way\n * to the max step, then we should\n * check canDismiss. 25% was chosen\n * to avoid accidental swipes.\n */\n if (isAttemptingDismissWithCanDismiss && clampedStep > maxStep / 4) {\n handleCanDismiss(el, animation);\n }\n else if (shouldComplete) {\n onDismiss();\n }\n };\n const gesture = createGesture({\n el,\n gestureName: 'modalSwipeToClose',\n gesturePriority: 39,\n direction: 'y',\n threshold: 10,\n canStart,\n onStart,\n onMove,\n onEnd,\n });\n return gesture;\n};\nconst computeDuration = (remaining, velocity) => {\n return clamp(400, remaining / Math.abs(velocity * 1.1), 500);\n};\n\nconst createSheetEnterAnimation = (opts) => {\n const { currentBreakpoint, backdropBreakpoint } = opts;\n /**\n * If the backdropBreakpoint is undefined, then the backdrop\n * should always fade in. If the backdropBreakpoint came before the\n * current breakpoint, then the backdrop should be fading in.\n */\n const shouldShowBackdrop = backdropBreakpoint === undefined || backdropBreakpoint < currentBreakpoint;\n const initialBackdrop = shouldShowBackdrop ? `calc(var(--backdrop-opacity) * ${currentBreakpoint})` : '0';\n const backdropAnimation = createAnimation('backdropAnimation').fromTo('opacity', 0, initialBackdrop);\n if (shouldShowBackdrop) {\n backdropAnimation\n .beforeStyles({\n 'pointer-events': 'none',\n })\n .afterClearStyles(['pointer-events']);\n }\n const wrapperAnimation = createAnimation('wrapperAnimation').keyframes([\n { offset: 0, opacity: 1, transform: 'translateY(100%)' },\n { offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },\n ]);\n return { wrapperAnimation, backdropAnimation };\n};\nconst createSheetLeaveAnimation = (opts) => {\n const { currentBreakpoint, backdropBreakpoint } = opts;\n /**\n * Backdrop does not always fade in from 0 to 1 if backdropBreakpoint\n * is defined, so we need to account for that offset by figuring out\n * what the current backdrop value should be.\n */\n const backdropValue = `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(currentBreakpoint, backdropBreakpoint)})`;\n const defaultBackdrop = [\n { offset: 0, opacity: backdropValue },\n { offset: 1, opacity: 0 },\n ];\n const customBackdrop = [\n { offset: 0, opacity: backdropValue },\n { offset: backdropBreakpoint, opacity: 0 },\n { offset: 1, opacity: 0 },\n ];\n const backdropAnimation = createAnimation('backdropAnimation').keyframes(backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop);\n const wrapperAnimation = createAnimation('wrapperAnimation').keyframes([\n { offset: 0, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },\n { offset: 1, opacity: 1, transform: `translateY(100%)` },\n ]);\n return { wrapperAnimation, backdropAnimation };\n};\n\nconst createEnterAnimation$1 = () => {\n const backdropAnimation = createAnimation()\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .beforeStyles({\n 'pointer-events': 'none',\n })\n .afterClearStyles(['pointer-events']);\n const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');\n return { backdropAnimation, wrapperAnimation };\n};\n/**\n * iOS Modal Enter Animation for the Card presentation style\n */\nconst iosEnterAnimation = (baseEl, opts) => {\n const { presentingEl, currentBreakpoint } = opts;\n const root = getElementRoot(baseEl);\n const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();\n backdropAnimation.addElement(root.querySelector('ion-backdrop'));\n wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });\n const baseAnimation = createAnimation('entering-base')\n .addElement(baseEl)\n .easing('cubic-bezier(0.32,0.72,0,1)')\n .duration(500)\n .addAnimation(wrapperAnimation);\n if (presentingEl) {\n const isMobile = window.innerWidth < 768;\n const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;\n const presentingElRoot = getElementRoot(presentingEl);\n const presentingAnimation = createAnimation().beforeStyles({\n transform: 'translateY(0)',\n 'transform-origin': 'top center',\n overflow: 'hidden',\n });\n const bodyEl = document.body;\n if (isMobile) {\n /**\n * Fallback for browsers that does not support `max()` (ex: Firefox)\n * No need to worry about statusbar padding since engines like Gecko\n * are not used as the engine for standalone Cordova/Capacitor apps\n */\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))\n .addElement(presentingEl)\n .keyframes([\n { offset: 0, filter: 'contrast(1)', transform: 'translateY(0px) scale(1)', borderRadius: '0px' },\n { offset: 1, filter: 'contrast(0.85)', transform: finalTransform, borderRadius: '10px 10px 0 0' },\n ]);\n baseAnimation.addAnimation(presentingAnimation);\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '0', '1');\n }\n else {\n const toPresentingScale = hasCardModal ? SwipeToCloseDefaults.MIN_PRESENTING_SCALE : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n presentingAnimation\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingElRoot.querySelector('.modal-wrapper'))\n .keyframes([\n { offset: 0, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n { offset: 1, filter: 'contrast(0.85)', transform: finalTransform },\n ]);\n const shadowAnimation = createAnimation()\n .afterStyles({\n transform: finalTransform,\n })\n .addElement(presentingElRoot.querySelector('.modal-shadow'))\n .keyframes([\n { offset: 0, opacity: '1', transform: 'translateY(0) scale(1)' },\n { offset: 1, opacity: '0', transform: finalTransform },\n ]);\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n }\n return baseAnimation;\n};\n\nconst createLeaveAnimation$1 = () => {\n const backdropAnimation = createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);\n const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(0vh)', 'translateY(100vh)');\n return { backdropAnimation, wrapperAnimation };\n};\n/**\n * iOS Modal Leave Animation\n */\nconst iosLeaveAnimation = (baseEl, opts, duration = 500) => {\n const { presentingEl, currentBreakpoint } = opts;\n const root = getElementRoot(baseEl);\n const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();\n backdropAnimation.addElement(root.querySelector('ion-backdrop'));\n wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });\n const baseAnimation = createAnimation('leaving-base')\n .addElement(baseEl)\n .easing('cubic-bezier(0.32,0.72,0,1)')\n .duration(duration)\n .addAnimation(wrapperAnimation);\n if (presentingEl) {\n const isMobile = window.innerWidth < 768;\n const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;\n const presentingElRoot = getElementRoot(presentingEl);\n const presentingAnimation = createAnimation()\n .beforeClearStyles(['transform'])\n .afterClearStyles(['transform'])\n .onFinish((currentStep) => {\n // only reset background color if this is the last card-style modal\n if (currentStep !== 1) {\n return;\n }\n presentingEl.style.setProperty('overflow', '');\n const numModals = Array.from(bodyEl.querySelectorAll('ion-modal')).filter((m) => m.presentingElement !== undefined).length;\n if (numModals <= 1) {\n bodyEl.style.setProperty('background-color', '');\n }\n });\n const bodyEl = document.body;\n if (isMobile) {\n const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';\n const modalTransform = hasCardModal ? '-10px' : transformOffset;\n const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;\n const finalTransform = `translateY(${modalTransform}) scale(${toPresentingScale})`;\n presentingAnimation.addElement(presentingEl).keyframes([\n { offset: 0, filter: 'contrast(0.85)', transform: finalTransform, borderRadius: '10px 10px 0 0' },\n { offset: 1, filter: 'contrast(1)', transform: 'translateY(0px) scale(1)', borderRadius: '0px' },\n ]);\n baseAnimation.addAnimation(presentingAnimation);\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n if (!hasCardModal) {\n wrapperAnimation.fromTo('opacity', '1', '0');\n }\n else {\n const toPresentingScale = hasCardModal ? SwipeToCloseDefaults.MIN_PRESENTING_SCALE : 1;\n const finalTransform = `translateY(-10px) scale(${toPresentingScale})`;\n presentingAnimation\n .addElement(presentingElRoot.querySelector('.modal-wrapper'))\n .afterStyles({\n transform: 'translate3d(0, 0, 0)',\n })\n .keyframes([\n { offset: 0, filter: 'contrast(0.85)', transform: finalTransform },\n { offset: 1, filter: 'contrast(1)', transform: 'translateY(0) scale(1)' },\n ]);\n const shadowAnimation = createAnimation()\n .addElement(presentingElRoot.querySelector('.modal-shadow'))\n .afterStyles({\n transform: 'translateY(0) scale(1)',\n })\n .keyframes([\n { offset: 0, opacity: '0', transform: finalTransform },\n { offset: 1, opacity: '1', transform: 'translateY(0) scale(1)' },\n ]);\n baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);\n }\n }\n }\n else {\n baseAnimation.addAnimation(backdropAnimation);\n }\n return baseAnimation;\n};\n\nconst createEnterAnimation = () => {\n const backdropAnimation = createAnimation()\n .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')\n .beforeStyles({\n 'pointer-events': 'none',\n })\n .afterClearStyles(['pointer-events']);\n const wrapperAnimation = createAnimation().keyframes([\n { offset: 0, opacity: 0.01, transform: 'translateY(40px)' },\n { offset: 1, opacity: 1, transform: `translateY(0px)` },\n ]);\n return { backdropAnimation, wrapperAnimation };\n};\n/**\n * Md Modal Enter Animation\n */\nconst mdEnterAnimation = (baseEl, opts) => {\n const { currentBreakpoint } = opts;\n const root = getElementRoot(baseEl);\n const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();\n backdropAnimation.addElement(root.querySelector('ion-backdrop'));\n wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));\n return createAnimation()\n .addElement(baseEl)\n .easing('cubic-bezier(0.36,0.66,0.04,1)')\n .duration(280)\n .addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\nconst createLeaveAnimation = () => {\n const backdropAnimation = createAnimation().fromTo('opacity', 'var(--backdrop-opacity)', 0);\n const wrapperAnimation = createAnimation().keyframes([\n { offset: 0, opacity: 0.99, transform: `translateY(0px)` },\n { offset: 1, opacity: 0, transform: 'translateY(40px)' },\n ]);\n return { backdropAnimation, wrapperAnimation };\n};\n/**\n * Md Modal Leave Animation\n */\nconst mdLeaveAnimation = (baseEl, opts) => {\n const { currentBreakpoint } = opts;\n const root = getElementRoot(baseEl);\n const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();\n backdropAnimation.addElement(root.querySelector('ion-backdrop'));\n wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));\n return createAnimation()\n .easing('cubic-bezier(0.47,0,0.745,0.715)')\n .duration(200)\n .addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\nconst createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], getCurrentBreakpoint, onDismiss, onBreakpointChange) => {\n // Defaults for the sheet swipe animation\n const defaultBackdrop = [\n { offset: 0, opacity: 'var(--backdrop-opacity)' },\n { offset: 1, opacity: 0.01 },\n ];\n const customBackdrop = [\n { offset: 0, opacity: 'var(--backdrop-opacity)' },\n { offset: 1 - backdropBreakpoint, opacity: 0 },\n { offset: 1, opacity: 0 },\n ];\n const SheetDefaults = {\n WRAPPER_KEYFRAMES: [\n { offset: 0, transform: 'translateY(0%)' },\n { offset: 1, transform: 'translateY(100%)' },\n ],\n BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop,\n };\n const contentEl = baseEl.querySelector('ion-content');\n const height = wrapperEl.clientHeight;\n let currentBreakpoint = initialBreakpoint;\n let offset = 0;\n let canDismissBlocksGesture = false;\n const canDismissMaxStep = 0.95;\n const wrapperAnimation = animation.childAnimations.find((ani) => ani.id === 'wrapperAnimation');\n const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');\n const maxBreakpoint = breakpoints[breakpoints.length - 1];\n const minBreakpoint = breakpoints[0];\n const enableBackdrop = () => {\n baseEl.style.setProperty('pointer-events', 'auto');\n backdropEl.style.setProperty('pointer-events', 'auto');\n /**\n * When the backdrop is enabled, elements such\n * as inputs should not be focusable outside\n * the sheet.\n */\n baseEl.classList.remove('ion-disable-focus-trap');\n };\n const disableBackdrop = () => {\n baseEl.style.setProperty('pointer-events', 'none');\n backdropEl.style.setProperty('pointer-events', 'none');\n /**\n * When the backdrop is enabled, elements such\n * as inputs should not be focusable outside\n * the sheet.\n * Adding this class disables focus trapping\n * for the sheet temporarily.\n */\n baseEl.classList.add('ion-disable-focus-trap');\n };\n /**\n * After the entering animation completes,\n * we need to set the animation to go from\n * offset 0 to offset 1 so that users can\n * swipe in any direction. We then set the\n * animation offset to the current breakpoint\n * so there is no flickering.\n */\n if (wrapperAnimation && backdropAnimation) {\n wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);\n backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);\n animation.progressStart(true, 1 - currentBreakpoint);\n /**\n * If backdrop is not enabled, then content\n * behind modal should be clickable. To do this, we need\n * to remove pointer-events from ion-modal as a whole.\n * ion-backdrop and .modal-wrapper always have pointer-events: auto\n * applied, so the modal content can still be interacted with.\n */\n const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;\n if (shouldEnableBackdrop) {\n enableBackdrop();\n }\n else {\n disableBackdrop();\n }\n }\n if (contentEl && currentBreakpoint !== maxBreakpoint) {\n contentEl.scrollY = false;\n }\n const canStart = (detail) => {\n /**\n * If the sheet is fully expanded and\n * the user is swiping on the content,\n * the gesture should not start to\n * allow for scrolling on the content.\n */\n const content = detail.event.target.closest('ion-content');\n currentBreakpoint = getCurrentBreakpoint();\n if (currentBreakpoint === 1 && content) {\n return false;\n }\n return true;\n };\n const onStart = () => {\n /**\n * If canDismiss is anything other than `true`\n * then users should be able to swipe down\n * until a threshold is hit. At that point,\n * the card modal should not proceed any further.\n *\n * canDismiss is never fired via gesture if there is\n * no 0 breakpoint. However, it can be fired if the user\n * presses Esc or the hardware back button.\n * TODO (FW-937)\n * Remove undefined check\n */\n canDismissBlocksGesture = baseEl.canDismiss !== undefined && baseEl.canDismiss !== true && minBreakpoint === 0;\n /**\n * If swiping on the content\n * we should disable scrolling otherwise\n * the sheet will expand and the content will scroll.\n */\n if (contentEl) {\n contentEl.scrollY = false;\n }\n raf(() => {\n /**\n * Dismisses the open keyboard when the sheet drag gesture is started.\n * Sets the focus onto the modal element.\n */\n baseEl.focus();\n });\n animation.progressStart(true, 1 - currentBreakpoint);\n };\n const onMove = (detail) => {\n /**\n * Given the change in gesture position on the Y axis,\n * compute where the offset of the animation should be\n * relative to where the user dragged.\n */\n const initialStep = 1 - currentBreakpoint;\n const secondToLastBreakpoint = breakpoints.length > 1 ? 1 - breakpoints[1] : undefined;\n const step = initialStep + detail.deltaY / height;\n const isAttemptingDismissWithCanDismiss = secondToLastBreakpoint !== undefined && step >= secondToLastBreakpoint && canDismissBlocksGesture;\n /**\n * If we are blocking the gesture from dismissing,\n * set the max step value so that the sheet cannot be\n * completely hidden.\n */\n const maxStep = isAttemptingDismissWithCanDismiss ? canDismissMaxStep : 0.9999;\n /**\n * If we are blocking the gesture from\n * dismissing, calculate the spring modifier value\n * this will be added to the starting breakpoint\n * value to give the gesture a spring-like feeling.\n * Note that when isAttemptingDismissWithCanDismiss is true,\n * the modifier is always added to the breakpoint that\n * appears right after the 0 breakpoint.\n *\n * Note that this modifier is essentially the progression\n * between secondToLastBreakpoint and maxStep which is\n * why we subtract secondToLastBreakpoint. This lets us get\n * the result as a value from 0 to 1.\n */\n const processedStep = isAttemptingDismissWithCanDismiss && secondToLastBreakpoint !== undefined\n ? secondToLastBreakpoint +\n calculateSpringStep((step - secondToLastBreakpoint) / (maxStep - secondToLastBreakpoint))\n : step;\n offset = clamp(0.0001, processedStep, maxStep);\n animation.progressStep(offset);\n };\n const onEnd = (detail) => {\n /**\n * When the gesture releases, we need to determine\n * the closest breakpoint to snap to.\n */\n const velocity = detail.velocityY;\n const threshold = (detail.deltaY + velocity * 350) / height;\n const diff = currentBreakpoint - threshold;\n const closest = breakpoints.reduce((a, b) => {\n return Math.abs(b - diff) < Math.abs(a - diff) ? b : a;\n });\n moveSheetToBreakpoint({\n breakpoint: closest,\n breakpointOffset: offset,\n canDismiss: canDismissBlocksGesture,\n });\n };\n const moveSheetToBreakpoint = (options) => {\n const { breakpoint, canDismiss, breakpointOffset } = options;\n /**\n * canDismiss should only prevent snapping\n * when users are trying to dismiss. If canDismiss\n * is present but the user is trying to swipe upwards,\n * we should allow that to happen,\n */\n const shouldPreventDismiss = canDismiss && breakpoint === 0;\n const snapToBreakpoint = shouldPreventDismiss ? currentBreakpoint : breakpoint;\n const shouldRemainOpen = snapToBreakpoint !== 0;\n currentBreakpoint = 0;\n /**\n * Update the animation so that it plays from\n * the last offset to the closest snap point.\n */\n if (wrapperAnimation && backdropAnimation) {\n wrapperAnimation.keyframes([\n { offset: 0, transform: `translateY(${breakpointOffset * 100}%)` },\n { offset: 1, transform: `translateY(${(1 - snapToBreakpoint) * 100}%)` },\n ]);\n backdropAnimation.keyframes([\n {\n offset: 0,\n opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - breakpointOffset, backdropBreakpoint)})`,\n },\n {\n offset: 1,\n opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,\n },\n ]);\n animation.progressStep(0);\n }\n /**\n * Gesture should remain disabled until the\n * snapping animation completes.\n */\n gesture.enable(false);\n if (shouldPreventDismiss) {\n handleCanDismiss(baseEl, animation);\n }\n else if (!shouldRemainOpen) {\n onDismiss();\n }\n return new Promise((resolve) => {\n animation\n .onFinish(() => {\n if (shouldRemainOpen) {\n /**\n * Once the snapping animation completes,\n * we need to reset the animation to go\n * from 0 to 1 so users can swipe in any direction.\n * We then set the animation offset to the current\n * breakpoint so that it starts at the snapped position.\n */\n if (wrapperAnimation && backdropAnimation) {\n raf(() => {\n wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);\n backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);\n animation.progressStart(true, 1 - snapToBreakpoint);\n currentBreakpoint = snapToBreakpoint;\n onBreakpointChange(currentBreakpoint);\n /**\n * If the sheet is fully expanded, we can safely\n * enable scrolling again.\n */\n if (contentEl && currentBreakpoint === breakpoints[breakpoints.length - 1]) {\n contentEl.scrollY = true;\n }\n /**\n * Backdrop should become enabled\n * after the backdropBreakpoint value\n */\n const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;\n if (shouldEnableBackdrop) {\n enableBackdrop();\n }\n else {\n disableBackdrop();\n }\n gesture.enable(true);\n resolve();\n });\n }\n else {\n gesture.enable(true);\n resolve();\n }\n }\n else {\n resolve();\n }\n /**\n * This must be a one time callback\n * otherwise a new callback will\n * be added every time onEnd runs.\n */\n }, { oneTimeCallback: true })\n .progressEnd(1, 0, 500);\n });\n };\n const gesture = createGesture({\n el: wrapperEl,\n gestureName: 'modalSheet',\n gesturePriority: 40,\n direction: 'y',\n threshold: 10,\n canStart,\n onStart,\n onMove,\n onEnd,\n });\n return {\n gesture,\n moveSheetToBreakpoint,\n };\n};\n\nconst modalIosCss = \":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;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;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@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;margin-left:auto;margin-right:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, #c0c0be);cursor:pointer;z-index:11}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.modal-handle{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.modal-handle::before{padding-left:4px;padding-right:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\\\"\\\"}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.modal-handle::before{padding-left:unset;padding-right:unset;-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px}}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}: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: 1px){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: 1px){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl]):host(.modal-card) .modal-wrapper,:host-context([dir=rtl]).modal-card .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-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-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl]):host(.modal-sheet) .modal-wrapper,:host-context([dir=rtl]).modal-sheet .modal-wrapper{border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-right-radius:0;border-bottom-left-radius:0}\";\n\nconst modalMdCss = \":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;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;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@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;margin-left:auto;margin-right:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, #c0c0be);cursor:pointer;z-index:11}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.modal-handle{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.modal-handle::before{padding-left:4px;padding-right:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\\\"\\\"}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.modal-handle::before{padding-left:unset;padding-right:unset;-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px}}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}: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}\";\n\nconst Modal = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.didPresent = createEvent(this, \"ionModalDidPresent\", 7);\n this.willPresent = createEvent(this, \"ionModalWillPresent\", 7);\n this.willDismiss = createEvent(this, \"ionModalWillDismiss\", 7);\n this.didDismiss = createEvent(this, \"ionModalDidDismiss\", 7);\n this.ionBreakpointDidChange = createEvent(this, \"ionBreakpointDidChange\", 7);\n this.didPresentShorthand = createEvent(this, \"didPresent\", 7);\n this.willPresentShorthand = createEvent(this, \"willPresent\", 7);\n this.willDismissShorthand = createEvent(this, \"willDismiss\", 7);\n this.didDismissShorthand = createEvent(this, \"didDismiss\", 7);\n this.modalIndex = modalIds++;\n this.coreDelegate = CoreDelegate();\n this.isSheetModal = false;\n this.inheritedAttributes = {};\n this.inline = false;\n // Whether or not modal is being dismissed via gesture\n this.gestureAnimationDismissing = false;\n this.presented = false;\n /** @internal */\n this.hasController = false;\n /**\n * If `true`, the keyboard will be automatically dismissed when the overlay is presented.\n */\n this.keyboardClose = true;\n /**\n * A decimal value between 0 and 1 that indicates the\n * point after which the backdrop will begin to fade in\n * when using a sheet modal. Prior to this point, the\n * backdrop will be hidden and the content underneath\n * the sheet can be interacted with. This value is exclusive\n * meaning the backdrop will become active after the value\n * specified.\n */\n this.backdropBreakpoint = 0;\n /**\n * The interaction behavior for the sheet modal when the handle is pressed.\n *\n * Defaults to `\"none\"`, which means the modal will not change size or position when the handle is pressed.\n * Set to `\"cycle\"` to let the modal cycle between available breakpoints when pressed.\n *\n * Handle behavior is unavailable when the `handle` property is set to `false` or\n * when the `breakpoints` property is not set (using a fullscreen or card modal).\n */\n this.handleBehavior = 'none';\n /**\n * If `true`, the modal will be dismissed when the backdrop is clicked.\n */\n this.backdropDismiss = true;\n /**\n * If `true`, a backdrop will be displayed behind the modal.\n * This property controls whether or not the backdrop\n * darkens the screen when the modal is presented.\n * It does not control whether or not the backdrop\n * is active or present in the DOM.\n */\n this.showBackdrop = true;\n /**\n * If `true`, the modal will animate.\n */\n this.animated = true;\n /**\n * If `true`, the modal can be swiped to dismiss. Only applies in iOS mode.\n * @deprecated - To prevent modals from dismissing, use canDismiss instead.\n */\n this.swipeToClose = false;\n /**\n * If `true`, the modal will open. If `false`, the modal will close.\n * Use this if you need finer grained control over presentation, otherwise\n * just use the modalController or the `trigger` property.\n * Note: `isOpen` will not automatically be set back to `false` when\n * the modal dismisses. You will need to do that in your code.\n */\n this.isOpen = false;\n /**\n * If `true`, the component passed into `ion-modal` will\n * automatically be mounted when the modal is created. The\n * component will remain mounted even when the modal is dismissed.\n * However, the component will be destroyed when the modal is\n * destroyed. This property is not reactive and should only be\n * used when initially creating a modal.\n *\n * Note: This feature only applies to inline modals in JavaScript\n * frameworks such as Angular, React, and Vue.\n */\n this.keepContentsMounted = false;\n this.configureTriggerInteraction = () => {\n const { trigger, el, destroyTriggerInteraction } = this;\n if (destroyTriggerInteraction) {\n destroyTriggerInteraction();\n }\n if (trigger === undefined) {\n return;\n }\n const triggerEl = trigger !== undefined ? document.getElementById(trigger) : null;\n if (!triggerEl) {\n printIonWarning(`A trigger element with the ID \"${trigger}\" was not found in the DOM. The trigger element must be in the DOM when the \"trigger\" property is set on ion-modal.`, this.el);\n return;\n }\n const configureTriggerInteraction = (trigEl, modalEl) => {\n const openModal = () => {\n modalEl.present();\n };\n trigEl.addEventListener('click', openModal);\n return () => {\n trigEl.removeEventListener('click', openModal);\n };\n };\n this.destroyTriggerInteraction = configureTriggerInteraction(triggerEl, el);\n };\n this.onHandleClick = () => {\n const { sheetTransition, handleBehavior } = this;\n if (handleBehavior !== 'cycle' || sheetTransition !== undefined) {\n /**\n * The sheet modal should not advance to the next breakpoint\n * if the handle behavior is not `cycle` or if the handle\n * is clicked while the sheet is moving to a breakpoint.\n */\n return;\n }\n this.moveToNextBreakpoint();\n };\n this.onBackdropTap = () => {\n const { sheetTransition } = this;\n if (sheetTransition !== undefined) {\n /**\n * When the handle is double clicked at the largest breakpoint,\n * it will start to move to the first breakpoint. While transitioning,\n * the backdrop will often receive the second click. We prevent the\n * backdrop from dismissing the modal while moving between breakpoints.\n */\n return;\n }\n this.dismiss(undefined, BACKDROP);\n };\n this.onLifecycle = (modalEvent) => {\n const el = this.usersElement;\n const name = LIFECYCLE_MAP[modalEvent.type];\n if (el && name) {\n const ev = new CustomEvent(name, {\n bubbles: false,\n cancelable: false,\n detail: modalEvent.detail,\n });\n el.dispatchEvent(ev);\n }\n };\n }\n onIsOpenChange(newValue, oldValue) {\n if (newValue === true && oldValue === false) {\n this.present();\n }\n else if (newValue === false && oldValue === true) {\n this.dismiss();\n }\n }\n onTriggerChange() {\n this.configureTriggerInteraction();\n }\n async swipeToCloseChanged(enable) {\n if (this.gesture) {\n this.gesture.enable(enable);\n }\n else if (enable) {\n this.initSwipeToClose();\n }\n }\n breakpointsChanged(breakpoints) {\n if (breakpoints !== undefined) {\n this.sortedBreakpoints = breakpoints.sort((a, b) => a - b);\n }\n }\n connectedCallback() {\n const { configureTriggerInteraction, el } = this;\n prepareOverlay(el);\n configureTriggerInteraction();\n }\n disconnectedCallback() {\n const { destroyTriggerInteraction } = this;\n if (destroyTriggerInteraction) {\n destroyTriggerInteraction();\n }\n }\n componentWillLoad() {\n const { breakpoints, initialBreakpoint, swipeToClose, el } = this;\n this.inheritedAttributes = inheritAttributes(el, ['aria-label', 'role']);\n /**\n * If user has custom ID set then we should\n * not assign the default incrementing ID.\n */\n this.modalId = this.el.hasAttribute('id') ? this.el.getAttribute('id') : `ion-modal-${this.modalIndex}`;\n const isSheetModal = (this.isSheetModal = breakpoints !== undefined && initialBreakpoint !== undefined);\n if (isSheetModal) {\n this.currentBreakpoint = this.initialBreakpoint;\n }\n if (breakpoints !== undefined && initialBreakpoint !== undefined && !breakpoints.includes(initialBreakpoint)) {\n printIonWarning('Your breakpoints array must include the initialBreakpoint value.');\n }\n if (swipeToClose) {\n printIonWarning('swipeToClose has been deprecated in favor of canDismiss.\\n\\nIf you want a card modal to be swipeable, set canDismiss to `true`. In the next major release of Ionic, swipeToClose will be removed, and all card modals will be swipeable by default.');\n }\n }\n componentDidLoad() {\n /**\n * If modal was rendered with isOpen=\"true\"\n * then we should open modal immediately.\n */\n if (this.isOpen === true) {\n raf(() => this.present());\n }\n this.breakpointsChanged(this.breakpoints);\n }\n /**\n * Determines whether or not an overlay\n * is being used inline or via a controller/JS\n * and returns the correct delegate.\n * By default, subsequent calls to getDelegate\n * will use a cached version of the delegate.\n * This is useful for calling dismiss after\n * present so that the correct delegate is given.\n */\n getDelegate(force = false) {\n if (this.workingDelegate && !force) {\n return {\n delegate: this.workingDelegate,\n inline: this.inline,\n };\n }\n /**\n * If using overlay inline\n * we potentially need to use the coreDelegate\n * so that this works in vanilla JS apps.\n * If a developer has presented this component\n * via a controller, then we can assume\n * the component is already in the\n * correct place.\n */\n const parentEl = this.el.parentNode;\n const inline = (this.inline = parentEl !== null && !this.hasController);\n const delegate = (this.workingDelegate = inline ? this.delegate || this.coreDelegate : this.delegate);\n return { inline, delegate };\n }\n /**\n * Determines whether or not the\n * modal is allowed to dismiss based\n * on the state of the canDismiss prop.\n */\n async checkCanDismiss(data, role) {\n const { canDismiss } = this;\n /**\n * TODO (FW-937) - Remove the following check in\n * the next major release of Ionic.\n */\n if (canDismiss === undefined) {\n return true;\n }\n if (typeof canDismiss === 'function') {\n return canDismiss(data, role);\n }\n return canDismiss;\n }\n /**\n * Present the modal overlay after it has been created.\n */\n async present() {\n if (this.presented) {\n return;\n }\n /**\n * When using an inline modal\n * and dismissing a modal it is possible to\n * quickly present the modal while it is\n * dismissing. We need to await any current\n * transition to allow the dismiss to finish\n * before presenting again.\n */\n if (this.currentTransition !== undefined) {\n await this.currentTransition;\n }\n /**\n * If the modal is presented multiple times (inline modals), we\n * need to reset the current breakpoint to the initial breakpoint.\n */\n this.currentBreakpoint = this.initialBreakpoint;\n const { inline, delegate } = this.getDelegate(true);\n this.usersElement = await attachComponent(delegate, this.el, this.component, ['ion-page'], this.componentProps, inline);\n await deepReady(this.usersElement);\n writeTask(() => this.el.classList.add('show-modal'));\n this.currentTransition = present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {\n presentingEl: this.presentingElement,\n currentBreakpoint: this.initialBreakpoint,\n backdropBreakpoint: this.backdropBreakpoint,\n });\n /* tslint:disable-next-line */\n if (typeof window !== 'undefined') {\n /**\n * This needs to be setup before any\n * non-transition async work so it can be dereferenced\n * in the dismiss method. The dismiss method\n * only waits for the entering transition\n * to finish. It does not wait for all of the `present`\n * method to resolve.\n */\n this.keyboardOpenCallback = () => {\n if (this.gesture) {\n /**\n * When the native keyboard is opened and the webview\n * is resized, the gesture implementation will become unresponsive\n * and enter a free-scroll mode.\n *\n * When the keyboard is opened, we disable the gesture for\n * a single frame and re-enable once the contents have repositioned\n * from the keyboard placement.\n */\n this.gesture.enable(false);\n raf(() => {\n if (this.gesture) {\n this.gesture.enable(true);\n }\n });\n }\n };\n window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);\n }\n /**\n * TODO (FW-937) - In the next major release of Ionic, all card modals\n * will be swipeable by default. canDismiss will be used to determine if the\n * modal can be dismissed. This check should change to check the presence of\n * presentingElement instead.\n *\n * If we did not do this check, then not using swipeToClose would mean you could\n * not run canDismiss on swipe as there would be no swipe gesture created.\n */\n const hasCardModal = this.presentingElement !== undefined && (this.swipeToClose || this.canDismiss !== undefined);\n /**\n * We need to change the status bar at the\n * start of the animation so that it completes\n * by the time the card animation is done.\n */\n if (hasCardModal && getIonMode(this) === 'ios') {\n // Cache the original status bar color before the modal is presented\n this.statusBarStyle = await StatusBar.getStyle();\n setCardStatusBarDark();\n }\n await this.currentTransition;\n if (this.isSheetModal) {\n this.initSheetGesture();\n }\n else if (hasCardModal) {\n this.initSwipeToClose();\n }\n this.currentTransition = undefined;\n }\n initSwipeToClose() {\n var _a;\n if (getIonMode(this) !== 'ios') {\n return;\n }\n const { el } = this;\n // All of the elements needed for the swipe gesture\n // should be in the DOM and referenced by now, except\n // for the presenting el\n const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation);\n const ani = (this.animation = animationBuilder(el, { presentingEl: this.presentingElement }));\n const contentEl = findIonContent(el);\n if (!contentEl) {\n printIonContentErrorMsg(el);\n return;\n }\n const statusBarStyle = (_a = this.statusBarStyle) !== null && _a !== void 0 ? _a : Style.Default;\n this.gesture = createSwipeToCloseGesture(el, ani, statusBarStyle, () => {\n /**\n * While the gesture animation is finishing\n * it is possible for a user to tap the backdrop.\n * This would result in the dismiss animation\n * being played again. Typically this is avoided\n * by setting `presented = false` on the overlay\n * component; however, we cannot do that here as\n * that would prevent the element from being\n * removed from the DOM.\n */\n this.gestureAnimationDismissing = true;\n this.animation.onFinish(async () => {\n await this.dismiss(undefined, GESTURE);\n this.gestureAnimationDismissing = false;\n });\n });\n this.gesture.enable(true);\n }\n initSheetGesture() {\n const { wrapperEl, initialBreakpoint, backdropBreakpoint } = this;\n if (!wrapperEl || initialBreakpoint === undefined) {\n return;\n }\n const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation);\n const ani = (this.animation = animationBuilder(this.el, {\n presentingEl: this.presentingElement,\n currentBreakpoint: initialBreakpoint,\n backdropBreakpoint,\n }));\n ani.progressStart(true, 1);\n const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {\n if (this.currentBreakpoint !== breakpoint) {\n this.currentBreakpoint = breakpoint;\n this.ionBreakpointDidChange.emit({ breakpoint });\n }\n });\n this.gesture = gesture;\n this.moveSheetToBreakpoint = moveSheetToBreakpoint;\n this.gesture.enable(true);\n }\n sheetOnDismiss() {\n /**\n * While the gesture animation is finishing\n * it is possible for a user to tap the backdrop.\n * This would result in the dismiss animation\n * being played again. Typically this is avoided\n * by setting `presented = false` on the overlay\n * component; however, we cannot do that here as\n * that would prevent the element from being\n * removed from the DOM.\n */\n this.gestureAnimationDismissing = true;\n this.animation.onFinish(async () => {\n this.currentBreakpoint = 0;\n this.ionBreakpointDidChange.emit({ breakpoint: this.currentBreakpoint });\n await this.dismiss(undefined, GESTURE);\n this.gestureAnimationDismissing = false;\n });\n }\n /**\n * Dismiss the modal overlay after it has been presented.\n *\n * @param data Any data to emit in the dismiss events.\n * @param role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.\n */\n async dismiss(data, role) {\n var _a;\n if (this.gestureAnimationDismissing && role !== GESTURE) {\n return false;\n }\n /**\n * If a canDismiss handler is responsible\n * for calling the dismiss method, we should\n * not run the canDismiss check again.\n */\n if (role !== 'handler' && !(await this.checkCanDismiss(data, role))) {\n return false;\n }\n /**\n * We need to start the status bar change\n * before the animation so that the change\n * finishes when the dismiss animation does.\n * TODO (FW-937)\n */\n const hasCardModal = this.presentingElement !== undefined && (this.swipeToClose || this.canDismiss !== undefined);\n if (hasCardModal && getIonMode(this) === 'ios') {\n setCardStatusBarDefault(this.statusBarStyle);\n }\n /* tslint:disable-next-line */\n if (typeof window !== 'undefined' && this.keyboardOpenCallback) {\n window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);\n this.keyboardOpenCallback = undefined;\n }\n /**\n * When using an inline modal\n * and presenting a modal it is possible to\n * quickly dismiss the modal while it is\n * presenting. We need to await any current\n * transition to allow the present to finish\n * before dismissing again.\n */\n if (this.currentTransition !== undefined) {\n await this.currentTransition;\n }\n const enteringAnimation = activeAnimations.get(this) || [];\n this.currentTransition = dismiss(this, data, role, 'modalLeave', iosLeaveAnimation, mdLeaveAnimation, {\n presentingEl: this.presentingElement,\n currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,\n backdropBreakpoint: this.backdropBreakpoint,\n });\n const dismissed = await this.currentTransition;\n if (dismissed) {\n const { delegate } = this.getDelegate();\n await detachComponent(delegate, this.usersElement);\n writeTask(() => this.el.classList.remove('show-modal'));\n if (this.animation) {\n this.animation.destroy();\n }\n if (this.gesture) {\n this.gesture.destroy();\n }\n enteringAnimation.forEach((ani) => ani.destroy());\n }\n this.currentBreakpoint = undefined;\n this.currentTransition = undefined;\n this.animation = undefined;\n return dismissed;\n }\n /**\n * Returns a promise that resolves when the modal did dismiss.\n */\n onDidDismiss() {\n return eventMethod(this.el, 'ionModalDidDismiss');\n }\n /**\n * Returns a promise that resolves when the modal will dismiss.\n */\n onWillDismiss() {\n return eventMethod(this.el, 'ionModalWillDismiss');\n }\n /**\n * Move a sheet style modal to a specific breakpoint. The breakpoint value must\n * be a value defined in your `breakpoints` array.\n */\n async setCurrentBreakpoint(breakpoint) {\n if (!this.isSheetModal) {\n printIonWarning('setCurrentBreakpoint is only supported on sheet modals.');\n return;\n }\n if (!this.breakpoints.includes(breakpoint)) {\n printIonWarning(`Attempted to set invalid breakpoint value ${breakpoint}. Please double check that the breakpoint value is part of your defined breakpoints.`);\n return;\n }\n const { currentBreakpoint, moveSheetToBreakpoint, canDismiss, breakpoints } = this;\n if (currentBreakpoint === breakpoint) {\n return;\n }\n if (moveSheetToBreakpoint) {\n this.sheetTransition = moveSheetToBreakpoint({\n breakpoint,\n breakpointOffset: 1 - currentBreakpoint,\n canDismiss: canDismiss !== undefined && canDismiss !== true && breakpoints[0] === 0,\n });\n await this.sheetTransition;\n this.sheetTransition = undefined;\n }\n }\n /**\n * Returns the current breakpoint of a sheet style modal\n */\n async getCurrentBreakpoint() {\n return this.currentBreakpoint;\n }\n async moveToNextBreakpoint() {\n const { breakpoints, currentBreakpoint } = this;\n if (!breakpoints || currentBreakpoint == null) {\n /**\n * If the modal does not have breakpoints and/or the current\n * breakpoint is not set, we can't move to the next breakpoint.\n */\n return false;\n }\n const allowedBreakpoints = breakpoints.filter((b) => b !== 0);\n const currentBreakpointIndex = allowedBreakpoints.indexOf(currentBreakpoint);\n const nextBreakpointIndex = (currentBreakpointIndex + 1) % allowedBreakpoints.length;\n const nextBreakpoint = allowedBreakpoints[nextBreakpointIndex];\n /**\n * Sets the current breakpoint to the next available breakpoint.\n * If the current breakpoint is the last breakpoint, we set the current\n * breakpoint to the first non-zero breakpoint to avoid dismissing the sheet.\n */\n await this.setCurrentBreakpoint(nextBreakpoint);\n return true;\n }\n render() {\n const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes } = this;\n const showHandle = handle !== false && isSheetModal;\n const mode = getIonMode(this);\n const { modalId } = this;\n const isCardModal = presentingElement !== undefined && mode === 'ios';\n const isHandleCycle = handleBehavior === 'cycle';\n return (h(Host, Object.assign({ \"no-router\": true, tabindex: \"-1\" }, htmlAttributes, { style: {\n zIndex: `${20000 + this.overlayIndex}`,\n }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, 'overlay-hidden': true }, getClassMap(this.cssClass)), id: modalId, onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h(\"ion-backdrop\", { ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: \"backdrop\" }), mode === 'ios' && h(\"div\", { class: \"modal-shadow\" }), h(\"div\", Object.assign({\n /*\n role and aria-modal must be used on the\n same element. They must also be set inside the\n shadow DOM otherwise ion-button will not be highlighted\n when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134\n */\n role: \"dialog\"\n }, inheritedAttributes, { \"aria-modal\": \"true\", class: \"modal-wrapper ion-overlay-wrapper\", part: \"content\", ref: (el) => (this.wrapperEl = el) }), showHandle && (h(\"button\", { class: \"modal-handle\",\n // Prevents the handle from receiving keyboard focus when it does not cycle\n tabIndex: !isHandleCycle ? -1 : 0, \"aria-label\": \"Activate to adjust the size of the dialog overlaying the screen\", onClick: isHandleCycle ? this.onHandleClick : undefined, part: \"handle\" })), h(\"slot\", null))));\n }\n get el() { return this; }\n static get watchers() { return {\n \"isOpen\": [\"onIsOpenChange\"],\n \"trigger\": [\"onTriggerChange\"],\n \"swipeToClose\": [\"swipeToCloseChanged\"]\n }; }\n static get style() { return {\n ios: modalIosCss,\n md: modalMdCss\n }; }\n}, [33, \"ion-modal\", {\n \"hasController\": [4, \"has-controller\"],\n \"overlayIndex\": [2, \"overlay-index\"],\n \"delegate\": [16],\n \"keyboardClose\": [4, \"keyboard-close\"],\n \"enterAnimation\": [16],\n \"leaveAnimation\": [16],\n \"breakpoints\": [16],\n \"initialBreakpoint\": [2, \"initial-breakpoint\"],\n \"backdropBreakpoint\": [2, \"backdrop-breakpoint\"],\n \"handle\": [4],\n \"handleBehavior\": [1, \"handle-behavior\"],\n \"component\": [1],\n \"componentProps\": [16],\n \"cssClass\": [1, \"css-class\"],\n \"backdropDismiss\": [4, \"backdrop-dismiss\"],\n \"showBackdrop\": [4, \"show-backdrop\"],\n \"animated\": [4],\n \"swipeToClose\": [4, \"swipe-to-close\"],\n \"presentingElement\": [16],\n \"htmlAttributes\": [16],\n \"isOpen\": [4, \"is-open\"],\n \"trigger\": [1],\n \"keepContentsMounted\": [4, \"keep-contents-mounted\"],\n \"canDismiss\": [4, \"can-dismiss\"],\n \"presented\": [32],\n \"present\": [64],\n \"dismiss\": [64],\n \"onDidDismiss\": [64],\n \"onWillDismiss\": [64],\n \"setCurrentBreakpoint\": [64],\n \"getCurrentBreakpoint\": [64]\n }]);\nconst LIFECYCLE_MAP = {\n ionModalDidPresent: 'ionViewDidEnter',\n ionModalWillPresent: 'ionViewWillEnter',\n ionModalWillDismiss: 'ionViewWillLeave',\n ionModalDidDismiss: 'ionViewDidLeave',\n};\nlet modalIds = 0;\nfunction defineCustomElement$1() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-modal\", \"ion-backdrop\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-modal\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Modal);\n }\n break;\n case \"ion-backdrop\":\n if (!customElements.get(tagName)) {\n defineCustomElement$2();\n }\n break;\n } });\n}\n\nconst IonModal = Modal;\nconst defineCustomElement = defineCustomElement$1;\n\nexport { IonModal, defineCustomElement };\n"],"names":["IonItem","I","defineCustomElement","d","Style","StatusBar","getEngine","_a","w","isPluginAvailable","supportsDefaultStatusBarStyle","PluginHeaders","setStyle","options","engine","this","getStyle","async","Default","style","getInfo","getBackdropValueForSheet","x","backdropBreakpoint","slope","setCardStatusBarDark","Dark","setCardStatusBarDefault","defaultStyle","handleCanDismiss","el","animation","canDismiss","undefined","G","isRunning","onFinish","dismiss","oneTimeCallback","calculateSpringStep","t","SwipeToCloseDefaults","createSwipeToCloseGesture","statusBarStyle","onDismiss","DISMISS_THRESHOLD","height","offsetHeight","isOpen","canDismissBlocksGesture","contentEl","scrollEl","initialScrollY","lastStep","gesture","gestureName","gesturePriority","direction","threshold","canStart","detail","target","event","closest","i","root","g","querySelector","scrollTop","onStart","deltaY","scrollY","progressStart","onMove","step","isAttemptingDismissWithCanDismiss","maxStep","processedStep","clampedStep","progressStep","onEnd","velocity","velocityY","shouldComplete","newStepValue","easing","duration","computeDuration","enable","r","progressEnd","remaining","Math","abs","createSheetEnterAnimation","opts","currentBreakpoint","shouldShowBackdrop","initialBackdrop","backdropAnimation","c","fromTo","beforeStyles","afterClearStyles","wrapperAnimation","keyframes","offset","opacity","transform","createSheetLeaveAnimation","backdropValue","defaultBackdrop","customBackdrop","iosEnterAnimation","baseEl","presentingEl","addElement","querySelectorAll","baseAnimation","addAnimation","isMobile","window","innerWidth","hasCardModal","tagName","presentingElement","presentingElRoot","presentingAnimation","overflow","bodyEl","document","body","transformOffset","CSS","supports","finalTransform","afterStyles","beforeAddWrite","setProperty","filter","borderRadius","shadowAnimation","iosLeaveAnimation","beforeClearStyles","currentStep","Array","from","m","length","mdEnterAnimation","mdLeaveAnimation","Modal","constructor","super","__registerHost","__attachShadow","didPresent","willPresent","willDismiss","didDismiss","ionBreakpointDidChange","didPresentShorthand","willPresentShorthand","willDismissShorthand","didDismissShorthand","modalIndex","modalIds","coreDelegate","C","isSheetModal","inheritedAttributes","inline","gestureAnimationDismissing","presented","hasController","keyboardClose","handleBehavior","backdropDismiss","showBackdrop","animated","swipeToClose","keepContentsMounted","configureTriggerInteraction","trigger","destroyTriggerInteraction","triggerEl","getElementById","trigEl","modalEl","openModal","present","addEventListener","removeEventListener","onHandleClick","sheetTransition","moveToNextBreakpoint","onBackdropTap","B","onLifecycle","modalEvent","usersElement","name","LIFECYCLE_MAP","type","ev","CustomEvent","bubbles","cancelable","dispatchEvent","onIsOpenChange","newValue","oldValue","onTriggerChange","initSwipeToClose","breakpointsChanged","breakpoints","sortedBreakpoints","sort","a","b","connectedCallback","disconnectedCallback","componentWillLoad","initialBreakpoint","modalId","hasAttribute","getAttribute","includes","componentDidLoad","getDelegate","force","workingDelegate","delegate","parentEl","parentNode","data","role","currentTransition","component","componentProps","classList","add","keyboardOpenCallback","KEYBOARD_DID_OPEN","initSheetGesture","animationBuilder","leaveAnimation","ani","f","p","wrapperEl","enterAnimation","moveSheetToBreakpoint","backdropEl","getCurrentBreakpoint","onBreakpointChange","SheetDefaults","WRAPPER_KEYFRAMES","BACKDROP_KEYFRAMES","clientHeight","childAnimations","find","id","maxBreakpoint","minBreakpoint","enableBackdrop","remove","disableBackdrop","breakpoint","breakpointOffset","shouldPreventDismiss","snapToBreakpoint","shouldRemainOpen","Promise","resolve","content","focus","initialStep","secondToLastBreakpoint","diff","reduce","createSheetGesture","sheetOnDismiss","emit","checkCanDismiss","enteringAnimation","dismissed","destroy","forEach","onDidDismiss","onWillDismiss","allowedBreakpoints","currentBreakpointIndex","indexOf","nextBreakpoint","setCurrentBreakpoint","render","handle","htmlAttributes","showHandle","mode","isCardModal","isHandleCycle","h","Object","assign","tabindex","zIndex","overlayIndex","class","cssClass","onIonBackdropTap","onIonModalDidPresent","onIonModalWillPresent","onIonModalWillDismiss","onIonModalDidDismiss","ref","visible","tappable","part","tabIndex","onClick","watchers","ios","md","ionModalDidPresent","ionModalWillPresent","ionModalWillDismiss","ionModalDidDismiss","customElements","get","define"],"sourceRoot":""}