sketchmark 1.1.6 → 1.2.0

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 CHANGED
@@ -68,6 +68,45 @@ const instance = render({
68
68
  });
69
69
  ```
70
70
 
71
+ ### Plugins
72
+
73
+ Sketchmark supports lightweight parse plugins. A plugin can preprocess the DSL source before parsing, transform the parsed AST after parsing, or do both. This keeps domain features like official packages such as `@sketchmark/plugin-notation` outside the core bundle.
74
+
75
+ ```typescript
76
+ import { render } from 'sketchmark';
77
+ import { notation } from '@sketchmark/plugin-notation';
78
+
79
+ render({
80
+ container: document.getElementById('diagram'),
81
+ dsl: `
82
+ diagram
83
+ box eq label="$x^2 + y^2 = z^2$"
84
+ step narrate "$\\theta = 45^\\circ$"
85
+ end
86
+ `.trim(),
87
+ plugins: [notation()],
88
+ });
89
+ ```
90
+
91
+ The first `@sketchmark/plugin-notation` release focuses on lightweight TeX-style math to Unicode conversion for labels and `step narrate`, which keeps the core renderer small while still making math-heavy diagrams nicer to author.
92
+
93
+ Another official package, `@sketchmark/plugin-geometry`, follows the same model by compiling `geo.*` commands into ordinary `circle`, `path`, and `text` nodes for textbook-style diagrams without adding geometry-specific renderer logic to the core bundle.
94
+
95
+ `@sketchmark/plugin-anchors` keeps edge syntax readable by rewriting endpoint refs like `a@right --> b@left` into ordinary edges with anchor metadata, which lets named attachment points stay outside the core parser surface.
96
+
97
+ `@sketchmark/plugin-annotations` builds on that idea for geometry-style marks such as angle arcs, right-angle squares, equal ticks, midpoint marks, and dimension lines, again by compiling into ordinary Sketchmark nodes.
98
+
99
+ `@sketchmark/plugin-wireframe` applies the same pattern to primitive UI mockups, compiling `wf.screen`, `wf.panel`, `wf.text`, `wf.media`, `wf.control`, and `wf.divider` into regular Sketchmark groups and nodes so wireframe support stays outside the core bundle too.
100
+
101
+ `@sketchmark/plugin-circuit` does the same for draw-focused circuit notation, compiling `ckt.comp`, `ckt.port`, `ckt.junction`, and `ckt.wire` into regular groups plus `path`, `circle`, and `text` nodes.
102
+
103
+ `@sketchmark/plugin-chem-molecule` extends the same pattern to lightweight molecule diagrams, compiling `chem.atom`, `chem.bond`, `chem.ring`, and `chem.label` into ordinary groups plus `path` and `text` nodes.
104
+
105
+ `@sketchmark/plugin-graph` applies the same approach to coordinate-plane graphing, compiling `graph.axes`, `graph.plot`, `graph.point`, `graph.line`, `graph.arrow`, `graph.region`, `graph.tangent`, and `graph.area` into ordinary nodes so sampled math graphs stay outside the core bundle too.
106
+
107
+
108
+
109
+
71
110
  ### Reusable UI Widgets
72
111
 
73
112
  ```javascript
@@ -84,11 +123,11 @@ end
84
123
  `.trim(),
85
124
  });
86
125
 
87
- const canvas = new SketchmarkCanvas({
88
- container: document.getElementById('viewport'),
89
- showCaption: false,
90
- tts: true,
91
- });
126
+ const canvas = new SketchmarkCanvas({
127
+ container: document.getElementById('viewport'),
128
+ showCaption: false,
129
+ tts: true,
130
+ });
92
131
 
93
132
  canvas.bindEditor(editor);
94
133
  ```
