@zombie-mermaid/ascii-renderer 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/dist/index.cjs +8 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +146 -0
- package/dist/index.d.ts +146 -0
- package/dist/index.js +5392 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -0
- package/src/__tests__/ascii-arrowhead-direction-1083.test.ts +51 -0
- package/src/__tests__/ascii-canvas-first-claim-wins-1093.test.ts +89 -0
- package/src/__tests__/ascii-canvas-size-offset-1093.test.ts +95 -0
- package/src/__tests__/ascii-canvas-write.test.ts +132 -0
- package/src/__tests__/ascii-chain-edge-overlap-1067.test.ts +100 -0
- package/src/__tests__/ascii-charset-border-junctions.test.ts +63 -0
- package/src/__tests__/ascii-cjk-width.test.ts +150 -0
- package/src/__tests__/ascii-class-box-occupancy.test.ts +462 -0
- package/src/__tests__/ascii-class-column-width-488-489.test.ts +639 -0
- package/src/__tests__/ascii-class-cross-level-jog-corruption.test.ts +187 -0
- package/src/__tests__/ascii-class-detour-label-routing-487.test.ts +114 -0
- package/src/__tests__/ascii-class-diagram-compartments.test.ts +70 -0
- package/src/__tests__/ascii-class-label-box-collision.test.ts +60 -0
- package/src/__tests__/ascii-class-label-row-collision-531.test.ts +135 -0
- package/src/__tests__/ascii-class-label-territory-row-awareness.test.ts +57 -0
- package/src/__tests__/ascii-class-padding.test.ts +104 -0
- package/src/__tests__/ascii-class-parent-alignment-971.test.ts +139 -0
- package/src/__tests__/ascii-class-parent-alignment-972.test.ts +208 -0
- package/src/__tests__/ascii-class-reciprocal-relationships-448.test.ts +169 -0
- package/src/__tests__/ascii-combining-mark-width.test.ts +70 -0
- package/src/__tests__/ascii-coords-overlay.test.ts +64 -0
- package/src/__tests__/ascii-decision-lr-box-start.test.ts +106 -0
- package/src/__tests__/ascii-display-width-unit.test.ts +154 -0
- package/src/__tests__/ascii-draw-arrows-coverage.test.ts +224 -0
- package/src/__tests__/ascii-draw-arrows-single-point-path.test.ts +105 -0
- package/src/__tests__/ascii-edge-bundling-rank-violation-454.test.ts +72 -0
- package/src/__tests__/ascii-edge-ending-glyphs.test.ts +206 -0
- package/src/__tests__/ascii-edge-label-diagonal-fallback-418.test.ts +95 -0
- package/src/__tests__/ascii-edge-routing-fixes.test.ts +178 -0
- package/src/__tests__/ascii-edge-routing-single-point-path.test.ts +103 -0
- package/src/__tests__/ascii-edge-style-consistency-1067.test.ts +89 -0
- package/src/__tests__/ascii-edge-styles.test.ts +149 -0
- package/src/__tests__/ascii-emoji-cluster-width.test.ts +101 -0
- package/src/__tests__/ascii-er-box-occupancy.test.ts +251 -0
- package/src/__tests__/ascii-er-cardinality.test.ts +40 -0
- package/src/__tests__/ascii-er-corner-glyphs.test.ts +249 -0
- package/src/__tests__/ascii-er-jog-stray-line.test.ts +111 -0
- package/src/__tests__/ascii-er-label-padding.test.ts +118 -0
- package/src/__tests__/ascii-er-padding.test.ts +114 -0
- package/src/__tests__/ascii-er-relationship-label-corruption-350.test.ts +458 -0
- package/src/__tests__/ascii-er-relationship-overwrite.test.ts +325 -0
- package/src/__tests__/ascii-er-stray-connectors.test.ts +344 -0
- package/src/__tests__/ascii-er-unrelated-stem-separation-411.test.ts +98 -0
- package/src/__tests__/ascii-er-vertical-one-marker.test.ts +110 -0
- package/src/__tests__/ascii-label-line-terminal-fallback.test.ts +168 -0
- package/src/__tests__/ascii-lane-search.test.ts +207 -0
- package/src/__tests__/ascii-multibox-cjk-width.test.ts +184 -0
- package/src/__tests__/ascii-multiline.test.ts +288 -0
- package/src/__tests__/ascii-padding-edge-cases.test.ts +154 -0
- package/src/__tests__/ascii-pathfinder-route-edge.test.ts +184 -0
- package/src/__tests__/ascii-sequence-alt-else-label.test.ts +236 -0
- package/src/__tests__/ascii-sequence-block-wall-clearance.test.ts +217 -0
- package/src/__tests__/ascii-sequence-box-group.test.ts +159 -0
- package/src/__tests__/ascii-sequence-cjk-width.test.ts +235 -0
- package/src/__tests__/ascii-sequence-create-destroy.test.ts +114 -0
- package/src/__tests__/ascii-sequence-form-invariants.test.ts +432 -0
- package/src/__tests__/ascii-sequence-mermaid-parity.test.ts +219 -0
- package/src/__tests__/ascii-sequence-notes.test.ts +61 -0
- package/src/__tests__/ascii-sequence-padding.test.ts +119 -0
- package/src/__tests__/ascii-sequence-self-arrow.test.ts +206 -0
- package/src/__tests__/ascii-shape-diamond.test.ts +38 -0
- package/src/__tests__/ascii-shape-rectangle.test.ts +258 -0
- package/src/__tests__/ascii-shape-rounded.test.ts +36 -0
- package/src/__tests__/ascii-shapes-circle.test.ts +41 -0
- package/src/__tests__/ascii-shapes-hexagon.test.ts +42 -0
- package/src/__tests__/ascii-shapes-special.test.ts +344 -0
- package/src/__tests__/ascii-shapes-stadium.test.ts +217 -0
- package/src/__tests__/ascii-shapes-state.test.ts +224 -0
- package/src/__tests__/ascii-state-bidirectional-label-swap-530.test.ts +130 -0
- package/src/__tests__/ascii-subgraph-direction-honored-445.test.ts +90 -0
- package/src/__tests__/ascii-subgraph-label-border-clip.test.ts +152 -0
- package/src/__tests__/ascii-subgraph-title-padding.test.ts +77 -0
- package/src/__tests__/ascii-territory-unit.test.ts +219 -0
- package/src/__tests__/ascii-validate.test.ts +220 -0
- package/src/__tests__/ascii.test.ts +325 -0
- package/src/__tests__/class-arrow-directions.test.ts +505 -0
- package/src/__tests__/draw-lines.test.ts +93 -0
- package/src/__tests__/edge-cell-styles.test.ts +278 -0
- package/src/__tests__/grid-occupancy.test.ts +240 -0
- package/src/__tests__/helpers/ascii-form.ts +142 -0
- package/src/__tests__/helpers/terminal-display-width.ts +74 -0
- package/src/__tests__/pathfinder.test.ts +239 -0
- package/src/__tests__/testdata/ascii/ampersand_lhs.txt +18 -0
- package/src/__tests__/testdata/ascii/ampersand_lhs_and_rhs.txt +18 -0
- package/src/__tests__/testdata/ascii/ampersand_rhs.txt +18 -0
- package/src/__tests__/testdata/ascii/ampersand_td_fanin.txt +18 -0
- package/src/__tests__/testdata/ascii/ampersand_td_fanout.txt +18 -0
- package/src/__tests__/testdata/ascii/ampersand_without_edge.txt +18 -0
- package/src/__tests__/testdata/ascii/back_reference_from_child.txt +10 -0
- package/src/__tests__/testdata/ascii/backlink_from_bottom.txt +22 -0
- package/src/__tests__/testdata/ascii/backlink_from_top.txt +22 -0
- package/src/__tests__/testdata/ascii/backlink_with_short_y_padding.txt +20 -0
- package/src/__tests__/testdata/ascii/cls_all_relationships.txt +19 -0
- package/src/__tests__/testdata/ascii/cls_annotation.txt +29 -0
- package/src/__tests__/testdata/ascii/cls_association.txt +14 -0
- package/src/__tests__/testdata/ascii/cls_basic.txt +15 -0
- package/src/__tests__/testdata/ascii/cls_dependency.txt +14 -0
- package/src/__tests__/testdata/ascii/cls_inheritance.txt +20 -0
- package/src/__tests__/testdata/ascii/cls_methods.txt +21 -0
- package/src/__tests__/testdata/ascii/comments.txt +23 -0
- package/src/__tests__/testdata/ascii/custom_padding.txt +10 -0
- package/src/__tests__/testdata/ascii/duplicate_labels.txt +19 -0
- package/src/__tests__/testdata/ascii/er_attributes.txt +21 -0
- package/src/__tests__/testdata/ascii/er_basic.txt +8 -0
- package/src/__tests__/testdata/ascii/er_identifying.txt +18 -0
- package/src/__tests__/testdata/ascii/flowchart_tb_simple.txt +29 -0
- package/src/__tests__/testdata/ascii/graph_bt_direction.txt +28 -0
- package/src/__tests__/testdata/ascii/graph_tb_direction.txt +26 -0
- package/src/__tests__/testdata/ascii/nested_subgraphs_with_labels.txt +36 -0
- package/src/__tests__/testdata/ascii/preserve_order_of_definition.txt +23 -0
- package/src/__tests__/testdata/ascii/self_reference.txt +10 -0
- package/src/__tests__/testdata/ascii/self_reference_with_edge.txt +10 -0
- package/src/__tests__/testdata/ascii/seq_basic.txt +17 -0
- package/src/__tests__/testdata/ascii/seq_multiple_messages.txt +25 -0
- package/src/__tests__/testdata/ascii/seq_self_message.txt +18 -0
- package/src/__tests__/testdata/ascii/single_node.txt +8 -0
- package/src/__tests__/testdata/ascii/single_node_longer_name.txt +8 -0
- package/src/__tests__/testdata/ascii/subgraph_complex_mixed.txt +38 -0
- package/src/__tests__/testdata/ascii/subgraph_complex_nested.txt +49 -0
- package/src/__tests__/testdata/ascii/subgraph_direction_override.txt +47 -0
- package/src/__tests__/testdata/ascii/subgraph_empty.txt +10 -0
- package/src/__tests__/testdata/ascii/subgraph_mixed_nodes.txt +20 -0
- package/src/__tests__/testdata/ascii/subgraph_mixed_nodes_td.txt +48 -0
- package/src/__tests__/testdata/ascii/subgraph_multiple_edges.txt +32 -0
- package/src/__tests__/testdata/ascii/subgraph_multiple_nodes.txt +16 -0
- package/src/__tests__/testdata/ascii/subgraph_nested.txt +24 -0
- package/src/__tests__/testdata/ascii/subgraph_nested_with_external.txt +30 -0
- package/src/__tests__/testdata/ascii/subgraph_node_outside_lr.txt +17 -0
- package/src/__tests__/testdata/ascii/subgraph_single_node.txt +16 -0
- package/src/__tests__/testdata/ascii/subgraph_td_direction.txt +26 -0
- package/src/__tests__/testdata/ascii/subgraph_td_multiple.txt +44 -0
- package/src/__tests__/testdata/ascii/subgraph_td_multiple_paddingy.txt +42 -0
- package/src/__tests__/testdata/ascii/subgraph_three_levels_nested.txt +32 -0
- package/src/__tests__/testdata/ascii/subgraph_three_separate.txt +24 -0
- package/src/__tests__/testdata/ascii/subgraph_two_separate.txt +20 -0
- package/src/__tests__/testdata/ascii/subgraph_with_labels.txt +20 -0
- package/src/__tests__/testdata/ascii/three_nodes.txt +9 -0
- package/src/__tests__/testdata/ascii/three_nodes_single_line.txt +8 -0
- package/src/__tests__/testdata/ascii/two_layer_single_graph.txt +19 -0
- package/src/__tests__/testdata/ascii/two_layer_single_graph_longer_names.txt +19 -0
- package/src/__tests__/testdata/ascii/two_nodes_linked.txt +8 -0
- package/src/__tests__/testdata/ascii/two_nodes_longer_names.txt +8 -0
- package/src/__tests__/testdata/ascii/two_root_nodes.txt +19 -0
- package/src/__tests__/testdata/ascii/two_root_nodes_longer_names.txt +19 -0
- package/src/__tests__/testdata/ascii/two_single_root_nodes.txt +19 -0
- package/src/__tests__/testdata/unicode/ampersand_lhs.txt +18 -0
- package/src/__tests__/testdata/unicode/ampersand_lhs_and_rhs.txt +18 -0
- package/src/__tests__/testdata/unicode/ampersand_rhs.txt +18 -0
- package/src/__tests__/testdata/unicode/ampersand_without_edge.txt +18 -0
- package/src/__tests__/testdata/unicode/back_reference_from_child.txt +10 -0
- package/src/__tests__/testdata/unicode/backlink_from_bottom.txt +22 -0
- package/src/__tests__/testdata/unicode/backlink_from_top.txt +22 -0
- package/src/__tests__/testdata/unicode/cls_all_relationships.txt +19 -0
- package/src/__tests__/testdata/unicode/cls_annotation.txt +29 -0
- package/src/__tests__/testdata/unicode/cls_association.txt +14 -0
- package/src/__tests__/testdata/unicode/cls_basic.txt +15 -0
- package/src/__tests__/testdata/unicode/cls_dependency.txt +14 -0
- package/src/__tests__/testdata/unicode/cls_inheritance.txt +20 -0
- package/src/__tests__/testdata/unicode/cls_methods.txt +21 -0
- package/src/__tests__/testdata/unicode/comments.txt +23 -0
- package/src/__tests__/testdata/unicode/duplicate_labels.txt +19 -0
- package/src/__tests__/testdata/unicode/er_attributes.txt +21 -0
- package/src/__tests__/testdata/unicode/er_basic.txt +8 -0
- package/src/__tests__/testdata/unicode/er_identifying.txt +18 -0
- package/src/__tests__/testdata/unicode/graph_bt_direction.txt +28 -0
- package/src/__tests__/testdata/unicode/preserve_order_of_definition.txt +23 -0
- package/src/__tests__/testdata/unicode/self_reference.txt +10 -0
- package/src/__tests__/testdata/unicode/self_reference_with_edge.txt +10 -0
- package/src/__tests__/testdata/unicode/seq_basic.txt +17 -0
- package/src/__tests__/testdata/unicode/seq_multiple_messages.txt +25 -0
- package/src/__tests__/testdata/unicode/seq_self_message.txt +18 -0
- package/src/__tests__/testdata/unicode/single_node.txt +8 -0
- package/src/__tests__/testdata/unicode/single_node_longer_name.txt +8 -0
- package/src/__tests__/testdata/unicode/three_nodes.txt +9 -0
- package/src/__tests__/testdata/unicode/three_nodes_single_line.txt +8 -0
- package/src/__tests__/testdata/unicode/two_layer_single_graph.txt +19 -0
- package/src/__tests__/testdata/unicode/two_layer_single_graph_longer_names.txt +19 -0
- package/src/__tests__/testdata/unicode/two_nodes_linked.txt +8 -0
- package/src/__tests__/testdata/unicode/two_nodes_longer_names.txt +8 -0
- package/src/__tests__/testdata/unicode/two_root_nodes.txt +19 -0
- package/src/__tests__/testdata/unicode/two_root_nodes_longer_names.txt +19 -0
- package/src/__tests__/testdata/unicode/two_single_root_nodes.txt +19 -0
- package/src/__tests__/xychart-ascii.test.ts +376 -0
- package/src/ansi.ts +490 -0
- package/src/canvas.ts +757 -0
- package/src/class-diagram.ts +2001 -0
- package/src/converter.ts +446 -0
- package/src/coords.ts +58 -0
- package/src/display-width.ts +151 -0
- package/src/draw-arrows.ts +593 -0
- package/src/draw-boxes.ts +267 -0
- package/src/draw-bundles.ts +611 -0
- package/src/draw-lines.ts +174 -0
- package/src/draw-subgraphs.ts +108 -0
- package/src/draw.ts +350 -0
- package/src/edge-bundling.ts +435 -0
- package/src/edge-cell-styles.ts +209 -0
- package/src/edge-routing.ts +1070 -0
- package/src/er-diagram.ts +1488 -0
- package/src/flowchart.ts +94 -0
- package/src/grid-occupancy.ts +234 -0
- package/src/grid.ts +1309 -0
- package/src/hyperlinks.ts +248 -0
- package/src/index.ts +163 -0
- package/src/lane-search.ts +68 -0
- package/src/multiline-utils.ts +82 -0
- package/src/pathfinder.ts +448 -0
- package/src/registry.ts +88 -0
- package/src/sequence.ts +1318 -0
- package/src/shapes/circle.ts +31 -0
- package/src/shapes/corners.ts +273 -0
- package/src/shapes/diamond.ts +31 -0
- package/src/shapes/hexagon.ts +35 -0
- package/src/shapes/index.ts +123 -0
- package/src/shapes/rectangle.ts +199 -0
- package/src/shapes/rounded.ts +31 -0
- package/src/shapes/special.ts +360 -0
- package/src/shapes/stadium.ts +122 -0
- package/src/shapes/state.ts +204 -0
- package/src/shapes/types.ts +78 -0
- package/src/territory.ts +136 -0
- package/src/types.ts +454 -0
- package/src/validate.ts +189 -0
- package/src/xychart.ts +1085 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { DiagramColors } from '@zombie-mermaid/core';
|
|
2
|
+
import { Direction } from '@zombie-mermaid/core';
|
|
3
|
+
|
|
4
|
+
export declare interface AsciiRenderOptions {
|
|
5
|
+
/** true = ASCII chars (+,-,|,>), false = Unicode box-drawing (┌,─,│,►). Default: false */
|
|
6
|
+
useAscii?: boolean;
|
|
7
|
+
/** Horizontal spacing between nodes. Default: 5 */
|
|
8
|
+
paddingX?: number;
|
|
9
|
+
/** Vertical spacing between nodes. Default: 5 */
|
|
10
|
+
paddingY?: number;
|
|
11
|
+
/** Padding inside node boxes. Default: 1 */
|
|
12
|
+
boxBorderPadding?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Color mode for output.
|
|
15
|
+
* - 'none': No colors (plain text)
|
|
16
|
+
* - 'auto': Auto-detect (terminal ANSI capabilities, or HTML in browsers)
|
|
17
|
+
* - 'ansi16': 16-color ANSI
|
|
18
|
+
* - 'ansi256': 256-color xterm
|
|
19
|
+
* - 'truecolor': 24-bit RGB
|
|
20
|
+
* - 'html': HTML <span> tags with inline color styles (for browser rendering)
|
|
21
|
+
* Default: 'auto'
|
|
22
|
+
*/
|
|
23
|
+
colorMode?: ColorMode | 'auto';
|
|
24
|
+
/** Theme colors for ASCII output. Uses default theme if not provided. */
|
|
25
|
+
theme?: Partial<AsciiTheme>;
|
|
26
|
+
/**
|
|
27
|
+
* Overlay spreadsheet-style row/column indices on the rendered output, to
|
|
28
|
+
* help debug layout spacing. Off by default.
|
|
29
|
+
*/
|
|
30
|
+
showCoords?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Force the diagram's layout direction, overriding the one its source
|
|
33
|
+
* declares (a flowchart's `graph LR` header, or a state diagram's
|
|
34
|
+
* top-level `direction LR` line). Applied after parsing and before
|
|
35
|
+
* layout — the source text is never rewritten. Replaces only the
|
|
36
|
+
* top-level direction: a nested subgraph's or composite state's own
|
|
37
|
+
* `direction` line still applies on top of it, exactly as it does on top
|
|
38
|
+
* of the diagram's own header.
|
|
39
|
+
*
|
|
40
|
+
* Flowchart and state diagrams only in ASCII output. The ASCII ER layout
|
|
41
|
+
* has no direction concept (it already ignores a source `direction`
|
|
42
|
+
* line), and sequence/class/XY-chart diagrams have none to override, so
|
|
43
|
+
* all of those ignore this option (no error; output is identical with or
|
|
44
|
+
* without it). Same semantics as `RenderOptions.direction` for SVG. See
|
|
45
|
+
* issue #276.
|
|
46
|
+
*/
|
|
47
|
+
direction?: Direction;
|
|
48
|
+
/**
|
|
49
|
+
* Emit OSC 8 terminal hyperlinks: each node whose `click` directive
|
|
50
|
+
* declared an http/https/mailto/relative href gets its label wrapped in
|
|
51
|
+
* an `ESC ] 8 ; ; <url> ESC \` … `ESC ] 8 ; ; ESC \` pair, which
|
|
52
|
+
* terminals that support OSC 8 (iTerm2, WezTerm, kitty, Windows
|
|
53
|
+
* Terminal, VTE-based terminals) render as a clickable link. The
|
|
54
|
+
* sequences are zero-width and never affect layout; `click ... call fn()`
|
|
55
|
+
* bindings emit nothing. Off by default — not every terminal or pager
|
|
56
|
+
* handles OSC 8 gracefully (`less` needs `-R`), and no capability
|
|
57
|
+
* detection is attempted here; the caller decides. Ignored when
|
|
58
|
+
* `colorMode` is 'html'.
|
|
59
|
+
*/
|
|
60
|
+
hyperlinks?: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Theme colors for ASCII output — hex color strings.
|
|
65
|
+
* Derived from the SVG theme system for visual consistency.
|
|
66
|
+
*/
|
|
67
|
+
export declare interface AsciiTheme {
|
|
68
|
+
/** Text color (node labels, edge labels) */
|
|
69
|
+
fg: string;
|
|
70
|
+
/** Box border color (node borders, subgraph borders) */
|
|
71
|
+
border: string;
|
|
72
|
+
/** Edge line color (paths between nodes) */
|
|
73
|
+
line: string;
|
|
74
|
+
/** Arrowhead color (▲▼◄► or ^v<>) */
|
|
75
|
+
arrow: string;
|
|
76
|
+
/** Theme accent color (optional, used by xycharts for series 0) */
|
|
77
|
+
accent?: string;
|
|
78
|
+
/** Background color (optional, used by xycharts for dark-mode-aware shading) */
|
|
79
|
+
bg?: string;
|
|
80
|
+
/** Corner character color (optional, defaults to line) */
|
|
81
|
+
corner?: string;
|
|
82
|
+
/** Junction character color (optional, defaults to border) */
|
|
83
|
+
junction?: string;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Color mode for output. */
|
|
87
|
+
export declare type ColorMode = 'none' | 'ansi16' | 'ansi256' | 'truecolor' | 'html';
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Default ASCII theme derived from the SVG renderer's color palette.
|
|
91
|
+
* Uses the same mixing ratios to maintain visual consistency.
|
|
92
|
+
*/
|
|
93
|
+
export declare const DEFAULT_ASCII_THEME: AsciiTheme;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Detect the best color mode for the current environment.
|
|
97
|
+
*
|
|
98
|
+
* Terminal detection order:
|
|
99
|
+
* 1. COLORTERM=truecolor or COLORTERM=24bit → truecolor
|
|
100
|
+
* 2. TERM contains "256color" → ansi256
|
|
101
|
+
* 3. TERM is set and not "dumb" → ansi16
|
|
102
|
+
*
|
|
103
|
+
* Browser: returns 'html' (uses <span> tags with inline styles).
|
|
104
|
+
* Unknown/piped: returns 'none'.
|
|
105
|
+
*/
|
|
106
|
+
export declare function detectColorMode(): ColorMode;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Derive an AsciiTheme from SVG DiagramColors using the same mixing ratios.
|
|
110
|
+
* Honors optional enrichment colors (line, accent, border) when present,
|
|
111
|
+
* otherwise falls back to color-mix derivation — matching SVG behavior.
|
|
112
|
+
*/
|
|
113
|
+
export declare function diagramColorsToAsciiTheme(colors: DiagramColors): AsciiTheme;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Render Mermaid diagram text to an ASCII/Unicode string.
|
|
117
|
+
*
|
|
118
|
+
* Synchronous — no async layout engine needed (unlike the SVG renderer).
|
|
119
|
+
* Auto-detects diagram type from the header line and dispatches to
|
|
120
|
+
* the appropriate renderer.
|
|
121
|
+
*
|
|
122
|
+
* @param text - Mermaid source text (any supported diagram type)
|
|
123
|
+
* @param options - Rendering options
|
|
124
|
+
* @returns Multi-line ASCII/Unicode string
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```ts
|
|
128
|
+
* const result = renderMermaidASCII(`
|
|
129
|
+
* graph LR
|
|
130
|
+
* A --> B --> C
|
|
131
|
+
* `, { useAscii: true })
|
|
132
|
+
*
|
|
133
|
+
* // Output:
|
|
134
|
+
* // +---+ +---+ +---+
|
|
135
|
+
* // | | | | | |
|
|
136
|
+
* // | A |---->| B |---->| C |
|
|
137
|
+
* // | | | | | |
|
|
138
|
+
* // +---+ +---+ +---+
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export declare function renderMermaidASCII(text: string, options?: AsciiRenderOptions): string;
|
|
142
|
+
|
|
143
|
+
/** @deprecated Use `renderMermaidASCII` */
|
|
144
|
+
export declare const renderMermaidAscii: typeof renderMermaidASCII;
|
|
145
|
+
|
|
146
|
+
export { }
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { DiagramColors } from '@zombie-mermaid/core';
|
|
2
|
+
import { Direction } from '@zombie-mermaid/core';
|
|
3
|
+
|
|
4
|
+
export declare interface AsciiRenderOptions {
|
|
5
|
+
/** true = ASCII chars (+,-,|,>), false = Unicode box-drawing (┌,─,│,►). Default: false */
|
|
6
|
+
useAscii?: boolean;
|
|
7
|
+
/** Horizontal spacing between nodes. Default: 5 */
|
|
8
|
+
paddingX?: number;
|
|
9
|
+
/** Vertical spacing between nodes. Default: 5 */
|
|
10
|
+
paddingY?: number;
|
|
11
|
+
/** Padding inside node boxes. Default: 1 */
|
|
12
|
+
boxBorderPadding?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Color mode for output.
|
|
15
|
+
* - 'none': No colors (plain text)
|
|
16
|
+
* - 'auto': Auto-detect (terminal ANSI capabilities, or HTML in browsers)
|
|
17
|
+
* - 'ansi16': 16-color ANSI
|
|
18
|
+
* - 'ansi256': 256-color xterm
|
|
19
|
+
* - 'truecolor': 24-bit RGB
|
|
20
|
+
* - 'html': HTML <span> tags with inline color styles (for browser rendering)
|
|
21
|
+
* Default: 'auto'
|
|
22
|
+
*/
|
|
23
|
+
colorMode?: ColorMode | 'auto';
|
|
24
|
+
/** Theme colors for ASCII output. Uses default theme if not provided. */
|
|
25
|
+
theme?: Partial<AsciiTheme>;
|
|
26
|
+
/**
|
|
27
|
+
* Overlay spreadsheet-style row/column indices on the rendered output, to
|
|
28
|
+
* help debug layout spacing. Off by default.
|
|
29
|
+
*/
|
|
30
|
+
showCoords?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Force the diagram's layout direction, overriding the one its source
|
|
33
|
+
* declares (a flowchart's `graph LR` header, or a state diagram's
|
|
34
|
+
* top-level `direction LR` line). Applied after parsing and before
|
|
35
|
+
* layout — the source text is never rewritten. Replaces only the
|
|
36
|
+
* top-level direction: a nested subgraph's or composite state's own
|
|
37
|
+
* `direction` line still applies on top of it, exactly as it does on top
|
|
38
|
+
* of the diagram's own header.
|
|
39
|
+
*
|
|
40
|
+
* Flowchart and state diagrams only in ASCII output. The ASCII ER layout
|
|
41
|
+
* has no direction concept (it already ignores a source `direction`
|
|
42
|
+
* line), and sequence/class/XY-chart diagrams have none to override, so
|
|
43
|
+
* all of those ignore this option (no error; output is identical with or
|
|
44
|
+
* without it). Same semantics as `RenderOptions.direction` for SVG. See
|
|
45
|
+
* issue #276.
|
|
46
|
+
*/
|
|
47
|
+
direction?: Direction;
|
|
48
|
+
/**
|
|
49
|
+
* Emit OSC 8 terminal hyperlinks: each node whose `click` directive
|
|
50
|
+
* declared an http/https/mailto/relative href gets its label wrapped in
|
|
51
|
+
* an `ESC ] 8 ; ; <url> ESC \` … `ESC ] 8 ; ; ESC \` pair, which
|
|
52
|
+
* terminals that support OSC 8 (iTerm2, WezTerm, kitty, Windows
|
|
53
|
+
* Terminal, VTE-based terminals) render as a clickable link. The
|
|
54
|
+
* sequences are zero-width and never affect layout; `click ... call fn()`
|
|
55
|
+
* bindings emit nothing. Off by default — not every terminal or pager
|
|
56
|
+
* handles OSC 8 gracefully (`less` needs `-R`), and no capability
|
|
57
|
+
* detection is attempted here; the caller decides. Ignored when
|
|
58
|
+
* `colorMode` is 'html'.
|
|
59
|
+
*/
|
|
60
|
+
hyperlinks?: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Theme colors for ASCII output — hex color strings.
|
|
65
|
+
* Derived from the SVG theme system for visual consistency.
|
|
66
|
+
*/
|
|
67
|
+
export declare interface AsciiTheme {
|
|
68
|
+
/** Text color (node labels, edge labels) */
|
|
69
|
+
fg: string;
|
|
70
|
+
/** Box border color (node borders, subgraph borders) */
|
|
71
|
+
border: string;
|
|
72
|
+
/** Edge line color (paths between nodes) */
|
|
73
|
+
line: string;
|
|
74
|
+
/** Arrowhead color (▲▼◄► or ^v<>) */
|
|
75
|
+
arrow: string;
|
|
76
|
+
/** Theme accent color (optional, used by xycharts for series 0) */
|
|
77
|
+
accent?: string;
|
|
78
|
+
/** Background color (optional, used by xycharts for dark-mode-aware shading) */
|
|
79
|
+
bg?: string;
|
|
80
|
+
/** Corner character color (optional, defaults to line) */
|
|
81
|
+
corner?: string;
|
|
82
|
+
/** Junction character color (optional, defaults to border) */
|
|
83
|
+
junction?: string;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Color mode for output. */
|
|
87
|
+
export declare type ColorMode = 'none' | 'ansi16' | 'ansi256' | 'truecolor' | 'html';
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Default ASCII theme derived from the SVG renderer's color palette.
|
|
91
|
+
* Uses the same mixing ratios to maintain visual consistency.
|
|
92
|
+
*/
|
|
93
|
+
export declare const DEFAULT_ASCII_THEME: AsciiTheme;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Detect the best color mode for the current environment.
|
|
97
|
+
*
|
|
98
|
+
* Terminal detection order:
|
|
99
|
+
* 1. COLORTERM=truecolor or COLORTERM=24bit → truecolor
|
|
100
|
+
* 2. TERM contains "256color" → ansi256
|
|
101
|
+
* 3. TERM is set and not "dumb" → ansi16
|
|
102
|
+
*
|
|
103
|
+
* Browser: returns 'html' (uses <span> tags with inline styles).
|
|
104
|
+
* Unknown/piped: returns 'none'.
|
|
105
|
+
*/
|
|
106
|
+
export declare function detectColorMode(): ColorMode;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Derive an AsciiTheme from SVG DiagramColors using the same mixing ratios.
|
|
110
|
+
* Honors optional enrichment colors (line, accent, border) when present,
|
|
111
|
+
* otherwise falls back to color-mix derivation — matching SVG behavior.
|
|
112
|
+
*/
|
|
113
|
+
export declare function diagramColorsToAsciiTheme(colors: DiagramColors): AsciiTheme;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Render Mermaid diagram text to an ASCII/Unicode string.
|
|
117
|
+
*
|
|
118
|
+
* Synchronous — no async layout engine needed (unlike the SVG renderer).
|
|
119
|
+
* Auto-detects diagram type from the header line and dispatches to
|
|
120
|
+
* the appropriate renderer.
|
|
121
|
+
*
|
|
122
|
+
* @param text - Mermaid source text (any supported diagram type)
|
|
123
|
+
* @param options - Rendering options
|
|
124
|
+
* @returns Multi-line ASCII/Unicode string
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```ts
|
|
128
|
+
* const result = renderMermaidASCII(`
|
|
129
|
+
* graph LR
|
|
130
|
+
* A --> B --> C
|
|
131
|
+
* `, { useAscii: true })
|
|
132
|
+
*
|
|
133
|
+
* // Output:
|
|
134
|
+
* // +---+ +---+ +---+
|
|
135
|
+
* // | | | | | |
|
|
136
|
+
* // | A |---->| B |---->| C |
|
|
137
|
+
* // | | | | | |
|
|
138
|
+
* // +---+ +---+ +---+
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export declare function renderMermaidASCII(text: string, options?: AsciiRenderOptions): string;
|
|
142
|
+
|
|
143
|
+
/** @deprecated Use `renderMermaidASCII` */
|
|
144
|
+
export declare const renderMermaidAscii: typeof renderMermaidASCII;
|
|
145
|
+
|
|
146
|
+
export { }
|