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