UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 894 B
import{useState as t,useEffect as r}from"react";import{draggable as e,dropTargetForElements as a}from"@atlaskit/pragmatic-drag-and-drop/element/adapter";import{combine as o}from"@atlaskit/pragmatic-drag-and-drop/combine";import{getDraggable as n,isDraggable as i,getDropTarget as d}from"./data.js";import{useDragDropContext as m}from"./drag-drop-provider.js";import p from"invariant";function c({id:c,index:s,ref:g}){const f=m(),[l,u]=t(!1);return r((()=>{const t=null==g?void 0:g.current;if(!t)return;p(f,"Expected context to be defined. Please ensure your component is within a DragDropProvider.");const{contextId:r}=f;return o(e({element:t,getInitialData:()=>n({id:c,initialIndex:s,contextId:r}),onDragStart:()=>u(!0),onDrop:()=>u(!1)}),a({element:t,getData:()=>d({id:c,contextId:r}),canDrop:({source:t})=>i(t.data)&&t.data.contextId===r}))}),[f,c,s,g]),{isDragging:l}}export{c as default};