UNPKG

@chief-editor/editor

Version:

FlowEditor Editor

1 lines 2.38 kB
import{OperationType}from"@chief-editor/core";import{Vector}from"@co-hooks/vector";import{useCreateSortable}from"@rc-hooks/sortable";import{useEditorCls}from"../hooks/useEditorCls";export function useEditorDrag(e){var t=useEditorCls("placeholder",{vertical:!0}),r=useEditorCls("placeholder",{horizontal:!0}),a=useEditorCls("placeholder-container");return useCreateSortable({containerIdentifierPropName:"data-board-id",elemIdentifierPropName:"data-brick-id",hittingContainerClassName:a,mode:"vertical",dragLimit:e.getDragLimit(),getDragRoot:function(){var t=e.getActiveBoardId();return null!=t?document.getElementById("data-root-"+t):null},isVirtualDrag:function(){var t=e.getActiveBoard();return null==t||t.isLayerBoard()},getContainerMode:function(t){var r=e.getActiveTemplate();if(null==r)return null;var a=r.getBoard(t);return a.isStreamBoard()?a.isFloatMode()?"horizontal":"vertical":null},isValidContainer:function(t,r){var a=e.getActiveTemplate();if(null==a)return!1;var o=a.getBoard(r);return o.isStreamBoard()&&o.isValidBoard(t)},createPlaceHolder:function(a){var o=document.createElement("div"),n=e.getActiveTemplate();if(null==n)return o;var i=n.getBoard(a);return i.isStreamBoard()?(o.className=i.isFloatMode()?r:t,o):o},onDragStart:function(t){e.enableDragState();var r=e.getActiveBoard();if(null!=r&&r.isLayerBoard()&&null!=t.data){if(!document.querySelector('[data-template-id="'+r.getOwnerTemplate().id+'"]'))return;r.initDrag(t.data)}},onDragging:function(t){var r=e.getActiveBoard(),a=e.getZoom()/100;null!=r&&r.isLayerBoard()&&null!=t.data&&r.updateDrag(t.data,new Vector([(t.currentMousePos.clientX-t.startMousePos.clientX)/a,(t.currentMousePos.clientY-t.startMousePos.clientY)/a]))},onDragEnd:function(t){e.disableDragState();var r=e.getActiveBoard(),a=e.getZoom()/100;null!=r&&r.isLayerBoard()&&null!=t.data&&r.finishDrag("copy"===t.dragType?OperationType.CREATE:OperationType.MOVE,t.data,new Vector([(t.currentMousePos.clientX-t.startMousePos.clientX)/a,(t.currentMousePos.clientY-t.startMousePos.clientY)/a]),t.currentMousePos)},onDragCancel:function(){e.disableDragState();var t=e.getActiveBoard();null!=t&&t.isLayerBoard()&&t.cancelDrag()},onChange:function(t,r,a){e.disableDragState();var o=e.getActiveTemplate();null!=o&&null!=t.data&&o.getBoard(a.container).applyBoardChange("copy"===t.dragType?OperationType.CREATE:OperationType.MOVE,t.data,a.index)}})}