import * as react from 'react';
import { RefObject } from 'react';
import { M as MermaidTheme, a as MermaidBaseTheme, D as DiagramTip, R as RsmBackgroundPreset, b as RsmPattern, c as DiagramCheck, C as CheckSeverity, E as ElkLinkConfig, d as MermaidSource, S as SvgPanZoomSource, e as SearchState, f as ExportRasterOptions, g as EditorScene, h as EditorLook, i as DiagramEditorHandle, T as Tool, j as SvgPanZoomFactory, k as CheckElkQuery } from './export-DPEc2GdM.js';
export { l as CheckLink, m as CheckSnippet, n as ColorizeOptions, o as DiagramEditorOptions, p as DiagramType, L as LoadMermaidOptions, q as MermaidLike, N as NodeShape, P as PanZoomInstance, r as PreparedSvg, s as RasterType, t as RenderDiagramOptions, u as RenderResult, v as SceneEdge, w as SceneNode, x as boostLegibility, y as colorizeDiagram, z as createDiagramEditor, A as detectDiagramType, B as downloadBlob, F as emptyScene, G as loadMermaid, H as prepareSvgElement, I as prepareSvgString, J as rasterizeToBlob, K as registerFlowchartAdapter, O as renderDiagram, Q as sceneToFlowchart, U as serializeLiveSvg, V as svgBlob } from './export-DPEc2GdM.js';
export { ORID_PALETTE, ORID_STAGES, OridModel, OridStage, OridStageKey, OridStageSpec, emptyOridModel, isOridSource, orderedStages, oridItemClass, oridStageByKeyword, oridStageClass, oridStageSpec, oridToMermaid, parseOrid, serializeOrid, stageHeading, transpileOrid } from './orid.js';
type PostProcess = 'colorful' | 'sketch' | 'none';
interface ResolvedTheme {
base: MermaidBaseTheme;
look: 'classic' | 'handDrawn';
postProcess: PostProcess;
}
declare function resolveTheme(theme: MermaidTheme, dark: boolean): ResolvedTheme;
interface HoverTipContext {
/** 作者在原始碼寫的節點 id(還原不到時為 undefined,如序列圖角色)。 */
id?: string;
/** 節點的可見文字。 */
label: string;
/** 節點元素。 */
node: Element;
}
/**
* 動態決定某節點的提示文字:回傳字串 = 顯示它;回傳 null = 這個節點不顯示;
* 回傳 undefined = 交回內建查找(授權提示 → 檢查摘要 → 退路)。
*/
type GetNodeTip = (ctx: HoverTipContext) => string | null | undefined;
interface AttachHoverTipsOptions {
/** 本次 render 的 id(節點 DOM id 前綴)。 */
renderId?: string;
/** 授權提示(來自 `%% @tip` 指令與 `tips` prop 合併後的清單)。 */
tips?: DiagramTip[];
/** 動態覆寫;優先於授權提示。 */
getTip?: GetNodeTip;
/**
* 無授權提示時是否退回顯示「節點完整文字(+ id)」。
* 對長標籤被縮圖擠到難讀的圖很有用;預設 false(避免每個節點都彈提示的噪音)。
*/
fallbackLabel?: boolean;
/** 有檢查提示的節點,懸停節點本體時顯示提示摘要(讀角標
)。預設 true。 */
checksSummary?: boolean;
/** 顯示延遲 ms(避免游標掃過整張圖時提示連環閃)。預設 120。 */
delay?: number;
}
interface HoverTipsController {
destroy(): void;
}
/**
* 把懸停提示掛上 SVG。`host` 是 tooltip div 的容器,必須是 positioned 元素
* (viewer 傳 `.rsm-canvas`);回傳 controller 供重繪 / 卸載時清理。
*/
declare function attachHoverTips(svg: SVGSVGElement, host: HTMLElement, opts?: AttachHoverTipsOptions): HoverTipsController;
interface ThemeOption {
value: MermaidTheme;
label: string;
}
/**
* 底色預設色票。第一個 value=null 代表「預設 / 透明」(跟隨頁面底色);
* 其餘對齊 VS Code 擴充套件的色票,色相柔和、適合做圖表底色。
* 不符合時可用面板裡的「自訂」色票自選任意顏色。
*/
declare const BACKGROUND_PRESETS: RsmBackgroundPreset[];
/** 疊加圖樣選項(分段切換鈕):無 / 網點 / 網格線。 */
declare const PATTERN_OPTIONS: {
value: RsmPattern;
glyph: string;
label: string;
}[];
declare const DEFAULT_THEME_OPTIONS: ThemeOption[];
interface ToolbarProps {
theme: MermaidTheme;
themeOptions: ThemeOption[];
onThemeChange: (theme: MermaidTheme) => void;
zoomPercent: number;
onZoomIn: () => void;
onZoomOut: () => void;
onActualSize: () => void;
onReset: () => void;
searchEnabled: boolean;
searchOpen: boolean;
onToggleSearch: () => void;
exportEnabled: boolean;
exporting: boolean;
onExportSvg: () => void;
onExportPng: () => void;
/** 是否顯示背景選擇器。 */
backgroundEnabled: boolean;
/** 目前底色(hex);null = 透明 / 跟隨頁面。 */
surface: string | null;
/** 使用者選了新底色。 */
onSurfaceChange: (color: string | null) => void;
/** 目前疊加圖樣。 */
pattern: RsmPattern;
/** 使用者切換了圖樣。 */
onPatternChange: (pattern: RsmPattern) => void;
fullscreenEnabled: boolean;
fullscreen: boolean;
onToggleFullscreen: () => void;
/** 圖上的檢查提示數量;0 時整組檢查 UI 不顯示。 */
checkCount: number;
/** 角標目前是否顯示。 */
checksVisible: boolean;
onToggleChecks: () => void;
/** 側邊檢查清單是否展開。 */
checklistOpen: boolean;
onToggleChecklist: () => void;
}
declare function Toolbar(props: ToolbarProps): React.JSX.Element;
/** 一個已解析到 DOM 的提示群組(同一節點可掛多則)。 */
interface ResolvedCheckGroup {
/** 該節點上的所有提示。 */
checks: DiagramCheck[];
/** 節點元素。 */
node: Element;
/** 角標元素(供 host 定位跳窗)。 */
badge: SVGGElement;
/** 群組中最高的嚴重度。 */
severity: CheckSeverity;
/** 用於 React key / 對焦查找。 */
key: string;
}
interface AnnotateOptions {
/** 本次 render 的 id(節點 DOM id 前綴)。 */
renderId?: string;
/** 點擊角標或節點時觸發。 */
onActivate?: (group: ResolvedCheckGroup) => void;
/** 初始是否顯示角標。 */
visible?: boolean;
}
interface ChecksController {
/** 已成功掛上的提示群組(target 找不到的會被略過)。 */
groups: ResolvedCheckGroup[];
/** 未能在圖上定位的 target —— 供 host 除錯。 */
unresolved: string[];
setVisible(visible: boolean): void;
/** 高亮某個節點(側邊清單點擊時用);傳 undefined 清除。 */
focus(key: string | undefined): void;
destroy(): void;
}
/**
* 把提示掛上 SVG。回傳 controller 供 host 控制顯示 / 對焦 / 卸載。
* 任何一則提示定位失敗都只是被略過(記進 unresolved),不影響其餘提示與圖表本身。
*/
declare function annotateChecks(svg: SVGSVGElement, checks: DiagramCheck[], opts?: AnnotateOptions): ChecksController;
interface CheckResolveElkLink {
(check: DiagramCheck): string | null | undefined | Promise;
}
interface CheckCardProps {
check: DiagramCheck;
elk?: ElkLinkConfig;
onResolveElkLink?: CheckResolveElkLink;
}
/** 單一提示的完整內容:抬頭 + 說明 + 步驟 + 可複製片段 + 連結 + ELK。 */
declare function CheckCard({ check, elk, onResolveElkLink }: CheckCardProps): React.JSX.Element;
interface CheckPopoverProps {
group: ResolvedCheckGroup;
/** 角標相對畫布的位置(px)。 */
anchor: {
left: number;
top: number;
};
elk?: ElkLinkConfig;
onResolveElkLink?: CheckResolveElkLink;
onClose: () => void;
}
/**
* 點角標開的跳窗。定位由 host 算好傳進來(角標的 client rect 相對畫布),
* 這裡只負責「超出畫布時往回夾」—— 必須等自身尺寸量到才能夾,故用 useLayoutEffect。
*/
declare function CheckPopover(props: CheckPopoverProps): React.JSX.Element;
interface CheckListProps {
groups: ResolvedCheckGroup[];
activeKey?: string;
elk?: ElkLinkConfig;
onResolveElkLink?: CheckResolveElkLink;
/** 點某一項 → host 負責平移對焦到該節點。 */
onSelect: (group: ResolvedCheckGroup) => void;
onClose: () => void;
}
/** 側邊檢查清單:一次看完整張圖有哪些檢查點,點擊會把圖平移到對應節點。 */
declare function CheckList(props: CheckListProps): React.JSX.Element;
interface MermaidViewerProps {
/** mermaid 原始碼字串(必填)。 */
code: string;
/** 主題,預設 'colorful'。toolbar 會即時切換;傳入新值也會同步。 */
theme?: MermaidTheme;
/** 暗色;省略時自動偵測 prefers-color-scheme。 */
dark?: boolean;
/** 是否顯示 toolbox(主題 / 縮放 / 搜尋 / 匯出)。預設 true;false = 只顯示圖表。 */
toolbar?: boolean;
/** 自訂 toolbar 上的主題選項。 */
themeOptions?: ThemeOption[];
/**
* 使用者在 toolbar 切換主題時通知 host。內建主題選單仍是唯一的主題 UI,
* host 只是「跟著知道」——例如要把主題寫回網址 / 存成偏好設定時用。
*/
onThemeChange?: (theme: MermaidTheme) => void;
/** 是否啟用 pan/zoom。預設 true。 */
panZoom?: boolean;
/** 是否啟用觸控手勢(雙指捏合縮放 + 拖曳平移)。需 panZoom=true。預設 true。 */
touchGestures?: boolean;
/** 是否啟用搜尋(toolbar 內)。預設 true。 */
search?: boolean;
/** 是否啟用匯出 SVG/PNG(toolbar 內)。預設 true。 */
exportable?: boolean;
/** 是否顯示背景選擇器(底色色票 + 自訂色 + 網點 / 網格圖樣)。預設 true。 */
background?: boolean;
/** 疊加圖樣初始 / 受控值,預設 'dots'(網點);toolbar 變更存內部 state。 */
pattern?: RsmPattern;
/**
* 底色初始 / 受控值(hex,如 `#EFF6FF`);null / 省略 = 透明(跟隨頁面底色)。
* toolbar 的色票與「自訂」色會更新此值。
*/
solidColor?: string | null;
/** 是否顯示全螢幕鈕(以跳窗形式覆蓋整個視窗,支援 RWD)。預設 true。 */
fullscreen?: boolean;
/** 進 / 出全螢幕時的回呼。 */
onFullscreenChange?: (fullscreen: boolean) => void;
/** 是否綁定鍵盤快捷鍵(/ Ctrl+F 搜尋、+ - 0 1 縮放、F 全螢幕、B 背景)。預設 true。 */
keyboard?: boolean;
/** sketch 抖動種子,預設 42。 */
seed?: number;
/** sketch 手寫字體來源覆寫。 */
fontUrl?: string;
/** 如何取得 mermaid:注入實例 / CDN。省略則動態 import peer。 */
mermaid?: MermaidSource;
/** 透傳給 mermaid.initialize 的設定。 */
mermaidConfig?: Record;
/** 如何取得 svg-pan-zoom。省略則動態 import peer。 */
svgPanZoom?: SvgPanZoomSource;
/** 是否注入套件內建 CSS,預設 true。 */
injectStyles?: boolean;
/**
* 檢查提示(「這一步異常時怎麼查」)。與原始碼裡的 `%% @check` 指令合併,
* 同一個 target 以此處為準。
*/
checks?: DiagramCheck[];
/** 是否解析原始碼中的 `%% @check` 指令,預設 true。 */
checksFromSource?: boolean;
/** 角標初始是否顯示,預設 true(工具列與 H 鍵可切換)。 */
defaultChecksVisible?: boolean;
/** 使用者點開某則提示時觸發。 */
onCheckSelect?: (check: DiagramCheck) => void;
/** 內建 Kibana Discover 連結設定(host 已知 data view UUID 時免後端)。 */
elk?: ElkLinkConfig;
/** 覆寫 ELK 連結產生方式;需要打後端解析 data view 的 host 走這條。 */
onResolveElkLink?: CheckResolveElkLink;
/**
* 節點懸停提示(tooltip):滑鼠停在節點上顯示說明。內容來源 = 原始碼 `%% @tip` 指令
* + `tips` prop + 檢查提示摘要。預設 true;false = 完全關閉。
*/
nodeTips?: boolean;
/**
* 懸停提示(與原始碼裡的 `%% @tip` 指令合併,同一個 target 以此處為準)。
* 可用 `{ 節點id: 文字 }` 簡寫。
*/
tips?: DiagramTip[] | Record;
/** 是否解析原始碼中的 `%% @tip` 指令,預設 true。 */
tipsFromSource?: boolean;
/** 動態決定節點提示;回傳 null = 該節點不顯示,undefined = 交回內建查找。 */
getNodeTip?: GetNodeTip;
/** 無授權提示時退回顯示「節點完整文字 + id」,預設 false。 */
tipFallbackLabel?: boolean;
className?: string;
style?: React.CSSProperties;
onRender?: (svg: SVGSVGElement) => void;
onError?: (err: Error) => void;
}
/** 命令式控制(透過 ref),適合 toolbar={false} 時 host 自建按鈕。 */
interface MermaidViewerHandle {
zoomIn: () => void;
zoomOut: () => void;
fit: () => void;
reset: () => void;
actualSize: () => void;
getZoomPercent: () => number;
search: (term: string) => SearchState;
next: () => SearchState;
prev: () => SearchState;
clearSearch: () => void;
exportSvg: () => string;
exportPng: (opts?: ExportRasterOptions) => Promise;
downloadSvg: (filename?: string) => void;
downloadPng: (filename?: string, opts?: ExportRasterOptions) => Promise;
getSvg: () => SVGSVGElement | null;
enterFullscreen: () => void;
exitFullscreen: () => void;
toggleFullscreen: () => void;
isFullscreen: () => boolean;
setPattern: (pattern: RsmPattern) => void;
cyclePattern: () => void;
getPattern: () => RsmPattern;
/** 設定底色(hex);null = 透明 / 跟隨頁面。 */
setSolidColor: (color: string | null) => void;
getSolidColor: () => string | null;
/** 合併後的檢查提示清單。 */
getChecks: () => DiagramCheck[];
/** 顯示 / 隱藏節點角標。 */
showChecks: (visible: boolean) => void;
/** 平移到某個提示節點並高亮;target 找不到時無動作。 */
focusCheck: (target: string) => void;
openChecklist: () => void;
closeChecklist: () => void;
}
declare const MermaidViewer: react.ForwardRefExoticComponent>;
/**
* 只顯示圖表的便利元件 = 。
* 仍支援 pan/zoom 與透過 ref 的命令式控制(host 可自建按鈕)。
*/
declare const MermaidDiagram: react.ForwardRefExoticComponent & react.RefAttributes>;
type RenderStatus = 'loading' | 'ready' | 'error';
interface UseMermaidViewerOptions {
code: string;
theme: MermaidTheme;
dark: boolean;
seed: number;
fontUrl?: string;
mermaidConfig?: Record;
mermaid?: MermaidSource;
svgPanZoom?: SvgPanZoomSource;
panZoom: boolean;
touchGestures: boolean;
injectStyles: boolean;
/** host 傳入的檢查提示(與原始碼解析結果合併,同 target 覆寫)。 */
checks?: DiagramCheck[];
/** 是否解析原始碼中的 `%% @check` 指令,預設 true。 */
checksFromSource?: boolean;
/** 角標初始是否顯示。 */
checksVisible?: boolean;
/** 點擊角標時觸發(host 用來開跳窗)。 */
onCheckActivate?: (group: ResolvedCheckGroup) => void;
/** 是否啟用節點懸停提示,預設 true。 */
nodeTips?: boolean;
/** host 傳入的懸停提示(與原始碼解析結果合併,同 target 覆寫)。可用 Record 簡寫。 */
tips?: DiagramTip[] | Record;
/** 是否解析原始碼中的 `%% @tip` 指令,預設 true。 */
tipsFromSource?: boolean;
/** 動態決定節點提示;回傳 null = 不顯示,undefined = 交回內建查找。 */
getNodeTip?: GetNodeTip;
/** 無授權提示時退回顯示節點完整文字 + id,預設 false。 */
tipFallbackLabel?: boolean;
onRender?: (svg: SVGSVGElement) => void;
onError?: (err: Error) => void;
}
interface UseMermaidViewerResult {
stageRef: RefObject;
status: RenderStatus;
error: string;
zoomPercent: number;
zoomIn: () => void;
zoomOut: () => void;
fit: () => void;
reset: () => void;
actualSize: () => void;
getZoomPercent: () => number;
search: (term: string, pan?: boolean) => SearchState;
next: (pan?: boolean) => SearchState;
prev: (pan?: boolean) => SearchState;
clearSearch: () => void;
exportSvg: () => string;
exportPng: (opts?: ExportRasterOptions) => Promise;
downloadSvg: (filename?: string) => void;
downloadPng: (filename?: string, opts?: ExportRasterOptions) => Promise;
getSvg: () => SVGSVGElement | null;
/** 本次渲染成功掛上的提示群組(每次重繪後會換新物件)。 */
checkGroups: ResolvedCheckGroup[];
/** 合併後的提示清單(含未能在圖上定位的)。 */
checks: DiagramCheck[];
/** 高亮某個提示節點;undefined = 清除。 */
focusCheck: (key: string | undefined) => void;
/** 把圖平移到某個提示節點並高亮。 */
panToCheck: (group: ResolvedCheckGroup) => void;
}
declare function useMermaidViewer(opts: UseMermaidViewerOptions): UseMermaidViewerResult;
interface MermaidEditorProps {
/** 初始 / 受控 mermaid 原始碼。外部變更會重新匯入為可編輯場景。 */
source?: string;
/** 初始場景(無 source 時用)。 */
initialScene?: EditorScene;
dark?: boolean;
seed?: number;
fontUrl?: string;
/** 如何取得 mermaid(parse / layout / 預覽)。省略則動態 import peer。 */
mermaid?: MermaidSource;
/** 視覺風格:'sketch'(預設,手繪)/ 'clean'(俐落圓角+柔和陰影,貼近 colorful)。 */
look?: EditorLook;
/** 是否顯示內建工具列,預設 true。false = host 透過 ref 自建。 */
toolbar?: boolean;
/** 內建「原始碼」面板初始是否展開,預設 false(可由工具列 > 原始碼 鈕切換)。 */
defaultSource?: boolean;
/** 場景變更(每次編輯即時)。 */
onChange?: (scene: EditorScene) => void;
/** 序列化後的 mermaid 文字(防抖)。 */
onMermaidChange?: (text: string) => void;
onError?: (err: unknown) => void;
className?: string;
style?: React.CSSProperties;
}
type MermaidEditorHandle = DiagramEditorHandle;
declare const MermaidEditor: react.ForwardRefExoticComponent>;
interface EditorToolbarProps {
handle: DiagramEditorHandle | null;
tool: Tool;
canUndo: boolean;
canRedo: boolean;
zoomPercent: number;
/** 「原始碼」面板是否開啟(由 MermaidEditor 控制)。 */
showSource?: boolean;
onToggleSource?: () => void;
/** 目前圖種(決定顯示哪些建立控制項)。 */
diagramType?: string;
/** 目前選取的元素 id(用來把連線控制項同步成選取連線的樣式)。 */
selection?: string[];
/** 目前外觀(clean / sketch),供手繪切換鈕初始狀態。 */
look?: EditorLook;
}
/** 內建工具列。重用 .rsm-toolbar / .rsm-btn class。toolbar={false} 時 host 可改用 ref 自建。 */
declare function EditorToolbar(props: EditorToolbarProps): React.JSX.Element;
interface UseDiagramEditorOptions {
source?: string;
scene?: EditorScene;
mermaid?: MermaidSource;
dark?: boolean;
seed?: number;
fontUrl?: string;
look?: EditorLook;
onChange?: (scene: EditorScene) => void;
onMermaidChange?: (text: string) => void;
onError?: (err: unknown) => void;
}
interface UseDiagramEditorResult {
hostRef: React.RefObject;
handle: DiagramEditorHandle | null;
tool: Tool;
canUndo: boolean;
canRedo: boolean;
zoomPercent: number;
selection: string[];
/** 即時產生的 mermaid 原始碼(供內建「原始碼」面板)。 */
code: string;
/** 目前圖種(供工具列依型別顯示對應控制項)。 */
diagramType: string;
}
declare function useDiagramEditor(opts: UseDiagramEditorOptions): UseDiagramEditorResult;
declare function loadSvgPanZoom(source?: SvgPanZoomSource): Promise;
declare function ensureStyles(): void;
interface SketchOptions {
dark?: boolean;
/** 位移濾鏡亂數種子,固定值可確保每次 render 的抖動一致(與 handDrawnSeed 對齊)。 */
seed?: number;
}
declare const SKETCH_FONT = "'Virgil', 'KaiTi', 'Comic Sans MS', cursive";
declare const DEFAULT_VIRGIL_FONT_URL = "https://cdn.jsdelivr.net/npm/react-super-mermaid/dist/Virgil.woff2";
/**
* 對已渲染的 mermaid SVG 套用手繪風(就地修改 DOM)。
* 僅處理 sequenceDiagram;其他圖型回傳 false 由呼叫端維持原生 handDrawn 結果。
*/
declare function sketchifyDiagram(root: ParentNode, opts?: SketchOptions): boolean;
/**
* 注入 Virgil 的 @font-face 並等待載入完成。
* 必須在 mermaid.render 之前 await — 否則 mermaid 會用 fallback 字體量測文字寬度,
* 導致換成 Virgil 後文字溢出方框。載入失敗時靜默退回 fallback 字體,不阻斷渲染。
*
* @param fontUrl Virgil woff2 的來源網址;省略則用 DEFAULT_VIRGIL_FONT_URL(jsDelivr)。
*/
declare function ensureSketchFont(fontUrl?: string): Promise;
/** 解析原始碼中的 `%% @tip` 指令。無指令時回空陣列(零成本)。 */
declare function parseTips(code: string): DiagramTip[];
/**
* 剔除 `%% @tip` 指令行,回傳可安全交給 mermaid 的原始碼。
* mermaid 本來就會忽略 `%%` 註解,但剔除可讓 parse 錯誤訊息的行號不被提示內容干擾,
* 與 stripCheckDirectives 行為一致。
*/
declare function stripTipDirectives(code: string): string;
/**
* 合併兩組 tips:`overrides`(通常來自 prop)覆寫 `base`(通常來自原始碼)中同 target 的項目。
* 語意同 mergeChecks —— prop 是「這個節點就用我這份」。
*/
declare function mergeTips(base: DiagramTip[], overrides?: DiagramTip[]): DiagramTip[];
/** 把 `tips` prop 的簡寫形(Record)正規化成 DiagramTip[]。 */
declare function normalizeTips(tips: DiagramTip[] | Record | undefined): DiagramTip[] | undefined;
/** 解析原始碼中的 `%% @check` 指令。無指令時回空陣列(零成本)。 */
declare function parseChecks(code: string): DiagramCheck[];
/**
* 剔除 `%% @check` 指令行,回傳可安全交給 mermaid 的原始碼。
*
* mermaid 本來就會忽略 `%%` 註解,但多行 SQL 片段裡可能出現讓 lexer 誤判的字元,
* 先剔除最保險;也讓 `parse()` 的錯誤訊息行號不被提示內容干擾。
*/
declare function stripCheckDirectives(code: string): string;
/**
* 合併兩組 checks:`overrides`(通常來自 prop)覆寫 `base`(通常來自原始碼)中同 target 的項目。
* target 相同但 base 有多筆時整組被覆寫 —— prop 的語意是「這個節點就用我這份」。
*/
declare function mergeChecks(base: DiagramCheck[], overrides?: DiagramCheck[]): DiagramCheck[];
interface KibanaDiscoverUrlInput {
/** Kibana 站台網址(尾端斜線可有可無)。 */
kibanaHost: string;
/** data view(index pattern)UUID。 */
dataViewId: string;
/** KQL 查詢字串。 */
kql: string;
/** 時間範圍:絕對 ISO 或相對值(`now-24h`)。 */
timeFrom?: string;
timeTo?: string;
/** Discover 預設顯示欄位。 */
columns?: string[];
}
/** 組一條 Kibana Discover 連結。 */
declare function buildKibanaDiscoverUrl(input: KibanaDiscoverUrlInput): string;
/**
* 用 viewer 的 `elk` 設定把一則提示的查詢條件轉成連結。
* 設定不全或該提示沒有 KQL 時回 undefined —— 呼叫端據此退化成「複製 KQL」,不顯示死連結。
*/
declare function elkLinkFromConfig(query: CheckElkQuery | undefined, config: ElkLinkConfig | undefined): string | undefined;
/** 從節點的 DOM id 還原作者在原始碼寫的 id;取不到回 undefined。 */
declare function authorIdFromDomId(domId: string, renderId?: string): string | undefined;
/** 節點的可見文字(htmlLabels 與純 SVG 文字兩種渲染都涵蓋),用於以標籤比對。 */
declare function nodeLabelText(el: Element): string;
interface FindNodeOptions {
/** 本次 render 的 id(mermaid 會把它當 DOM id 前綴)。 */
renderId?: string;
/** `id` = 比對作者 id(預設);`label` = 比對節點文字。 */
match?: 'id' | 'label';
}
/**
* 依 target 找出圖上的節點元素。
*
* `match: 'id'` 先走精準的作者 id 還原;找不到時**退回標籤文字比對** —— 因為不同圖型
* (序列圖角色、mindmap…)的 DOM id 規則不一致,退路讓提示在那些圖上仍可用。
*/
declare function findDiagramNode(svg: SVGSVGElement, target: string, opts?: FindNodeOptions): Element | undefined;
export { type AnnotateOptions, type AttachHoverTipsOptions, BACKGROUND_PRESETS, CheckCard, type CheckCardProps, CheckElkQuery, CheckList, type CheckListProps, CheckPopover, type CheckPopoverProps, type CheckResolveElkLink, CheckSeverity, type ChecksController, DEFAULT_THEME_OPTIONS, DEFAULT_VIRGIL_FONT_URL, DiagramCheck, DiagramEditorHandle, DiagramTip, EditorScene, EditorToolbar, type EditorToolbarProps, ElkLinkConfig, ExportRasterOptions, type FindNodeOptions, type GetNodeTip, type HoverTipContext, type HoverTipsController, type KibanaDiscoverUrlInput, MermaidBaseTheme, MermaidDiagram, MermaidEditor, type MermaidEditorHandle, type MermaidEditorProps, MermaidSource, MermaidTheme, MermaidViewer, type MermaidViewerHandle, type MermaidViewerProps, PATTERN_OPTIONS, type RenderStatus, type ResolvedCheckGroup, RsmBackgroundPreset, RsmPattern, SKETCH_FONT, SearchState, type SketchOptions, SvgPanZoomSource, type ThemeOption, Tool, Toolbar, type ToolbarProps, type UseDiagramEditorOptions, type UseDiagramEditorResult, type UseMermaidViewerOptions, type UseMermaidViewerResult, annotateChecks, attachHoverTips, authorIdFromDomId, buildKibanaDiscoverUrl, elkLinkFromConfig, ensureSketchFont, ensureStyles, findDiagramNode, loadSvgPanZoom, mergeChecks, mergeTips, nodeLabelText, normalizeTips, parseChecks, parseTips, resolveTheme, sketchifyDiagram, stripCheckDirectives, stripTipDirectives, useDiagramEditor, useMermaidViewer };