@guruhotel/aura-hooks
Version:
🪝 Hooks library designed by the Guruhotel team for Aura UI
1 lines • 1.47 kB
JavaScript
import e from"./utils/use-latest";import{getTargetElement as r}from"./utils/dom-target";import t from"./utils/use-effect-with-target";import{useRef as n}from"react";export default(a,o={})=>{const u=e(o),s=n();t((()=>{const e=r(a);if(null==e||!e.addEventListener)return;const t=(e,r)=>{var t,n;const a=e.getData("text/uri-list"),o=e.getData("custom");if(o&&u.current.onDom){let e=o;try{e=JSON.parse(o)}catch(r){e=o}u.current.onDom(e,r)}else a&&u.current.onUri?u.current.onUri(a,r):null!=(t=e.files)&&t.length&&u.current.onFiles?u.current.onFiles(Array.from(e.files),r):null!=(n=e.items)&&n.length&&u.current.onText&&e.items[0].getAsString((e=>{u.current.onText(e,r)}))},n=e=>{e.preventDefault(),e.stopPropagation(),s.current=e.target,null==u.current.onDragEnter||u.current.onDragEnter(e)},o=e=>{e.preventDefault(),null==u.current.onDragOver||u.current.onDragOver(e)},l=e=>{e.target===s.current&&(null==u.current.onDragLeave||u.current.onDragLeave(e))},i=e=>{e.preventDefault(),t(e.dataTransfer,e),null==u.current.onDrop||u.current.onDrop(e)},c=e=>{t(e.clipboardData,e),null==u.current.onPaste||u.current.onPaste(e)};return e.addEventListener("dragenter",n),e.addEventListener("dragover",o),e.addEventListener("dragleave",l),e.addEventListener("drop",i),e.addEventListener("paste",c),()=>{e.removeEventListener("dragenter",n),e.removeEventListener("dragover",o),e.removeEventListener("dragleave",l),e.removeEventListener("drop",i),e.removeEventListener("paste",c)}}),[],a)};