UNPKG

mermaid

Version:

Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.

42 lines (41 loc) 3.37 kB
import type { SVG } from '../../../diagram-api/types.js'; import type { InternalHelpers } from '../../../internals.js'; import type { D3Selection } from '../../../types.js'; import { createGraphWithElements } from '../../createGraph.js'; import type { LayoutData, Edge } from '../../types.js'; import type { RenderOptions } from '../../render.js'; export type CommonLayoutMeasure = Awaited<ReturnType<typeof createGraphWithElements>>; type ClusterDb = Map<string, { node?: LayoutData['nodes'][number]; } & Record<string, unknown>>; export interface CommonLayoutRenderContext<PreparedLayout = unknown> { element: D3Selection<SVGElement>; helpers?: InternalHelpers; options?: RenderOptions; preparedLayout?: PreparedLayout; } export interface CommonLayoutPaintContext<PreparedLayout = unknown, MeasureResult = CommonLayoutMeasure> extends CommonLayoutRenderContext<PreparedLayout> { measure: MeasureResult; } export interface CommonLayoutPaintOptions { clusterDb?: ClusterDb; getNodes?: (data4Layout: LayoutData, context: CommonLayoutPaintContext<unknown, CommonLayoutMeasure>) => Iterable<LayoutData['nodes'][number]>; getEdgeNode?: (id: string | undefined, edge: Edge, context: CommonLayoutPaintContext<unknown, CommonLayoutMeasure>) => LayoutData['nodes'][number] | object | undefined; skipNode?: (node: LayoutData['nodes'][number], context: CommonLayoutPaintContext<unknown, CommonLayoutMeasure>) => boolean; isCluster?: (node: LayoutData['nodes'][number], context: CommonLayoutPaintContext<unknown, CommonLayoutMeasure>) => boolean; skipEdge?: (edge: Edge) => boolean; skipIntersect?: boolean | ((edge: Edge) => boolean); } export interface CommonLayoutRendererDefinition<CoreResult = unknown, PreparedLayout = void, MeasureResult = CommonLayoutMeasure> { prepareLayout?: (data4Layout: LayoutData, context: CommonLayoutRenderContext<PreparedLayout>) => PreparedLayout | Promise<PreparedLayout>; measureLayout?: (data4Layout: LayoutData, context: CommonLayoutRenderContext<PreparedLayout>) => Promise<MeasureResult>; runLayoutCore: (data4Layout: LayoutData, context: CommonLayoutRenderContext<PreparedLayout>) => CoreResult | Promise<CoreResult>; paintLayout?: (data4Layout: LayoutData, context: CommonLayoutPaintContext<PreparedLayout, MeasureResult>, coreResult: CoreResult) => void | Promise<void>; afterPaint?: (data4Layout: LayoutData, context: CommonLayoutPaintContext<PreparedLayout, MeasureResult>, coreResult: CoreResult) => void | Promise<void>; paintOptions?: CommonLayoutPaintOptions; } export declare function createCommonLayoutRenderer<CoreResult = unknown, PreparedLayout = void, MeasureResult = CommonLayoutMeasure>({ prepareLayout, measureLayout, runLayoutCore, paintLayout, afterPaint, paintOptions, }: CommonLayoutRendererDefinition<CoreResult, PreparedLayout, MeasureResult>): (data4Layout: LayoutData, svg: SVG, helpers?: InternalHelpers, options?: RenderOptions) => Promise<void>; export declare function clearLayoutRenderState(): void; export declare function defaultMeasureLayout(data4Layout: LayoutData, { element }: CommonLayoutRenderContext): Promise<CommonLayoutMeasure>; export declare function paintLayoutData(data4Layout: LayoutData, context: CommonLayoutPaintContext<unknown, CommonLayoutMeasure>, options?: CommonLayoutPaintOptions): Promise<void>; export {};