tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 6.47 kB
Source Map (JSON)
{"version":3,"file":"useDragHandle.mjs","sources":["../../../../components/tree/hooks/useDragHandle.ts"],"sourcesContent":["import { TreeNode } from '../adapt';\nimport { TreeProps, TypeDragEventState, TypeTreeState, TypeDragHandle } from '../tree-types';\nimport { DragPosition } from './useDraggable';\nimport { emitEvent } from '../util';\n\nexport default function useDragHandle(state: TypeTreeState) {\n const { props, context, scope, store } = state;\n let dragNode: TreeNode = null;\n\n const handleDragStart = (state: TypeDragEventState) => {\n const { dragEvent, node } = state;\n dragNode = node;\n\n const ctx = {\n node: node.getModel(),\n e: dragEvent,\n };\n emitEvent<Parameters<TreeProps['onDragStart']>>(props, context, 'drag-start', ctx);\n };\n\n const handleDragEnd = (state: TypeDragEventState) => {\n const { dragEvent, node } = state;\n dragNode = node;\n\n const ctx = {\n node: node.getModel(),\n e: dragEvent,\n };\n emitEvent<Parameters<TreeProps['onDragEnd']>>(props, context, 'drag-end', ctx);\n };\n\n const handleDragOver = (state: TypeDragEventState) => {\n const { dragEvent, node } = state;\n const ctx = {\n node: node.getModel(),\n e: dragEvent,\n };\n emitEvent<Parameters<TreeProps['onDragOver']>>(props, context, 'drag-over', ctx);\n };\n\n const handleDragLeave = (state: TypeDragEventState) => {\n const { dragEvent, node } = state;\n const ctx = {\n node: node.getModel(),\n e: dragEvent,\n };\n emitEvent<Parameters<TreeProps['onDragLeave']>>(props, context, 'drag-leave', ctx);\n };\n\n const handleDrop = (state: TypeDragEventState) => {\n const { dragEvent, node, dropPosition } = state;\n if (node.value === dragNode.value || node.getParents().some((_node) => _node.value === dragNode.value)) return;\n\n const ctx = {\n dropNode: node.getModel(),\n dragNode: dragNode.getModel(),\n dropPosition,\n e: dragEvent,\n };\n\n if (props.allowDrop?.(ctx) === false) return;\n\n const nodes = store.getNodes() as TreeNode[];\n nodes.some((_node) => {\n if (_node.value === node.value) {\n if (dropPosition === DragPosition.Inside) {\n dragNode.appendTo(store, _node);\n } else if (dropPosition === DragPosition.Before) {\n node.insertBefore(dragNode);\n } else {\n node.insertAfter(dragNode);\n }\n return true;\n }\n return false;\n });\n\n emitEvent<Parameters<TreeProps['onDrop']>>(props, context, 'drop', ctx);\n };\n\n const drag: TypeDragHandle = {\n handleDragStart,\n handleDragEnd,\n handleDragOver,\n handleDragLeave,\n handleDrop,\n };\n\n scope.drag = drag;\n\n return {\n drag,\n };\n}\n"],"names":["useDragHandle","state","props","context","scope","store","dragNode","handleDragStart","dragEvent","node","ctx","getModel","e","emitEvent","handleDragEnd","handleDragOver","handleDragLeave","handleDrop","_props$allowDrop","dropPosition","value","getParents","some","_node","dropNode","allowDrop","call","nodes","getNodes","DragPosition","Inside","appendTo","Before","insertBefore","insertAfter","drag"],"mappings":"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"}