mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-06 16:10:09 +00:00
60 lines
1.1 KiB
TypeScript
60 lines
1.1 KiB
TypeScript
import {
|
|
draggable,
|
|
dropTargetForElements
|
|
} from '@atlaskit/pragmatic-drag-and-drop/element/adapter'
|
|
import { onBeforeUnmount, onMounted } from 'vue'
|
|
|
|
export function usePragmaticDroppable(
|
|
dropTargetElement: HTMLElement | (() => HTMLElement),
|
|
options: Omit<Parameters<typeof dropTargetForElements>[0], 'element'>
|
|
) {
|
|
let cleanup = () => {}
|
|
|
|
onMounted(() => {
|
|
const element =
|
|
typeof dropTargetElement === 'function'
|
|
? dropTargetElement()
|
|
: dropTargetElement
|
|
|
|
if (!element) {
|
|
return
|
|
}
|
|
|
|
cleanup = dropTargetForElements({
|
|
element,
|
|
...options
|
|
})
|
|
})
|
|
|
|
onBeforeUnmount(() => {
|
|
cleanup()
|
|
})
|
|
}
|
|
|
|
export function usePragmaticDraggable(
|
|
draggableElement: HTMLElement | (() => HTMLElement),
|
|
options: Omit<Parameters<typeof draggable>[0], 'element'>
|
|
) {
|
|
let cleanup = () => {}
|
|
|
|
onMounted(() => {
|
|
const element =
|
|
typeof draggableElement === 'function'
|
|
? draggableElement()
|
|
: draggableElement
|
|
|
|
if (!element) {
|
|
return
|
|
}
|
|
|
|
cleanup = draggable({
|
|
element,
|
|
...options
|
|
})
|
|
})
|
|
|
|
onBeforeUnmount(() => {
|
|
cleanup()
|
|
})
|
|
}
|