{"version":3,"file":"useThemeTransition.hook.cjs","sources":["../../../../../../../src/components/theme-provider/hooks/use-theme-provider/helpers/use-theme-transition/useThemeTransition.hook.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef, useState } from 'react'\r\n\r\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect\r\n\r\n/**\r\n * Starts a bounded transition window only when the resolved theme changes.\r\n */\r\nexport const useThemeTransition = (\r\n    resolvedTheme: string,\r\n    duration: number,\r\n) => {\r\n    const previousTheme = useRef(resolvedTheme)\r\n    const [isTransitioning, setIsTransitioning] = useState(false)\r\n\r\n    useIsomorphicLayoutEffect(() => {\r\n        const transitionDuration = Math.max(0, duration)\r\n\r\n        if (transitionDuration === 0) {\r\n            previousTheme.current = resolvedTheme\r\n            setIsTransitioning(false)\r\n            return\r\n        }\r\n\r\n        if (previousTheme.current === resolvedTheme) {\r\n            return\r\n        }\r\n\r\n        previousTheme.current = resolvedTheme\r\n\r\n        setIsTransitioning(true)\r\n        const timeout = window.setTimeout(\r\n            () => setIsTransitioning(false),\r\n            transitionDuration,\r\n        )\r\n        return () => window.clearTimeout(timeout)\r\n    }, [duration, resolvedTheme])\r\n\r\n    return isTransitioning\r\n}\r\n"],"names":["useIsomorphicLayoutEffect","useEffect","useLayoutEffect","useThemeTransition","resolvedTheme","duration","previousTheme","useRef","isTransitioning","setIsTransitioning","useState","transitionDuration","timeout"],"mappings":"yGAEMA,EAA4B,OAAO,OAAW,IAAcC,EAAAA,UAAYC,EAAAA,gBAKjEC,EAAqB,CAC9BC,EACAC,IACC,CACD,MAAMC,EAAgBC,EAAAA,OAAOH,CAAa,EACpC,CAACI,EAAiBC,CAAkB,EAAIC,EAAAA,SAAS,EAAK,EAE5D,OAAAV,EAA0B,IAAM,CAC5B,MAAMW,EAAqB,KAAK,IAAI,EAAGN,CAAQ,EAE/C,GAAIM,IAAuB,EAAG,CAC1BL,EAAc,QAAUF,EACxBK,EAAmB,EAAK,EACxB,MACJ,CAEA,GAAIH,EAAc,UAAYF,EAC1B,OAGJE,EAAc,QAAUF,EAExBK,EAAmB,EAAI,EACvB,MAAMG,EAAU,OAAO,WACnB,IAAMH,EAAmB,EAAK,EAC9BE,CAAA,EAEJ,MAAO,IAAM,OAAO,aAAaC,CAAO,CAC5C,EAAG,CAACP,EAAUD,CAAa,CAAC,EAErBI,CACX"}