{"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;;;;"}