Files
TeleWave/frontend/src/features/admin/interstitials/dnd.ts
T

28 lines
903 B
TypeScript

/**
* Перетаскивание на экране роликов. В сборку блока едут только ролики, в группу — и ролики,
* и готовые блоки, поэтому в переносимых данных лежит вид элемента, а не только идентификатор.
*/
export type ClipDragItem = {
kind: 'clip' | 'block'
id: string
name: string
seconds: number
}
const MIME = 'application/x-telewave-clip'
export function setDragItem(event: React.DragEvent, item: ClipDragItem) {
event.dataTransfer.setData(MIME, JSON.stringify(item))
event.dataTransfer.effectAllowed = 'copy'
}
export function readDragItem(event: React.DragEvent): ClipDragItem | null {
const raw = event.dataTransfer.getData(MIME)
if (!raw) return null
try {
return JSON.parse(raw) as ClipDragItem
} catch {
return null
}
}