export function useAutoAnimate()

in src/renderers/react/useAutoAnimate.ts [26:53]


export function useAutoAnimate<T extends Element>(
  options?: Partial<AutoAnimateOptions> | AutoAnimationPlugin
): [RefCallback<T>, (enabled: boolean) => void] {
  const [controller, setController] = useState<
    AnimationController | undefined
  >();
  const memoizedOptions = useMemo(() => options, []);
  const element = useCallback(
    (node: T) => {
      if (node instanceof HTMLElement) {
        setController(autoAnimate(node, memoizedOptions));
      } else {
        setController(undefined);
      }
    },
    [memoizedOptions]
  );
  const setEnabled = useCallback(
    (enabled: boolean) => {
      if (controller) {
        enabled ? controller.enable() : controller.disable();
      }
    },
    [controller]
  );

  return [element, setEnabled];
}