{"version":3,"file":"5717.0e281cf29b101b30e623.js","mappings":"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","sources":["webpack:///../node_modules/@ionic/core/components/animation.js","webpack:///../node_modules/@ionic/core/components/backdrop.js","webpack:///../node_modules/@ionic/core/components/button.js","webpack:///../node_modules/@ionic/core/components/cubic-bezier.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { r as raf } from './helpers.js';\nimport { w as win } from './index5.js';\n\nlet animationPrefix;\n/**\n * Web Animations requires hyphenated CSS properties\n * to be written in camelCase when animating\n */\nconst processKeyframes = (keyframes) => {\n keyframes.forEach((keyframe) => {\n for (const key in keyframe) {\n // eslint-disable-next-line no-prototype-builtins\n if (keyframe.hasOwnProperty(key)) {\n const value = keyframe[key];\n if (key === 'easing') {\n const newKey = 'animation-timing-function';\n keyframe[newKey] = value;\n delete keyframe[key];\n }\n else {\n const newKey = convertCamelCaseToHypen(key);\n if (newKey !== key) {\n keyframe[newKey] = value;\n delete keyframe[key];\n }\n }\n }\n }\n });\n return keyframes;\n};\nconst convertCamelCaseToHypen = (str) => {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n};\nconst getAnimationPrefix = (el) => {\n if (animationPrefix === undefined) {\n const supportsUnprefixed = el.style.animationName !== undefined;\n const supportsWebkitPrefix = el.style.webkitAnimationName !== undefined;\n animationPrefix = !supportsUnprefixed && supportsWebkitPrefix ? '-webkit-' : '';\n }\n return animationPrefix;\n};\nconst setStyleProperty = (element, propertyName, value) => {\n const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';\n element.style.setProperty(prefix + propertyName, value);\n};\nconst removeStyleProperty = (element, propertyName) => {\n const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';\n element.style.removeProperty(prefix + propertyName);\n};\nconst animationEnd = (el, callback) => {\n let unRegTrans;\n const opts = { passive: true };\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = (ev) => {\n if (el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitAnimationEnd', onTransitionEnd, opts);\n el.addEventListener('animationend', onTransitionEnd, opts);\n unRegTrans = () => {\n el.removeEventListener('webkitAnimationEnd', onTransitionEnd, opts);\n el.removeEventListener('animationend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\n// TODO(FW-2832): type\nconst generateKeyframeRules = (keyframes = []) => {\n return keyframes\n .map((keyframe) => {\n const offset = keyframe.offset;\n const frameString = [];\n for (const property in keyframe) {\n // eslint-disable-next-line no-prototype-builtins\n if (keyframe.hasOwnProperty(property) && property !== 'offset') {\n frameString.push(`${property}: ${keyframe[property]};`);\n }\n }\n return `${offset * 100}% { ${frameString.join(' ')} }`;\n })\n .join(' ');\n};\nconst keyframeIds = [];\nconst generateKeyframeName = (keyframeRules) => {\n let index = keyframeIds.indexOf(keyframeRules);\n if (index < 0) {\n index = keyframeIds.push(keyframeRules) - 1;\n }\n return `ion-animation-${index}`;\n};\nconst getStyleContainer = (element) => {\n // getRootNode is not always available in SSR environments.\n // TODO(FW-2832): types\n const rootNode = element.getRootNode !== undefined ? element.getRootNode() : element;\n return rootNode.head || rootNode;\n};\nconst createKeyframeStylesheet = (keyframeName, keyframeRules, element) => {\n var _a;\n const styleContainer = getStyleContainer(element);\n const keyframePrefix = getAnimationPrefix(element);\n const existingStylesheet = styleContainer.querySelector('#' + keyframeName);\n if (existingStylesheet) {\n return existingStylesheet;\n }\n const stylesheet = ((_a = element.ownerDocument) !== null && _a !== void 0 ? _a : document).createElement('style');\n stylesheet.id = keyframeName;\n stylesheet.textContent = `@${keyframePrefix}keyframes ${keyframeName} { ${keyframeRules} } @${keyframePrefix}keyframes ${keyframeName}-alt { ${keyframeRules} }`;\n styleContainer.appendChild(stylesheet);\n return stylesheet;\n};\nconst addClassToArray = (classes = [], className) => {\n if (className !== undefined) {\n const classNameToAppend = Array.isArray(className) ? className : [className];\n return [...classes, ...classNameToAppend];\n }\n return classes;\n};\n\nconst createAnimation = (animationId) => {\n let _delay;\n let _duration;\n let _easing;\n let _iterations;\n let _fill;\n let _direction;\n let _keyframes = [];\n let beforeAddClasses = [];\n let beforeRemoveClasses = [];\n let initialized = false;\n let parentAnimation;\n let beforeStylesValue = {};\n let afterAddClasses = [];\n let afterRemoveClasses = [];\n let afterStylesValue = {};\n let numAnimationsRunning = 0;\n let shouldForceLinearEasing = false;\n let shouldForceSyncPlayback = false;\n let cssAnimationsTimerFallback;\n let forceDirectionValue;\n let forceDurationValue;\n let forceDelayValue;\n let willComplete = true;\n let finished = false;\n let shouldCalculateNumAnimations = true;\n let keyframeName;\n let ani;\n let paused = false;\n const id = animationId;\n const onFinishCallbacks = [];\n const onFinishOneTimeCallbacks = [];\n const elements = [];\n const childAnimations = [];\n const stylesheets = [];\n const _beforeAddReadFunctions = [];\n const _beforeAddWriteFunctions = [];\n const _afterAddReadFunctions = [];\n const _afterAddWriteFunctions = [];\n const webAnimations = [];\n const supportsAnimationEffect = typeof AnimationEffect === 'function' ||\n (win !== undefined && typeof win.AnimationEffect === 'function');\n const supportsWebAnimations = typeof Element === 'function' &&\n typeof Element.prototype.animate === 'function' &&\n supportsAnimationEffect;\n const ANIMATION_END_FALLBACK_PADDING_MS = 100;\n const getWebAnimations = () => {\n return webAnimations;\n };\n const destroy = (clearStyleSheets) => {\n childAnimations.forEach((childAnimation) => {\n childAnimation.destroy(clearStyleSheets);\n });\n cleanUp(clearStyleSheets);\n elements.length = 0;\n childAnimations.length = 0;\n _keyframes.length = 0;\n clearOnFinish();\n initialized = false;\n shouldCalculateNumAnimations = true;\n return ani;\n };\n /**\n * Cancels any Web Animations, removes\n * any animation properties from the\n * animation's elements, and removes the\n * animation's stylesheets from the DOM.\n */\n const cleanUp = (clearStyleSheets) => {\n cleanUpElements();\n if (clearStyleSheets) {\n cleanUpStyleSheets();\n }\n };\n const resetFlags = () => {\n shouldForceLinearEasing = false;\n shouldForceSyncPlayback = false;\n shouldCalculateNumAnimations = true;\n forceDirectionValue = undefined;\n forceDurationValue = undefined;\n forceDelayValue = undefined;\n numAnimationsRunning = 0;\n finished = false;\n willComplete = true;\n paused = false;\n };\n const isRunning = () => {\n return numAnimationsRunning !== 0 && !paused;\n };\n const onFinish = (callback, opts) => {\n const callbacks = (opts === null || opts === void 0 ? void 0 : opts.oneTimeCallback) ? onFinishOneTimeCallbacks : onFinishCallbacks;\n callbacks.push({ c: callback, o: opts });\n return ani;\n };\n const clearOnFinish = () => {\n onFinishCallbacks.length = 0;\n onFinishOneTimeCallbacks.length = 0;\n return ani;\n };\n /**\n * Cancels any Web Animations and removes\n * any animation properties from the\n * the animation's elements.\n */\n const cleanUpElements = () => {\n if (supportsWebAnimations) {\n webAnimations.forEach((animation) => {\n animation.cancel();\n });\n webAnimations.length = 0;\n }\n else {\n const elementsArray = elements.slice();\n raf(() => {\n elementsArray.forEach((element) => {\n removeStyleProperty(element, 'animation-name');\n removeStyleProperty(element, 'animation-duration');\n removeStyleProperty(element, 'animation-timing-function');\n removeStyleProperty(element, 'animation-iteration-count');\n removeStyleProperty(element, 'animation-delay');\n removeStyleProperty(element, 'animation-play-state');\n removeStyleProperty(element, 'animation-fill-mode');\n removeStyleProperty(element, 'animation-direction');\n });\n });\n }\n };\n /**\n * Removes the animation's stylesheets\n * from the DOM.\n */\n const cleanUpStyleSheets = () => {\n stylesheets.forEach((stylesheet) => {\n /**\n * When sharing stylesheets, it's possible\n * for another animation to have already\n * cleaned up a particular stylesheet\n */\n if (stylesheet === null || stylesheet === void 0 ? void 0 : stylesheet.parentNode) {\n stylesheet.parentNode.removeChild(stylesheet);\n }\n });\n stylesheets.length = 0;\n };\n const beforeAddRead = (readFn) => {\n _beforeAddReadFunctions.push(readFn);\n return ani;\n };\n const beforeAddWrite = (writeFn) => {\n _beforeAddWriteFunctions.push(writeFn);\n return ani;\n };\n const afterAddRead = (readFn) => {\n _afterAddReadFunctions.push(readFn);\n return ani;\n };\n const afterAddWrite = (writeFn) => {\n _afterAddWriteFunctions.push(writeFn);\n return ani;\n };\n const beforeAddClass = (className) => {\n beforeAddClasses = addClassToArray(beforeAddClasses, className);\n return ani;\n };\n const beforeRemoveClass = (className) => {\n beforeRemoveClasses = addClassToArray(beforeRemoveClasses, className);\n return ani;\n };\n /**\n * Set CSS inline styles to the animation's\n * elements before the animation begins.\n */\n const beforeStyles = (styles = {}) => {\n beforeStylesValue = styles;\n return ani;\n };\n /**\n * Clear CSS inline styles from the animation's\n * elements before the animation begins.\n */\n const beforeClearStyles = (propertyNames = []) => {\n for (const property of propertyNames) {\n beforeStylesValue[property] = '';\n }\n return ani;\n };\n const afterAddClass = (className) => {\n afterAddClasses = addClassToArray(afterAddClasses, className);\n return ani;\n };\n const afterRemoveClass = (className) => {\n afterRemoveClasses = addClassToArray(afterRemoveClasses, className);\n return ani;\n };\n const afterStyles = (styles = {}) => {\n afterStylesValue = styles;\n return ani;\n };\n const afterClearStyles = (propertyNames = []) => {\n for (const property of propertyNames) {\n afterStylesValue[property] = '';\n }\n return ani;\n };\n const getFill = () => {\n if (_fill !== undefined) {\n return _fill;\n }\n if (parentAnimation) {\n return parentAnimation.getFill();\n }\n return 'both';\n };\n const getDirection = () => {\n if (forceDirectionValue !== undefined) {\n return forceDirectionValue;\n }\n if (_direction !== undefined) {\n return _direction;\n }\n if (parentAnimation) {\n return parentAnimation.getDirection();\n }\n return 'normal';\n };\n const getEasing = () => {\n if (shouldForceLinearEasing) {\n return 'linear';\n }\n if (_easing !== undefined) {\n return _easing;\n }\n if (parentAnimation) {\n return parentAnimation.getEasing();\n }\n return 'linear';\n };\n const getDuration = () => {\n if (shouldForceSyncPlayback) {\n return 0;\n }\n if (forceDurationValue !== undefined) {\n return forceDurationValue;\n }\n if (_duration !== undefined) {\n return _duration;\n }\n if (parentAnimation) {\n return parentAnimation.getDuration();\n }\n return 0;\n };\n const getIterations = () => {\n if (_iterations !== undefined) {\n return _iterations;\n }\n if (parentAnimation) {\n return parentAnimation.getIterations();\n }\n return 1;\n };\n const getDelay = () => {\n if (forceDelayValue !== undefined) {\n return forceDelayValue;\n }\n if (_delay !== undefined) {\n return _delay;\n }\n if (parentAnimation) {\n return parentAnimation.getDelay();\n }\n return 0;\n };\n const getKeyframes = () => {\n return _keyframes;\n };\n const direction = (animationDirection) => {\n _direction = animationDirection;\n update(true);\n return ani;\n };\n const fill = (animationFill) => {\n _fill = animationFill;\n update(true);\n return ani;\n };\n const delay = (animationDelay) => {\n _delay = animationDelay;\n update(true);\n return ani;\n };\n const easing = (animationEasing) => {\n _easing = animationEasing;\n update(true);\n return ani;\n };\n const duration = (animationDuration) => {\n /**\n * CSS Animation Durations of 0ms work fine on Chrome\n * but do not run on Safari, so force it to 1ms to\n * get it to run on both platforms.\n */\n if (!supportsWebAnimations && animationDuration === 0) {\n animationDuration = 1;\n }\n _duration = animationDuration;\n update(true);\n return ani;\n };\n const iterations = (animationIterations) => {\n _iterations = animationIterations;\n update(true);\n return ani;\n };\n const parent = (animation) => {\n parentAnimation = animation;\n return ani;\n };\n const addElement = (el) => {\n if (el != null) {\n if (el.nodeType === 1) {\n elements.push(el);\n }\n else if (el.length >= 0) {\n for (let i = 0; i < el.length; i++) {\n elements.push(el[i]);\n }\n }\n else {\n console.error('Invalid addElement value');\n }\n }\n return ani;\n };\n const addAnimation = (animationToAdd) => {\n if (animationToAdd != null) {\n if (Array.isArray(animationToAdd)) {\n for (const animation of animationToAdd) {\n animation.parent(ani);\n childAnimations.push(animation);\n }\n }\n else {\n animationToAdd.parent(ani);\n childAnimations.push(animationToAdd);\n }\n }\n return ani;\n };\n const keyframes = (keyframeValues) => {\n const different = _keyframes !== keyframeValues;\n _keyframes = keyframeValues;\n if (different) {\n updateKeyframes(_keyframes);\n }\n return ani;\n };\n const updateKeyframes = (keyframeValues) => {\n if (supportsWebAnimations) {\n getWebAnimations().forEach((animation) => {\n if (animation.effect.setKeyframes) {\n animation.effect.setKeyframes(keyframeValues);\n }\n else {\n const newEffect = new KeyframeEffect(animation.effect.target, keyframeValues, animation.effect.getTiming());\n animation.effect = newEffect;\n }\n });\n }\n else {\n initializeCSSAnimation();\n }\n };\n /**\n * Run all \"before\" animation hooks.\n */\n const beforeAnimation = () => {\n // Runs all before read callbacks\n _beforeAddReadFunctions.forEach((callback) => callback());\n // Runs all before write callbacks\n _beforeAddWriteFunctions.forEach((callback) => callback());\n // Updates styles and classes before animation runs\n const addClasses = beforeAddClasses;\n const removeClasses = beforeRemoveClasses;\n const styles = beforeStylesValue;\n elements.forEach((el) => {\n const elementClassList = el.classList;\n addClasses.forEach((c) => elementClassList.add(c));\n removeClasses.forEach((c) => elementClassList.remove(c));\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (styles.hasOwnProperty(property)) {\n setStyleProperty(el, property, styles[property]);\n }\n }\n });\n };\n /**\n * Run all \"after\" animation hooks.\n */\n const afterAnimation = () => {\n clearCSSAnimationsTimeout();\n // Runs all after read callbacks\n _afterAddReadFunctions.forEach((callback) => callback());\n // Runs all after write callbacks\n _afterAddWriteFunctions.forEach((callback) => callback());\n // Updates styles and classes before animation ends\n const currentStep = willComplete ? 1 : 0;\n const addClasses = afterAddClasses;\n const removeClasses = afterRemoveClasses;\n const styles = afterStylesValue;\n elements.forEach((el) => {\n const elementClassList = el.classList;\n addClasses.forEach((c) => elementClassList.add(c));\n removeClasses.forEach((c) => elementClassList.remove(c));\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (styles.hasOwnProperty(property)) {\n setStyleProperty(el, property, styles[property]);\n }\n }\n });\n onFinishCallbacks.forEach((onFinishCallback) => {\n return onFinishCallback.c(currentStep, ani);\n });\n onFinishOneTimeCallbacks.forEach((onFinishCallback) => {\n return onFinishCallback.c(currentStep, ani);\n });\n onFinishOneTimeCallbacks.length = 0;\n shouldCalculateNumAnimations = true;\n if (willComplete) {\n finished = true;\n }\n willComplete = true;\n };\n const animationFinish = () => {\n if (numAnimationsRunning === 0) {\n return;\n }\n numAnimationsRunning--;\n if (numAnimationsRunning === 0) {\n afterAnimation();\n if (parentAnimation) {\n parentAnimation.animationFinish();\n }\n }\n };\n const initializeCSSAnimation = (toggleAnimationName = true) => {\n cleanUpStyleSheets();\n const processedKeyframes = processKeyframes(_keyframes);\n elements.forEach((element) => {\n if (processedKeyframes.length > 0) {\n const keyframeRules = generateKeyframeRules(processedKeyframes);\n keyframeName = animationId !== undefined ? animationId : generateKeyframeName(keyframeRules);\n const stylesheet = createKeyframeStylesheet(keyframeName, keyframeRules, element);\n stylesheets.push(stylesheet);\n setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);\n setStyleProperty(element, 'animation-timing-function', getEasing());\n setStyleProperty(element, 'animation-delay', `${getDelay()}ms`);\n setStyleProperty(element, 'animation-fill-mode', getFill());\n setStyleProperty(element, 'animation-direction', getDirection());\n const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();\n setStyleProperty(element, 'animation-iteration-count', iterationsCount);\n setStyleProperty(element, 'animation-play-state', 'paused');\n if (toggleAnimationName) {\n setStyleProperty(element, 'animation-name', `${stylesheet.id}-alt`);\n }\n raf(() => {\n setStyleProperty(element, 'animation-name', stylesheet.id || null);\n });\n }\n });\n };\n const initializeWebAnimation = () => {\n elements.forEach((element) => {\n const animation = element.animate(_keyframes, {\n id,\n delay: getDelay(),\n duration: getDuration(),\n easing: getEasing(),\n iterations: getIterations(),\n fill: getFill(),\n direction: getDirection(),\n });\n animation.pause();\n webAnimations.push(animation);\n });\n if (webAnimations.length > 0) {\n webAnimations[0].onfinish = () => {\n animationFinish();\n };\n }\n };\n const initializeAnimation = (toggleAnimationName = true) => {\n beforeAnimation();\n if (_keyframes.length > 0) {\n if (supportsWebAnimations) {\n initializeWebAnimation();\n }\n else {\n initializeCSSAnimation(toggleAnimationName);\n }\n }\n initialized = true;\n };\n const setAnimationStep = (step) => {\n step = Math.min(Math.max(step, 0), 0.9999);\n if (supportsWebAnimations) {\n webAnimations.forEach((animation) => {\n animation.currentTime = animation.effect.getComputedTiming().delay + getDuration() * step;\n animation.pause();\n });\n }\n else {\n const animationDuration = `-${getDuration() * step}ms`;\n elements.forEach((element) => {\n if (_keyframes.length > 0) {\n setStyleProperty(element, 'animation-delay', animationDuration);\n setStyleProperty(element, 'animation-play-state', 'paused');\n }\n });\n }\n };\n const updateWebAnimation = (step) => {\n webAnimations.forEach((animation) => {\n animation.effect.updateTiming({\n delay: getDelay(),\n duration: getDuration(),\n easing: getEasing(),\n iterations: getIterations(),\n fill: getFill(),\n direction: getDirection(),\n });\n });\n if (step !== undefined) {\n setAnimationStep(step);\n }\n };\n const updateCSSAnimation = (toggleAnimationName = true, step) => {\n raf(() => {\n elements.forEach((element) => {\n setStyleProperty(element, 'animation-name', keyframeName || null);\n setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);\n setStyleProperty(element, 'animation-timing-function', getEasing());\n setStyleProperty(element, 'animation-delay', step !== undefined ? `-${step * getDuration()}ms` : `${getDelay()}ms`);\n setStyleProperty(element, 'animation-fill-mode', getFill() || null);\n setStyleProperty(element, 'animation-direction', getDirection() || null);\n const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();\n setStyleProperty(element, 'animation-iteration-count', iterationsCount);\n if (toggleAnimationName) {\n setStyleProperty(element, 'animation-name', `${keyframeName}-alt`);\n }\n raf(() => {\n setStyleProperty(element, 'animation-name', keyframeName || null);\n });\n });\n });\n };\n const update = (deep = false, toggleAnimationName = true, step) => {\n if (deep) {\n childAnimations.forEach((animation) => {\n animation.update(deep, toggleAnimationName, step);\n });\n }\n if (supportsWebAnimations) {\n updateWebAnimation(step);\n }\n else {\n updateCSSAnimation(toggleAnimationName, step);\n }\n return ani;\n };\n const progressStart = (forceLinearEasing = false, step) => {\n childAnimations.forEach((animation) => {\n animation.progressStart(forceLinearEasing, step);\n });\n pauseAnimation();\n shouldForceLinearEasing = forceLinearEasing;\n if (!initialized) {\n initializeAnimation();\n }\n update(false, true, step);\n return ani;\n };\n const progressStep = (step) => {\n childAnimations.forEach((animation) => {\n animation.progressStep(step);\n });\n setAnimationStep(step);\n return ani;\n };\n const progressEnd = (playTo, step, dur) => {\n shouldForceLinearEasing = false;\n childAnimations.forEach((animation) => {\n animation.progressEnd(playTo, step, dur);\n });\n if (dur !== undefined) {\n forceDurationValue = dur;\n }\n finished = false;\n willComplete = true;\n if (playTo === 0) {\n forceDirectionValue = getDirection() === 'reverse' ? 'normal' : 'reverse';\n if (forceDirectionValue === 'reverse') {\n willComplete = false;\n }\n if (supportsWebAnimations) {\n update();\n setAnimationStep(1 - step);\n }\n else {\n forceDelayValue = (1 - step) * getDuration() * -1;\n update(false, false);\n }\n }\n else if (playTo === 1) {\n if (supportsWebAnimations) {\n update();\n setAnimationStep(step);\n }\n else {\n forceDelayValue = step * getDuration() * -1;\n update(false, false);\n }\n }\n if (playTo !== undefined) {\n onFinish(() => {\n forceDurationValue = undefined;\n forceDirectionValue = undefined;\n forceDelayValue = undefined;\n }, {\n oneTimeCallback: true,\n });\n if (!parentAnimation) {\n play();\n }\n }\n return ani;\n };\n const pauseAnimation = () => {\n if (initialized) {\n if (supportsWebAnimations) {\n webAnimations.forEach((animation) => {\n animation.pause();\n });\n }\n else {\n elements.forEach((element) => {\n setStyleProperty(element, 'animation-play-state', 'paused');\n });\n }\n paused = true;\n }\n };\n const pause = () => {\n childAnimations.forEach((animation) => {\n animation.pause();\n });\n pauseAnimation();\n return ani;\n };\n const onAnimationEndFallback = () => {\n cssAnimationsTimerFallback = undefined;\n animationFinish();\n };\n const clearCSSAnimationsTimeout = () => {\n if (cssAnimationsTimerFallback) {\n clearTimeout(cssAnimationsTimerFallback);\n }\n };\n const playCSSAnimations = () => {\n clearCSSAnimationsTimeout();\n raf(() => {\n elements.forEach((element) => {\n if (_keyframes.length > 0) {\n setStyleProperty(element, 'animation-play-state', 'running');\n }\n });\n });\n if (_keyframes.length === 0 || elements.length === 0) {\n animationFinish();\n }\n else {\n /**\n * This is a catchall in the event that a CSS Animation did not finish.\n * The Web Animations API has mechanisms in place for preventing this.\n * CSS Animations will not fire an `animationend` event\n * for elements with `display: none`. The Web Animations API\n * accounts for this, but using raw CSS Animations requires\n * this workaround.\n */\n const animationDelay = getDelay() || 0;\n const animationDuration = getDuration() || 0;\n const animationIterations = getIterations() || 1;\n // No need to set a timeout when animation has infinite iterations\n if (isFinite(animationIterations)) {\n cssAnimationsTimerFallback = setTimeout(onAnimationEndFallback, animationDelay + animationDuration * animationIterations + ANIMATION_END_FALLBACK_PADDING_MS);\n }\n animationEnd(elements[0], () => {\n clearCSSAnimationsTimeout();\n /**\n * Ensure that clean up\n * is always done a frame\n * before the onFinish handlers\n * are fired. Otherwise, there\n * may be flickering if a new\n * animation is started on the same\n * element too quickly\n */\n raf(() => {\n clearCSSAnimationPlayState();\n raf(animationFinish);\n });\n });\n }\n };\n const clearCSSAnimationPlayState = () => {\n elements.forEach((element) => {\n removeStyleProperty(element, 'animation-duration');\n removeStyleProperty(element, 'animation-delay');\n removeStyleProperty(element, 'animation-play-state');\n });\n };\n const playWebAnimations = () => {\n webAnimations.forEach((animation) => {\n animation.play();\n });\n if (_keyframes.length === 0 || elements.length === 0) {\n animationFinish();\n }\n };\n const resetAnimation = () => {\n if (supportsWebAnimations) {\n setAnimationStep(0);\n updateWebAnimation();\n }\n else {\n updateCSSAnimation();\n }\n };\n const play = (opts) => {\n return new Promise((resolve) => {\n if (opts === null || opts === void 0 ? void 0 : opts.sync) {\n shouldForceSyncPlayback = true;\n onFinish(() => (shouldForceSyncPlayback = false), { oneTimeCallback: true });\n }\n if (!initialized) {\n initializeAnimation();\n }\n if (finished) {\n resetAnimation();\n finished = false;\n }\n if (shouldCalculateNumAnimations) {\n numAnimationsRunning = childAnimations.length + 1;\n shouldCalculateNumAnimations = false;\n }\n onFinish(() => resolve(), { oneTimeCallback: true });\n childAnimations.forEach((animation) => {\n animation.play();\n });\n if (supportsWebAnimations) {\n playWebAnimations();\n }\n else {\n playCSSAnimations();\n }\n paused = false;\n });\n };\n const stop = () => {\n childAnimations.forEach((animation) => {\n animation.stop();\n });\n if (initialized) {\n cleanUpElements();\n initialized = false;\n }\n resetFlags();\n };\n const from = (property, value) => {\n const firstFrame = _keyframes[0];\n if (firstFrame !== undefined && (firstFrame.offset === undefined || firstFrame.offset === 0)) {\n firstFrame[property] = value;\n }\n else {\n _keyframes = [{ offset: 0, [property]: value }, ..._keyframes];\n }\n return ani;\n };\n const to = (property, value) => {\n const lastFrame = _keyframes[_keyframes.length - 1];\n if (lastFrame !== undefined && (lastFrame.offset === undefined || lastFrame.offset === 1)) {\n lastFrame[property] = value;\n }\n else {\n _keyframes = [..._keyframes, { offset: 1, [property]: value }];\n }\n return ani;\n };\n const fromTo = (property, fromValue, toValue) => {\n return from(property, fromValue).to(property, toValue);\n };\n return (ani = {\n parentAnimation,\n elements,\n childAnimations,\n id,\n animationFinish,\n from,\n to,\n fromTo,\n parent,\n play,\n pause,\n stop,\n destroy,\n keyframes,\n addAnimation,\n addElement,\n update,\n fill,\n direction,\n iterations,\n duration,\n easing,\n delay,\n getWebAnimations,\n getKeyframes,\n getFill,\n getDirection,\n getDelay,\n getIterations,\n getEasing,\n getDuration,\n afterAddRead,\n afterAddWrite,\n afterClearStyles,\n afterStyles,\n afterRemoveClass,\n afterAddClass,\n beforeAddRead,\n beforeAddWrite,\n beforeClearStyles,\n beforeStyles,\n beforeRemoveClass,\n beforeAddClass,\n onFinish,\n isRunning,\n progressStart,\n progressStep,\n progressEnd,\n });\n};\n\nexport { createAnimation as c };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';\nimport { b as getIonMode } from './ionic-global.js';\nimport { G as GESTURE_CONTROLLER } from './gesture-controller.js';\n\nconst backdropIosCss = \":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}\";\n\nconst backdropMdCss = \":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}\";\n\nconst Backdrop = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionBackdropTap = createEvent(this, \"ionBackdropTap\", 7);\n this.blocker = GESTURE_CONTROLLER.createBlocker({\n disableScroll: true,\n });\n /**\n * If `true`, the backdrop will be visible.\n */\n this.visible = true;\n /**\n * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event.\n */\n this.tappable = true;\n /**\n * If `true`, the backdrop will stop propagation on tap.\n */\n this.stopPropagation = true;\n }\n connectedCallback() {\n if (this.stopPropagation) {\n this.blocker.block();\n }\n }\n disconnectedCallback() {\n this.blocker.unblock();\n }\n onMouseDown(ev) {\n this.emitTap(ev);\n }\n emitTap(ev) {\n if (this.stopPropagation) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (this.tappable) {\n this.ionBackdropTap.emit();\n }\n }\n render() {\n const mode = getIonMode(this);\n return (h(Host, { tabindex: \"-1\", \"aria-hidden\": \"true\", class: {\n [mode]: true,\n 'backdrop-hide': !this.visible,\n 'backdrop-no-tappable': !this.tappable,\n } }));\n }\n static get style() { return {\n ios: backdropIosCss,\n md: backdropMdCss\n }; }\n}, [33, \"ion-backdrop\", {\n \"visible\": [4],\n \"tappable\": [4],\n \"stopPropagation\": [4, \"stop-propagation\"]\n }, [[2, \"click\", \"onMouseDown\"]]]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-backdrop\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-backdrop\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Backdrop);\n }\n break;\n } });\n}\n\nexport { Backdrop as B, defineCustomElement as d };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';\nimport { b as getIonMode } from './ionic-global.js';\nimport { q as hasShadowDom, i as inheritAriaAttributes } from './helpers.js';\nimport { a as printIonWarning } from './index7.js';\nimport { o as openURL, c as createColorClasses, h as hostContext } from './theme.js';\nimport { d as defineCustomElement$1 } from './ripple-effect.js';\n\nconst buttonIosCss = \":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;display:block;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;display:block;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted(ion-icon){font-size:1.4em;pointer-events:none}::slotted(ion-icon[slot=start]){margin-left:-0.3em;margin-right:0.3em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}::slotted(ion-icon[slot=end]){margin-left:0.3em;margin-right:-0.2em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=end]){margin-left:unset;margin-right:unset;-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em}}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}:host{--border-radius:10px;--padding-top:0;--padding-bottom:0;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;margin-left:2px;margin-right:2px;margin-top:4px;margin-bottom:4px;height:2.8em;font-size:16px;font-weight:500;letter-spacing:-0.03em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}:host(.in-buttons){font-size:17px;font-weight:400}:host(.button-solid){--background-activated:var(--ion-color-primary-shade, #3171e0);--background-focused:var(--ion-color-primary-shade, #3171e0);--background-hover:var(--ion-color-primary-tint, #4c8dff);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}:host(.button-outline){--border-radius:10px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #3880ff);--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}:host(.button-clear){--background-activated:transparent;--background-activated-opacity:0;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;font-size:17px;font-weight:normal;letter-spacing:0}:host(.button-large){--border-radius:12px;--padding-top:0;--padding-start:1em;--padding-end:1em;--padding-bottom:0;height:2.8em;font-size:20px}:host(.button-small){--border-radius:6px;--padding-top:0;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:0;height:2.1em;font-size:13px}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-strong){font-weight:600}:host(.button-outline.ion-focused.ion-color) .button-native,:host(.button-clear.ion-focused.ion-color) .button-native{color:var(--ion-color-base)}:host(.button-outline.ion-focused.ion-color) .button-native::after,:host(.button-clear.ion-focused.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-shade)}@media (any-hover: hover){:host(.button-clear:not(.ion-activated):hover),:host(.button-outline:not(.ion-activated):hover){opacity:0.6}:host(.button-clear.ion-color:hover) .button-native,:host(.button-outline.ion-color:hover) .button-native{color:var(--ion-color-base)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:transparent}:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-tint)}:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color):not(.ion-activated)) .button-native::after{background:#fff;opacity:0.1}}:host(.button-clear.ion-activated){opacity:0.4}:host(.button-outline.ion-activated.ion-color) .button-native{color:var(--ion-color-contrast)}:host(.button-outline.ion-activated.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-activated) .button-native::after{background:var(--ion-color-shade)}\";\n\nconst buttonMdCss = \":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;display:block;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;display:block;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted(ion-icon){font-size:1.4em;pointer-events:none}::slotted(ion-icon[slot=start]){margin-left:-0.3em;margin-right:0.3em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}::slotted(ion-icon[slot=end]){margin-left:0.3em;margin-right:-0.2em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=end]){margin-left:unset;margin-right:unset;-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em}}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host(.button-outline.ion-activated.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--color));color:var(--ion-toolbar-background, var(--background), var(--ion-color-primary-contrast, #fff))}:host{--border-radius:4px;--padding-top:0;--padding-bottom:0;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\\n background-color 15ms linear,\\n color 15ms linear;margin-left:2px;margin-right:2px;margin-top:4px;margin-bottom:4px;height:36px;font-size:14px;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}:host(.button-solid){--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}:host(.button-solid.ion-activated){--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}:host(.button-outline){--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-outline.ion-activated.ion-color) .button-native{background:transparent}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-large){--padding-top:0;--padding-start:1em;--padding-end:1em;--padding-bottom:0;height:2.8em;font-size:20px}:host(.button-small){--padding-top:0;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:0;height:2.1em;font-size:13px}:host(.button-strong){font-weight:bold}::slotted(ion-icon[slot=icon-only]){padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color.ion-focused) .button-native::after,:host(.button-outline.ion-color.ion-focused) .button-native::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}\";\n\nconst Button = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionFocus = createEvent(this, \"ionFocus\", 7);\n this.ionBlur = createEvent(this, \"ionBlur\", 7);\n this.inItem = false;\n this.inListHeader = false;\n this.inToolbar = false;\n this.inheritedAttributes = {};\n /**\n * The type of button.\n */\n this.buttonType = 'button';\n /**\n * If `true`, the user cannot interact with the button.\n */\n this.disabled = false;\n /**\n * When using a router, it specifies the transition direction when navigating to\n * another page using `href`.\n */\n this.routerDirection = 'forward';\n /**\n * If `true`, activates a button with a heavier font weight.\n */\n this.strong = false;\n /**\n * The type of the button.\n */\n this.type = 'button';\n this.handleClick = (ev) => {\n const { el } = this;\n if (this.type === 'button') {\n openURL(this.href, ev, this.routerDirection, this.routerAnimation);\n }\n else if (hasShadowDom(el)) {\n // this button wants to specifically submit a form\n // climb up the dom to see if we're in a
\n // and if so, then use JS to submit it\n let formEl = this.findForm();\n const { form } = this;\n if (!formEl && form !== undefined) {\n /**\n * The developer specified a form selector for\n * the button to submit, but it was not found.\n */\n if (typeof form === 'string') {\n printIonWarning(`Form with selector: \"#${form}\" could not be found. Verify that the id is correct and the form is rendered in the DOM.`, el);\n }\n else {\n printIonWarning(`The provided \"form\" element is invalid. Verify that the form is a HTMLFormElement and rendered in the DOM.`, el);\n }\n return;\n }\n if (!formEl) {\n /**\n * If the form element is not set, the button may be inside\n * of a form element. Query the closest form element to the button.\n */\n formEl = el.closest('form');\n }\n if (formEl) {\n ev.preventDefault();\n const fakeButton = document.createElement('button');\n fakeButton.type = this.type;\n fakeButton.style.display = 'none';\n formEl.appendChild(fakeButton);\n fakeButton.click();\n fakeButton.remove();\n }\n }\n };\n this.onFocus = () => {\n this.ionFocus.emit();\n };\n this.onBlur = () => {\n this.ionBlur.emit();\n };\n }\n componentWillLoad() {\n this.inToolbar = !!this.el.closest('ion-buttons');\n this.inListHeader = !!this.el.closest('ion-list-header');\n this.inItem = !!this.el.closest('ion-item') || !!this.el.closest('ion-item-divider');\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n get hasIconOnly() {\n return !!this.el.querySelector('[slot=\"icon-only\"]');\n }\n get rippleType() {\n const hasClearFill = this.fill === undefined || this.fill === 'clear';\n // If the button is in a toolbar, has a clear fill (which is the default)\n // and only has an icon we use the unbounded \"circular\" ripple effect\n if (hasClearFill && this.hasIconOnly && this.inToolbar) {\n return 'unbounded';\n }\n return 'bounded';\n }\n /**\n * Finds the form element based on the provided `form` selector\n * or element reference provided.\n */\n findForm() {\n const { form } = this;\n if (form instanceof HTMLFormElement) {\n return form;\n }\n if (typeof form === 'string') {\n const el = document.getElementById(form);\n if (el instanceof HTMLFormElement) {\n return el;\n }\n }\n return null;\n }\n render() {\n const mode = getIonMode(this);\n const { buttonType, type, disabled, rel, target, size, href, color, expand, hasIconOnly, shape, strong, inheritedAttributes, } = this;\n const finalSize = size === undefined && this.inItem ? 'small' : size;\n const TagType = href === undefined ? 'button' : 'a';\n const attrs = TagType === 'button'\n ? { type }\n : {\n download: this.download,\n href,\n rel,\n target,\n };\n let fill = this.fill;\n /**\n * We check both undefined and null to\n * work around https://github.com/ionic-team/stencil/issues/3586.\n */\n if (fill == null) {\n fill = this.inToolbar || this.inListHeader ? 'clear' : 'solid';\n }\n return (h(Host, { onClick: this.handleClick, \"aria-disabled\": disabled ? 'true' : null, class: createColorClasses(color, {\n [mode]: true,\n [buttonType]: true,\n [`${buttonType}-${expand}`]: expand !== undefined,\n [`${buttonType}-${finalSize}`]: finalSize !== undefined,\n [`${buttonType}-${shape}`]: shape !== undefined,\n [`${buttonType}-${fill}`]: true,\n [`${buttonType}-strong`]: strong,\n 'in-toolbar': hostContext('ion-toolbar', this.el),\n 'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),\n 'in-buttons': hostContext('ion-buttons', this.el),\n 'button-has-icon-only': hasIconOnly,\n 'button-disabled': disabled,\n 'ion-activatable': true,\n 'ion-focusable': true,\n }) }, h(TagType, Object.assign({}, attrs, { class: \"button-native\", part: \"native\", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), h(\"span\", { class: \"button-inner\" }, h(\"slot\", { name: \"icon-only\" }), h(\"slot\", { name: \"start\" }), h(\"slot\", null), h(\"slot\", { name: \"end\" })), mode === 'md' && h(\"ion-ripple-effect\", { type: this.rippleType }))));\n }\n get el() { return this; }\n static get style() { return {\n ios: buttonIosCss,\n md: buttonMdCss\n }; }\n}, [33, \"ion-button\", {\n \"color\": [513],\n \"buttonType\": [1025, \"button-type\"],\n \"disabled\": [516],\n \"expand\": [513],\n \"fill\": [1537],\n \"routerDirection\": [1, \"router-direction\"],\n \"routerAnimation\": [16],\n \"download\": [1],\n \"href\": [1],\n \"rel\": [1],\n \"shape\": [513],\n \"size\": [513],\n \"strong\": [4],\n \"target\": [1],\n \"type\": [1],\n \"form\": [1]\n }]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-button\", \"ion-ripple-effect\"];\n components.forEach(tagName => { switch (tagName) {\n case \"ion-button\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Button);\n }\n break;\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n defineCustomElement$1();\n }\n break;\n } });\n}\n\nexport { Button as B, defineCustomElement as d };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * Based on:\n * https://stackoverflow.com/questions/7348009/y-coordinate-for-a-given-x-cubic-bezier\n * https://math.stackexchange.com/questions/26846/is-there-an-explicit-form-for-cubic-b%C3%A9zier-curves\n */\n/**\n * EXPERIMENTAL\n * Given a cubic-bezier curve, get the x value (time) given\n * the y value (progression).\n * Ex: cubic-bezier(0.32, 0.72, 0, 1);\n * P0: (0, 0)\n * P1: (0.32, 0.72)\n * P2: (0, 1)\n * P3: (1, 1)\n *\n * If you give a cubic bezier curve that never reaches the\n * provided progression, this function will return an empty array.\n */\nconst getTimeGivenProgression = (p0, p1, p2, p3, progression) => {\n return solveCubicBezier(p0[1], p1[1], p2[1], p3[1], progression).map((tValue) => {\n return solveCubicParametricEquation(p0[0], p1[0], p2[0], p3[0], tValue);\n });\n};\n/**\n * Solve a cubic equation in one dimension (time)\n */\nconst solveCubicParametricEquation = (p0, p1, p2, p3, t) => {\n const partA = 3 * p1 * Math.pow(t - 1, 2);\n const partB = -3 * p2 * t + 3 * p2 + p3 * t;\n const partC = p0 * Math.pow(t - 1, 3);\n return t * (partA + t * partB) - partC;\n};\n/**\n * Find the `t` value for a cubic bezier using Cardano's formula\n */\nconst solveCubicBezier = (p0, p1, p2, p3, refPoint) => {\n p0 -= refPoint;\n p1 -= refPoint;\n p2 -= refPoint;\n p3 -= refPoint;\n const roots = solveCubicEquation(p3 - 3 * p2 + 3 * p1 - p0, 3 * p2 - 6 * p1 + 3 * p0, 3 * p1 - 3 * p0, p0);\n return roots.filter((root) => root >= 0 && root <= 1);\n};\nconst solveQuadraticEquation = (a, b, c) => {\n const discriminant = b * b - 4 * a * c;\n if (discriminant < 0) {\n return [];\n }\n else {\n return [(-b + Math.sqrt(discriminant)) / (2 * a), (-b - Math.sqrt(discriminant)) / (2 * a)];\n }\n};\nconst solveCubicEquation = (a, b, c, d) => {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n b /= a;\n c /= a;\n d /= a;\n const p = (3 * c - b * b) / 3;\n const q = (2 * b * b * b - 9 * b * c + 27 * d) / 27;\n if (p === 0) {\n return [Math.pow(-q, 1 / 3)];\n }\n else if (q === 0) {\n return [Math.sqrt(-p), -Math.sqrt(-p)];\n }\n const discriminant = Math.pow(q / 2, 2) + Math.pow(p / 3, 3);\n if (discriminant === 0) {\n return [Math.pow(q / 2, 1 / 2) - b / 3];\n }\n else if (discriminant > 0) {\n return [\n Math.pow(-(q / 2) + Math.sqrt(discriminant), 1 / 3) - Math.pow(q / 2 + Math.sqrt(discriminant), 1 / 3) - b / 3,\n ];\n }\n const r = Math.sqrt(Math.pow(-(p / 3), 3));\n const phi = Math.acos(-(q / (2 * Math.sqrt(Math.pow(-(p / 3), 3)))));\n const s = 2 * Math.pow(r, 1 / 3);\n return [\n s * Math.cos(phi / 3) - b / 3,\n s * Math.cos((phi + 2 * Math.PI) / 3) - b / 3,\n s * Math.cos((phi + 4 * Math.PI) / 3) - b / 3,\n ];\n};\n\nexport { getTimeGivenProgression as g };\n"],"names":["animationPrefix","convertCamelCaseToHypen","str","replace","toLowerCase","getAnimationPrefix","el","undefined","supportsUnprefixed","style","animationName","supportsWebkitPrefix","webkitAnimationName","setStyleProperty","element","propertyName","value","prefix","startsWith","setProperty","removeStyleProperty","removeProperty","keyframeIds","addClassToArray","classes","className","classNameToAppend","Array","isArray","createAnimation","animationId","_delay","_duration","_easing","_iterations","_fill","_direction","parentAnimation","cssAnimationsTimerFallback","forceDirectionValue","forceDurationValue","forceDelayValue","keyframeName","ani","_keyframes","beforeAddClasses","beforeRemoveClasses","initialized","beforeStylesValue","afterAddClasses","afterRemoveClasses","afterStylesValue","numAnimationsRunning","shouldForceLinearEasing","shouldForceSyncPlayback","willComplete","finished","shouldCalculateNumAnimations","paused","id","onFinishCallbacks","onFinishOneTimeCallbacks","elements","childAnimations","stylesheets","_beforeAddReadFunctions","_beforeAddWriteFunctions","_afterAddReadFunctions","_afterAddWriteFunctions","webAnimations","supportsAnimationEffect","AnimationEffect","w","supportsWebAnimations","Element","prototype","animate","getWebAnimations","cleanUp","clearStyleSheets","cleanUpElements","cleanUpStyleSheets","onFinish","callback","opts","oneTimeCallback","push","c","o","clearOnFinish","length","forEach","animation","cancel","elementsArray","slice","r","stylesheet","parentNode","removeChild","getFill","getDirection","getEasing","getDuration","getIterations","getDelay","updateKeyframes","keyframeValues","effect","setKeyframes","newEffect","KeyframeEffect","target","getTiming","initializeCSSAnimation","animationFinish","clearCSSAnimationsTimeout","currentStep","addClasses","removeClasses","styles","elementClassList","classList","add","remove","property","hasOwnProperty","onFinishCallback","afterAnimation","toggleAnimationName","processedKeyframes","keyframes","keyframe","key","newKey","processKeyframes","keyframeRules","map","offset","frameString","join","generateKeyframeRules","index","indexOf","generateKeyframeName","_a","styleContainer","rootNode","getRootNode","head","getStyleContainer","keyframePrefix","existingStylesheet","querySelector","ownerDocument","document","createElement","textContent","appendChild","createKeyframeStylesheet","iterationsCount","Infinity","toString","initializeAnimation","beforeAnimation","delay","duration","easing","iterations","fill","direction","pause","onfinish","setAnimationStep","step","Math","min","max","currentTime","getComputedTiming","animationDuration","updateWebAnimation","updateTiming","updateCSSAnimation","update","deep","pauseAnimation","onAnimationEndFallback","clearTimeout","clearCSSAnimationPlayState","play","Promise","resolve","sync","animationDelay","animationIterations","isFinite","setTimeout","unRegTrans","passive","unregister","onTransitionEnd","ev","addEventListener","removeEventListener","animationEnd","playCSSAnimations","from","firstFrame","to","lastFrame","fromTo","fromValue","toValue","parent","stop","destroy","childAnimation","different","addAnimation","animationToAdd","addElement","nodeType","i","console","error","animationFill","animationDirection","animationEasing","getKeyframes","afterAddRead","readFn","afterAddWrite","writeFn","afterClearStyles","propertyNames","afterStyles","afterRemoveClass","afterAddClass","beforeAddRead","beforeAddWrite","beforeClearStyles","beforeStyles","beforeRemoveClass","beforeAddClass","isRunning","progressStart","forceLinearEasing","progressStep","progressEnd","playTo","dur","Backdrop","constructor","super","this","__registerHost","__attachShadow","ionBackdropTap","blocker","G","disableScroll","visible","tappable","stopPropagation","connectedCallback","block","disconnectedCallback","unblock","onMouseDown","emitTap","preventDefault","emit","render","mode","h","tabindex","class","ios","md","defineCustomElement","customElements","tagName","get","define","Button","ionFocus","ionBlur","inItem","inListHeader","inToolbar","inheritedAttributes","buttonType","disabled","routerDirection","strong","type","handleClick","href","routerAnimation","formEl","findForm","form","closest","fakeButton","display","click","onFocus","onBlur","componentWillLoad","hasIconOnly","rippleType","HTMLFormElement","getElementById","rel","size","color","expand","shape","finalSize","TagType","attrs","download","onClick","Object","assign","part","name","getTimeGivenProgression","p0","p1","p2","p3","progression","solveCubicBezier","tValue","solveCubicParametricEquation","t","pow","refPoint","solveCubicEquation","filter","root","a","b","d","discriminant","sqrt","solveQuadraticEquation","p","q","phi","acos","s","cos","PI"],"sourceRoot":""}