UNPKG

@zohodesk/a11y

Version:

In this Package, We Provide Some Basic Components For Accessibility.

66 lines (63 loc) 1.85 kB
import { useState, useEffect } from 'react'; import useDrawShape from './useDrawShape'; import useReadingMaskCanvas from './useReadingMaskCanvas'; import useEventHandler from './useEventHandler'; export default function useReadingMaskController(_ref) { let { uiConfig } = _ref; const alpha = uiConfig.appearance.opacity; const initialDimensions = uiConfig.dimensions; const getRootElement = uiConfig.getRootElement; const [dimensions, setDimensions] = useState(uiConfig.dimensions); const { updateCanvasState, canvasState, getCanvasRef, canvasContext, lastMousePosition } = useReadingMaskCanvas({ getRootElement }); //Get reading mask canvas const { drawRectangle } = useDrawShape({ canvasState, alpha, lastMousePosition, canvasContext, getRootElement }); //Draw shape using the canvas const { mouseMove, onResize, iFrameMessageReceiver } = useEventHandler({ drawRectangle, updateCanvasState, dimensions }); //handleEventListeners for mouse useEffect(() => { drawRectangle(); }, [canvasState, drawRectangle]); useEffect(() => { setDimensions(initialDimensions); updateCanvasState(initialDimensions); }, [initialDimensions, setDimensions, updateCanvasState]); useEffect(() => { const root = getRootElement(); const target = root || document; target.addEventListener('mousemove', mouseMove); window.addEventListener('resize', onResize); window.addEventListener('message', iFrameMessageReceiver); return () => { target.removeEventListener('mousemove', mouseMove); window.removeEventListener('resize', onResize); window.removeEventListener('message', iFrameMessageReceiver); }; }, [mouseMove, onResize, getRootElement]); return { canvasState, getCanvasRef }; }