{"version":3,"file":"index-BiOl5Vsz.js","sources":["../../../node_modules/@formkit/auto-animate/index.mjs","../../../node_modules/@formkit/auto-animate/vue/index.mjs"],"sourcesContent":["/**\n * A set of all the parents currently being observe. This is the only non weak\n * registry.\n */\nconst parents = new Set();\n/**\n * Element coordinates that is constantly kept up to date.\n */\nconst coords = new WeakMap();\n/**\n * Siblings of elements that have been removed from the dom.\n */\nconst siblings = new WeakMap();\n/**\n * Animations that are currently running.\n */\nconst animations = new WeakMap();\n/**\n * A map of existing intersection observers used to track element movements.\n */\nconst intersections = new WeakMap();\n/**\n * Intervals for automatically checking the position of elements occasionally.\n */\nconst intervals = new WeakMap();\n/**\n * The configuration options for each group of elements.\n */\nconst options = new WeakMap();\n/**\n * Debounce counters by id, used to debounce calls to update positions.\n */\nconst debounces = new WeakMap();\n/**\n * All parents that are currently enabled are tracked here.\n */\nconst enabled = new WeakSet();\n/**\n * The document used to calculate transitions.\n */\nlet root;\n/**\n * The root’s XY scroll positions.\n */\nlet scrollX = 0;\nlet scrollY = 0;\n/**\n * Used to sign an element as the target.\n */\nconst TGT = \"__aa_tgt\";\n/**\n * Used to sign an element as being part of a removal.\n */\nconst DEL = \"__aa_del\";\n/**\n * Used to sign an element as being \"new\". When an element is removed from the\n * dom, but may cycle back in we can sign it with new to ensure the next time\n * it is recognized we consider it new.\n */\nconst NEW = \"__aa_new\";\n/**\n * Callback for handling all mutations.\n * @param mutations - A mutation list\n */\nconst handleMutations = (mutations) => {\n const elements = getElements(mutations);\n // If elements is \"false\" that means this mutation that should be ignored.\n if (elements) {\n elements.forEach((el) => animate(el));\n }\n};\n/**\n *\n * @param entries - Elements that have been resized.\n */\nconst handleResizes = (entries) => {\n entries.forEach((entry) => {\n if (entry.target === root)\n updateAllPos();\n if (coords.has(entry.target))\n updatePos(entry.target);\n });\n};\n/**\n * Observe this elements position.\n * @param el - The element to observe the position of.\n */\nfunction observePosition(el) {\n const oldObserver = intersections.get(el);\n oldObserver === null || oldObserver === void 0 ? void 0 : oldObserver.disconnect();\n let rect = coords.get(el);\n let invocations = 0;\n const buffer = 5;\n if (!rect) {\n rect = getCoords(el);\n coords.set(el, rect);\n }\n const { offsetWidth, offsetHeight } = root;\n const rootMargins = [\n rect.top - buffer,\n offsetWidth - (rect.left + buffer + rect.width),\n offsetHeight - (rect.top + buffer + rect.height),\n rect.left - buffer,\n ];\n const rootMargin = rootMargins\n .map((px) => `${-1 * Math.floor(px)}px`)\n .join(\" \");\n const observer = new IntersectionObserver(() => {\n ++invocations > 1 && updatePos(el);\n }, {\n root,\n threshold: 1,\n rootMargin,\n });\n observer.observe(el);\n intersections.set(el, observer);\n}\n/**\n * Update the exact position of a given element.\n * @param el - An element to update the position of.\n */\nfunction updatePos(el) {\n clearTimeout(debounces.get(el));\n const optionsOrPlugin = getOptions(el);\n const delay = isPlugin(optionsOrPlugin) ? 500 : optionsOrPlugin.duration;\n debounces.set(el, setTimeout(async () => {\n const currentAnimation = animations.get(el);\n try {\n await (currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.finished);\n coords.set(el, getCoords(el));\n observePosition(el);\n }\n catch {\n // ignore errors as the `.finished` promise is rejected when animations were cancelled\n }\n }, delay));\n}\n/**\n * Updates all positions that are currently being tracked.\n */\nfunction updateAllPos() {\n clearTimeout(debounces.get(root));\n debounces.set(root, setTimeout(() => {\n parents.forEach((parent) => forEach(parent, (el) => lowPriority(() => updatePos(el))));\n }, 100));\n}\n/**\n * Its possible for a quick scroll or other fast events to get past the\n * intersection observer, so occasionally we need want \"cold-poll\" for the\n * latests and greatest position. We try to do this in the most non-disruptive\n * fashion possible. First we only do this ever couple seconds, staggard by a\n * random offset.\n * @param el - Element\n */\nfunction poll(el) {\n setTimeout(() => {\n intervals.set(el, setInterval(() => lowPriority(updatePos.bind(null, el)), 2000));\n }, Math.round(2000 * Math.random()));\n}\n/**\n * Perform some operation that is non critical at some point.\n * @param callback\n */\nfunction lowPriority(callback) {\n if (typeof requestIdleCallback === \"function\") {\n requestIdleCallback(() => callback());\n }\n else {\n requestAnimationFrame(() => callback());\n }\n}\n/**\n * The mutation observer responsible for watching each root element.\n */\nlet mutations;\n/**\n * A resize observer, responsible for recalculating elements on resize.\n */\nlet resize;\n/**\n * Ensure the browser is supported.\n */\nconst supportedBrowser = typeof window !== \"undefined\" && \"ResizeObserver\" in window;\n/**\n * If this is in a browser, initialize our Web APIs\n */\nif (supportedBrowser) {\n root = document.documentElement;\n mutations = new MutationObserver(handleMutations);\n resize = new ResizeObserver(handleResizes);\n window.addEventListener(\"scroll\", () => {\n scrollY = window.scrollY;\n scrollX = window.scrollX;\n });\n resize.observe(root);\n}\n/**\n * Retrieves all the elements that may have been affected by the last mutation\n * including ones that have been removed and are no longer in the DOM.\n * @param mutations - A mutation list.\n * @returns\n */\nfunction getElements(mutations) {\n const observedNodes = mutations.reduce((nodes, mutation) => {\n return [\n ...nodes,\n ...Array.from(mutation.addedNodes),\n ...Array.from(mutation.removedNodes),\n ];\n }, []);\n // Short circuit if _only_ comment nodes are observed\n const onlyCommentNodesObserved = observedNodes.every((node) => node.nodeName === \"#comment\");\n if (onlyCommentNodesObserved)\n return false;\n return mutations.reduce((elements, mutation) => {\n // Short circuit if we find a purposefully deleted node.\n if (elements === false)\n return false;\n if (mutation.target instanceof Element) {\n target(mutation.target);\n if (!elements.has(mutation.target)) {\n elements.add(mutation.target);\n for (let i = 0; i < mutation.target.children.length; i++) {\n const child = mutation.target.children.item(i);\n if (!child)\n continue;\n if (DEL in child) {\n return false;\n }\n target(mutation.target, child);\n elements.add(child);\n }\n }\n if (mutation.removedNodes.length) {\n for (let i = 0; i < mutation.removedNodes.length; i++) {\n const child = mutation.removedNodes[i];\n if (DEL in child) {\n return false;\n }\n if (child instanceof Element) {\n elements.add(child);\n target(mutation.target, child);\n siblings.set(child, [\n mutation.previousSibling,\n mutation.nextSibling,\n ]);\n }\n }\n }\n }\n return elements;\n }, new Set());\n}\n/**\n * Assign the target to an element.\n * @param el - The root element\n * @param child\n */\nfunction target(el, child) {\n if (!child && !(TGT in el))\n Object.defineProperty(el, TGT, { value: el });\n else if (child && !(TGT in child))\n Object.defineProperty(child, TGT, { value: el });\n}\n/**\n * Determines what kind of change took place on the given element and then\n * performs the proper animation based on that.\n * @param el - The specific element to animate.\n */\nfunction animate(el) {\n var _a;\n const isMounted = el.isConnected;\n const preExisting = coords.has(el);\n if (isMounted && siblings.has(el))\n siblings.delete(el);\n if (animations.has(el)) {\n (_a = animations.get(el)) === null || _a === void 0 ? void 0 : _a.cancel();\n }\n if (NEW in el) {\n add(el);\n }\n else if (preExisting && isMounted) {\n remain(el);\n }\n else if (preExisting && !isMounted) {\n remove(el);\n }\n else {\n add(el);\n }\n}\n/**\n * Removes all non-digits from a string and casts to a number.\n * @param str - A string containing a pixel value.\n * @returns\n */\nfunction raw(str) {\n return Number(str.replace(/[^0-9.\\-]/g, \"\"));\n}\n/**\n * Get the scroll offset of elements\n * @param el - Element\n * @returns\n */\nfunction getScrollOffset(el) {\n let p = el.parentElement;\n while (p) {\n if (p.scrollLeft || p.scrollTop) {\n return { x: p.scrollLeft, y: p.scrollTop };\n }\n p = p.parentElement;\n }\n return { x: 0, y: 0 };\n}\n/**\n * Get the coordinates of elements adjusted for scroll position.\n * @param el - Element\n * @returns\n */\nfunction getCoords(el) {\n const rect = el.getBoundingClientRect();\n const { x, y } = getScrollOffset(el);\n return {\n top: rect.top + y,\n left: rect.left + x,\n width: rect.width,\n height: rect.height,\n };\n}\n/**\n * Returns the width/height that the element should be transitioned between.\n * This takes into account box-sizing.\n * @param el - Element being animated\n * @param oldCoords - Old set of Coordinates coordinates\n * @param newCoords - New set of Coordinates coordinates\n * @returns\n */\nfunction getTransitionSizes(el, oldCoords, newCoords) {\n let widthFrom = oldCoords.width;\n let heightFrom = oldCoords.height;\n let widthTo = newCoords.width;\n let heightTo = newCoords.height;\n const styles = getComputedStyle(el);\n const sizing = styles.getPropertyValue(\"box-sizing\");\n if (sizing === \"content-box\") {\n const paddingY = raw(styles.paddingTop) +\n raw(styles.paddingBottom) +\n raw(styles.borderTopWidth) +\n raw(styles.borderBottomWidth);\n const paddingX = raw(styles.paddingLeft) +\n raw(styles.paddingRight) +\n raw(styles.borderRightWidth) +\n raw(styles.borderLeftWidth);\n widthFrom -= paddingX;\n widthTo -= paddingX;\n heightFrom -= paddingY;\n heightTo -= paddingY;\n }\n return [widthFrom, widthTo, heightFrom, heightTo].map(Math.round);\n}\n/**\n * Retrieves animation options for the current element.\n * @param el - Element to retrieve options for.\n * @returns\n */\nfunction getOptions(el) {\n return TGT in el && options.has(el[TGT])\n ? options.get(el[TGT])\n : { duration: 250, easing: \"ease-in-out\" };\n}\n/**\n * Returns the target of a given animation (generally the parent).\n * @param el - An element to check for a target\n * @returns\n */\nfunction getTarget(el) {\n if (TGT in el)\n return el[TGT];\n return undefined;\n}\n/**\n * Checks if animations are enabled or disabled for a given element.\n * @param el - Any element\n * @returns\n */\nfunction isEnabled(el) {\n const target = getTarget(el);\n return target ? enabled.has(target) : false;\n}\n/**\n * Iterate over the children of a given parent.\n * @param parent - A parent element\n * @param callback - A callback\n */\nfunction forEach(parent, ...callbacks) {\n callbacks.forEach((callback) => callback(parent, options.has(parent)));\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children.item(i);\n if (child) {\n callbacks.forEach((callback) => callback(child, options.has(child)));\n }\n }\n}\n/**\n * Always return tuple to provide consistent interface\n */\nfunction getPluginTuple(pluginReturn) {\n if (Array.isArray(pluginReturn))\n return pluginReturn;\n return [pluginReturn];\n}\n/**\n * Determine if config is plugin\n */\nfunction isPlugin(config) {\n return typeof config === \"function\";\n}\n/**\n * The element in question is remaining in the DOM.\n * @param el - Element to flip\n * @returns\n */\nfunction remain(el) {\n const oldCoords = coords.get(el);\n const newCoords = getCoords(el);\n if (!isEnabled(el))\n return coords.set(el, newCoords);\n let animation;\n if (!oldCoords)\n return;\n const pluginOrOptions = getOptions(el);\n if (typeof pluginOrOptions !== \"function\") {\n const deltaX = oldCoords.left - newCoords.left;\n const deltaY = oldCoords.top - newCoords.top;\n const [widthFrom, widthTo, heightFrom, heightTo] = getTransitionSizes(el, oldCoords, newCoords);\n const start = {\n transform: `translate(${deltaX}px, ${deltaY}px)`,\n };\n const end = {\n transform: `translate(0, 0)`,\n };\n if (widthFrom !== widthTo) {\n start.width = `${widthFrom}px`;\n end.width = `${widthTo}px`;\n }\n if (heightFrom !== heightTo) {\n start.height = `${heightFrom}px`;\n end.height = `${heightTo}px`;\n }\n animation = el.animate([start, end], {\n duration: pluginOrOptions.duration,\n easing: pluginOrOptions.easing,\n });\n }\n else {\n const [keyframes] = getPluginTuple(pluginOrOptions(el, \"remain\", oldCoords, newCoords));\n animation = new Animation(keyframes);\n animation.play();\n }\n animations.set(el, animation);\n coords.set(el, newCoords);\n animation.addEventListener(\"finish\", updatePos.bind(null, el));\n}\n/**\n * Adds the element with a transition.\n * @param el - Animates the element being added.\n */\nfunction add(el) {\n if (NEW in el)\n delete el[NEW];\n const newCoords = getCoords(el);\n coords.set(el, newCoords);\n const pluginOrOptions = getOptions(el);\n if (!isEnabled(el))\n return;\n let animation;\n if (typeof pluginOrOptions !== \"function\") {\n animation = el.animate([\n { transform: \"scale(.98)\", opacity: 0 },\n { transform: \"scale(0.98)\", opacity: 0, offset: 0.5 },\n { transform: \"scale(1)\", opacity: 1 },\n ], {\n duration: pluginOrOptions.duration * 1.5,\n easing: \"ease-in\",\n });\n }\n else {\n const [keyframes] = getPluginTuple(pluginOrOptions(el, \"add\", newCoords));\n animation = new Animation(keyframes);\n animation.play();\n }\n animations.set(el, animation);\n animation.addEventListener(\"finish\", updatePos.bind(null, el));\n}\n/**\n * Clean up after removing an element from the dom.\n * @param el - Element being removed\n * @param styles - Optional styles that should be removed from the element.\n */\nfunction cleanUp(el, styles) {\n var _a;\n el.remove();\n coords.delete(el);\n siblings.delete(el);\n animations.delete(el);\n (_a = intersections.get(el)) === null || _a === void 0 ? void 0 : _a.disconnect();\n setTimeout(() => {\n if (DEL in el)\n delete el[DEL];\n Object.defineProperty(el, NEW, { value: true, configurable: true });\n if (styles && el instanceof HTMLElement) {\n for (const style in styles) {\n el.style[style] = \"\";\n }\n }\n }, 0);\n}\n/**\n * Animates the removal of an element.\n * @param el - Element to remove\n */\nfunction remove(el) {\n var _a;\n if (!siblings.has(el) || !coords.has(el))\n return;\n const [prev, next] = siblings.get(el);\n Object.defineProperty(el, DEL, { value: true, configurable: true });\n const finalX = window.scrollX;\n const finalY = window.scrollY;\n if (next && next.parentNode && next.parentNode instanceof Element) {\n next.parentNode.insertBefore(el, next);\n }\n else if (prev && prev.parentNode) {\n prev.parentNode.appendChild(el);\n }\n else {\n (_a = getTarget(el)) === null || _a === void 0 ? void 0 : _a.appendChild(el);\n }\n if (!isEnabled(el))\n return cleanUp(el);\n const [top, left, width, height] = deletePosition(el);\n const optionsOrPlugin = getOptions(el);\n const oldCoords = coords.get(el);\n if (finalX !== scrollX || finalY !== scrollY) {\n adjustScroll(el, finalX, finalY, optionsOrPlugin);\n }\n let animation;\n let styleReset = {\n position: \"absolute\",\n top: `${top}px`,\n left: `${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n margin: \"0\",\n pointerEvents: \"none\",\n transformOrigin: \"center\",\n zIndex: \"100\",\n };\n if (!isPlugin(optionsOrPlugin)) {\n Object.assign(el.style, styleReset);\n animation = el.animate([\n {\n transform: \"scale(1)\",\n opacity: 1,\n },\n {\n transform: \"scale(.98)\",\n opacity: 0,\n },\n ], { duration: optionsOrPlugin.duration, easing: \"ease-out\" });\n }\n else {\n const [keyframes, options] = getPluginTuple(optionsOrPlugin(el, \"remove\", oldCoords));\n if ((options === null || options === void 0 ? void 0 : options.styleReset) !== false) {\n styleReset = (options === null || options === void 0 ? void 0 : options.styleReset) || styleReset;\n Object.assign(el.style, styleReset);\n }\n animation = new Animation(keyframes);\n animation.play();\n }\n animations.set(el, animation);\n animation.addEventListener(\"finish\", cleanUp.bind(null, el, styleReset));\n}\n/**\n * If the element being removed is at the very bottom of the page, and the\n * the page was scrolled into a space being \"made available\" by the element\n * that was removed, the page scroll will have jumped up some amount. We need\n * to offset the jump by the amount that the page was \"automatically\" scrolled\n * up. We can do this by comparing the scroll position before and after the\n * element was removed, and then offsetting by that amount.\n *\n * @param el - The element being deleted\n * @param finalX - The final X scroll position\n * @param finalY - The final Y scroll position\n * @param optionsOrPlugin - The options or plugin\n * @returns\n */\nfunction adjustScroll(el, finalX, finalY, optionsOrPlugin) {\n const scrollDeltaX = scrollX - finalX;\n const scrollDeltaY = scrollY - finalY;\n const scrollBefore = document.documentElement.style.scrollBehavior;\n const scrollBehavior = getComputedStyle(root).scrollBehavior;\n if (scrollBehavior === \"smooth\") {\n document.documentElement.style.scrollBehavior = \"auto\";\n }\n window.scrollTo(window.scrollX + scrollDeltaX, window.scrollY + scrollDeltaY);\n if (!el.parentElement)\n return;\n const parent = el.parentElement;\n let lastHeight = parent.clientHeight;\n let lastWidth = parent.clientWidth;\n const startScroll = performance.now();\n // Here we use a manual scroll animation to keep the element using the same\n // easing and timing as the parent’s scroll animation.\n function smoothScroll() {\n requestAnimationFrame(() => {\n if (!isPlugin(optionsOrPlugin)) {\n const deltaY = lastHeight - parent.clientHeight;\n const deltaX = lastWidth - parent.clientWidth;\n if (startScroll + optionsOrPlugin.duration > performance.now()) {\n window.scrollTo({\n left: window.scrollX - deltaX,\n top: window.scrollY - deltaY,\n });\n lastHeight = parent.clientHeight;\n lastWidth = parent.clientWidth;\n smoothScroll();\n }\n else {\n document.documentElement.style.scrollBehavior = scrollBefore;\n }\n }\n });\n }\n smoothScroll();\n}\n/**\n * Determines the position of the element being removed.\n * @param el - The element being deleted\n * @returns\n */\nfunction deletePosition(el) {\n const oldCoords = coords.get(el);\n const [width, , height] = getTransitionSizes(el, oldCoords, getCoords(el));\n let offsetParent = el.parentElement;\n while (offsetParent &&\n (getComputedStyle(offsetParent).position === \"static\" ||\n offsetParent instanceof HTMLBodyElement)) {\n offsetParent = offsetParent.parentElement;\n }\n if (!offsetParent)\n offsetParent = document.body;\n const parentStyles = getComputedStyle(offsetParent);\n const parentCoords = coords.get(offsetParent) || getCoords(offsetParent);\n const top = Math.round(oldCoords.top - parentCoords.top) -\n raw(parentStyles.borderTopWidth);\n const left = Math.round(oldCoords.left - parentCoords.left) -\n raw(parentStyles.borderLeftWidth);\n return [top, left, width, height];\n}\n/**\n * A function that automatically adds animation effects to itself and its\n * immediate children. Specifically it adds effects for adding, moving, and\n * removing DOM elements.\n * @param el - A parent element to add animations to.\n * @param options - An optional object of options.\n */\nfunction autoAnimate(el, config = {}) {\n if (mutations && resize) {\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n const isDisabledDueToReduceMotion = mediaQuery.matches &&\n !isPlugin(config) &&\n !config.disrespectUserMotionPreference;\n if (!isDisabledDueToReduceMotion) {\n enabled.add(el);\n if (getComputedStyle(el).position === \"static\") {\n Object.assign(el.style, { position: \"relative\" });\n }\n forEach(el, updatePos, poll, (element) => resize === null || resize === void 0 ? void 0 : resize.observe(element));\n if (isPlugin(config)) {\n options.set(el, config);\n }\n else {\n options.set(el, { duration: 250, easing: \"ease-in-out\", ...config });\n }\n mutations.observe(el, { childList: true });\n parents.add(el);\n }\n }\n return Object.freeze({\n parent: el,\n enable: () => {\n enabled.add(el);\n },\n disable: () => {\n enabled.delete(el);\n },\n isEnabled: () => enabled.has(el),\n });\n}\n/**\n * The vue directive.\n */\nconst vAutoAnimate = {\n mounted: (el, binding) => {\n autoAnimate(el, binding.value || {});\n },\n // ignore ssr see #96:\n getSSRProps: () => ({}),\n};\n\nexport { autoAnimate as default, getTransitionSizes, vAutoAnimate };\n","import { ref, onMounted, watchEffect } from 'vue';\nimport autoAnimate, { vAutoAnimate as vAutoAnimate$1 } from '../index.mjs';\n\nconst vAutoAnimate = vAutoAnimate$1;\nconst autoAnimatePlugin = {\n install(app) {\n app.directive(\"auto-animate\", vAutoAnimate);\n },\n};\n/**\n * AutoAnimate hook for adding dead-simple transitions and animations to Vue.\n * @param options - Auto animate options or a plugin\n * @returns A template ref. Use the `ref` attribute of your parent element\n * to store the element in this template ref.\n */\nfunction useAutoAnimate(options) {\n const element = ref();\n let controller;\n function setEnabled(enabled) {\n if (controller) {\n enabled ? controller.enable() : controller.disable();\n }\n }\n onMounted(() => {\n watchEffect(() => {\n if (element.value instanceof HTMLElement)\n controller = autoAnimate(element.value, options || {});\n });\n });\n return [element, setEnabled];\n}\n\nexport { autoAnimatePlugin, useAutoAnimate, vAutoAnimate };\n"],"names":["parents","coords","siblings","animations","intersections","intervals","options","debounces","enabled","root","scrollX","scrollY","TGT","DEL","NEW","handleMutations","mutations","elements","getElements","el","animate","handleResizes","entries","entry","updateAllPos","updatePos","observePosition","oldObserver","rect","invocations","buffer","getCoords","offsetWidth","offsetHeight","rootMargin","px","observer","optionsOrPlugin","getOptions","delay","isPlugin","currentAnimation","parent","forEach","lowPriority","poll","callback","resize","supportedBrowser","nodes","mutation","node","target","i","child","_a","isMounted","preExisting","add","remain","remove","raw","str","getScrollOffset","p","x","y","getTransitionSizes","oldCoords","newCoords","widthFrom","heightFrom","widthTo","heightTo","styles","paddingY","paddingX","getTarget","isEnabled","callbacks","getPluginTuple","pluginReturn","config","animation","pluginOrOptions","deltaX","deltaY","start","end","keyframes","cleanUp","style","prev","next","finalX","finalY","top","left","width","height","deletePosition","adjustScroll","styleReset","scrollDeltaX","scrollDeltaY","scrollBefore","lastHeight","lastWidth","startScroll","smoothScroll","offsetParent","parentStyles","parentCoords","autoAnimate","element","vAutoAnimate","binding","vAutoAnimate$1","autoAnimatePlugin","app"],"mappings":"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","x_google_ignoreList":[0,1]}