@@ -96,21 +135,21 @@ canvas.bindEditor(editor);
96
135
  ```javascript
97
136
  import { SketchmarkEmbed } from 'sketchmark';
98
137
 
99
- const embed = new SketchmarkEmbed({
100
- container: document.getElementById('article-embed'),
101
- dsl,
102
- width: 960,
103
- height: 540,
104
- playStepDelay: 700,
105
- showCaption: false,
106
- tts: true,
107
- fitPadding: 24,
108
- zoomMin: 0.08,
109
- zoomMax: 4,
110
- });
111
- ```
112
-
113
- Use `SketchmarkCanvas` for the full playground-style surface, and `SketchmarkEmbed` for fixed-size embeds that clip overflow, auto-fit large diagrams, and expose built-in zoom, playback, caption, and TTS controls.
138
+ const embed = new SketchmarkEmbed({
139
+ container: document.getElementById('article-embed'),
140
+ dsl,
141
+ width: 960,
142
+ height: 540,
143
+ playStepDelay: 700,
144
+ showCaption: false,
145
+ tts: true,
146
+ fitPadding: 24,
147
+ zoomMin: 0.08,
148
+ zoomMax: 4,
149
+ });
150
+ ```
151
+
152
+ Use `SketchmarkCanvas` for the full playground-style surface, and `SketchmarkEmbed` for fixed-size embeds that clip overflow, auto-fit large diagrams, and expose built-in zoom, playback, caption, and TTS controls.
114
153
 
115
154
  ---
116
155
 
@@ -263,28 +302,28 @@ Every diagram follows this structure:
263
302
  ```
264
303
  diagram
265
304
  [title label="My Title"]
266
- [layout row|column|grid|absolute]
305
+ [layout row|column|grid|absolute]
267
306
  [config key=value ...]
268
307
  [theme name fill="..." stroke="..." color="..."]
269
308
 
270
309
  [nodes, edges, groups, tables, charts, markdown blocks]
271
310
 
272
- [step action target ...]
273
- end
274
- ```
275
-
276
- When `layout=absolute`, authored elements use `x`/`y` coordinates instead of flow layout:
277
-
278
- ```
279
- diagram
280
- layout absolute
281
- box start x=40 y=60 label="Start"
282
- box finish x=240 y=140 label="Finish"
283
- start --> finish
284
- end
285
- ```
286
-
287
- - Lines starting with `#` or `//` are comments.
311
+ [step action target ...]
312
+ end
313
+ ```
314
+
315
+ When `layout=absolute`, authored elements use `x`/`y` coordinates instead of flow layout:
316
+
317
+ ```
318
+ diagram
319
+ layout absolute
320
+ box start x=40 y=60 label="Start"
321
+ box finish x=240 y=140 label="Finish"
322
+ start --> finish
323
+ end
324
+ ```
325
+
326
+ - Lines starting with `#` or `//` are comments.
288
327
  - All key-value attributes use the `key=value` or `key="quoted value"` syntax.
289
328
  - The DSL is **whitespace-sensitive** — do not indent lines.
290
329
 
@@ -338,12 +377,12 @@ note myNote label="Remember this!"
338
377
 
339
378
  | Property | Type | Description | Example |
340
379
  |----------|------|-------------|---------|
341
- | `label` | string | Display text (required) | `label="Hello World"` |
342
- | `width` | number | Override auto-width (px) | `width=140` |
343
- | `height` | number | Override auto-height (px) | `height=55` |
344
- | `x` | number | Authored X position when parent/root uses `layout=absolute` | `x=80` |
345
- | `y` | number | Authored Y position when parent/root uses `layout=absolute` | `y=40` |
346
- | `theme` | string | Named theme preset | `theme=primary` |
380
+ | `label` | string | Display text (required) | `label="Hello World"` |
381
+ | `width` | number | Override auto-width (px) | `width=140` |
382
+ | `height` | number | Override auto-height (px) | `height=55` |
383
+ | `x` | number | Authored X position when parent/root uses `layout=absolute` | `x=80` |
384
+ | `y` | number | Authored Y position when parent/root uses `layout=absolute` | `y=40` |
385
+ | `theme` | string | Named theme preset | `theme=primary` |
347
386
  | `fill` | CSS color | Background fill color | `fill="#e8f4ff"` |
