UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

67 lines (63 loc) 3.1 kB
"use client"; const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs'); const require_utils_index = require('../../utils/index.cjs'); const require_system_provider = require('../../core/system/system-provider.cjs'); const require_animation = require('../../core/css/animation.cjs'); const require_css = require('../../core/css/css.cjs'); let react = require("react"); react = require_rolldown_runtime.__toESM(react); //#region src/hooks/use-animation/index.ts /** * `useAnimation` is a custom hook that implements animations similar to CSS `keyframes`. * * @see https://yamada-ui.com/docs/hooks/use-animation */ const useAnimation = (cssObj) => { const system = require_system_provider.useSystem(); if ((0, require_utils_index.utils_exports.isArray)(cssObj)) return cssObj.map((cssObj$1) => require_animation.animation(cssObj$1, { css: require_css.css, system })).join(", "); else return require_animation.animation(cssObj, { css: require_css.css, system }); }; /** * `useDynamicAnimation` is a custom hook used to switch animations. * * @see https://yamada-ui.com/docs/hooks/use-dynamic-animation */ const useDynamicAnimation = (arrayOrObj, init) => { const system = require_system_provider.useSystem(); const keys = (0, react.useRef)(!(0, require_utils_index.utils_exports.isUndefined)(init) ? (0, require_utils_index.utils_exports.isArray)(init) ? init.map(String) : String(init) : void 0); const cache = (0, react.useRef)(/* @__PURE__ */ new Map()); const [animations, setAnimations] = (0, react.useState)(() => { for (const [key, styles] of Object.entries(arrayOrObj)) { if (cache.current.has(key)) return; if ((0, require_utils_index.utils_exports.isArray)(styles)) cache.current.set(key, styles.map((style) => require_animation.animation(style, { css: require_css.css, system })).join(", ")); else cache.current.set(key, require_animation.animation(styles, { css: require_css.css, system })); } if ((0, require_utils_index.utils_exports.isArray)(keys.current)) return keys.current.map((key) => cache.current.get(key)).join(", "); else return cache.current.get(keys.current ?? ""); }); return [animations, (0, react.useCallback)((keysOrFunc) => { const keyOrArray = (0, require_utils_index.utils_exports.runIfFn)(keysOrFunc, (() => { if (!(0, require_utils_index.utils_exports.isUndefined)(keys.current) && (0, require_utils_index.utils_exports.isArray)(arrayOrObj)) return (0, require_utils_index.utils_exports.isArray)(keys.current) ? keys.current.map(Number) : Number(keys.current); else return keys.current; })()); keys.current = (0, require_utils_index.utils_exports.isArray)(keyOrArray) ? keyOrArray.map(String) : String(keyOrArray); if ((0, require_utils_index.utils_exports.isArray)(keys.current)) setAnimations(keys.current.map((key) => cache.current.get(key)).join(", ")); else setAnimations(cache.current.get(keys.current)); }, [arrayOrObj])]; }; //#endregion exports.useAnimation = useAnimation; exports.useDynamicAnimation = useDynamicAnimation; //# sourceMappingURL=index.cjs.map