UNPKG

@selenite/graph-editor

Version:

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

53 lines (52 loc) 1.89 kB
import type { Schemes } from '../../schemes'; import type { SetupFunction } from '../../setup'; import { Scope, type BaseSchemes } from 'rete'; import type { RenderSignal } from 'rete-area-plugin'; import type { Position } from 'rete-area-plugin/_types/types'; import type { Component } from 'svelte'; import { type SvelteRenderer } from './renderer.svelte'; import type { Setup } from '../../setup/Setup'; type ComponentProps = Record<string, any> | undefined | void | null; type RenderResult = { component: Component; props: ComponentProps; } | undefined | void | null; export type RenderPreset = { attach?: (plugin: SveltePlugin) => void; update: (context: Extract<Requires<Schemes>, { type: 'render'; }>, plugin: SveltePlugin<Requires<Schemes>>) => ComponentProps; render: (context: Extract<Requires<Schemes>, { type: 'render'; }>, plugin: SveltePlugin<Requires<Schemes>>) => RenderResult; }; type Requires<Schemes extends BaseSchemes> = RenderSignal<'node', { payload: Schemes['Node']; }> | RenderSignal<'connection', { payload: Schemes['Connection']; start?: Position; end?: Position; }> | { type: 'unmount'; data: { element: HTMLElement; }; }; declare class SveltePlugin<T = Requires<Schemes>> extends Scope<Schemes, [T | Requires<Schemes>]> { renderer: SvelteRenderer; readonly presets: RenderPreset[]; owners: WeakMap<HTMLElement, RenderPreset>; constructor(); apps: Map<HTMLElement, Node>; setParent(scope: Scope<Requires<Schemes>>): void; private unmount; private mount; /** * Adds a preset to the plugin. * @param preset Preset that can render nodes, connections and other elements. */ addPreset<K>(preset: RenderPreset): void; } export declare const setupSvelteRender: SetupFunction; export declare const svelteRenderSetup: Setup; export {};