package.dist.utils.d.ts Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mermaid Show documentation
Show all versions of mermaid Show documentation
Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.
import type { CurveFactory } from 'd3';
import type { MermaidConfig } from './config.type.js';
import type { D3Element, Point, TextDimensionConfig, TextDimensions } from './types.js';
export declare const ZERO_WIDTH_SPACE = "\u200B";
/**
* Detects the init config object from the text
*
* @param text - The text defining the graph. For example:
*
* ```mermaid
* %%{init: {"theme": "debug", "logLevel": 1 }}%%
* graph LR
* a-->b
* b-->c
* c-->d
* d-->e
* e-->f
* f-->g
* g-->h
* ```
*
* Or
*
* ```mermaid
* %%{initialize: {"theme": "dark", logLevel: "debug" }}%%
* graph LR
* a-->b
* b-->c
* c-->d
* d-->e
* e-->f
* f-->g
* g-->h
* ```
*
* @param config - Optional mermaid configuration object.
* @returns The json object representing the init passed to mermaid.initialize()
*/
export declare const detectInit: (text: string, config?: MermaidConfig) => MermaidConfig | undefined;
interface Directive {
type?: string;
args?: unknown;
}
/**
* Detects the directive from the text.
*
* Text can be single line or multiline. If type is null or omitted,
* the first directive encountered in text will be returned
*
* ```mermaid
* graph LR
* %%{someDirective}%%
* a-->b
* b-->c
* c-->d
* d-->e
* e-->f
* f-->g
* g-->h
* ```
*
* @param text - The text defining the graph
* @param type - The directive to return (default: `null`)
* @returns An object or Array representing the directive(s) matched by the input type.
* If a single directive was found, that directive object will be returned.
*/
export declare const detectDirective: (text: string, type?: string | RegExp | null) => Directive | Directive[];
export declare const removeDirectives: (text: string) => string;
/**
* Detects whether a substring in present in a given array
*
* @param str - The substring to detect
* @param arr - The array to search
* @returns The array index containing the substring or -1 if not present
*/
export declare const isSubstringInArray: (str: string, arr: string[]) => number;
/**
* Returns a d3 curve given a curve name
*
* @param interpolate - The interpolation name
* @param defaultCurve - The default curve to return
* @returns The curve factory to use
*/
export declare function interpolateToCurve(interpolate: string | undefined, defaultCurve: CurveFactory): CurveFactory;
/**
* Formats a URL string
*
* @param linkStr - String of the URL
* @param config - Configuration passed to MermaidJS
* @returns The formatted URL or `undefined`.
*/
export declare function formatUrl(linkStr: string, config: MermaidConfig): string | undefined;
/**
* Runs a function
*
* @param functionName - A dot separated path to the function relative to the `window`
* @param params - Parameters to pass to the function
*/
export declare const runFunc: (functionName: string, ...params: unknown[]) => void;
/**
* {@inheritdoc traverseEdge}
*/
declare function calcLabelPosition(points: Point[]): Point;
export declare const roundNumber: (num: number, precision?: number) => number;
export declare const calculatePoint: (points: Point[], distanceToTraverse: number) => Point;
/**
* Calculates the terminal label position.
*
* @param terminalMarkerSize - Terminal marker size.
* @param position - Position of label relative to points.
* @param _points - Array of points.
* @returns - The `cardinalityPosition`.
*/
declare function calcTerminalLabelPosition(terminalMarkerSize: number, position: 'start_left' | 'start_right' | 'end_left' | 'end_right', _points: Point[]): Point;
/**
* Gets styles from an array of declarations
*
* @param arr - Declarations
* @returns The styles grouped as strings
*/
export declare function getStylesFromArray(arr: string[]): {
style: string;
labelStyle: string;
};
export declare const generateId: () => string;
export declare const random: (options: {
length: number;
}) => string;
export declare const getTextObj: () => {
x: number;
y: number;
fill: undefined;
anchor: string;
style: string;
width: number;
height: number;
textMargin: number;
rx: number;
ry: number;
valign: undefined;
text: string;
};
/**
* Adds text to an element
*
* @param elem - SVG Element to add text to
* @param textData - Text options.
* @returns Text element with given styling and content
*/
export declare const drawSimpleText: (elem: SVGElement, textData: {
text: string;
x: number;
y: number;
anchor: 'start' | 'middle' | 'end';
fontFamily: string;
fontSize: string | number;
fontWeight: string | number;
fill: string;
class: string | undefined;
textMargin: number;
}) => SVGTextElement;
interface WrapLabelConfig {
fontSize: number;
fontFamily: string;
fontWeight: number;
joinWith: string;
}
export declare const wrapLabel: (label: string, maxWidth: number, config: WrapLabelConfig) => string;
/**
* This calculates the text's height, taking into account the wrap breaks and both the statically
* configured height, width, and the length of the text (in pixels).
*
* If the wrapped text text has greater height, we extend the height, so it's value won't overflow.
*
* @param text - The text to measure
* @param config - The config for fontSize, fontFamily, and fontWeight all impacting the
* resulting size
* @returns The height for the given text
*/
export declare function calculateTextHeight(text: Parameters[0], config: Parameters[1]): ReturnType['height'];
/**
* This calculates the width of the given text, font size and family.
*
* @param text - The text to calculate the width of
* @param config - The config for fontSize, fontFamily, and fontWeight all impacting the
* resulting size
* @returns The width for the given text
*/
export declare function calculateTextWidth(text: Parameters[0], config: Parameters[1]): ReturnType['width'];
/**
* This calculates the dimensions of the given text, font size, font family, font weight, and
* margins.
*
* @param text - The text to calculate the width of
* @param config - The config for fontSize, fontFamily, fontWeight, and margin all impacting
* the resulting size
* @returns The dimensions for the given text
*/
export declare const calculateTextDimensions: (text: string, config: TextDimensionConfig) => TextDimensions;
export declare class InitIDGenerator {
private count;
next: () => number;
constructor(deterministic?: boolean, seed?: string);
}
/**
* Decodes HTML, source: {@link https://github.com/shrpne/entity-decode/blob/v2.0.1/browser.js}
*
* @param html - HTML as a string
* @returns Unescaped HTML
*/
export declare const entityDecode: (html: string) => string;
export interface DetailedError {
str: string;
hash: any;
error?: any;
message?: string;
}
/** @param error - The error to check */
export declare function isDetailedError(error: any): error is DetailedError;
/** @param error - The error to convert to an error message */
export declare function getErrorMessage(error: unknown): string;
/**
* Appends element with the given title and css class.
*
* @param parent - d3 svg object to append title to
* @param cssClass - CSS class for the element containing the title
* @param titleTopMargin - Margin in pixels between title and rest of the graph
* @param title - The title. If empty, returns immediately.
*/
export declare const insertTitle: (parent: D3Element, cssClass: string, titleTopMargin: number, title?: string) => void;
/**
* Parses a raw fontSize configuration value into a number and string value.
*
* @param fontSize - a string or number font size configuration value
*
* @returns parsed number and string style font size values, or nulls if a number value can't
* be parsed from an input string.
*/
export declare const parseFontSize: (fontSize: string | number | undefined) => [number?, string?];
export declare function cleanAndMerge(defaultData: T, data?: Partial): T;
declare const _default: {
assignWithDepth: (dst: any, src: any, { depth, clobber }?: {
depth?: number | undefined;
clobber?: boolean | undefined;
}) => any;
wrapLabel: (label: string, maxWidth: number, config: WrapLabelConfig) => string;
calculateTextHeight: typeof calculateTextHeight;
calculateTextWidth: typeof calculateTextWidth;
calculateTextDimensions: (text: string, config: TextDimensionConfig) => TextDimensions;
cleanAndMerge: typeof cleanAndMerge;
detectInit: (text: string, config?: MermaidConfig | undefined) => MermaidConfig | undefined;
detectDirective: (text: string, type?: string | RegExp | null) => Directive | Directive[];
isSubstringInArray: (str: string, arr: string[]) => number;
interpolateToCurve: typeof interpolateToCurve;
calcLabelPosition: typeof calcLabelPosition;
calcCardinalityPosition: (isRelationTypePresent: boolean, points: Point[], initialPosition: Point) => {
x: number;
y: number;
};
calcTerminalLabelPosition: typeof calcTerminalLabelPosition;
formatUrl: typeof formatUrl;
getStylesFromArray: typeof getStylesFromArray;
generateId: () => string;
random: (options: {
length: number;
}) => string;
runFunc: (functionName: string, ...params: unknown[]) => void;
entityDecode: (html: string) => string;
insertTitle: (parent: any, cssClass: string, titleTopMargin: number, title?: string | undefined) => void;
parseFontSize: (fontSize: string | number | undefined) => [(number | undefined)?, (string | undefined)?];
InitIDGenerator: typeof InitIDGenerator;
};
export default _default;
/**
* @param text - text to be encoded
* @returns
*/
export declare const encodeEntities: (text: string) => string;
/**
*
* @param text - text to be decoded
* @returns
*/
export declare const decodeEntities: (text: string) => string;
export declare const isString: (value: unknown) => value is string;
export declare const getEdgeId: (from: string, to: string, { counter, prefix, suffix, }: {
counter?: number;
prefix?: string;
suffix?: string;
}) => string;