348
387
  | `stroke` | CSS color | Border/outline color | `stroke="#0044cc"` |
349
388
  | `stroke-width` | number | Border thickness | `stroke-width=2` |
@@ -362,8 +401,8 @@ note myNote label="Remember this!"
362
401
  | `name` | string | Iconify icon name (for `icon`) | `name="mdi:cog"` |
363
402
  | `value` | string | SVG path data (for `path`) | `value="M 0 0 L 50 0"` |
364
403
  | `deg` | number | Static rotation (degrees) | `deg=45` |
365
- | `dx` | number | Static visual X translation after layout (px) | `dx=20` |
366
- | `dy` | number | Static visual Y translation after layout (px) | `dy=-10` |
404
+ | `dx` | number | Static visual X translation after layout (px) | `dx=20` |
405
+ | `dy` | number | Static visual Y translation after layout (px) | `dy=-10` |
367
406
  | `factor` | number | Static scale factor | `factor=1.2` |
368
407
 
369
408
  ---
@@ -433,12 +472,12 @@ group outer label="Outer Group" layout=column items=[a,b,inner]
433
472
  General form:
434
473
 
435
474
  ```
436
- group <id> [label="..."] [layout=row|column|grid|absolute] [gap=N] [padding=N]
437
- [columns=N] [align=start|center|end]
438
- [justify=start|center|end|space-between|space-around]
439
- [theme=...] [fill="..."] [stroke="..."] [x=N] [y=N] [width=N] [height=N]
440
- [items=[id1,id2,...]]
441
- ```
475
+ group <id> [label="..."] [layout=row|column|grid|absolute] [gap=N] [padding=N]
476
+ [columns=N] [align=start|center|end]
477
+ [justify=start|center|end|space-between|space-around]
478
+ [theme=...] [fill="..."] [stroke="..."] [x=N] [y=N] [width=N] [height=N]
479
+ [items=[id1,id2,...]]
480
+ ```
442
481
 
443
482
  - Groups are always declared at the top level.
444
483
  - `items` order is the visual child order.
@@ -450,22 +489,22 @@ group <id> [label="..."] [layout=row|column|grid|absolute] [gap=N] [padding=N]
450
489
  | Property | Type | Description |
451
490
  |----------|------|-------------|
452
491
  | `label` | string | Group title (shown at top) |
453
- | `layout` | row / column / grid / absolute | Child arrangement direction |
454
- | `gap` | number | Space between children (px) |
455
- | `padding` | number | Inner padding (px) |
456
- | `columns` | number | Column count (for `layout=grid`) |
457
- | `align` | start/center/end | Cross-axis alignment (align-items) |
458
- | `justify` | start/center/end/space-between/space-around | Main-axis alignment |
459
- | `x` | number | Authored X position when parent/root uses `layout=absolute` |
460
- | `y` | number | Authored Y position when parent/root uses `layout=absolute` |
461
- | `width` | number | Minimum width override |
462
- | `height` | number | Minimum height override |
463
- | `theme` | string | Named theme preset |
464
- | `fill` | CSS color | Background color |
465
- | `stroke` | CSS color | Border color |
466
- | `stroke-width` | number | Border thickness |
467
-
468
- For absolute groups, child `x`/`y` coordinates are relative to the group's inner content box.
492
+ | `layout` | row / column / grid / absolute | Child arrangement direction |
493
+ | `gap` | number | Space between children (px) |
494
+ | `padding` | number | Inner padding (px) |
495
+ | `columns` | number | Column count (for `layout=grid`) |
496
+ | `align` | start/center/end | Cross-axis alignment (align-items) |
497
+ | `justify` | start/center/end/space-between/space-around | Main-axis alignment |
498
+ | `x` | number | Authored X position when parent/root uses `layout=absolute` |
499
+ | `y` | number | Authored Y position when parent/root uses `layout=absolute` |
500
+ | `width` | number | Minimum width override |
501
+ | `height` | number | Minimum height override |
502
+ | `theme` | string | Named theme preset |
503
+ | `fill` | CSS color | Background color |
504
+ | `stroke` | CSS color | Border color |
505
+ | `stroke-width` | number | Border thickness |
506
+
507
+ For absolute groups, child `x`/`y` coordinates are relative to the group's inner content box.
469
508
 
470
509
  #### `bare` keyword
471
510
 
@@ -482,7 +521,7 @@ bare myContainer layout=row items=[a,b]
482
521
  ## Tables
483
522
 
484
523
  ```
