@selenite/graph-editor
Version:
A graph editor for visual programming, based on rete and svelte.
30 lines (29 loc) • 1.72 kB
TypeScript
import type { RenderPreset } from '../../setup';
import { ClassicPreset, Scope } from 'rete';
import { type SocketPositionWatcher } from 'rete-render-utils';
import type { SvelteComponent } from 'svelte';
import type { ClassicScheme, ExtractPayload, SvelteArea2D } from './types';
export { default as Connection } from './components/Connection.svelte';
export { default as Control } from './components/Control.svelte';
export { default as Socket } from './components/Socket.svelte';
export { default as Button } from './components/Button.svelte';
export { default as InputControl } from './components/InputControl.svelte';
export { default as ExecSocket } from './components/ExecSocket.svelte';
export { default as AddXmlAttributeControl } from '../../AddXmlAttributeControl.svelte';
type Component<Props extends Record<string, any>> = ComponentType<SvelteComponent<Props>>;
type CustomizationProps<Schemes extends ClassicScheme> = {
node?: (data: ExtractPayload<Schemes, 'node'>) => Component<any> | null;
connection?: (data: ExtractPayload<Schemes, 'connection'>) => Component<any> | null;
socket?: (data: ExtractPayload<Schemes, 'socket'>) => Component<any> | null;
control?: <N extends ClassicPreset.Control>(data: ExtractPayload<Schemes, 'control'>) => Component<{
data: N;
}> | null;
};
type ClassicProps<Schemes extends ClassicScheme, K> = {
socketPositionWatcher?: SocketPositionWatcher<Scope<never, [K]>>;
customize?: CustomizationProps<Schemes>;
};
/**
* Classic preset for rendering nodes, connections, controls and sockets.
*/
export declare function setup<Schemes extends ClassicScheme, K extends SvelteArea2D<Schemes>>(props?: ClassicProps<Schemes, K>): RenderPreset;