xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 3.3 kB
Source Map (JSON)
{"version":3,"file":"useOnDrag.mjs","sources":["../../../src/tree/hooks/useOnDrag.ts"],"sourcesContent":["import { ref, Ref, provide, getCurrentInstance } from 'vue';\nimport TreeStore from '../../_common/js/tree/tree-store';\nimport TreeNode from '../../_common/js/tree/tree-node';\nimport { dragInjectKey } from '../constants';\n\nexport default function useOnDrag(treeStore: Ref<TreeStore>) {\n const dragNode = ref<TreeNode>();\n const { emit } = getCurrentInstance();\n\n const onDragStart = (context: { node: TreeNode; e: DragEvent }) => {\n dragNode.value = context.node;\n emit?.('dragStart', context);\n };\n\n const onDragEnd = (context: { node: TreeNode; e: DragEvent }) => {\n dragNode.value = context.node;\n emit?.('dragEnd', context);\n };\n\n const onDragOver = (context: { node: TreeNode; e: DragEvent }) => {\n emit?.('dragOver', context);\n };\n\n const onDragLeave = (context: { node: TreeNode; e: DragEvent }) => {\n emit?.('dragLeave', context);\n };\n\n const onDrop = (context: { node: TreeNode; dropPosition: number; e: DragEvent }) => {\n const { node, dropPosition } = context;\n if (node.value === dragNode.value.value || node.getParents().some((_node) => _node.value === dragNode.value.value))\n return;\n\n const nodes = treeStore.value.getNodes() as TreeNode[];\n nodes.some((_node, _index) => {\n if (_node.value === node.value) {\n if (dropPosition === 0) {\n dragNode.value.appendTo(treeStore.value, _node);\n } else if (dropPosition < 0) {\n node.insertBefore(dragNode.value);\n } else {\n node.insertAfter(dragNode.value);\n }\n return true;\n }\n return false;\n });\n emit?.('drop', context);\n };\n provide(dragInjectKey, {\n onDragStart,\n onDragEnd,\n onDragOver,\n onDragLeave,\n onDrop,\n });\n}\n"],"names":["dragNode","nodes","node","onDragStart","onDragEnd","onDragOver","onDragLeave","onDrop"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAA,SAAA,CAAA,SAAA,EAAA;AACE,EAAA,IAAA,QAAA,GAAA,GAAA,EAAA,CAAA;AACM,EAAA,IAAA,mBAAA,GAAA,kBAAA,EAAA;;AAEA,EAAA,IAAA,WAAA,GAAA,SAAA,WAAA,CAAA,OAAA,EAAA;AACJA,IAAAA,QAAAA,CAAAA,KAAAA,GAAAA,OAAAA,CAAAA,IAAAA,CAAAA;;;AAII,EAAA,IAAA,SAAA,GAAA,SAAA,SAAA,CAAA,OAAA,EAAA;AACJA,IAAAA,QAAAA,CAAAA,KAAAA,GAAAA,OAAAA,CAAAA,IAAAA,CAAAA;;;AAII,EAAA,IAAA,UAAA,GAAA,SAAA,UAAA,CAAA,OAAA,EAAA;;;AAIA,EAAA,IAAA,WAAA,GAAA,SAAA,WAAA,CAAA,OAAA,EAAA;;;AAIA,EAAA,IAAA,MAAA,GAAA,SAAA,MAAA,CAAA,OAAA,EAAA;AACE,IAAA,IAAA,IAAA,GAAA,OAAA,CAAA,IAAA;;AACN,IAAA,IAAA,IAAA,CAAA,KAAA,KAAA,QAAA,CAAA,KAAA,CAAA,KAAA,IAAA,IAAA,CAAA,UAAA,EAAA,CAAA,IAAA,CAAA,UAAA,KAAA,EAAA;;AAAiH,KAAA,CAAA,EAAA,OAAA;;AAI3GC,IAAAA,KAAAA,CAAAA,IAAAA,CAAAA,UAAAA,KAAAA,EAAAA,MAAAA,EAAAA;AACA,MAAA,IAAA,KAAA,CAAA,KAAA,KAAA,IAAA,CAAA,KAAA,EAAA;;;AAGF,SAAA,MAAA,IAAA,YAAA,GAAA,CAAA,EAAA;AACOC,UAAAA,IAAAA,CAAAA,YAAAA,CAAAA,QAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AACP,SAAA,MAAA;AACOA,UAAAA,IAAAA,CAAAA,WAAAA,CAAAA,QAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AACP,SAAA;AACO,QAAA,OAAA,IAAA,CAAA;AACT,OAAA;AACO,MAAA,OAAA,KAAA,CAAA;AACT,KAAA,CAAA,CAAA;;;;AAIAC,IAAAA,WAAAA,EAAAA,WAAAA;AACAC,IAAAA,SAAAA,EAAAA,SAAAA;AACAC,IAAAA,UAAAA,EAAAA,UAAAA;AACAC,IAAAA,WAAAA,EAAAA,WAAAA;AACAC,IAAAA,MAAAA,EAAAA,MAAAA;AACF,GAAA,CAAA,CAAA;AACF;;;;"}