485
- table <id> [label="..."] [x=N] [y=N] [theme=...] [fill="..."] [stroke="..."]
524
+ table <id> [label="..."] [x=N] [y=N] [theme=...] [fill="..."] [stroke="..."]
486
525
  {
487
526
  header Col1 Col2 Col3
488
527
  row "Value A" "Value B" "Value C"
@@ -490,19 +529,19 @@ table <id> [label="..."] [x=N] [y=N] [theme=...] [fill="..."] [stroke="..."]
490
529
  }
491
530
  ```
492
531
 
493
- - `header` rows get a shaded background and bold text.
494
- - `row` rows use regular styling.
495
- - `"value"` must use a double-quoted string literal.
496
- - Column widths auto-size to content.
497
- - Tables support `fill`, `stroke`, `color`, `font-size`, `font`, `text-align`, `letter-spacing`, `theme`, `opacity` style props (same as nodes).
498
- - Tables also accept `x` and `y` when the parent/root uses `layout=absolute`.
532
+ - `header` rows get a shaded background and bold text.
533
+ - `row` rows use regular styling.
534
+ - `"value"` must use a double-quoted string literal.
535
+ - Column widths auto-size to content.
536
+ - Tables support `fill`, `stroke`, `color`, `font-size`, `font`, `text-align`, `letter-spacing`, `theme`, `opacity` style props (same as nodes).
537
+ - Tables also accept `x` and `y` when the parent/root uses `layout=absolute`.
499
538
 
500
539
  ---
501
540
 
502
541
  ## Charts
503
542
 
504
543
  ```
505
- <chart-type> <id> [label="Title"] [x=N] [y=N] [width=N] [height=N] [theme=...] [style props]
544
+ <chart-type> <id> [label="Title"] [x=N] [y=N] [width=N] [height=N] [theme=...] [style props]
506
545
  data
507
546
  [["Category", "Series1", "Series2"],
508
547
  ["Jan", 120, 80],
@@ -530,15 +569,15 @@ data
530
569
  ["Mar", 1100, 750]]
531
570
 
532
571
  # Pie chart example
533
- pie-chart share label="Market Share" width=300 height=240
534
- data
535
- [["Company", "Share"],
536
- ["Alpha", 42],
537
- ["Beta", 31],
538
- ["Gamma", 27]]
539
- ```
540
-
541
- Charts also accept `x` and `y` when the parent/root uses `layout=absolute`.
572
+ pie-chart share label="Market Share" width=300 height=240
573
+ data
574
+ [["Company", "Share"],
575
+ ["Alpha", 42],
576
+ ["Beta", 31],
577
+ ["Gamma", 27]]
578
+ ```
579
+
580
+ Charts also accept `x` and `y` when the parent/root uses `layout=absolute`.
542
581
 
543
582
  ---
544
583
 
@@ -547,7 +586,7 @@ Charts also accept `x` and `y` when the parent/root uses `layout=absolute`.
547
586
  Renders inline rich text with headings and bold/italic:
548
587
 
549
588
  ```
550
- markdown <id> [x=N] [y=N] [width=N] [height=N] [theme=...] [style props]
589
+ markdown <id> [x=N] [y=N] [width=N] [height=N] [theme=...] [style props]
551
590
  """
552
591
  # Heading 1
553
592
  ## Heading 2
@@ -559,10 +598,10 @@ Another paragraph here.
559
598
  """
560
599
  ```
561
600
 
