@selenite/graph-editor
Version:
A graph editor for visual programming, based on rete and svelte.
39 lines (38 loc) • 1.32 kB
JavaScript
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);
}