UNPKG

@reactodia/workspace

Version:

Reactodia Workspace -- library for visual interaction with graphs in a form of a diagram.

67 lines 3.11 kB
import * as React from 'react'; import type { Events, EventTrigger } from '../coreUtils/events'; import type { Translation } from '../coreUtils/i18n'; import type { ElementIri, ElementTypeIri } from '../data/model'; import type { CanvasApi } from '../diagram/canvasApi'; import type { TypeStyle } from '../diagram/customization'; import type { Element } from '../diagram/elements'; import type { LayoutFunction } from '../diagram/layout'; import type { SharedCanvasState } from '../diagram/sharedCanvasState'; import type { DataDiagramModel } from '../editor/dataDiagramModel'; import type { EntityElement, EntityGroup } from '../editor/dataElements'; import type { EditorController } from '../editor/editorController'; import type { OverlayController } from '../editor/overlayController'; import type { CommandBusTopic } from './commandBusTopic'; export interface WorkspaceContext { readonly model: DataDiagramModel; readonly view: SharedCanvasState; readonly editor: EditorController; readonly overlay: OverlayController; readonly translation: Translation; readonly disposeSignal: AbortSignal; readonly getCommandBus: <T>(definition: CommandBusTopic<T>) => Events<T> & EventTrigger<T>; readonly getElementStyle: (element: Element) => ProcessedTypeStyle; readonly getElementTypeStyle: (types: ReadonlyArray<ElementTypeIri>) => ProcessedTypeStyle; readonly performLayout: (params: WorkspacePerformLayoutParams) => Promise<void>; readonly group: (params: WorkspaceGroupParams) => Promise<EntityGroup>; readonly ungroupAll: (params: WorkspaceUngroupAllParams) => Promise<EntityElement[]>; readonly ungroupSome: (params: WorkspaceUngroupSomeParams) => Promise<EntityElement[]>; readonly triggerWorkspaceEvent: (key: WorkspaceEventKey) => void; } export interface WorkspacePerformLayoutParams { canvas?: CanvasApi; layoutFunction?: LayoutFunction; selectedElements?: ReadonlySet<Element>; animate?: boolean; zoomToFit?: boolean; signal?: AbortSignal; } export interface WorkspaceGroupParams { elements: ReadonlyArray<EntityElement>; canvas: CanvasApi; } export interface WorkspaceUngroupAllParams { groups: ReadonlyArray<EntityGroup>; canvas: CanvasApi; } export interface WorkspaceUngroupSomeParams { group: EntityGroup; entities: ReadonlySet<ElementIri>; canvas: CanvasApi; } export declare enum WorkspaceEventKey { searchUpdateCriteria = "search:updateCriteria", searchQueryItem = "search:queryItems", connectionsLoadLinks = "connections:loadLinks", connectionsExpandLink = "connections:expandLink", connectionsLoadElements = "connections:loadElements", editorChangeSelection = "editor:changeSelection", editorToggleDialog = "editor:toggleDialog", editorAddElements = "editor:addElements" } export interface ProcessedTypeStyle extends Omit<TypeStyle, 'color'> { readonly color: string; } export declare const WorkspaceContext: React.Context<WorkspaceContext | null>; export declare function useWorkspace(): WorkspaceContext; //# sourceMappingURL=workspaceContext.d.ts.map