562
- - Triple-quote `"""` delimiters for the content block.
563
- - Supported formatting: `# H1`, `## H2`, `### H3`, `**bold**`, `*italic*`, blank lines.
564
- - Style props: `color`, `font`, `font-size`, `text-align`, `padding`, `fill`, `stroke`, `opacity`, `letter-spacing`.
565
- - Markdown blocks also accept `x` and `y` when the parent/root uses `layout=absolute`.
601
+ - Triple-quote `"""` delimiters for the content block.
602
+ - Supported formatting: `# H1`, `## H2`, `### H3`, `**bold**`, `*italic*`, blank lines.
603
+ - Style props: `color`, `font`, `font-size`, `text-align`, `padding`, `fill`, `stroke`, `opacity`, `letter-spacing`.
604
+ - Markdown blocks also accept `x` and `y` when the parent/root uses `layout=absolute`.
566
605
 
567
606
  ---
568
607
 
@@ -686,11 +725,11 @@ step narrate "Plants need sunlight to make food"
686
725
  step narrate "This is the most important step" pace=slow
687
726
  ```
688
727
 
689
- - Caption is rendered as a fixed-position `<div>` on `document.body` (independent of diagram pan/zoom).
690
- - Access via `anim.captionElement` to reparent it anywhere.
691
- - `SketchmarkCanvas` and `SketchmarkEmbed` support `showCaption: false` to hide the caption bar UI.
692
- - Both widget UIs also include a built-in caption toggle button by default.
693
- - Supports built-in browser text-to-speech (see [TTS](#text-to-speech)).
728
+ - Caption is rendered as a fixed-position `<div>` on `document.body` (independent of diagram pan/zoom).
729
+ - Access via `anim.captionElement` to reparent it anywhere.
730
+ - `SketchmarkCanvas` and `SketchmarkEmbed` support `showCaption: false` to hide the caption bar UI.
731
+ - Both widget UIs also include a built-in caption toggle button by default.
732
+ - Supports built-in browser text-to-speech (see [TTS](#text-to-speech)).
694
733
 
695
734
  ### Annotations
696
735
 
@@ -826,14 +865,14 @@ anim.destroy() // remove caption, annotations, pointer from DOM
826
865
 
827
866
  // Toggle TTS programmatically
828
867
  anim.tts = true; // enable browser speech
829
- anim.tts = false; // disable (stops current speech)
830
-
831
- // Reparent the narration caption to a custom container
832
- myDiv.appendChild(anim.captionElement);
833
-
834
- // UI widgets can suppress the visible caption bar
835
- const embed = new SketchmarkEmbed({ container, dsl, showCaption: false });
836
- embed.setCaptionVisible(true);
868
+ anim.tts = false; // disable (stops current speech)
869
+
870
+ // Reparent the narration caption to a custom container
871
+ myDiv.appendChild(anim.captionElement);
872
+
873
+ // UI widgets can suppress the visible caption bar
874
+ const embed = new SketchmarkEmbed({ container, dsl, showCaption: false });
875
+ embed.setCaptionVisible(true);
837
876
 
838
877
  // Event listener
839
878
  const unsub = anim.on((event) => {
@@ -845,31 +884,31 @@ const unsub = anim.on((event) => {
845
884
  unsub(); // unsubscribe
846
885
  ```
847
886
 
