UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

86 lines (85 loc) 3.78 kB
import { AnchorState } from "store/anchor/Anchor"; import { TAnchor } from "../../components/canvas/anchors"; import { TBlock } from "../../components/canvas/blocks/Block"; import { Graph } from "../../graph"; import { ESelectionStrategy } from "../../utils/types/types"; import { RootStore } from "../index"; import { BlockState, TBlockId } from "./Block"; declare module "../../graphEvents" { interface GraphEventsDefinitions { /** * * Emited when selection of blocks changes. * Preventing the event will prevent selection change. * */ "blocks-selection-change": (event: SelectionEvent<TBlockId>) => void; /** * Emited when selection of block's anchor changes. * Preventing the event will prevent selection change. * */ "block-anchor-selection-change": (event: CustomEvent<{ /** Block anchor */ anchor: TAnchor; /** Is anchor selected */ selected: boolean; }>) => void; /** * Emited when block changes. * * Preventing the event will prevent block change. */ "block-change": (event: CustomEvent<{ /** Changed block */ block: TBlock; }>) => void; } } export declare class BlockListStore { rootStore: RootStore; protected graph: Graph; $blocksMap: import("@preact/signals-core").Signal<Map<TBlockId, BlockState<TBlock>>>; $blocks: import("@preact/signals-core").Signal<BlockState<TBlock>[]>; /** * This signal is used to store blocks in reactive state. * this signal fired for each change of the block state. * * NOTE: Please do not use it before you know what you are doing. */ $blocksReactiveState: import("@preact/signals-core").ReadonlySignal<BlockState<TBlock>[]>; $selectedBlocks: import("@preact/signals-core").ReadonlySignal<BlockState<TBlock>[]>; $selectedAnchor: import("@preact/signals-core").ReadonlySignal<AnchorState>; constructor(rootStore: RootStore, graph: Graph); setAnchorSelection(blockId: BlockState["id"], anchorId: AnchorState["id"], selected: boolean): void; protected unsetAnchorsSelection(): void; updatePosition(id: BlockState["id"], nextState: Pick<TBlock, "x" | "y">): void; protected setBlockSelection(block: BlockState | BlockState["id"], selected: boolean, params?: { ignoreChanges?: boolean; }): boolean; protected updateBlocksMap(blocks: Map<BlockState["id"], BlockState> | [BlockState["id"], BlockState][]): void; addBlock(block: Omit<TBlock, "id"> & { id?: TBlockId; }): TBlockId; deleteBlocks(blocks: (TBlock["id"] | TBlock)[]): void; updateBlocks(blocks: TBlock[]): void; setBlocks(blocks: TBlock[]): void; protected getOrCraeateBlockState(block: TBlock): BlockState<TBlock>; protected applyBlocksState(blocks: BlockState[]): void; protected computeSelectionChange(ids: TBlockId[], selected: boolean, strategy?: ESelectionStrategy): { add: BlockState<TBlock>[]; removed: BlockState<TBlock>[]; list: BlockState<TBlock>[]; }; updateBlocksSelection(ids: TBlockId[], selected: boolean, strategy?: ESelectionStrategy): void; getBlockConnections(blockId: TBlockId): import("../..").ConnectionState<import("../..").TConnection>[]; resetSelection(): void; deleteSelectedBlocks(): void; deleteAllBlockConnections(blockId: TBlockId): void; reset(): void; toJSON(): TBlock[]; getBlockState(id: TBlockId): BlockState<TBlock>; getBlock(id: TBlockId): TBlock | undefined; getBlocks(ids: BlockState["id"][]): BlockState<TBlock>[]; getBlockStates(ids: BlockState["id"][]): BlockState<TBlock>[]; }