UNPKG

5.88 kBSource Map (JSON)View Raw
1{"version":3,"sources":["useMouseEvents.js"],"names":["assignMouseEventOnMount","targetRef","handlerRef","eventName","cb","mouseEvent","current","target","document","addEventListener","removeEventListener","useMouseEvents","onMouseDownHandler","setOnMouseDown","onMouseEnterHandler","setOnMouseEnter","onMouseLeaveHandler","setOnMouseLeave","onMouseMoveHandler","setOnMouseMove","onMouseOutHandler","setOnMouseOut","onMouseOverHandler","setOnMouseOver","onMouseUpHandler","setOnMouseUp","Object","freeze","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp"],"mappings":"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","sourcesContent":["import { useEffect } from 'react';\nimport createHandlerSetter from './utils/createHandlerSetter';\nimport createCbSetterErrorProxy from './utils/createCbSetterErrorProxy';\nimport hasOwnProperty from './utils/hasOwnProperty';\n\nconst assignMouseEventOnMount = (targetRef, handlerRef, eventName) => {\n useEffect(() => {\n const cb = (mouseEvent) => {\n if (handlerRef.current) {\n handlerRef.current(mouseEvent);\n }\n };\n let target;\n\n if (targetRef !== null && !!targetRef.current) {\n target = targetRef.current;\n }\n\n if (targetRef === null) {\n target = document;\n }\n\n if (target && target.addEventListener) {\n target.addEventListener(eventName, cb);\n }\n\n return () => {\n if (target && target.removeEventListener) {\n target.removeEventListener(eventName, cb);\n }\n };\n }, []);\n};\n\n/**\n * Returns a frozen object of callback setters to handle the mouse events.<br/>\n * It accepts a DOM ref representing the events target. <br/>\n * If a target is not provided the events will be globally attached to the document object.\n * <br/>\n * ### Shall the `useMouseEvents` callbacks replace the standard mouse handler props?\n *\n * **They shall not!**<br />\n * **useMouseEvents is meant to be used to abstract more complex hooks that need to control mouse**, for instance:\n * a drag n drop hook.<br />\n * Using useMouseEvents handlers instead of the classic props approach it's just as bad as it sounds since you'll\n * lose the React SyntheticEvent performance boost.<br />\n * If you were doing something like the following:\n *\n */\nconst useMouseEvents = (targetRef = null) => {\n const [onMouseDownHandler, setOnMouseDown] = createHandlerSetter();\n const [onMouseEnterHandler, setOnMouseEnter] = createHandlerSetter();\n const [onMouseLeaveHandler, setOnMouseLeave] = createHandlerSetter();\n const [onMouseMoveHandler, setOnMouseMove] = createHandlerSetter();\n const [onMouseOutHandler, setOnMouseOut] = createHandlerSetter();\n const [onMouseOverHandler, setOnMouseOver] = createHandlerSetter();\n const [onMouseUpHandler, setOnMouseUp] = createHandlerSetter();\n\n if (targetRef !== null && !hasOwnProperty(targetRef, 'current')) {\n return createCbSetterErrorProxy('Unable to assign any mouse event to the given ref');\n }\n\n assignMouseEventOnMount(targetRef, onMouseDownHandler, 'mousedown');\n assignMouseEventOnMount(targetRef, onMouseEnterHandler, 'mouseenter');\n assignMouseEventOnMount(targetRef, onMouseLeaveHandler, 'mouseleave');\n assignMouseEventOnMount(targetRef, onMouseMoveHandler, 'mousemove');\n assignMouseEventOnMount(targetRef, onMouseOutHandler, 'mouseout');\n assignMouseEventOnMount(targetRef, onMouseOverHandler, 'mouseover');\n assignMouseEventOnMount(targetRef, onMouseUpHandler, 'mouseup');\n\n return Object.freeze({\n onMouseDown: setOnMouseDown,\n onMouseEnter: setOnMouseEnter,\n onMouseLeave: setOnMouseLeave,\n onMouseMove: setOnMouseMove,\n onMouseOut: setOnMouseOut,\n onMouseOver: setOnMouseOver,\n onMouseUp: setOnMouseUp,\n });\n};\n\nexport default useMouseEvents;\n"],"file":"useMouseEvents.js"}
\No newline at end of file