All files / src/Hooks useFreezeLayer.js

84.61% Statements 22/26
61.11% Branches 11/18
62.5% Functions 5/8
91.66% Lines 22/24

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55          21x 21x   21x                 14x 14x 14x 14x         20x 10x 10x 10x       21x 21x 14x 14x 14x   7x 7x 7x     21x 13x       21x            
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({ isActive: propsActive, onClick }) {
  const [isActive, setActive] = useState(propsActive);
  const [isChildActive, setChildActive] = useState(false);
 
  let isFreezeLayerEnabled = useRef(false);
 
  function handleClick(e) {
    if (onClick && !isTextSelected()) {
      onClick(e);
    }
  }
 
  function enableFreeze() {
    Eif (!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
  };
}