import * as d3 from 'd3'; import { Subject } from 'rxjs'; import { DiagramValidator } from '../../errors/diagram-validator'; import { Canvas } from '../../interfaces/canvas'; import { DiagramEditor } from '../../interfaces/diagram-editor'; import { Point } from '../../util/canvas-util'; import { CollabEngine } from '../collab/collab-engine'; import { BackgroundConfig, GridConfig } from '../config/diagram-canvas-config'; import { DiagramConfig } from '../config/diagram-config'; import { ActionStack, DiagramAction, DiagramActionMethod, DiagramActions } from '../diagram-action'; import { DiagramEvent } from '../diagram-event'; import { DiagramConnectionType } from '../model/diagram-connection'; import { DiagramModel } from '../model/diagram-model'; import { DiagramNode } from '../model/diagram-node'; import { DiagramContextMenu } from './diagram-context-menu'; import { DiagramUserHighlight } from './diagram-user-highlight'; import { DiagramUserSelection } from './diagram-user-selection'; /** * Thickness of the invisible path around a connection used to make it easier to click on, in diagram units. * @private */ export declare const CONNECTION_PATH_BOX_THICKNESS = 12; /** * Maximum number of user actions that can be recorded in the user action stack. * @private * @see ActionStack */ export declare const ACTION_STACK_SIZE = 25; export declare class DiagramCanvas implements Canvas { #private; readonly parentComponent: DiagramEditor; readonly model: DiagramModel; readonly userSelection: DiagramUserSelection; readonly userHighlight: DiagramUserHighlight; readonly contextMenu: DiagramContextMenu; readonly actionStack: ActionStack; readonly collabEngine: CollabEngine; backgroundConfig: BackgroundConfig; gridConfig: GridConfig; ancillaryGridsConfig: GridConfig[]; zoomFactor: number; panRate: number; inferConnectionType: boolean; get connectionType(): DiagramConnectionType | undefined; set connectionType(value: DiagramConnectionType | undefined); autoTightenConnections: boolean; tightenConnectionsAcrossPortTypes: boolean; allowConnectionLoops: boolean; allowSharingPorts: boolean; allowSharingBothPorts: boolean; portHighlightRadius: number; multipleSelectionOn: boolean; layoutFormat?: string; validators: DiagramValidator[]; userActions: { [key in DiagramActions]?: boolean; }; readonly validatorChange$: Subject; readonly diagramChange$: Subject<{ action: DiagramAction; method: DiagramActionMethod; }>; readonly diagramEvent$: Subject; readonly propertyEditorChanges$: Subject; /** * Constructs a canvas object. * @public * @param parentComponent The diagram editor which contains this canvas. * @param config The configuration object used to set the parameters of this canvas. */ constructor(parentComponent: DiagramEditor, config: DiagramConfig); addValidator(validator: DiagramValidator): void; removeValidator(validator: DiagramValidator): void; getPriorityThresholdOptions(): number[] | undefined; getPriorityThreshold(): number | undefined; setPriorityThreshold(priority: number): void; initView(appendTo: HTMLElement): void; getZoomLevel(): number; zoomBy(factor: number): void; zoomTo(level: number): void; getViewCoordinates(): Point; translateBy(x: number, y: number): void; translateTo(x: number, y: number): void; zoomAndPanTo(x: number, y: number, z: number, duration?: number): void; center(nodeIds?: string[], maxZoomLevel?: number, duration?: number): void; getClosestGridPoint(point: Point): Point; getCoordinatesOnScreen(): [Point, Point]; getPointerLocationRelativeToCanvas(event: MouseEvent | d3.D3DragEvent): Point; getPointerLocationRelativeToRoot(event: MouseEvent | d3.D3DragEvent): Point; getPointerLocationRelativeToBody(event: MouseEvent | d3.D3DragEvent): Point; getPointerLocationRelativeToScreen(event: MouseEvent | d3.D3DragEvent): Point; updateModelInView(): void; updateNodesInView(...ids: string[]): void; updateSectionsInView(...ids: string[]): void; updatePortsInView(...ids: string[]): void; updateConnectionsInView(...ids: string[]): void; updateFieldsInView(...ids: string[]): void; updateObjectsInView(...ids: string[]): void; updateDecoratorsInView(...ids: string[]): void; bringToFront(node: DiagramNode): void; sendToBack(node: DiagramNode): void; fieldRootFitsInView(id: string): boolean; fitFieldRootInView(id: string, shrink?: boolean): void; fitNodeInView(id: string, shrink?: boolean): void; selectRoot(): d3.Selection; selectSVGElement(): d3.Selection; selectCanvasView(): d3.Selection; selectCanvasElements(): d3.Selection; cancelAllUserActions(): void; canUserPerformAction(action: DiagramActions): boolean; openTextInput(id: string): void; }