848
- ### Text-to-Speech
849
-
850
- Enable browser-native speech synthesis for narrate steps. You can drive it from the diagram config or from the JS API. If both are provided, the JS option wins. `SketchmarkCanvas` and `SketchmarkEmbed` also include a built-in TTS toggle button by default.
851
-
852
- ```
853
- # In DSL
854
- config tts=on
855
- ```
856
-
857
- ```javascript
858
- // Direct render option
859
- const instance = render({ container, dsl, tts: true });
860
-
861
- // Widget options
862
- const canvas = new SketchmarkCanvas({ container, dsl, tts: true });
863
- const embed = new SketchmarkEmbed({ container, dsl, tts: true });
864
-
865
- // Or toggle at runtime
866
- anim.tts = true;
867
- canvas.setTtsEnabled(false);
868
- embed.setTtsEnabled(true);
869
-
870
- // Custom TTS (e.g. ElevenLabs) via event listener
871
- anim.tts = false; // disable built-in
872
- anim.on((e) => {
887
+ ### Text-to-Speech
888
+
889
+ Enable browser-native speech synthesis for narrate steps. You can drive it from the diagram config or from the JS API. If both are provided, the JS option wins. `SketchmarkCanvas` and `SketchmarkEmbed` also include a built-in TTS toggle button by default.
890
+
891
+ ```
892
+ # In DSL
893
+ config tts=on
894
+ ```
895
+
896
+ ```javascript
897
+ // Direct render option
898
+ const instance = render({ container, dsl, tts: true });
899
+
900
+ // Widget options
901
+ const canvas = new SketchmarkCanvas({ container, dsl, tts: true });
902
+ const embed = new SketchmarkEmbed({ container, dsl, tts: true });
903
+
904
+ // Or toggle at runtime
905
+ anim.tts = true;
906
+ canvas.setTtsEnabled(false);
907
+ embed.setTtsEnabled(true);
908
+
909
+ // Custom TTS (e.g. ElevenLabs) via event listener
910
+ anim.tts = false; // disable built-in
911
+ anim.on((e) => {
873
912
  if (e.step?.kind === 'step' && e.step.action === 'narrate') {
874
913
  myTTSService.speak(e.step.value);
875
914
  }
@@ -995,11 +1034,11 @@ exportHTML(instance.svg, dslSource, { filename: 'diagram.html' });
995
1034
 
996
1035
  ## Supported vs Unsupported Features
997
1036
 
998
- ### Nodes
999
-
1000
- Nodes can also opt into authored absolute `x`/`y` positioning when their parent or the root diagram uses `layout=absolute`.
1001
-
1002
- | Feature | Supported | Notes |
1037
+ ### Nodes
1038
+
1039
+ Nodes can also opt into authored absolute `x`/`y` positioning when their parent or the root diagram uses `layout=absolute`.
1040
+
1041
+ | Feature | Supported | Notes |
1003
1042
  |---------|-----------|-------|
1004
1043
  | box | ✅ | Default shape |
1005
1044
  | circle | ✅ | |
@@ -1039,11 +1078,11 @@ Nodes can also opt into authored absolute `x`/`y` positioning when their parent
1039
1078
  | Multiple edges between same nodes | ✅ | Stack visually |
1040
1079
  | Edge from/to groups | ✅ | Uses group center |
1041
1080
 
1042
- ### Groups
1043
-
1044
- Groups support `layout=absolute` in addition to flow layouts. In absolute groups, child `x`/`y` coordinates are measured from the group's inner content box.
1045
-
1046
- | Feature | Supported | Notes |
1081
+ ### Groups
1082
+
1083
+ Groups support `layout=absolute` in addition to flow layouts. In absolute groups, child `x`/`y` coordinates are measured from the group's inner content box.
1084
+
1085
+ | Feature | Supported | Notes |
1047
1086
  |---------|-----------|-------|
1048
1087
  | Nested groups | ✅ | Unlimited depth |
1049
1088
  | Row / column / grid layout | ✅ | |
@@ -1126,7 +1165,7 @@ Groups support `layout=absolute` in addition to flow layouts. In absolute groups
1126
1165
  | `end` | Structure | `end` |
1127
1166
  | `title` | Meta | `title label="My Diagram"` |
1128
1167
  | `description` | Meta | `description "Some text"` |
1129
- | `layout` | Meta | `layout row` / `layout column` / `layout grid` / `layout absolute` |
1168
+ | `layout` | Meta | `layout row` / `layout column` / `layout grid` / `layout absolute` |
1130
1169
  | `config` | Meta | `config gap=60` |
1131
1170
  | `theme` | Styling | `theme primary fill="#e8f4ff" stroke="#0044cc" color="#003399"` |
1132
1171
  | `style` | Styling | `style nodeId fill="#ff0" stroke="#000"` |
@@ -1255,15 +1294,16 @@ end
1255
1294
  ```typescript
1256
1295
  render(options: RenderOptions): DiagramInstance
1257
1296
 
1258
- interface RenderOptions {
1259
- container: string | HTMLElement | SVGSVGElement; // CSS selector or element
1260
- dsl: string; // DSL source text
1261
- renderer?: 'svg' | 'canvas'; // default: 'svg'
1262
- injectCSS?: boolean; // inject animation CSS (default: true)
1263
- tts?: boolean; // override diagram TTS config
1264
- svgOptions?: SVGRendererOptions;
1265
- canvasOptions?: CanvasRendererOptions;
1266
- onNodeClick?: (nodeId: string) => void; // click handler
1297
+ interface RenderOptions {
1298
+ container: string | HTMLElement | SVGSVGElement; // CSS selector or element
1299
+ dsl: string; // DSL source text
1300
+ plugins?: SketchmarkPlugin[]; // optional source/AST plugins
1301
+ renderer?: 'svg' | 'canvas'; // default: 'svg'
1302
+ injectCSS?: boolean; // inject animation CSS (default: true)
1303
+ tts?: boolean; // override diagram TTS config
1304
+ svgOptions?: SVGRendererOptions;
1305
+ canvasOptions?: CanvasRendererOptions;
1306
+ onNodeClick?: (nodeId: string) => void; // click handler
1267
1307
  onReady?: (anim, svg?) => void; // callback after render
1268
1308
  }
1269
1309
 
@@ -1286,6 +1326,12 @@ interface DiagramInstance {
1286
1326
  exportSVG: (filename?: string) => void;
1287
1327
  exportPNG: (filename?: string) => Promise<void>;
1288
1328
  }
1329
+
1330
+ interface SketchmarkPlugin {
1331
+ name: string;
1332
+ preprocess?: (source: string) => string;
1333
+ transformAst?: (ast: DiagramAST) => DiagramAST;
1334
+ }
1289
1335
  ```
1290
1336
 
1291
1337
  ---
@@ -31,6 +31,7 @@ export declare class AnimationController {
31
31
  readonly drawTargetCharts: Set<string>;
32
32
  readonly drawTargetMarkdowns: Set<string>;
33
33
  private readonly _drawStepIndexByElementId;
34
+ private readonly _relatedElementIdsByPrimaryId;
34
35
  private readonly _parentGroupByElementId;
35
36
  private readonly _groupDescendantIds;
36
37
  private _captionEl;
@@ -45,6 +46,7 @@ export declare class AnimationController {
45
46
  get drawTargets(): Set<string>;
46
47
  constructor(svg: SVGSVGElement, steps: ASTStepItem[], _container?: HTMLElement | undefined, _rc?: any | undefined, _config?: Record<string, string | number | boolean> | undefined);
47
48
  private _buildDrawStepIndex;
49
+ private _buildRelatedElementIndex;
48
50
  private _buildGroupVisibilityIndex;
49
51
  private _hideGroupDescendants;
50
52
  private _isDeferredForGroupReveal;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/animation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/animation/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export type NodeShape = 'box' | 'circle' | 'diamond' | 'hexagon' | 'triangle' | 'cylinder' | 'parallelogram' | 'text' | 'image' | 'icon' | 'note' | 'line' | 'path';
2
2
  export type EdgeConnector = '->' | '<-' | '<->' | '-->' | '<-->' | '---' | '--';
3
+ export type EdgeAnchor = 'top' | 'right' | 'bottom' | 'left' | 'center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
3
4
  export type LayoutType = 'row' | 'column' | 'grid' | 'absolute';
4
5
  export type AlignItems = 'start' | 'center' | 'end';
5
6
  export type JustifyContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around';
@@ -82,6 +83,8 @@ export interface ASTEdge {
82
83
  to: string;
83
84
  connector: EdgeConnector;
84
85
  label?: string;
86
+ fromAnchor?: EdgeAnchor;
87
+ toAnchor?: EdgeAnchor;
85
88
  dashed?: boolean;
86
89
  bidirectional?: boolean;
87
90
  theme?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"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"}