UNPKG

@selenite/graph-editor

Version:

A graph editor for visual programming, based on rete and svelte.

39 lines (38 loc) 1.32 kB
export function isNodeEditorSaveData(a) { if (typeof a !== 'object' || a === null) return false; return ('nodes' in a && 'connections' in a && 'editorName' in a && typeof a.editorName === 'string'); } export const dragGraphType = 'selenite/graph'; export const dragVariableType = 'selenite/graph-variable'; export function onGraphDragStart(g) { document.body.style.userSelect = 'none'; const removeSelectNode = () => { document.body.style.userSelect = ''; document.removeEventListener('dragend', removeSelectNode); }; document.addEventListener('dragend', removeSelectNode); return (e) => { e.dataTransfer?.setData(dragGraphType, JSON.stringify(g)); }; } export function isDraggedGraph(e) { return e.dataTransfer?.types.includes(dragGraphType) ?? false; } export function getDraggedGraph(e) { const data = e.dataTransfer?.getData(dragGraphType); if (!data) return undefined; return JSON.parse(data); } export function variableDragStart(v) { return (e) => { e.dataTransfer?.setData(dragVariableType, v.id); }; } export function isDraggedVariable(e) { return e.dataTransfer?.types.includes(dragVariableType) ?? false; } export function getDraggedVariableId(e) { return e.dataTransfer?.getData(dragVariableType); }