UNPKG

@yamada-ui/react

Version:

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

1 lines 1.68 kB
{"version":3,"file":"effect.cjs","names":["React"],"sources":["../../../src/utils/effect.ts"],"sourcesContent":["import * as React from \"react\"\n\nexport const useSafeLayoutEffect = Boolean(globalThis.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see https://yamada-ui.com/docs/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n"],"mappings":";;;;;AAEA,MAAa,sBAAsB,QAAQ,WAAW,SAAS,GAC3DA,MAAM,kBACNA,MAAM;AAEV,SAAgB,iBAAiB,UAAsB;AAErD,QAAOA,MAAM,sBAAsB,UAAU,EAAE,EAAE,CAAC;;;;;;;AAQpD,SAAgB,gBACd,UACA,MACA;CACA,MAAM,iBAAiBA,MAAM,OAAO,MAAM;CAC1C,MAAM,iBAAiBA,MAAM,OAAO,MAAM;AAE1C,OAAM,gBAAgB;AAIpB,MAHgB,eAAe,WACR,eAAe,QAE7B,QAAO,UAAU;AAE1B,iBAAe,UAAU;IAExB,KAAK;AAER,OAAM,gBAAgB;AACpB,iBAAe,UAAU;AAEzB,eAAa;AACX,kBAAe,UAAU;;IAE1B,EAAE,CAAC"}