{"version":3,"sources":["node_modules/@ionic/core/dist/esm/helpers-3b390e48.js","node_modules/@ionic/core/dist/esm/index-33ffec25.js","node_modules/@ionic/core/dist/esm/animation-6a1a2a1d.js","src/utils/animations.ts"],"names":["raf","h","__zone_symbol__requestAnimationFrame","requestAnimationFrame","setTimeout","win","window","undefined","animationPrefix","processKeyframes","keyframes","forEach","keyframe","key","hasOwnProperty","value","newKey","convertCamelCaseToHypen","str","replace","toLowerCase","getAnimationPrefix","el","supportsUnprefixed","style","animationName","supportsWebkitPrefix","webkitAnimationName","setStyleProperty","element","propertyName","prefix","startsWith","setProperty","removeStyleProperty","removeProperty","animationEnd","callback","unRegTrans","opts","passive","unregister","onTransitionEnd","ev","target","addEventListener","removeEventListener","generateKeyframeRules","map","offset","frameString","property","push","join","keyframeIds","generateKeyframeName","keyframeRules","index","indexOf","getStyleContainer","rootNode","getRootNode","head","createKeyframeStylesheet","keyframeName","_a","styleContainer","keyframePrefix","existingStylesheet","querySelector","stylesheet","ownerDocument","document","createElement","id","textContent","appendChild","addClassToArray","classes","className","classNameToAppend","Array","isArray","createAnimation","animationId","_delay","_duration","_easing","_iterations","_fill","_direction","_keyframes","beforeAddClasses","beforeRemoveClasses","initialized","parentAnimation","beforeStylesValue","afterAddClasses","afterRemoveClasses","afterStylesValue","numAnimationsRunning","shouldForceLinearEasing","shouldForceSyncPlayback","cssAnimationsTimerFallback","forceDirectionValue","forceDurationValue","forceDelayValue","willComplete","finished","shouldCalculateNumAnimations","ani","paused","onFinishCallbacks","onFinishOneTimeCallbacks","elements","childAnimations","stylesheets","_beforeAddReadFunctions","_beforeAddWriteFunctions","_afterAddReadFunctions","_afterAddWriteFunctions","webAnimations","supportsAnimationEffect","AnimationEffect","supportsWebAnimations","Element","prototype","animate","ANIMATION_END_FALLBACK_PADDING_MS","getWebAnimations","destroy","clearStyleSheets","childAnimation","cleanUp","length","clearOnFinish","cleanUpElements","cleanUpStyleSheets","resetFlags","isRunning","onFinish","callbacks","oneTimeCallback","c","o","animation","cancel","elementsArray","slice","parentNode","removeChild","beforeAddRead","readFn","beforeAddWrite","writeFn","afterAddRead","afterAddWrite","beforeAddClass","beforeRemoveClass","beforeStyles","styles","beforeClearStyles","propertyNames","afterAddClass","afterRemoveClass","afterStyles","afterClearStyles","getFill","getDirection","getEasing","getDuration","getIterations","getDelay","getKeyframes","direction","animationDirection","update","fill","animationFill","delay","animationDelay","easing","animationEasing","duration","animationDuration","iterations","animationIterations","parent","addElement","nodeType","i","console","error","addAnimation","animationToAdd","keyframeValues","different","updateKeyframes","effect","setKeyframes","newEffect","KeyframeEffect","getTiming","initializeCSSAnimation","beforeAnimation","addClasses","removeClasses","elementClassList","classList","add","remove","afterAnimation","clearCSSAnimationsTimeout","currentStep","onFinishCallback","animationFinish","toggleAnimationName","processedKeyframes","iterationsCount","Infinity","toString","initializeWebAnimation","pause","onfinish","initializeAnimation","setAnimationStep","step","Math","min","max","currentTime","getComputedTiming","updateWebAnimation","updateTiming","updateCSSAnimation","deep","progressStart","forceLinearEasing","pauseAnimation","progressStep","progressEnd","playTo","dur","play","onAnimationEndFallback","clearTimeout","playCSSAnimations","isFinite","clearCSSAnimationPlayState","playWebAnimations","resetAnimation","Promise","resolve","sync","stop","from","firstFrame","[object Object]","to","lastFrame","fromTo","fromValue","toValue","args","ionicAnimation","IonicCreateAnimation","ionicAnimationWithDefaultWebAnimationsConfigs","DURATION_SHORT_1","DURATION_SHORT_2","DURATION_SHORT_3","DURATION_SHORT_4","DURATION_MEDIUM_1","DURATION_MEDIUM_2","DURATION_MEDIUM_3","DURATION_MEDIUM_4","DURATION_LONG_1","DURATION_LONG_2","DURATION_LONG_3","DURATION_LONG_4","DEFAULT_DURATION","DEFAULT_TRANSFORM_ORIGIN","EASING_EMPHASIZED_ACCELERATE","EASING_EMPHASIZED_DECCELERATE","DISABLE_ANIMATION_VALUE","fadeIn","fadeOut","scale","scaleOptions","transform-origin","transform","composite","rotate","rotateOptions","translate","translateOptions","slideIn","slideAnimation","maxHeight","heightOptions","growY","overflow","growX","options","maxWidth","widthOptions"],"mappings":"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","sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst transitionEndAsync = (el, expectedDuration = 0) => {\n return new Promise((resolve) => {\n transitionEnd(el, expectedDuration, resolve);\n });\n};\n/**\n * Allows developer to wait for a transition\n * to finish and fallback to a timer if the\n * transition is cancelled or otherwise\n * never finishes. Also see transitionEndAsync\n * which is an await-able version of this.\n */\nconst transitionEnd = (el, expectedDuration = 0, callback) => {\n let unRegTrans;\n let animationTimeout;\n const opts = { passive: true };\n const ANIMATION_FALLBACK_TIMEOUT = 500;\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = (ev) => {\n if (ev === undefined || el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.addEventListener('transitionend', onTransitionEnd, opts);\n animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);\n unRegTrans = () => {\n if (animationTimeout) {\n clearTimeout(animationTimeout);\n animationTimeout = undefined;\n }\n el.removeEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.removeEventListener('transitionend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\n/**\n * Waits for a component to be ready for\n * both custom element and non-custom element builds.\n * If non-custom element build, el.componentOnReady\n * will be used.\n * For custom element builds, we wait a frame\n * so that the inner contents of the component\n * have a chance to render.\n *\n * Use this utility rather than calling\n * el.componentOnReady yourself.\n */\nconst componentOnReady = (el, callback) => {\n if (el.componentOnReady) {\n // eslint-disable-next-line custom-rules/no-component-on-ready-method\n el.componentOnReady().then((resolvedEl) => callback(resolvedEl));\n }\n else {\n raf(() => callback(el));\n }\n};\n/**\n * Elements inside of web components sometimes need to inherit global attributes\n * set on the host. For example, the inner input in `ion-input` should inherit\n * the `title` attribute that developers set directly on `ion-input`. This\n * helper function should be called in componentWillLoad and assigned to a variable\n * that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nconst inheritAttributes = (el, attributes = []) => {\n const attributeObject = {};\n attributes.forEach((attr) => {\n if (el.hasAttribute(attr)) {\n const value = el.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = el.getAttribute(attr);\n }\n el.removeAttribute(attr);\n }\n });\n return attributeObject;\n};\n/**\n * List of available ARIA attributes + `role`.\n * Removed deprecated attributes.\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes\n */\nconst ariaAttributes = [\n 'role',\n 'aria-activedescendant',\n 'aria-atomic',\n 'aria-autocomplete',\n 'aria-braillelabel',\n 'aria-brailleroledescription',\n 'aria-busy',\n 'aria-checked',\n 'aria-colcount',\n 'aria-colindex',\n 'aria-colindextext',\n 'aria-colspan',\n 'aria-controls',\n 'aria-current',\n 'aria-describedby',\n 'aria-description',\n 'aria-details',\n 'aria-disabled',\n 'aria-errormessage',\n 'aria-expanded',\n 'aria-flowto',\n 'aria-haspopup',\n 'aria-hidden',\n 'aria-invalid',\n 'aria-keyshortcuts',\n 'aria-label',\n 'aria-labelledby',\n 'aria-level',\n 'aria-live',\n 'aria-multiline',\n 'aria-multiselectable',\n 'aria-orientation',\n 'aria-owns',\n 'aria-placeholder',\n 'aria-posinset',\n 'aria-pressed',\n 'aria-readonly',\n 'aria-relevant',\n 'aria-required',\n 'aria-roledescription',\n 'aria-rowcount',\n 'aria-rowindex',\n 'aria-rowindextext',\n 'aria-rowspan',\n 'aria-selected',\n 'aria-setsize',\n 'aria-sort',\n 'aria-valuemax',\n 'aria-valuemin',\n 'aria-valuenow',\n 'aria-valuetext',\n];\n/**\n * Returns an array of aria attributes that should be copied from\n * the shadow host element to a target within the light DOM.\n * @param el The element that the attributes should be copied from.\n * @param ignoreList The list of aria-attributes to ignore reflecting and removing from the host.\n * Use this in instances where we manually specify aria attributes on the `` element.\n */\nconst inheritAriaAttributes = (el, ignoreList) => {\n let attributesToInherit = ariaAttributes;\n if (ignoreList && ignoreList.length > 0) {\n attributesToInherit = attributesToInherit.filter((attr) => !ignoreList.includes(attr));\n }\n return inheritAttributes(el, attributesToInherit);\n};\nconst addEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const ael = config.get('_ael');\n if (ael) {\n return ael(el, eventName, callback, opts);\n }\n else if (config._ael) {\n return config._ael(el, eventName, callback, opts);\n }\n }\n }\n return el.addEventListener(eventName, callback, opts);\n};\nconst removeEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const rel = config.get('_rel');\n if (rel) {\n return rel(el, eventName, callback, opts);\n }\n else if (config._rel) {\n return config._rel(el, eventName, callback, opts);\n }\n }\n }\n return el.removeEventListener(eventName, callback, opts);\n};\n/**\n * Gets the root context of a shadow dom element\n * On newer browsers this will be the shadowRoot,\n * but for older browser this may just be the\n * element itself.\n *\n * Useful for whenever you need to explicitly\n * do \"myElement.shadowRoot!.querySelector(...)\".\n */\nconst getElementRoot = (el, fallback = el) => {\n return el.shadowRoot || fallback;\n};\n/**\n * Patched version of requestAnimationFrame that avoids ngzone\n * Use only when you know ngzone should not run\n */\nconst raf = (h) => {\n if (typeof __zone_symbol__requestAnimationFrame === 'function') {\n return __zone_symbol__requestAnimationFrame(h);\n }\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame(h);\n }\n return setTimeout(h);\n};\nconst hasShadowDom = (el) => {\n return !!el.shadowRoot && !!el.attachShadow;\n};\nconst findItemLabel = (componentEl) => {\n const itemEl = componentEl.closest('ion-item');\n if (itemEl) {\n return itemEl.querySelector('ion-label');\n }\n return null;\n};\nconst focusElement = (el) => {\n el.focus();\n /**\n * When programmatically focusing an element,\n * the focus-visible utility will not run because\n * it is expecting a keyboard event to have triggered this;\n * however, there are times when we need to manually control\n * this behavior so we call the `setFocus` method on ion-app\n * which will let us explicitly set the elements to focus.\n */\n if (el.classList.contains('ion-focusable')) {\n const app = el.closest('ion-app');\n if (app) {\n app.setFocus([el]);\n }\n }\n};\n/**\n * This method is used for Ionic's input components that use Shadow DOM. In\n * order to properly label the inputs to work with screen readers, we need\n * to get the text content of the label outside of the shadow root and pass\n * it to the input inside of the shadow root.\n *\n * Referencing label elements by id from outside of the component is\n * impossible due to the shadow boundary, read more here:\n * https://developer.salesforce.com/blogs/2020/01/accessibility-for-web-components.html\n *\n * @param componentEl The shadow element that needs the aria label\n * @param inputId The unique identifier for the input\n */\nconst getAriaLabel = (componentEl, inputId) => {\n let labelText;\n // If the user provides their own label via the aria-labelledby attr\n // we should use that instead of looking for an ion-label\n const labelledBy = componentEl.getAttribute('aria-labelledby');\n // Grab the id off of the component in case they are using\n // a custom label using the label element\n const componentId = componentEl.id;\n let labelId = labelledBy !== null && labelledBy.trim() !== '' ? labelledBy : inputId + '-lbl';\n let label = labelledBy !== null && labelledBy.trim() !== '' ? document.getElementById(labelledBy) : findItemLabel(componentEl);\n if (label) {\n if (labelledBy === null) {\n label.id = labelId;\n }\n labelText = label.textContent;\n label.setAttribute('aria-hidden', 'true');\n // if there is no label, check to see if the user has provided\n // one by setting an id on the component and using the label element\n }\n else if (componentId.trim() !== '') {\n label = document.querySelector(`label[for=\"${componentId}\"]`);\n if (label) {\n if (label.id !== '') {\n labelId = label.id;\n }\n else {\n label.id = labelId = `${componentId}-lbl`;\n }\n labelText = label.textContent;\n }\n }\n return { label, labelId, labelText };\n};\n/**\n * This method is used to add a hidden input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param always Add a hidden input even if the container does not use Shadow\n * @param container The element where the input will be added\n * @param name The name of the input\n * @param value The value of the input\n * @param disabled If true, the input is disabled\n */\nconst renderHiddenInput = (always, container, name, value, disabled) => {\n if (always || hasShadowDom(container)) {\n let input = container.querySelector('input.aux-input');\n if (!input) {\n input = container.ownerDocument.createElement('input');\n input.type = 'hidden';\n input.classList.add('aux-input');\n container.appendChild(input);\n }\n input.disabled = disabled;\n input.name = name;\n input.value = value || '';\n }\n};\nconst clamp = (min, n, max) => {\n return Math.max(min, Math.min(n, max));\n};\nconst assert = (actual, reason) => {\n if (!actual) {\n const message = 'ASSERT: ' + reason;\n console.error(message);\n debugger; // eslint-disable-line\n throw new Error(message);\n }\n};\nconst now = (ev) => {\n return ev.timeStamp || Date.now();\n};\nconst pointerCoord = (ev) => {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n if (ev) {\n const changedTouches = ev.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n const touch = changedTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n if (ev.pageX !== undefined) {\n return { x: ev.pageX, y: ev.pageY };\n }\n }\n return { x: 0, y: 0 };\n};\n/**\n * @hidden\n * Given a side, return if it should be on the end\n * based on the value of dir\n * @param side the side\n * @param isRTL whether the application dir is rtl\n */\nconst isEndSide = (side) => {\n const isRTL = document.dir === 'rtl';\n switch (side) {\n case 'start':\n return isRTL;\n case 'end':\n return !isRTL;\n default:\n throw new Error(`\"${side}\" is not a valid value for [side]. Use \"start\" or \"end\" instead.`);\n }\n};\nconst debounceEvent = (event, wait) => {\n const original = event._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait),\n };\n};\nconst debounce = (func, wait = 0) => {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n/**\n * Check whether the two string maps are shallow equal.\n *\n * undefined is treated as an empty map.\n *\n * @returns whether the keys are the same and the values are shallow equal.\n */\nconst shallowEqualStringMap = (map1, map2) => {\n map1 !== null && map1 !== void 0 ? map1 : (map1 = {});\n map2 !== null && map2 !== void 0 ? map2 : (map2 = {});\n if (map1 === map2) {\n return true;\n }\n const keys1 = Object.keys(map1);\n if (keys1.length !== Object.keys(map2).length) {\n return false;\n }\n for (const k1 of keys1) {\n if (!(k1 in map2)) {\n return false;\n }\n if (map1[k1] !== map2[k1]) {\n return false;\n }\n }\n return true;\n};\n\nexport { addEventListener as a, removeEventListener as b, componentOnReady as c, getAriaLabel as d, renderHiddenInput as e, focusElement as f, getElementRoot as g, debounceEvent as h, inheritAriaAttributes as i, inheritAttributes as j, findItemLabel as k, clamp as l, hasShadowDom as m, assert as n, isEndSide as o, pointerCoord as p, debounce as q, raf as r, shallowEqualStringMap as s, transitionEndAsync as t, now as u };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * When accessing the window, it is important\n * to account for SSR applications where the\n * window is not available. Code that accesses\n * window when it is not available will crash.\n * Even checking if `window === undefined` will cause\n * apps to crash in SSR.\n *\n * Use win below to access an SSR-safe version\n * of the window.\n *\n * Example 1:\n * Before:\n * if (window.innerWidth > 768) { ... }\n *\n * After:\n * import { win } from 'path/to/this/file';\n * if (win?.innerWidth > 768) { ... }\n *\n * Note: Code inside of this if-block will\n * not run in an SSR environment.\n */\nconst win = typeof window !== 'undefined' ? window : undefined;\n\nexport { win as w };\n","/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { r as raf } from './helpers-3b390e48.js';\nimport { w as win } from './index-33ffec25.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};\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 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","import type { Animation } from '@ionic/core';\nimport { createAnimation as IonicCreateAnimation } from '@ionic/core/dist/esm';\n\nexport function createAnimation(...args: any): Animation {\n const ionicAnimation = IonicCreateAnimation(...args);\n const ionicAnimationWithDefaultWebAnimationsConfigs = ionicAnimation.fill('none');\n return ionicAnimationWithDefaultWebAnimationsConfigs;\n}\n\n// TODO: Transformar em Token de Easin conforme documentaĆ§Ć£o do Material Design 3\n// TODO: https://m3.material.io/styles/motion/easing-and-duration/applying-easing-and-duration\nexport const DURATION_SHORT_1 = 50;\nexport const DURATION_SHORT_2 = 100;\nexport const DURATION_SHORT_3 = 150;\nexport const DURATION_SHORT_4 = 200;\nexport const DURATION_MEDIUM_1 = 250;\nexport const DURATION_MEDIUM_2 = 300;\nexport const DURATION_MEDIUM_3 = 350;\nexport const DURATION_MEDIUM_4 = 400;\nexport const DURATION_LONG_1 = 450;\nexport const DURATION_LONG_2 = 500;\nexport const DURATION_LONG_3 = 550;\nexport const DURATION_LONG_4 = 600;\nexport const DEFAULT_DURATION = DURATION_SHORT_4;\n\nexport const DEFAULT_TRANSFORM_ORIGIN = 'top left';\nexport const EASING_EMPHASIZED_ACCELERATE = 'cubic-bezier(0.3, 0, 0.8, 0.15)';\nexport const EASING_EMPHASIZED_DECCELERATE = 'cubic-bezier(0.05, 0.7, 0.1, 1)';\n\n// String value to disable animations inside animations props\nexport const DISABLE_ANIMATION_VALUE = 'none';\n\nexport function fadeIn(): Animation {\n return createAnimation().duration(150).fromTo('opacity', '0', '1');\n}\n\nexport function fadeOut(): Animation {\n return fadeIn().direction('reverse');\n}\n\nexport type FromTo = {\n from: string;\n to: string;\n};\n\nexport function scale(scaleOptions?: FromTo): Animation | undefined {\n if (!scaleOptions || !scaleOptions.from || !scaleOptions.to) {\n console.error(\"Error: the fromTo options were not specified in the 'scale' animation\");\n return;\n }\n\n return createAnimation()\n .duration(DEFAULT_DURATION)\n .beforeStyles({ 'transform-origin': DEFAULT_TRANSFORM_ORIGIN })\n .keyframes([\n { offset: 0, transform: `scale(${scaleOptions.from})`, composite: 'add' },\n { offset: 1, transform: `scale(${scaleOptions.to})`, composite: 'add' },\n ]);\n}\n\nexport function rotate(rotateOptions?: FromTo): Animation | undefined {\n if (!rotateOptions || !rotateOptions.from || !rotateOptions.to) {\n console.error(\"Error: the fromTo options were not specified in the 'rotate' animation\");\n return;\n }\n return createAnimation()\n .duration(DEFAULT_DURATION)\n .beforeStyles({ 'transform-origin': DEFAULT_TRANSFORM_ORIGIN })\n .keyframes([\n { offset: 0, transform: `rotate(${rotateOptions.from})`, composite: 'add' },\n { offset: 1, transform: `rotate(${rotateOptions.to})`, composite: 'add' },\n ]);\n}\n\nexport function translate(translateOptions?: FromTo): Animation | undefined {\n if (!translateOptions || !translateOptions.from || !translateOptions.to) {\n console.error(\"Error: the fromTo options were not specified in the 'translate' animation\");\n return;\n }\n return createAnimation()\n .duration(DEFAULT_DURATION)\n .beforeStyles({ 'transform-origin': DEFAULT_TRANSFORM_ORIGIN })\n .keyframes([\n { offset: 0, transform: `translate(${translateOptions.from})`, composite: 'add' },\n { offset: 1, transform: `translate(${translateOptions.to})`, composite: 'add' },\n ]);\n}\n\nexport function slideIn(direction: 'left' | 'right' = 'left'): Animation {\n const slideAnimation = createAnimation().duration(DEFAULT_DURATION);\n\n switch (direction) {\n case 'left':\n slideAnimation.beforeStyles({ 'transform-origin': 'left' }).keyframes([\n { transform: 'translateX(-100%)', composite: 'add' },\n { transform: 'translateX(0%)', composite: 'add' },\n ]);\n break;\n\n case 'right':\n slideAnimation.beforeStyles({ 'transform-origin': 'right' }).keyframes([\n { transform: 'translateX(100%)', composite: 'add' },\n { transform: 'translateX(0%)', composite: 'add' },\n ]);\n break;\n }\n\n return slideAnimation;\n}\n\nexport function maxHeight(heightOptions?: FromTo): Animation | undefined {\n if (!heightOptions || !heightOptions.from || !heightOptions.to) {\n console.error(\"Error: the fromTo options were not specified in the 'maxHeight' animation\");\n return;\n }\n return createAnimation()\n .duration(DEFAULT_DURATION)\n .keyframes([\n { offset: 0, maxHeight: heightOptions.from },\n { offset: 1, maxHeight: heightOptions.to },\n ]);\n}\n\nexport function growY(heightOptions?: FromTo): Animation | undefined {\n if (!heightOptions || !heightOptions.from || !heightOptions.to) {\n console.error(\"Error: the fromTo options were not specified in the 'growY' animation\");\n return;\n }\n return createAnimation()\n .duration(DEFAULT_DURATION)\n .keyframes([\n { offset: 0, maxHeight: heightOptions.from },\n { offset: 1, maxHeight: heightOptions.to },\n ])\n .beforeStyles({ overflow: 'hidden' })\n .afterClearStyles(['overflow']);\n}\n\nexport function growX(options?: FromTo): Animation | undefined {\n if (!options || !options.from || !options.to) {\n console.error(\"Error: the fromTo options were not specified in the 'growX' animation\");\n return;\n }\n return createAnimation()\n .duration(DEFAULT_DURATION)\n .keyframes([\n { offset: 0, maxWidth: options.from },\n { offset: 1, maxWidth: options.to },\n ])\n .beforeStyles({ overflow: 'hidden' })\n .afterClearStyles(['overflow']);\n}\n\nexport function maxWidth(widthOptions?: FromTo): Animation | undefined {\n if (!widthOptions || !widthOptions.from || !widthOptions.to) {\n console.error(\"Error: the fromTo options were not specified in the 'maxWidth' animation\");\n return;\n }\n return createAnimation()\n .duration(DEFAULT_DURATION)\n .keyframes([\n { offset: 0, maxWidth: widthOptions.from },\n { offset: 1, maxWidth: widthOptions.to },\n ]);\n}\n"]}