carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 863 B
JavaScript
;var r=require("react/jsx-runtime"),e=require("react"),t=require("./data.js"),a=require("@atlaskit/pragmatic-drag-and-drop/element/adapter");function n(r){return r&&r.__esModule?r:{default:r}}var o=n(e);const d=e.createContext(null);exports.DragDropProvider=({children:n,onDrop:u})=>{const[l]=o.default.useState((()=>Symbol("draggable-context")));return e.useEffect((()=>a.monitorForElements({canMonitor:({source:r})=>t.isDraggable(r.data)&&r.data.contextId===l,onDrop:({source:r,location:e})=>{if(!t.isDraggable(r.data))return;if(!e.current.dropTargets.length)return void(null==u||u({dragged:r.data,target:null}));const a=e.current.dropTargets[0];t.isDropTarget(a.data)&&(null==u||u({dragged:r.data,target:a.data}))}})),[l,u]),r.jsx(d.Provider,{value:{contextId:l},children:n})},exports.useDragDropContext=function(){return o.default.useContext(d)};