zombie-mermaid 2.2.3 → 2.2.6
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/README.md +4 -4
- package/dist/ascii.cjs +1 -11
- package/dist/ascii.d.cts +1 -167
- package/dist/ascii.d.ts +1 -167
- package/dist/ascii.js +1 -6591
- package/dist/cli.js +836 -10946
- package/dist/index.cjs +2 -81
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -680
- package/dist/index.d.ts +42 -680
- package/dist/index.js +408 -10002
- package/dist/index.js.map +1 -1
- package/dist/mcp.cjs +1 -17909
- package/dist/mcp.d.cts +1 -11
- package/dist/mcp.d.ts +1 -11
- package/dist/mcp.js +1 -17884
- package/package.json +29 -29
- package/src/__tests__/workspace-package-boundaries.test.ts +15 -16
- package/src/__tests__/xychart-parser-categories.test.ts +78 -0
- package/src/ascii-entry.ts +14 -0
- package/src/cli/html-viewer.ts +5 -0
- package/src/mcp-entry.ts +21 -0
- package/dist/ascii.cjs.map +0 -1
- package/dist/ascii.js.map +0 -1
- package/dist/mcp.cjs.map +0 -1
- package/dist/mcp.js.map +0 -1
- package/packages/ascii-renderer/LICENSE +0 -22
- package/packages/ascii-renderer/src/ansi.ts +0 -490
- package/packages/ascii-renderer/src/canvas.ts +0 -658
- package/packages/ascii-renderer/src/class-diagram.ts +0 -2001
- package/packages/ascii-renderer/src/converter.ts +0 -446
- package/packages/ascii-renderer/src/coords.ts +0 -58
- package/packages/ascii-renderer/src/display-width.ts +0 -151
- package/packages/ascii-renderer/src/draw-arrows.ts +0 -549
- package/packages/ascii-renderer/src/draw-boxes.ts +0 -267
- package/packages/ascii-renderer/src/draw-bundles.ts +0 -611
- package/packages/ascii-renderer/src/draw-lines.ts +0 -174
- package/packages/ascii-renderer/src/draw-subgraphs.ts +0 -108
- package/packages/ascii-renderer/src/draw.ts +0 -337
- package/packages/ascii-renderer/src/edge-bundling.ts +0 -435
- package/packages/ascii-renderer/src/edge-cell-styles.ts +0 -81
- package/packages/ascii-renderer/src/edge-routing.ts +0 -1049
- package/packages/ascii-renderer/src/er-diagram.ts +0 -1488
- package/packages/ascii-renderer/src/flowchart.ts +0 -94
- package/packages/ascii-renderer/src/grid-occupancy.ts +0 -234
- package/packages/ascii-renderer/src/grid.ts +0 -1267
- package/packages/ascii-renderer/src/hyperlinks.ts +0 -248
- package/packages/ascii-renderer/src/index.ts +0 -163
- package/packages/ascii-renderer/src/lane-search.ts +0 -68
- package/packages/ascii-renderer/src/multiline-utils.ts +0 -82
- package/packages/ascii-renderer/src/pathfinder.ts +0 -448
- package/packages/ascii-renderer/src/registry.ts +0 -88
- package/packages/ascii-renderer/src/sequence.ts +0 -1318
- package/packages/ascii-renderer/src/shapes/circle.ts +0 -31
- package/packages/ascii-renderer/src/shapes/corners.ts +0 -273
- package/packages/ascii-renderer/src/shapes/diamond.ts +0 -31
- package/packages/ascii-renderer/src/shapes/hexagon.ts +0 -31
- package/packages/ascii-renderer/src/shapes/index.ts +0 -123
- package/packages/ascii-renderer/src/shapes/rectangle.ts +0 -199
- package/packages/ascii-renderer/src/shapes/rounded.ts +0 -31
- package/packages/ascii-renderer/src/shapes/special.ts +0 -352
- package/packages/ascii-renderer/src/shapes/stadium.ts +0 -122
- package/packages/ascii-renderer/src/shapes/state.ts +0 -204
- package/packages/ascii-renderer/src/shapes/types.ts +0 -78
- package/packages/ascii-renderer/src/territory.ts +0 -136
- package/packages/ascii-renderer/src/types.ts +0 -454
- package/packages/ascii-renderer/src/validate.ts +0 -189
- package/packages/ascii-renderer/src/xychart.ts +0 -1085
- package/packages/core/LICENSE +0 -22
- package/packages/core/src/click-directive.ts +0 -106
- package/packages/core/src/color-utils.ts +0 -205
- package/packages/core/src/diagram-type.ts +0 -35
- package/packages/core/src/direction-override.ts +0 -46
- package/packages/core/src/direction.ts +0 -56
- package/packages/core/src/index.ts +0 -34
- package/packages/core/src/init-directive.ts +0 -248
- package/packages/core/src/multiline-utils.ts +0 -275
- package/packages/core/src/statements.ts +0 -197
- package/packages/core/src/style-directives.ts +0 -214
- package/packages/core/src/text-metrics.ts +0 -498
- package/packages/core/src/theme.ts +0 -696
- package/packages/core/src/types.ts +0 -670
- package/packages/mcp/LICENSE +0 -22
- package/packages/mcp/src/index.ts +0 -17
- package/packages/mcp/src/server.ts +0 -135
- package/packages/mcp/src/tools/check-sequence-activations.ts +0 -91
- package/packages/mcp/src/tools/fix-sequence-activations.ts +0 -77
- package/packages/mcp/src/tools/render-ascii.ts +0 -99
- package/packages/mcp/src/tools/render-svg.ts +0 -95
- package/packages/mermaid-parser/LICENSE +0 -22
- package/packages/mermaid-parser/src/class/format.ts +0 -15
- package/packages/mermaid-parser/src/class/parser.ts +0 -593
- package/packages/mermaid-parser/src/class/types.ts +0 -166
- package/packages/mermaid-parser/src/er/parser.ts +0 -286
- package/packages/mermaid-parser/src/er/types.ts +0 -99
- package/packages/mermaid-parser/src/expanded-shapes.ts +0 -376
- package/packages/mermaid-parser/src/index.ts +0 -48
- package/packages/mermaid-parser/src/sequence/activation-check.ts +0 -149
- package/packages/mermaid-parser/src/sequence/activation-fix.ts +0 -112
- package/packages/mermaid-parser/src/sequence/box-color.ts +0 -85
- package/packages/mermaid-parser/src/sequence/parser.ts +0 -613
- package/packages/mermaid-parser/src/sequence/types.ts +0 -242
- package/packages/mermaid-parser/src/xychart/colors.ts +0 -177
- package/packages/mermaid-parser/src/xychart/parser.ts +0 -203
- package/packages/mermaid-parser/src/xychart/types.ts +0 -150
- package/packages/svg-renderer/LICENSE +0 -22
- package/packages/svg-renderer/src/class/layout.ts +0 -360
- package/packages/svg-renderer/src/class/renderer.ts +0 -636
- package/packages/svg-renderer/src/edge-curves.ts +0 -204
- package/packages/svg-renderer/src/elk-instance.ts +0 -292
- package/packages/svg-renderer/src/er/layout.ts +0 -200
- package/packages/svg-renderer/src/er/renderer.ts +0 -493
- package/packages/svg-renderer/src/index.ts +0 -58
- package/packages/svg-renderer/src/layout-engine/constants.ts +0 -19
- package/packages/svg-renderer/src/layout-engine/edge-bundling.ts +0 -379
- package/packages/svg-renderer/src/layout-engine/elk-adapter-utils.ts +0 -81
- package/packages/svg-renderer/src/layout-engine/elk-graph-builder.ts +0 -240
- package/packages/svg-renderer/src/layout-engine/from-elk.ts +0 -685
- package/packages/svg-renderer/src/layout-engine/layer-alignment.ts +0 -174
- package/packages/svg-renderer/src/layout-engine/to-elk.ts +0 -695
- package/packages/svg-renderer/src/layout-engine.ts +0 -74
- package/packages/svg-renderer/src/layout.ts +0 -8
- package/packages/svg-renderer/src/renderer.ts +0 -1485
- package/packages/svg-renderer/src/resolve-colors.ts +0 -339
- package/packages/svg-renderer/src/sequence/layout.ts +0 -698
- package/packages/svg-renderer/src/sequence/renderer.ts +0 -546
- package/packages/svg-renderer/src/shape-clipping.ts +0 -197
- package/packages/svg-renderer/src/styles.ts +0 -118
- package/packages/svg-renderer/src/xychart/layout.ts +0 -682
- package/packages/svg-renderer/src/xychart/renderer.ts +0 -684
- package/src/__tests__/ascii-canvas-write.test.ts +0 -137
- package/src/__tests__/ascii-charset-border-junctions.test.ts +0 -63
- package/src/__tests__/ascii-cjk-width.test.ts +0 -150
- package/src/__tests__/ascii-class-box-occupancy.test.ts +0 -462
- package/src/__tests__/ascii-class-column-width-488-489.test.ts +0 -639
- package/src/__tests__/ascii-class-cross-level-jog-corruption.test.ts +0 -187
- package/src/__tests__/ascii-class-detour-label-routing-487.test.ts +0 -114
- package/src/__tests__/ascii-class-diagram-compartments.test.ts +0 -70
- package/src/__tests__/ascii-class-label-box-collision.test.ts +0 -60
- package/src/__tests__/ascii-class-label-row-collision-531.test.ts +0 -135
- package/src/__tests__/ascii-class-label-territory-row-awareness.test.ts +0 -57
- package/src/__tests__/ascii-class-padding.test.ts +0 -104
- package/src/__tests__/ascii-class-parent-alignment-971.test.ts +0 -139
- package/src/__tests__/ascii-class-parent-alignment-972.test.ts +0 -208
- package/src/__tests__/ascii-class-reciprocal-relationships-448.test.ts +0 -169
- package/src/__tests__/ascii-combining-mark-width.test.ts +0 -70
- package/src/__tests__/ascii-coords-overlay.test.ts +0 -64
- package/src/__tests__/ascii-decision-lr-box-start.test.ts +0 -106
- package/src/__tests__/ascii-display-width-unit.test.ts +0 -154
- package/src/__tests__/ascii-draw-arrows-coverage.test.ts +0 -171
- package/src/__tests__/ascii-draw-arrows-single-point-path.test.ts +0 -112
- package/src/__tests__/ascii-edge-bundling-rank-violation-454.test.ts +0 -72
- package/src/__tests__/ascii-edge-ending-glyphs.test.ts +0 -206
- package/src/__tests__/ascii-edge-label-diagonal-fallback-418.test.ts +0 -95
- package/src/__tests__/ascii-edge-routing-fixes.test.ts +0 -178
- package/src/__tests__/ascii-edge-routing-single-point-path.test.ts +0 -107
- package/src/__tests__/ascii-edge-styles.test.ts +0 -149
- package/src/__tests__/ascii-emoji-cluster-width.test.ts +0 -101
- package/src/__tests__/ascii-er-box-occupancy.test.ts +0 -251
- package/src/__tests__/ascii-er-cardinality.test.ts +0 -40
- package/src/__tests__/ascii-er-corner-glyphs.test.ts +0 -249
- package/src/__tests__/ascii-er-jog-stray-line.test.ts +0 -111
- package/src/__tests__/ascii-er-label-padding.test.ts +0 -118
- package/src/__tests__/ascii-er-padding.test.ts +0 -114
- package/src/__tests__/ascii-er-relationship-label-corruption-350.test.ts +0 -458
- package/src/__tests__/ascii-er-relationship-overwrite.test.ts +0 -325
- package/src/__tests__/ascii-er-stray-connectors.test.ts +0 -347
- package/src/__tests__/ascii-er-unrelated-stem-separation-411.test.ts +0 -98
- package/src/__tests__/ascii-er-vertical-one-marker.test.ts +0 -110
- package/src/__tests__/ascii-label-line-terminal-fallback.test.ts +0 -172
- package/src/__tests__/ascii-lane-search.test.ts +0 -207
- package/src/__tests__/ascii-multibox-cjk-width.test.ts +0 -184
- package/src/__tests__/ascii-multiline.test.ts +0 -291
- package/src/__tests__/ascii-padding-edge-cases.test.ts +0 -154
- package/src/__tests__/ascii-pathfinder-route-edge.test.ts +0 -194
- package/src/__tests__/ascii-sequence-alt-else-label.test.ts +0 -236
- package/src/__tests__/ascii-sequence-block-wall-clearance.test.ts +0 -217
- package/src/__tests__/ascii-sequence-box-group.test.ts +0 -159
- package/src/__tests__/ascii-sequence-cjk-width.test.ts +0 -235
- package/src/__tests__/ascii-sequence-create-destroy.test.ts +0 -114
- package/src/__tests__/ascii-sequence-form-invariants.test.ts +0 -432
- package/src/__tests__/ascii-sequence-mermaid-parity.test.ts +0 -219
- package/src/__tests__/ascii-sequence-notes.test.ts +0 -61
- package/src/__tests__/ascii-sequence-padding.test.ts +0 -119
- package/src/__tests__/ascii-sequence-self-arrow.test.ts +0 -206
- package/src/__tests__/ascii-shape-diamond.test.ts +0 -38
- package/src/__tests__/ascii-shape-rectangle.test.ts +0 -258
- package/src/__tests__/ascii-shape-rounded.test.ts +0 -36
- package/src/__tests__/ascii-shapes-circle.test.ts +0 -41
- package/src/__tests__/ascii-shapes-hexagon.test.ts +0 -42
- package/src/__tests__/ascii-shapes-special.test.ts +0 -349
- package/src/__tests__/ascii-shapes-stadium.test.ts +0 -217
- package/src/__tests__/ascii-shapes-state.test.ts +0 -234
- package/src/__tests__/ascii-state-bidirectional-label-swap-530.test.ts +0 -130
- package/src/__tests__/ascii-subgraph-direction-honored-445.test.ts +0 -90
- package/src/__tests__/ascii-subgraph-label-border-clip.test.ts +0 -152
- package/src/__tests__/ascii-subgraph-title-padding.test.ts +0 -77
- package/src/__tests__/ascii-territory-unit.test.ts +0 -219
- package/src/__tests__/ascii-validate.test.ts +0 -220
- package/src/__tests__/ascii.test.ts +0 -328
- package/src/__tests__/box-color.test.ts +0 -80
- package/src/__tests__/class-arrow-directions.test.ts +0 -505
- package/src/__tests__/click-directive.test.ts +0 -63
- package/src/__tests__/color-utils.test.ts +0 -186
- package/src/__tests__/diagram-type.test.ts +0 -28
- package/src/__tests__/draw-lines.test.ts +0 -93
- package/src/__tests__/edge-cell-styles.test.ts +0 -180
- package/src/__tests__/elk-adapter-utils.test.ts +0 -166
- package/src/__tests__/grid-occupancy.test.ts +0 -240
- package/src/__tests__/helpers/ascii-form.ts +0 -142
- package/src/__tests__/helpers/terminal-display-width.ts +0 -74
- package/src/__tests__/mcp-check-sequence-activations-tool.test.ts +0 -85
- package/src/__tests__/mcp-fix-sequence-activations-tool.test.ts +0 -134
- package/src/__tests__/mcp-server.test.ts +0 -163
- package/src/__tests__/pathfinder.test.ts +0 -246
- package/src/__tests__/sequence-activation-fix.test.ts +0 -91
- package/src/__tests__/testdata/ascii/ampersand_lhs.txt +0 -18
- package/src/__tests__/testdata/ascii/ampersand_lhs_and_rhs.txt +0 -18
- package/src/__tests__/testdata/ascii/ampersand_rhs.txt +0 -18
- package/src/__tests__/testdata/ascii/ampersand_td_fanin.txt +0 -18
- package/src/__tests__/testdata/ascii/ampersand_td_fanout.txt +0 -18
- package/src/__tests__/testdata/ascii/ampersand_without_edge.txt +0 -18
- package/src/__tests__/testdata/ascii/back_reference_from_child.txt +0 -10
- package/src/__tests__/testdata/ascii/backlink_from_bottom.txt +0 -22
- package/src/__tests__/testdata/ascii/backlink_from_top.txt +0 -22
- package/src/__tests__/testdata/ascii/backlink_with_short_y_padding.txt +0 -20
- package/src/__tests__/testdata/ascii/cls_all_relationships.txt +0 -19
- package/src/__tests__/testdata/ascii/cls_annotation.txt +0 -29
- package/src/__tests__/testdata/ascii/cls_association.txt +0 -14
- package/src/__tests__/testdata/ascii/cls_basic.txt +0 -15
- package/src/__tests__/testdata/ascii/cls_dependency.txt +0 -14
- package/src/__tests__/testdata/ascii/cls_inheritance.txt +0 -20
- package/src/__tests__/testdata/ascii/cls_methods.txt +0 -21
- package/src/__tests__/testdata/ascii/comments.txt +0 -23
- package/src/__tests__/testdata/ascii/custom_padding.txt +0 -10
- package/src/__tests__/testdata/ascii/duplicate_labels.txt +0 -19
- package/src/__tests__/testdata/ascii/er_attributes.txt +0 -21
- package/src/__tests__/testdata/ascii/er_basic.txt +0 -8
- package/src/__tests__/testdata/ascii/er_identifying.txt +0 -18
- package/src/__tests__/testdata/ascii/flowchart_tb_simple.txt +0 -29
- package/src/__tests__/testdata/ascii/graph_bt_direction.txt +0 -28
- package/src/__tests__/testdata/ascii/graph_tb_direction.txt +0 -26
- package/src/__tests__/testdata/ascii/nested_subgraphs_with_labels.txt +0 -36
- package/src/__tests__/testdata/ascii/preserve_order_of_definition.txt +0 -23
- package/src/__tests__/testdata/ascii/self_reference.txt +0 -10
- package/src/__tests__/testdata/ascii/self_reference_with_edge.txt +0 -10
- package/src/__tests__/testdata/ascii/seq_basic.txt +0 -17
- package/src/__tests__/testdata/ascii/seq_multiple_messages.txt +0 -25
- package/src/__tests__/testdata/ascii/seq_self_message.txt +0 -18
- package/src/__tests__/testdata/ascii/single_node.txt +0 -8
- package/src/__tests__/testdata/ascii/single_node_longer_name.txt +0 -8
- package/src/__tests__/testdata/ascii/subgraph_complex_mixed.txt +0 -38
- package/src/__tests__/testdata/ascii/subgraph_complex_nested.txt +0 -49
- package/src/__tests__/testdata/ascii/subgraph_direction_override.txt +0 -47
- package/src/__tests__/testdata/ascii/subgraph_empty.txt +0 -10
- package/src/__tests__/testdata/ascii/subgraph_mixed_nodes.txt +0 -20
- package/src/__tests__/testdata/ascii/subgraph_mixed_nodes_td.txt +0 -48
- package/src/__tests__/testdata/ascii/subgraph_multiple_edges.txt +0 -32
- package/src/__tests__/testdata/ascii/subgraph_multiple_nodes.txt +0 -16
- package/src/__tests__/testdata/ascii/subgraph_nested.txt +0 -24
- package/src/__tests__/testdata/ascii/subgraph_nested_with_external.txt +0 -30
- package/src/__tests__/testdata/ascii/subgraph_node_outside_lr.txt +0 -17
- package/src/__tests__/testdata/ascii/subgraph_single_node.txt +0 -16
- package/src/__tests__/testdata/ascii/subgraph_td_direction.txt +0 -26
- package/src/__tests__/testdata/ascii/subgraph_td_multiple.txt +0 -44
- package/src/__tests__/testdata/ascii/subgraph_td_multiple_paddingy.txt +0 -42
- package/src/__tests__/testdata/ascii/subgraph_three_levels_nested.txt +0 -32
- package/src/__tests__/testdata/ascii/subgraph_three_separate.txt +0 -24
- package/src/__tests__/testdata/ascii/subgraph_two_separate.txt +0 -20
- package/src/__tests__/testdata/ascii/subgraph_with_labels.txt +0 -20
- package/src/__tests__/testdata/ascii/three_nodes.txt +0 -9
- package/src/__tests__/testdata/ascii/three_nodes_single_line.txt +0 -8
- package/src/__tests__/testdata/ascii/two_layer_single_graph.txt +0 -19
- package/src/__tests__/testdata/ascii/two_layer_single_graph_longer_names.txt +0 -19
- package/src/__tests__/testdata/ascii/two_nodes_linked.txt +0 -8
- package/src/__tests__/testdata/ascii/two_nodes_longer_names.txt +0 -8
- package/src/__tests__/testdata/ascii/two_root_nodes.txt +0 -19
- package/src/__tests__/testdata/ascii/two_root_nodes_longer_names.txt +0 -19
- package/src/__tests__/testdata/ascii/two_single_root_nodes.txt +0 -19
- package/src/__tests__/testdata/unicode/ampersand_lhs.txt +0 -18
- package/src/__tests__/testdata/unicode/ampersand_lhs_and_rhs.txt +0 -18
- package/src/__tests__/testdata/unicode/ampersand_rhs.txt +0 -18
- package/src/__tests__/testdata/unicode/ampersand_without_edge.txt +0 -18
- package/src/__tests__/testdata/unicode/back_reference_from_child.txt +0 -10
- package/src/__tests__/testdata/unicode/backlink_from_bottom.txt +0 -22
- package/src/__tests__/testdata/unicode/backlink_from_top.txt +0 -22
- package/src/__tests__/testdata/unicode/cls_all_relationships.txt +0 -19
- package/src/__tests__/testdata/unicode/cls_annotation.txt +0 -29
- package/src/__tests__/testdata/unicode/cls_association.txt +0 -14
- package/src/__tests__/testdata/unicode/cls_basic.txt +0 -15
- package/src/__tests__/testdata/unicode/cls_dependency.txt +0 -14
- package/src/__tests__/testdata/unicode/cls_inheritance.txt +0 -20
- package/src/__tests__/testdata/unicode/cls_methods.txt +0 -21
- package/src/__tests__/testdata/unicode/comments.txt +0 -23
- package/src/__tests__/testdata/unicode/duplicate_labels.txt +0 -19
- package/src/__tests__/testdata/unicode/er_attributes.txt +0 -21
- package/src/__tests__/testdata/unicode/er_basic.txt +0 -8
- package/src/__tests__/testdata/unicode/er_identifying.txt +0 -18
- package/src/__tests__/testdata/unicode/graph_bt_direction.txt +0 -28
- package/src/__tests__/testdata/unicode/preserve_order_of_definition.txt +0 -23
- package/src/__tests__/testdata/unicode/self_reference.txt +0 -10
- package/src/__tests__/testdata/unicode/self_reference_with_edge.txt +0 -10
- package/src/__tests__/testdata/unicode/seq_basic.txt +0 -17
- package/src/__tests__/testdata/unicode/seq_multiple_messages.txt +0 -25
- package/src/__tests__/testdata/unicode/seq_self_message.txt +0 -18
- package/src/__tests__/testdata/unicode/single_node.txt +0 -8
- package/src/__tests__/testdata/unicode/single_node_longer_name.txt +0 -8
- package/src/__tests__/testdata/unicode/three_nodes.txt +0 -9
- package/src/__tests__/testdata/unicode/three_nodes_single_line.txt +0 -8
- package/src/__tests__/testdata/unicode/two_layer_single_graph.txt +0 -19
- package/src/__tests__/testdata/unicode/two_layer_single_graph_longer_names.txt +0 -19
- package/src/__tests__/testdata/unicode/two_nodes_linked.txt +0 -8
- package/src/__tests__/testdata/unicode/two_nodes_longer_names.txt +0 -8
- package/src/__tests__/testdata/unicode/two_root_nodes.txt +0 -19
- package/src/__tests__/testdata/unicode/two_root_nodes_longer_names.txt +0 -19
- package/src/__tests__/testdata/unicode/two_single_root_nodes.txt +0 -19
- package/src/__tests__/text-metrics.test.ts +0 -473
- package/src/__tests__/theme-palette-contrast.test.ts +0 -84
- package/src/__tests__/theme.test.ts +0 -132
- package/src/__tests__/xychart-ascii.test.ts +0 -376
- package/src/__tests__/xychart-colors.test.ts +0 -149
package/dist/index.d.cts
CHANGED
|
@@ -1,322 +1,50 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AsciiRenderOptions } from '@zombie-mermaid/ascii-renderer';
|
|
2
|
+
import { ClassRenderOptions } from '@zombie-mermaid/core';
|
|
3
|
+
import { CommonRenderOptions } from '@zombie-mermaid/core';
|
|
4
|
+
import { createLayoutCache } from '@zombie-mermaid/svg-renderer';
|
|
5
|
+
import { DEFAULTS } from '@zombie-mermaid/core';
|
|
6
|
+
import { DiagramColors } from '@zombie-mermaid/core';
|
|
7
|
+
import { Direction } from '@zombie-mermaid/core';
|
|
8
|
+
import { ErRenderOptions } from '@zombie-mermaid/core';
|
|
9
|
+
import { FlowchartRenderOptions } from '@zombie-mermaid/core';
|
|
10
|
+
import { fromShikiTheme } from '@zombie-mermaid/core';
|
|
11
|
+
import { LayoutCache } from '@zombie-mermaid/svg-renderer';
|
|
12
|
+
import { MermaidGraph } from '@zombie-mermaid/core';
|
|
13
|
+
import { NodeInteraction } from '@zombie-mermaid/core';
|
|
14
|
+
import { PositionedGraph } from '@zombie-mermaid/core';
|
|
15
|
+
import { renderMermaidASCII } from '@zombie-mermaid/ascii-renderer';
|
|
16
|
+
import { renderMermaidAscii } from '@zombie-mermaid/ascii-renderer';
|
|
17
|
+
import { RenderOptions } from '@zombie-mermaid/core';
|
|
18
|
+
import { SequenceRenderOptions } from '@zombie-mermaid/core';
|
|
19
|
+
import { ThemeName } from '@zombie-mermaid/core';
|
|
20
|
+
import { THEMES } from '@zombie-mermaid/core';
|
|
21
|
+
import { XyChartRenderOptions } from '@zombie-mermaid/core';
|
|
2
22
|
|
|
3
|
-
export
|
|
4
|
-
/** true = ASCII chars (+,-,|,>), false = Unicode box-drawing (┌,─,│,►). Default: false */
|
|
5
|
-
useAscii?: boolean;
|
|
6
|
-
/** Horizontal spacing between nodes. Default: 5 */
|
|
7
|
-
paddingX?: number;
|
|
8
|
-
/** Vertical spacing between nodes. Default: 5 */
|
|
9
|
-
paddingY?: number;
|
|
10
|
-
/** Padding inside node boxes. Default: 1 */
|
|
11
|
-
boxBorderPadding?: number;
|
|
12
|
-
/**
|
|
13
|
-
* Color mode for output.
|
|
14
|
-
* - 'none': No colors (plain text)
|
|
15
|
-
* - 'auto': Auto-detect (terminal ANSI capabilities, or HTML in browsers)
|
|
16
|
-
* - 'ansi16': 16-color ANSI
|
|
17
|
-
* - 'ansi256': 256-color xterm
|
|
18
|
-
* - 'truecolor': 24-bit RGB
|
|
19
|
-
* - 'html': HTML <span> tags with inline color styles (for browser rendering)
|
|
20
|
-
* Default: 'auto'
|
|
21
|
-
*/
|
|
22
|
-
colorMode?: ColorMode | 'auto';
|
|
23
|
-
/** Theme colors for ASCII output. Uses default theme if not provided. */
|
|
24
|
-
theme?: Partial<AsciiTheme>;
|
|
25
|
-
/**
|
|
26
|
-
* Overlay spreadsheet-style row/column indices on the rendered output, to
|
|
27
|
-
* help debug layout spacing. Off by default.
|
|
28
|
-
*/
|
|
29
|
-
showCoords?: boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Force the diagram's layout direction, overriding the one its source
|
|
32
|
-
* declares (a flowchart's `graph LR` header, or a state diagram's
|
|
33
|
-
* top-level `direction LR` line). Applied after parsing and before
|
|
34
|
-
* layout — the source text is never rewritten. Replaces only the
|
|
35
|
-
* top-level direction: a nested subgraph's or composite state's own
|
|
36
|
-
* `direction` line still applies on top of it, exactly as it does on top
|
|
37
|
-
* of the diagram's own header.
|
|
38
|
-
*
|
|
39
|
-
* Flowchart and state diagrams only in ASCII output. The ASCII ER layout
|
|
40
|
-
* has no direction concept (it already ignores a source `direction`
|
|
41
|
-
* line), and sequence/class/XY-chart diagrams have none to override, so
|
|
42
|
-
* all of those ignore this option (no error; output is identical with or
|
|
43
|
-
* without it). Same semantics as `RenderOptions.direction` for SVG. See
|
|
44
|
-
* issue #276.
|
|
45
|
-
*/
|
|
46
|
-
direction?: Direction;
|
|
47
|
-
/**
|
|
48
|
-
* Emit OSC 8 terminal hyperlinks: each node whose `click` directive
|
|
49
|
-
* declared an http/https/mailto/relative href gets its label wrapped in
|
|
50
|
-
* an `ESC ] 8 ; ; <url> ESC \` … `ESC ] 8 ; ; ESC \` pair, which
|
|
51
|
-
* terminals that support OSC 8 (iTerm2, WezTerm, kitty, Windows
|
|
52
|
-
* Terminal, VTE-based terminals) render as a clickable link. The
|
|
53
|
-
* sequences are zero-width and never affect layout; `click ... call fn()`
|
|
54
|
-
* bindings emit nothing. Off by default — not every terminal or pager
|
|
55
|
-
* handles OSC 8 gracefully (`less` needs `-R`), and no capability
|
|
56
|
-
* detection is attempted here; the caller decides. Ignored when
|
|
57
|
-
* `colorMode` is 'html'.
|
|
58
|
-
*/
|
|
59
|
-
hyperlinks?: boolean;
|
|
60
|
-
}
|
|
23
|
+
export { AsciiRenderOptions }
|
|
61
24
|
|
|
62
|
-
|
|
63
|
-
* Theme colors for ASCII output — hex color strings.
|
|
64
|
-
* Derived from the SVG theme system for visual consistency.
|
|
65
|
-
*/
|
|
66
|
-
declare interface AsciiTheme {
|
|
67
|
-
/** Text color (node labels, edge labels) */
|
|
68
|
-
fg: string;
|
|
69
|
-
/** Box border color (node borders, subgraph borders) */
|
|
70
|
-
border: string;
|
|
71
|
-
/** Edge line color (paths between nodes) */
|
|
72
|
-
line: string;
|
|
73
|
-
/** Arrowhead color (▲▼◄► or ^v<>) */
|
|
74
|
-
arrow: string;
|
|
75
|
-
/** Theme accent color (optional, used by xycharts for series 0) */
|
|
76
|
-
accent?: string;
|
|
77
|
-
/** Background color (optional, used by xycharts for dark-mode-aware shading) */
|
|
78
|
-
bg?: string;
|
|
79
|
-
/** Corner character color (optional, defaults to line) */
|
|
80
|
-
corner?: string;
|
|
81
|
-
/** Junction character color (optional, defaults to border) */
|
|
82
|
-
junction?: string;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Options applicable to class diagrams (`classDiagram`). Class diagrams use
|
|
87
|
-
* fixed internal padding/spacing (not `padding`/`nodeSpacing`/
|
|
88
|
-
* `layerSpacing`) and have no `direction` or `curve` concept; `interactivity`
|
|
89
|
-
* gates `click`-based links only — there's no edge-animation concept to gate.
|
|
90
|
-
*/
|
|
91
|
-
export declare type ClassRenderOptions = CommonRenderOptions & Pick<RenderOptions, 'fontSizes' | 'interactivity' | 'layoutCache'>;
|
|
92
|
-
|
|
93
|
-
/** Color mode for output. */
|
|
94
|
-
declare type ColorMode = 'none' | 'ansi16' | 'ansi256' | 'truecolor' | 'html';
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Options every diagram type honors: theming (colors, font), the shared
|
|
98
|
-
* strict-CSP/accessibility/output controls, and the post-render
|
|
99
|
-
* `resolveColors` pass. Every other `RenderOptions` field applies to only a
|
|
100
|
-
* subset of diagram types — see the per-type types below.
|
|
101
|
-
*/
|
|
102
|
-
export declare type CommonRenderOptions = Pick<RenderOptions, 'bg' | 'fg' | 'line' | 'accent' | 'muted' | 'surface' | 'border' | 'font' | 'transparent' | 'embedSource' | 'resolveColors' | 'nonce' | 'styleAttribute' | 'title' | 'decorative'>;
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Create a new opt-in layout cache with a bounded size (default 20
|
|
106
|
-
* entries). Once full, the least-recently-used entry is evicted to make
|
|
107
|
-
* room for a new one.
|
|
108
|
-
*
|
|
109
|
-
* Pass the result to `elkLayoutSync()` directly, or via
|
|
110
|
-
* `RenderOptions.layoutCache` (threaded through by `layoutGraphSync()`,
|
|
111
|
-
* `layoutClassDiagramSync()`, and `layoutErDiagramSync()`) to memoize
|
|
112
|
-
* layout across repeated renders of the same diagram + options.
|
|
113
|
-
*/
|
|
114
|
-
export declare function createLayoutCache(maxSize?: number): LayoutCache;
|
|
115
|
-
|
|
116
|
-
/** How an edge path is interpolated between its routed points. */
|
|
117
|
-
declare type CurveStyle = 'linear' | 'basis' | 'natural' | 'step' | 'stepBefore' | 'stepAfter';
|
|
118
|
-
|
|
119
|
-
/** Default bg/fg when no colors are provided (zinc light) */
|
|
120
|
-
export declare const DEFAULTS: Readonly<{
|
|
121
|
-
bg: string;
|
|
122
|
-
fg: string;
|
|
123
|
-
}>;
|
|
25
|
+
export { ClassRenderOptions }
|
|
124
26
|
|
|
125
|
-
|
|
126
|
-
* Diagram color configuration.
|
|
127
|
-
*
|
|
128
|
-
* Required: bg + fg give you a clean mono diagram.
|
|
129
|
-
* Optional: line, accent, muted, surface, border bring in richer color
|
|
130
|
-
* from Shiki themes or custom palettes. Each falls back to a color-mix()
|
|
131
|
-
* derivation from bg + fg if not set.
|
|
132
|
-
*/
|
|
133
|
-
export declare interface DiagramColors {
|
|
134
|
-
/** Background color → CSS variable --bg */
|
|
135
|
-
bg: string;
|
|
136
|
-
/** Foreground / primary text color → CSS variable --fg */
|
|
137
|
-
fg: string;
|
|
138
|
-
/** Edge/connector color → CSS variable --line */
|
|
139
|
-
line?: string;
|
|
140
|
-
/** Arrow heads, highlights, special nodes → CSS variable --accent */
|
|
141
|
-
accent?: string;
|
|
142
|
-
/** Secondary text, edge labels → CSS variable --muted */
|
|
143
|
-
muted?: string;
|
|
144
|
-
/** Node/box fill tint → CSS variable --surface */
|
|
145
|
-
surface?: string;
|
|
146
|
-
/** Node/group stroke color → CSS variable --border */
|
|
147
|
-
border?: string;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
export declare type Direction = 'TD' | 'TB' | 'LR' | 'BT' | 'RL';
|
|
27
|
+
export { CommonRenderOptions }
|
|
151
28
|
|
|
152
|
-
|
|
153
|
-
/** `A ~~~ B` — participates in layout but draws no line or arrowhead. */
|
|
154
|
-
| 'invisible';
|
|
29
|
+
export { createLayoutCache }
|
|
155
30
|
|
|
156
|
-
|
|
157
|
-
* Options applicable to ER diagrams (`erDiagram`). ER diagrams use fixed
|
|
158
|
-
* internal padding/spacing and ignore `curve` and `interactivity` (no
|
|
159
|
-
* animated edges or `click` links in this renderer's ER support), but do
|
|
160
|
-
* honor `direction` (applied before layout via `withDirectionOverride`).
|
|
161
|
-
*/
|
|
162
|
-
export declare type ErRenderOptions = CommonRenderOptions & Pick<RenderOptions, 'direction' | 'fontSizes' | 'layoutCache'>;
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Options applicable to flowchart (`graph` / `flowchart`) and state
|
|
166
|
-
* (`stateDiagram-v2`) diagrams — both share `DiagramType: 'flowchart'` and
|
|
167
|
-
* the same layout/render pipeline (src/layout-engine.ts, src/renderer.ts),
|
|
168
|
-
* so they share one option shape. `componentSpacing` is currently a no-op
|
|
169
|
-
* everywhere (accepted for forward compatibility only) but grouped here
|
|
170
|
-
* since it's spacing-shaped like `padding`/`nodeSpacing`/`layerSpacing`.
|
|
171
|
-
*/
|
|
172
|
-
export declare type FlowchartRenderOptions = CommonRenderOptions & Pick<RenderOptions, 'padding' | 'nodeSpacing' | 'layerSpacing' | 'componentSpacing' | 'mergeEdges' | 'direction' | 'curve' | 'fontSizes' | 'interactivity' | 'layoutCache'>;
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Extract diagram colors from a Shiki theme object.
|
|
176
|
-
* Works with any VS Code / TextMate theme loaded by Shiki.
|
|
177
|
-
*
|
|
178
|
-
* Maps editor UI colors to diagram roles:
|
|
179
|
-
* editor.background → bg
|
|
180
|
-
* editor.foreground → fg
|
|
181
|
-
* editorLineNumber.fg → line (optional)
|
|
182
|
-
* focusBorder / keyword → accent (optional)
|
|
183
|
-
* comment token → muted (optional)
|
|
184
|
-
* editor.selectionBackground→ surface (optional)
|
|
185
|
-
* editorWidget.border → border (optional)
|
|
186
|
-
*
|
|
187
|
-
* @example
|
|
188
|
-
* ```ts
|
|
189
|
-
* import { getSingletonHighlighter } from 'shiki'
|
|
190
|
-
* import { fromShikiTheme } from 'zombie-mermaid'
|
|
191
|
-
*
|
|
192
|
-
* const hl = await getSingletonHighlighter({ themes: ['tokyo-night'] })
|
|
193
|
-
* const colors = fromShikiTheme(hl.getTheme('tokyo-night'))
|
|
194
|
-
* const svg = renderMermaidSVG(code, colors)
|
|
195
|
-
* ```
|
|
196
|
-
*/
|
|
197
|
-
export declare function fromShikiTheme(theme: ShikiThemeLike): DiagramColors;
|
|
31
|
+
export { DEFAULTS }
|
|
198
32
|
|
|
199
|
-
|
|
200
|
-
declare interface InitConfig {
|
|
201
|
-
theme?: string;
|
|
202
|
-
/** Flowchart edge interpolation. */
|
|
203
|
-
curve?: CurveStyle;
|
|
204
|
-
/** Recognized but not acted on — see `IGNORED_KEYS`. */
|
|
205
|
-
ignored: string[];
|
|
206
|
-
}
|
|
33
|
+
export { DiagramColors }
|
|
207
34
|
|
|
208
|
-
|
|
209
|
-
* Opt-in bounded LRU cache for `elkLayoutSync()` results.
|
|
210
|
-
*
|
|
211
|
-
* Off by default — `elkLayoutSync()` only consults a cache when one is
|
|
212
|
-
* explicitly passed in, so existing callers see no behavior change.
|
|
213
|
-
* Create one with `createLayoutCache()` and reuse it across renders (e.g.
|
|
214
|
-
* module scope, or a `useRef` in React) — a fresh cache per render defeats
|
|
215
|
-
* the point.
|
|
216
|
-
*
|
|
217
|
-
* The `map`/`maxSize` fields are implementation detail exposed only so
|
|
218
|
-
* `elkLayoutSync()` (and tests) can read/mutate them directly without a
|
|
219
|
-
* class; treat a `LayoutCache` as opaque from outside this module.
|
|
220
|
-
*/
|
|
221
|
-
export declare interface LayoutCache {
|
|
222
|
-
/* Excluded from this release type: map */
|
|
223
|
-
/* Excluded from this release type: maxSize */
|
|
224
|
-
}
|
|
35
|
+
export { Direction }
|
|
225
36
|
|
|
226
|
-
|
|
227
|
-
source: string;
|
|
228
|
-
target: string;
|
|
229
|
-
label?: string;
|
|
230
|
-
style: EdgeStyle;
|
|
231
|
-
/** Whether to render an arrowhead at the start (source end) of the edge */
|
|
232
|
-
hasArrowStart: boolean;
|
|
233
|
-
/** Whether to render an arrowhead at the end (target end) of the edge */
|
|
234
|
-
hasArrowEnd: boolean;
|
|
235
|
-
/**
|
|
236
|
-
* Terminator shape at the source end when it's a circle/cross marker
|
|
237
|
-
* (`o--`/`x--`) rather than a plain arrowhead. Undefined for a regular
|
|
238
|
-
* `<`-style arrowhead or no marker at all — `hasArrowStart` alone still
|
|
239
|
-
* governs whether anything is drawn there. Currently consumed by the
|
|
240
|
-
* ASCII renderer only (see issue #330); the SVG renderer still draws a
|
|
241
|
-
* plain arrowhead for these.
|
|
242
|
-
*/
|
|
243
|
-
startMarker?: 'circle' | 'cross';
|
|
244
|
-
/** Terminator shape at the target end (`--o`/`--x`). See `startMarker`. */
|
|
245
|
-
endMarker?: 'circle' | 'cross';
|
|
246
|
-
/** Edge id from `A e1@--> B` (Mermaid v11.10.0+), for `e1@{ ... }` and CSS targeting */
|
|
247
|
-
id?: string;
|
|
248
|
-
/** Set by `e1@{ animate: true }` — renders as a marching-ants dash */
|
|
249
|
-
animate?: boolean;
|
|
250
|
-
}
|
|
37
|
+
export { ErRenderOptions }
|
|
251
38
|
|
|
252
|
-
export
|
|
253
|
-
direction: Direction;
|
|
254
|
-
nodes: Map<string, MermaidNode>;
|
|
255
|
-
edges: MermaidEdge[];
|
|
256
|
-
subgraphs: MermaidSubgraph[];
|
|
257
|
-
classDefs: Map<string, Record<string, string>>;
|
|
258
|
-
/** Maps node IDs to their class names (from `class X className` or `:::className` shorthand) */
|
|
259
|
-
classAssignments: Map<string, string>;
|
|
260
|
-
/** Maps node IDs to inline styles (from `style X fill:#f00,stroke:#333`) */
|
|
261
|
-
nodeStyles: Map<string, Record<string, string>>;
|
|
262
|
-
/** Maps edge indices (or 'default') to inline styles from `linkStyle` directives */
|
|
263
|
-
linkStyles: Map<number | 'default', Record<string, string>>;
|
|
264
|
-
/** Maps node IDs to interactions declared by `click` statements */
|
|
265
|
-
interactions: Map<string, NodeInteraction>;
|
|
266
|
-
/** Configuration the diagram set for itself via `%%{init: ...}%%` */
|
|
267
|
-
initConfig?: InitConfig;
|
|
268
|
-
}
|
|
39
|
+
export { FlowchartRenderOptions }
|
|
269
40
|
|
|
270
|
-
|
|
271
|
-
id: string;
|
|
272
|
-
label: string;
|
|
273
|
-
shape: NodeShape;
|
|
274
|
-
}
|
|
41
|
+
export { fromShikiTheme }
|
|
275
42
|
|
|
276
|
-
|
|
277
|
-
id: string;
|
|
278
|
-
label: string;
|
|
279
|
-
nodeIds: string[];
|
|
280
|
-
children: MermaidSubgraph[];
|
|
281
|
-
/** Optional direction override for this subgraph's internal layout */
|
|
282
|
-
direction?: Direction;
|
|
283
|
-
}
|
|
43
|
+
export { LayoutCache }
|
|
284
44
|
|
|
285
|
-
|
|
286
|
-
* An interaction attached to a node by a `click` statement.
|
|
287
|
-
*
|
|
288
|
-
* This renderer emits static SVG and never executes diagram-supplied script,
|
|
289
|
-
* so a `call`/callback binding is parsed but not invoked — see
|
|
290
|
-
* docs/diagrams.md and docs/decisions/no-script-interactivity.md. An `href`
|
|
291
|
-
* becomes a real SVG link and a tooltip becomes a `<title>`.
|
|
292
|
-
*/
|
|
293
|
-
export declare interface NodeInteraction {
|
|
294
|
-
/** `click A "https://..."` — rendered as an <a> wrapper */
|
|
295
|
-
href?: string;
|
|
296
|
-
/** Link target, e.g. `_blank` */
|
|
297
|
-
target?: string;
|
|
298
|
-
/** Tooltip text — rendered as a <title> child */
|
|
299
|
-
tooltip?: string;
|
|
300
|
-
/**
|
|
301
|
-
* `click A call fn()` — the raw expression text (`fn()`), exposed as data
|
|
302
|
-
* only. Nothing in the rendered SVG carries it and the library never
|
|
303
|
-
* evaluates it; a host that trusts its diagram source reads it from
|
|
304
|
-
* `parseMermaid(source).interactions` and binds behaviour to the node's
|
|
305
|
-
* `data-id` attribute itself:
|
|
306
|
-
*
|
|
307
|
-
* ```ts
|
|
308
|
-
* for (const [id, { callback }] of parseMermaid(source).interactions) {
|
|
309
|
-
* if (callback === 'showDetail()') {
|
|
310
|
-
* svgRoot.querySelector(`[data-id="${id}"]`)
|
|
311
|
-
* ?.addEventListener('click', () => showDetail(id))
|
|
312
|
-
* }
|
|
313
|
-
* }
|
|
314
|
-
* ```
|
|
315
|
-
*/
|
|
316
|
-
callback?: string;
|
|
317
|
-
}
|
|
45
|
+
export { MermaidGraph }
|
|
318
46
|
|
|
319
|
-
|
|
47
|
+
export { NodeInteraction }
|
|
320
48
|
|
|
321
49
|
/**
|
|
322
50
|
* Parse Mermaid text into a logical graph structure.
|
|
@@ -325,97 +53,14 @@ declare type NodeShape = 'rectangle' | 'rounded' | 'diamond' | 'stadium' | 'circ
|
|
|
325
53
|
*/
|
|
326
54
|
export declare function parseMermaid(text: string): MermaidGraph;
|
|
327
55
|
|
|
328
|
-
|
|
329
|
-
x: number;
|
|
330
|
-
y: number;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
declare interface PositionedEdge {
|
|
334
|
-
source: string;
|
|
335
|
-
target: string;
|
|
336
|
-
label?: string;
|
|
337
|
-
style: EdgeStyle;
|
|
338
|
-
hasArrowStart: boolean;
|
|
339
|
-
hasArrowEnd: boolean;
|
|
340
|
-
/** Full path including bends — array of {x, y} points */
|
|
341
|
-
points: Point[];
|
|
342
|
-
/** Layout-computed label center position (avoids label-label collisions) */
|
|
343
|
-
labelPosition?: Point;
|
|
344
|
-
/** Inline styles resolved from `linkStyle` directives — override theme defaults */
|
|
345
|
-
inlineStyle?: Record<string, string>;
|
|
346
|
-
/** Edge id from `A e1@--> B`, emitted as data-id for CSS targeting */
|
|
347
|
-
id?: string;
|
|
348
|
-
/** Set by `e1@{ animate: true }` — renders as a marching-ants dash */
|
|
349
|
-
animate?: boolean;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
export declare interface PositionedGraph {
|
|
353
|
-
width: number;
|
|
354
|
-
height: number;
|
|
355
|
-
nodes: PositionedNode[];
|
|
356
|
-
edges: PositionedEdge[];
|
|
357
|
-
groups: PositionedGroup[];
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
declare interface PositionedGroup {
|
|
361
|
-
id: string;
|
|
362
|
-
label: string;
|
|
363
|
-
x: number;
|
|
364
|
-
y: number;
|
|
365
|
-
width: number;
|
|
366
|
-
height: number;
|
|
367
|
-
children: PositionedGroup[];
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
declare interface PositionedNode {
|
|
371
|
-
id: string;
|
|
372
|
-
label: string;
|
|
373
|
-
shape: NodeShape;
|
|
374
|
-
x: number;
|
|
375
|
-
y: number;
|
|
376
|
-
width: number;
|
|
377
|
-
height: number;
|
|
378
|
-
/** Inline styles resolved from classDef + explicit `style` statements — override theme defaults */
|
|
379
|
-
inlineStyle?: Record<string, string>;
|
|
380
|
-
/** Custom class name assigned via `class A className` or `:::className` shorthand — emitted onto the rendered element's `class` attribute so external CSS can target it */
|
|
381
|
-
className?: string;
|
|
382
|
-
/** Interaction from a `click` statement — an href wraps the node in an <a> */
|
|
383
|
-
interaction?: NodeInteraction;
|
|
384
|
-
}
|
|
56
|
+
export { PositionedGraph }
|
|
385
57
|
|
|
386
58
|
/** @deprecated Use `renderMermaidSVGAsync` */
|
|
387
59
|
export declare const renderMermaid: typeof renderMermaidSVGAsync;
|
|
388
60
|
|
|
389
|
-
|
|
390
|
-
* Render Mermaid diagram text to an ASCII/Unicode string.
|
|
391
|
-
*
|
|
392
|
-
* Synchronous — no async layout engine needed (unlike the SVG renderer).
|
|
393
|
-
* Auto-detects diagram type from the header line and dispatches to
|
|
394
|
-
* the appropriate renderer.
|
|
395
|
-
*
|
|
396
|
-
* @param text - Mermaid source text (any supported diagram type)
|
|
397
|
-
* @param options - Rendering options
|
|
398
|
-
* @returns Multi-line ASCII/Unicode string
|
|
399
|
-
*
|
|
400
|
-
* @example
|
|
401
|
-
* ```ts
|
|
402
|
-
* const result = renderMermaidASCII(`
|
|
403
|
-
* graph LR
|
|
404
|
-
* A --> B --> C
|
|
405
|
-
* `, { useAscii: true })
|
|
406
|
-
*
|
|
407
|
-
* // Output:
|
|
408
|
-
* // +---+ +---+ +---+
|
|
409
|
-
* // | | | | | |
|
|
410
|
-
* // | A |---->| B |---->| C |
|
|
411
|
-
* // | | | | | |
|
|
412
|
-
* // +---+ +---+ +---+
|
|
413
|
-
* ```
|
|
414
|
-
*/
|
|
415
|
-
export declare function renderMermaidASCII(text: string, options?: AsciiRenderOptions): string;
|
|
61
|
+
export { renderMermaidASCII }
|
|
416
62
|
|
|
417
|
-
|
|
418
|
-
export declare const renderMermaidAscii: typeof renderMermaidASCII;
|
|
63
|
+
export { renderMermaidAscii }
|
|
419
64
|
|
|
420
65
|
/**
|
|
421
66
|
* Render Mermaid diagram text to an SVG string — synchronously.
|
|
@@ -474,286 +119,9 @@ export declare function renderMermaidSVGAsync(text: string, options?: RenderOpti
|
|
|
474
119
|
/** @deprecated Use `renderMermaidSVG` */
|
|
475
120
|
export declare const renderMermaidSync: typeof renderMermaidSVG;
|
|
476
121
|
|
|
477
|
-
export
|
|
478
|
-
/** Background color → CSS variable --bg. Default: '#FFFFFF' */
|
|
479
|
-
bg?: string;
|
|
480
|
-
/** Foreground / primary text color → CSS variable --fg. Default: '#27272A' */
|
|
481
|
-
fg?: string;
|
|
482
|
-
/** Edge/connector color → CSS variable --line */
|
|
483
|
-
line?: string;
|
|
484
|
-
/** Arrow heads, highlights → CSS variable --accent */
|
|
485
|
-
accent?: string;
|
|
486
|
-
/** Secondary text, edge labels → CSS variable --muted */
|
|
487
|
-
muted?: string;
|
|
488
|
-
/** Node/box fill tint → CSS variable --surface */
|
|
489
|
-
surface?: string;
|
|
490
|
-
/** Node/group stroke color → CSS variable --border */
|
|
491
|
-
border?: string;
|
|
492
|
-
/** Font family for all text. Default: 'Inter' */
|
|
493
|
-
font?: string;
|
|
494
|
-
/** Canvas padding in px. Default: 40. Flowchart/state diagrams only — class/ER diagrams use fixed internal padding. */
|
|
495
|
-
padding?: number;
|
|
496
|
-
/** Horizontal spacing between sibling nodes. Default: 28. Flowchart/state diagrams only — class/ER diagrams use fixed internal spacing. */
|
|
497
|
-
nodeSpacing?: number;
|
|
498
|
-
/** Vertical spacing between layers. Default: 48. Flowchart/state diagrams only — class/ER diagrams use fixed internal spacing. */
|
|
499
|
-
layerSpacing?: number;
|
|
500
|
-
/** Currently unused — accepted for forward compatibility but not read anywhere. */
|
|
501
|
-
componentSpacing?: number;
|
|
502
|
-
/** Whether to bundle overlapping fan-out/fan-in edge paths into shared trunks to reduce visual clutter. Default: true */
|
|
503
|
-
mergeEdges?: boolean;
|
|
504
|
-
/**
|
|
505
|
-
* Force the diagram's layout direction, overriding the one its source
|
|
506
|
-
* declares — a flowchart's `graph LR` / `flowchart TD` header, or a state
|
|
507
|
-
* diagram's / ER diagram's top-level `direction LR` line. Applied after
|
|
508
|
-
* parsing and before layout, so the source text is never rewritten and
|
|
509
|
-
* `parseMermaid()` output is unaffected.
|
|
510
|
-
*
|
|
511
|
-
* Replaces only the *top-level* direction. A nested subgraph's or
|
|
512
|
-
* composite state's own `direction` line still applies on top of this
|
|
513
|
-
* override, exactly as it does on top of the diagram's own header — the
|
|
514
|
-
* override behaves as if the caller had written that direction in the
|
|
515
|
-
* source header, nothing more.
|
|
516
|
-
*
|
|
517
|
-
* Flowchart, state, and ER diagrams only — the three diagram types that
|
|
518
|
-
* have a direction concept to override. Sequence, class, and XY-chart
|
|
519
|
-
* diagrams ignore it (no error; output is identical with or without it).
|
|
520
|
-
*
|
|
521
|
-
* Unset (the default) keeps the source's direction, so existing output is
|
|
522
|
-
* unchanged. See issue #276.
|
|
523
|
-
*/
|
|
524
|
-
direction?: Direction;
|
|
525
|
-
/** Render with transparent background (no background style on SVG). Default: false */
|
|
526
|
-
transparent?: boolean;
|
|
527
|
-
/**
|
|
528
|
-
* Render-target-scoped interactivity level. Declarative only — this
|
|
529
|
-
* library never emits `<script>`; see
|
|
530
|
-
* docs/decisions/no-script-interactivity.md for the tier model this maps
|
|
531
|
-
* to (tier 1: `<title>`/text; tier 2: `<a href>`, CSS `:hover`, CSS
|
|
532
|
-
* animation; tier 3: `click ... call fn()`, recorded as data, never
|
|
533
|
-
* executed). Default: `'static'`.
|
|
534
|
-
*
|
|
535
|
-
* - `'none'` — strips flowchart/state-diagram edge animation
|
|
536
|
-
* (`e1@{ animate: true }`), and strips `click`-based links
|
|
537
|
-
* (`<a href>`) and `<title>` tooltips. Intended for print/rasterized
|
|
538
|
-
* output: a CSS `@keyframes` animation would otherwise silently
|
|
539
|
-
* render as a single static frame with no indication that motion
|
|
540
|
-
* was intended, and a link is meaningless once rasterized.
|
|
541
|
-
* - `'static'` — default. Tier 1 + tier 2 minus motion: `click`-based
|
|
542
|
-
* links and `<title>` tooltips still render, but flowchart/state-diagram
|
|
543
|
-
* edge animation does not — a diagram that opts into
|
|
544
|
-
* `e1@{ animate: true }` renders as a still line unless `'full'` is
|
|
545
|
-
* requested. xychart hover tooltips stay off unless requested via
|
|
546
|
-
* `'full'` or the deprecated `interactive: true` below. This is a
|
|
547
|
-
* breaking change from earlier releases, where `'static'` (and the
|
|
548
|
-
* default) still animated — animation is tier-2 *motion*, which the
|
|
549
|
-
* stricter `'static'` reading excludes; see the ADR.
|
|
550
|
-
* - `'full'` — also enables flowchart/state-diagram edge animation and
|
|
551
|
-
* xychart hover tooltips.
|
|
552
|
-
*/
|
|
553
|
-
interactivity?: 'none' | 'static' | 'full';
|
|
554
|
-
/**
|
|
555
|
-
* @deprecated Use `interactivity` instead. Enable hover tooltips on chart
|
|
556
|
-
* data points (xychart only). Default: false.
|
|
557
|
-
*
|
|
558
|
-
* When `interactivity` is not set, this boolean still controls xychart
|
|
559
|
-
* tooltips as before (`true` behaves like `interactivity: 'full'` for
|
|
560
|
-
* that one effect). When `interactivity` *is* set, it takes precedence
|
|
561
|
-
* and this field is ignored.
|
|
562
|
-
*/
|
|
563
|
-
interactive?: boolean;
|
|
564
|
-
/** Stamp the original diagram source onto the root `<svg>` as a `data-src` attribute (HTML-escaped). Default: false */
|
|
565
|
-
embedSource?: boolean;
|
|
566
|
-
/**
|
|
567
|
-
* Replace every CSS `var(--…)` and `color-mix(…)` in the output with its
|
|
568
|
-
* computed sRGB value (`#rrggbb`, or `rgba()` when translucent), using
|
|
569
|
-
* the same mix percentages the `<style>` block declares (see
|
|
570
|
-
* `MIX` in src/theme.ts — there is one table, not a copy). Default: false.
|
|
571
|
-
*
|
|
572
|
-
* Browsers evaluate both natively, so the default output stays a live
|
|
573
|
-
* function of its CSS custom properties (docs/theming.md). Rasterizers
|
|
574
|
-
* and non-browser SVG consumers — resvg, librsvg, Inkscape, ImageMagick —
|
|
575
|
-
* implement neither and render the whole theme as black; turn this on
|
|
576
|
-
* for any output headed to one of them (GitHub issue #456).
|
|
577
|
-
*
|
|
578
|
-
* Trade-off: the result is a fixed palette. Overriding `--bg`/`--fg` on
|
|
579
|
-
* the embedded SVG no longer restyles it, and passing a `var(...)`
|
|
580
|
-
* reference as a color (the React live-theming pattern) has nothing to
|
|
581
|
-
* resolve against — such references, and any `var()` this library did
|
|
582
|
-
* not declare itself (e.g. a host-page font variable), are left as-is.
|
|
583
|
-
*/
|
|
584
|
-
resolveColors?: boolean;
|
|
585
|
-
/**
|
|
586
|
-
* CSP nonce to stamp on every `<style>` element in the output (see GitHub
|
|
587
|
-
* issue #216).
|
|
588
|
-
*
|
|
589
|
-
* The renderer styles its SVG with an inline `<style>` element (the theme
|
|
590
|
-
* block; flowcharts with `e1@{ animate: true }` edges and xycharts add a
|
|
591
|
-
* second one). A host page whose `Content-Security-Policy` has a
|
|
592
|
-
* `style-src` without `'unsafe-inline'` blocks those, and the diagram
|
|
593
|
-
* silently renders unstyled. The standard fix is a per-response nonce:
|
|
594
|
-
* the host generates one, lists it as `style-src 'nonce-<value>'`, and
|
|
595
|
-
* puts `nonce="<value>"` on each element it wants to allow. Pass that
|
|
596
|
-
* value here and every emitted `<style>` gets it — one `<style>` left
|
|
597
|
-
* un-nonced is enough to lose the whole diagram's styling, so this is
|
|
598
|
-
* applied at the single shared emission point rather than per diagram
|
|
599
|
-
* type.
|
|
600
|
-
*
|
|
601
|
-
* The value is attribute-escaped on output. An empty string is treated as
|
|
602
|
-
* unset. Default: undefined (no `nonce` attribute).
|
|
603
|
-
*
|
|
604
|
-
* A nonce only authorises `<style>` *elements* — it cannot authorise a
|
|
605
|
-
* `style="…"` *attribute* (browsers apply nonces to elements only), so the
|
|
606
|
-
* root `<svg style="--bg: …">` attribute stays blocked under the same
|
|
607
|
-
* policy. Pair this with `styleAttribute: false` and put the theme
|
|
608
|
-
* variables in your own stylesheet; see that option.
|
|
609
|
-
*/
|
|
610
|
-
nonce?: string;
|
|
611
|
-
/**
|
|
612
|
-
* Emit the root `<svg style="--bg: …; --fg: …; background: var(--bg)">`
|
|
613
|
-
* attribute. Default: true.
|
|
614
|
-
*
|
|
615
|
-
* That attribute is how the theme colours reach the SVG: every rule in
|
|
616
|
-
* the embedded `<style>` block resolves against the `--bg`/`--fg`/…
|
|
617
|
-
* custom properties it sets. Under a strict `Content-Security-Policy`
|
|
618
|
-
* (`style-src` without `'unsafe-inline'`) the browser drops it, and no
|
|
619
|
-
* `nonce` can rescue it — nonces apply to elements, never attributes —
|
|
620
|
-
* so the diagram loses its colours even when the `<style>` element itself
|
|
621
|
-
* is allowed (see GitHub issue #216).
|
|
622
|
-
*
|
|
623
|
-
* Set this to `false` to leave the attribute out entirely. The host must
|
|
624
|
-
* then define the same custom properties on the SVG or an ancestor from
|
|
625
|
-
* its own (nonced or external) stylesheet; `themeCssVariables(options)`
|
|
626
|
-
* returns the exact declaration list the attribute would have carried,
|
|
627
|
-
* so the two can't drift:
|
|
628
|
-
*
|
|
629
|
-
* ```ts
|
|
630
|
-
* const opts = { bg: '#fff', fg: '#000', nonce, styleAttribute: false }
|
|
631
|
-
* const svg = renderMermaidSVG(code, opts)
|
|
632
|
-
* const css = `.diagram svg { ${themeCssVariables(opts)} }`
|
|
633
|
-
* // `<style nonce="…">${css}</style>` + `<div class="diagram">${svg}</div>`
|
|
634
|
-
* ```
|
|
635
|
-
*
|
|
636
|
-
* With the attribute gone, the SVG has no inline `background` either; the
|
|
637
|
-
* declarations from `themeCssVariables()` include it (unless
|
|
638
|
-
* `transparent`) so the host's rule restores it. Only the *root* `style`
|
|
639
|
-
* attribute is affected: a per-node `style A font-family:…` override
|
|
640
|
-
* still renders as that node's own `style` attribute, since it's diagram
|
|
641
|
-
* content rather than theming, and under such a CSP it is simply ignored
|
|
642
|
-
* by the browser. `nonce` and this option are independent — a host using
|
|
643
|
-
* hashes rather than nonces may want only this one.
|
|
644
|
-
*/
|
|
645
|
-
styleAttribute?: boolean;
|
|
646
|
-
/**
|
|
647
|
-
* Accessible name for the rendered SVG (see GitHub issue #215). Rendered
|
|
648
|
-
* as `role="img"` + `aria-labelledby` pointing at a `<title>` child
|
|
649
|
-
* holding this text — the standard SVG/WAI-ARIA technique for naming an
|
|
650
|
-
* inline image. Without a name, assistive tech either treats the SVG as a
|
|
651
|
-
* plain group (every node/edge label announced individually, out of
|
|
652
|
-
* reading order) or skips it — a WCAG 1.1.1 failure for diagrams embedded
|
|
653
|
-
* in a page.
|
|
654
|
-
*
|
|
655
|
-
* Supply your own description of what the diagram shows (e.g. "Flowchart:
|
|
656
|
-
* Build → Test → Ship") — this library does not auto-generate one, since a
|
|
657
|
-
* fabricated summary like "flowchart with 3 nodes" would be a confidently
|
|
658
|
-
* useless accessible name. When omitted, the SVG still gets `role="img"`
|
|
659
|
-
* (so it's read as one image, not a leaky group) but claims no name — the
|
|
660
|
-
* same as an `<img>` with no `alt`.
|
|
661
|
-
*
|
|
662
|
-
* Ignored when `decorative` is true. Default: undefined (no name).
|
|
663
|
-
*
|
|
664
|
-
* If the diagram has a `click A "url"` link, `role="img"` is never
|
|
665
|
-
* applied regardless of this option — see `decorative` below.
|
|
666
|
-
*/
|
|
667
|
-
title?: string;
|
|
668
|
-
/**
|
|
669
|
-
* Mark the diagram as decorative — already described in surrounding
|
|
670
|
-
* prose, so it shouldn't be announced as its own image. Emits
|
|
671
|
-
* `aria-hidden="true"` on the root `<svg>` instead of
|
|
672
|
-
* `role`/`aria-labelledby`/`<title>`; `title`, if also given, is ignored.
|
|
673
|
-
* Default: false
|
|
674
|
-
*
|
|
675
|
-
* Silently overridden (no `aria-hidden`) if the diagram has any
|
|
676
|
-
* `click A "url"` link: that renders as a real, focusable `<a href>`
|
|
677
|
-
* inside the SVG, and `aria-hidden="true"` on an ancestor of a focusable
|
|
678
|
-
* element is an explicit WAI-ARIA violation — assistive tech would drop
|
|
679
|
-
* the link from the accessibility tree while it stays reachable by Tab.
|
|
680
|
-
* `title`, if also given, still applies in that case (see #239).
|
|
681
|
-
*/
|
|
682
|
-
decorative?: boolean;
|
|
683
|
-
/**
|
|
684
|
-
* Edge path interpolation for flowcharts and state diagrams.
|
|
685
|
-
* Default: 'linear'. A diagram's own
|
|
686
|
-
* `%%{init: {"flowchart": {"curve": ...}}}%%` supplies this when the caller
|
|
687
|
-
* does not; an explicit value here always wins.
|
|
688
|
-
*/
|
|
689
|
-
curve?: CurveStyle;
|
|
690
|
-
/**
|
|
691
|
-
* Font size overrides (px). Fields left unspecified fall back to their
|
|
692
|
-
* default. Applies to all diagram types (flowchart, sequence, class, ER).
|
|
693
|
-
*/
|
|
694
|
-
fontSizes?: {
|
|
695
|
-
/** Node label text. Default: 13 */
|
|
696
|
-
nodeLabel?: number;
|
|
697
|
-
/** Edge label text. Default: 11 */
|
|
698
|
-
edgeLabel?: number;
|
|
699
|
-
/** Subgraph header text. Default: 12 */
|
|
700
|
-
groupHeader?: number;
|
|
701
|
-
};
|
|
702
|
-
/**
|
|
703
|
-
* Sequence-diagram layout overrides (px). Fields left unspecified fall
|
|
704
|
-
* back to their default. Sequence diagrams only.
|
|
705
|
-
*/
|
|
706
|
-
sequence?: {
|
|
707
|
-
/** Vertical space per message row. Default: 40 */
|
|
708
|
-
messageRowHeight?: number;
|
|
709
|
-
/** Vertical space between actor boxes and the first message. Default: 20 */
|
|
710
|
-
headerGap?: number;
|
|
711
|
-
/** Actor box height. Default: 40 */
|
|
712
|
-
actorHeight?: number;
|
|
713
|
-
/** Gap between a message arrow and a note positioned directly after it. Default: 8 */
|
|
714
|
-
noteOffsetAfterMessage?: number;
|
|
715
|
-
/** Gap between consecutively stacked notes. Default: 4 */
|
|
716
|
-
noteStackGap?: number;
|
|
717
|
-
};
|
|
718
|
-
/**
|
|
719
|
-
* Opt-in ELK layout cache (see `createLayoutCache()`). When set,
|
|
720
|
-
* `layoutGraphSync()` / `layoutClassDiagramSync()` / `layoutErDiagramSync()`
|
|
721
|
-
* (flowchart/state, class, and ER diagrams — the ELK-based layout
|
|
722
|
-
* engines) skip re-running ELK layout on a cache hit, keyed on a
|
|
723
|
-
* deterministic serialization of the fully-resolved ELK input graph
|
|
724
|
-
* (diagram structure + every layout-affecting option already baked in).
|
|
725
|
-
*
|
|
726
|
-
* Unset (the default) preserves the original always-recompute behavior
|
|
727
|
-
* exactly — this cache is entirely opt-in. Create one instance and
|
|
728
|
-
* reuse it across renders (e.g. module scope, or a `useRef` in React);
|
|
729
|
-
* passing a freshly-created cache on every call defeats the point,
|
|
730
|
-
* since it starts empty each time.
|
|
731
|
-
*/
|
|
732
|
-
layoutCache?: LayoutCache;
|
|
733
|
-
}
|
|
122
|
+
export { RenderOptions }
|
|
734
123
|
|
|
735
|
-
|
|
736
|
-
* Options applicable to sequence diagrams (`sequenceDiagram`). Sequence
|
|
737
|
-
* diagrams ignore `direction`, `curve`, spacing/`layoutCache` (a
|
|
738
|
-
* non-ELK layout), and `interactivity` (no animated edges or `click` links
|
|
739
|
-
* in this renderer's sequence support).
|
|
740
|
-
*/
|
|
741
|
-
export declare type SequenceRenderOptions = CommonRenderOptions & Pick<RenderOptions, 'fontSizes' | 'sequence'>;
|
|
742
|
-
|
|
743
|
-
/**
|
|
744
|
-
* Minimal subset of Shiki's ThemeRegistrationResolved that we need.
|
|
745
|
-
* We don't import from shiki to avoid a hard dependency.
|
|
746
|
-
*/
|
|
747
|
-
declare interface ShikiThemeLike {
|
|
748
|
-
type?: string;
|
|
749
|
-
colors?: Record<string, string>;
|
|
750
|
-
tokenColors?: Array<{
|
|
751
|
-
scope?: string | string[];
|
|
752
|
-
settings?: {
|
|
753
|
-
foreground?: string;
|
|
754
|
-
};
|
|
755
|
-
}>;
|
|
756
|
-
}
|
|
124
|
+
export { SequenceRenderOptions }
|
|
757
125
|
|
|
758
126
|
/**
|
|
759
127
|
* The exact CSS declaration list the root `<svg style="…">` attribute would
|
|
@@ -783,16 +151,10 @@ declare interface ShikiThemeLike {
|
|
|
783
151
|
*/
|
|
784
152
|
export declare function themeCssVariables(options?: RenderOptions): string;
|
|
785
153
|
|
|
786
|
-
export
|
|
154
|
+
export { ThemeName }
|
|
787
155
|
|
|
788
|
-
export
|
|
156
|
+
export { THEMES }
|
|
789
157
|
|
|
790
|
-
|
|
791
|
-
* Options applicable to XY charts (`xychart-beta`). XY charts have no
|
|
792
|
-
* spacing/`direction`/`curve`/`fontSizes`/`layoutCache` concept (layout is
|
|
793
|
-
* a fixed pixel computation, not ELK-based); `interactivity` (preferred) and
|
|
794
|
-
* the deprecated `interactive` boolean both gate hover tooltips only.
|
|
795
|
-
*/
|
|
796
|
-
export declare type XyChartRenderOptions = CommonRenderOptions & Pick<RenderOptions, 'interactivity' | 'interactive'>;
|
|
158
|
+
export { XyChartRenderOptions }
|
|
797
159
|
|
|
798
160
|
export { }
|