UNPKG

@zohodesk/dot

Version:

In this Library, we Provide Some Basic Components to Build Your Application

55 lines (50 loc) 1.47 kB
import React, { useRef, useState, useEffect } from 'react'; import { isTextSelected, cancelBubblingEffect } from '@zohodesk/components/es/utils/Common'; import { getDotLibraryConfig } from "../Provider/Config"; export default function useFreezeLayer(_ref) { let { isActive: propsActive, onClick } = _ref; const [isActive, setActive] = useState(propsActive); const [isChildActive, setChildActive] = useState(false); let isFreezeLayerEnabled = useRef(false); function handleClick(e) { if (onClick && !isTextSelected()) { onClick(e); } } function enableFreeze() { if (!isFreezeLayerEnabled.current) { isFreezeLayerEnabled.current = true; const freezeLayerEnable = (getDotLibraryConfig('freezeLayer') || {}).enable; freezeLayerEnable && freezeLayerEnable(); } } function disableFreeze() { if (isFreezeLayerEnabled.current) { isFreezeLayerEnabled.current = false; const freezeLayerDisable = (getDotLibraryConfig('freezeLayer') || {}).disable; freezeLayerDisable && freezeLayerDisable(); } } useEffect(() => { if (propsActive) { enableFreeze(); setActive(true); setTimeout(() => setChildActive(true)); } else { disableFreeze(); setChildActive(false); setTimeout(() => setActive(false)); } return () => { disableFreeze(); }; }, [propsActive]); return { isActive, isChildActive, handleClick }; }