@gravity-ui/graph
Version:
Modern graph editor component
86 lines (85 loc) • 3.78 kB
TypeScript
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>[];
}