schematex 0.3.2 → 0.3.3

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.
Files changed (171) hide show
  1. package/dist/ai/ai-sdk.cjs +25 -25
  2. package/dist/ai/ai-sdk.d.cts +1 -1
  3. package/dist/ai/ai-sdk.d.ts +1 -1
  4. package/dist/ai/ai-sdk.js +20 -20
  5. package/dist/ai/index.cjs +28 -28
  6. package/dist/ai/index.d.cts +1 -1
  7. package/dist/ai/index.d.ts +1 -1
  8. package/dist/ai/index.js +20 -20
  9. package/dist/browser.cjs +22 -22
  10. package/dist/browser.js +20 -20
  11. package/dist/{chunk-LFZZ4NCP.cjs → chunk-3WNW5Y7P.cjs} +48 -8
  12. package/dist/chunk-3WNW5Y7P.cjs.map +1 -0
  13. package/dist/{chunk-MKKFIPKU.cjs → chunk-55UEHL57.cjs} +46 -46
  14. package/dist/{chunk-MKKFIPKU.cjs.map → chunk-55UEHL57.cjs.map} +1 -1
  15. package/dist/{chunk-BJ65PKDU.js → chunk-5U2W3HQA.js} +3 -3
  16. package/dist/{chunk-BJ65PKDU.js.map → chunk-5U2W3HQA.js.map} +1 -1
  17. package/dist/{chunk-75BMFCP5.cjs → chunk-5UCXMYE7.cjs} +44 -44
  18. package/dist/{chunk-75BMFCP5.cjs.map → chunk-5UCXMYE7.cjs.map} +1 -1
  19. package/dist/{chunk-F6OROIHS.js → chunk-66XQBGX7.js} +3 -3
  20. package/dist/{chunk-F6OROIHS.js.map → chunk-66XQBGX7.js.map} +1 -1
  21. package/dist/{chunk-HIQPEAL7.js → chunk-6TIN33CA.js} +3 -3
  22. package/dist/{chunk-HIQPEAL7.js.map → chunk-6TIN33CA.js.map} +1 -1
  23. package/dist/{chunk-RNGYXGHS.js → chunk-6YUP3QMA.js} +19 -19
  24. package/dist/{chunk-RNGYXGHS.js.map → chunk-6YUP3QMA.js.map} +1 -1
  25. package/dist/{chunk-C3IVD7DI.cjs → chunk-7EWFVNYD.cjs} +25 -25
  26. package/dist/{chunk-C3IVD7DI.cjs.map → chunk-7EWFVNYD.cjs.map} +1 -1
  27. package/dist/{chunk-56LXBM45.js → chunk-AC3XH3LB.js} +4 -4
  28. package/dist/{chunk-56LXBM45.js.map → chunk-AC3XH3LB.js.map} +1 -1
  29. package/dist/{chunk-YTEEZV6J.cjs → chunk-APV4AWQ5.cjs} +422 -422
  30. package/dist/{chunk-YTEEZV6J.cjs.map → chunk-APV4AWQ5.cjs.map} +1 -1
  31. package/dist/{chunk-UK7JF5QB.cjs → chunk-AVIKQZSX.cjs} +37 -37
  32. package/dist/{chunk-UK7JF5QB.cjs.map → chunk-AVIKQZSX.cjs.map} +1 -1
  33. package/dist/{chunk-OK5RYX55.cjs → chunk-CWZKP3CJ.cjs} +26 -26
  34. package/dist/{chunk-OK5RYX55.cjs.map → chunk-CWZKP3CJ.cjs.map} +1 -1
  35. package/dist/{chunk-2J2QWNGI.js → chunk-FIVUMDLF.js} +26 -7
  36. package/dist/chunk-FIVUMDLF.js.map +1 -0
  37. package/dist/{chunk-ZTSO3S4P.js → chunk-FO7BLCEW.js} +3 -3
  38. package/dist/{chunk-ZTSO3S4P.js.map → chunk-FO7BLCEW.js.map} +1 -1
  39. package/dist/{chunk-6BKUD5EJ.js → chunk-GLFBHQSQ.js} +4 -4
  40. package/dist/{chunk-6BKUD5EJ.js.map → chunk-GLFBHQSQ.js.map} +1 -1
  41. package/dist/{chunk-ZNLEUL7T.js → chunk-GVCPFBAV.js} +4 -4
  42. package/dist/chunk-GVCPFBAV.js.map +1 -0
  43. package/dist/{chunk-KUXOHLGC.cjs → chunk-HOI6QKC6.cjs} +52 -52
  44. package/dist/{chunk-KUXOHLGC.cjs.map → chunk-HOI6QKC6.cjs.map} +1 -1
  45. package/dist/{chunk-L2KUGWFR.cjs → chunk-IAEABLIV.cjs} +46 -46
  46. package/dist/{chunk-L2KUGWFR.cjs.map → chunk-IAEABLIV.cjs.map} +1 -1
  47. package/dist/{chunk-M5ZC3LFJ.js → chunk-IQRRZPVZ.js} +3 -3
  48. package/dist/{chunk-M5ZC3LFJ.js.map → chunk-IQRRZPVZ.js.map} +1 -1
  49. package/dist/{chunk-H4CJTKEH.js → chunk-MNOO7STY.js} +5 -5
  50. package/dist/{chunk-H4CJTKEH.js.map → chunk-MNOO7STY.js.map} +1 -1
  51. package/dist/{chunk-XI6JOG76.cjs → chunk-N56YC75X.cjs} +45 -45
  52. package/dist/{chunk-XI6JOG76.cjs.map → chunk-N56YC75X.cjs.map} +1 -1
  53. package/dist/{chunk-X4F6VVEJ.js → chunk-PAG3BNIV.js} +3 -3
  54. package/dist/{chunk-X4F6VVEJ.js.map → chunk-PAG3BNIV.js.map} +1 -1
  55. package/dist/{chunk-W7GIQTJV.cjs → chunk-PG6TDGKI.cjs} +21 -21
  56. package/dist/{chunk-W7GIQTJV.cjs.map → chunk-PG6TDGKI.cjs.map} +1 -1
  57. package/dist/{chunk-7MVDN5UC.cjs → chunk-Q5OFA4I2.cjs} +35 -35
  58. package/dist/{chunk-7MVDN5UC.cjs.map → chunk-Q5OFA4I2.cjs.map} +1 -1
  59. package/dist/{chunk-BUN3CRMP.cjs → chunk-QOLBWCF5.cjs} +65 -65
  60. package/dist/{chunk-BUN3CRMP.cjs.map → chunk-QOLBWCF5.cjs.map} +1 -1
  61. package/dist/{chunk-2UJAVPA4.cjs → chunk-QXL7AY2H.cjs} +26 -26
  62. package/dist/{chunk-2UJAVPA4.cjs.map → chunk-QXL7AY2H.cjs.map} +1 -1
  63. package/dist/{chunk-WHJXRLFD.js → chunk-SYYBKDL7.js} +48 -8
  64. package/dist/chunk-SYYBKDL7.js.map +1 -0
  65. package/dist/{chunk-SE23X5OE.js → chunk-TQU44E46.js} +4 -4
  66. package/dist/{chunk-SE23X5OE.js.map → chunk-TQU44E46.js.map} +1 -1
  67. package/dist/{chunk-SFSZUOFT.js → chunk-U3KRKXF7.js} +3 -3
  68. package/dist/{chunk-SFSZUOFT.js.map → chunk-U3KRKXF7.js.map} +1 -1
  69. package/dist/{chunk-EYHD7LV3.cjs → chunk-UDGU73RL.cjs} +129 -129
  70. package/dist/{chunk-EYHD7LV3.cjs.map → chunk-UDGU73RL.cjs.map} +1 -1
  71. package/dist/{chunk-M3R6RCXY.js → chunk-UDJ2KN2A.js} +3 -3
  72. package/dist/{chunk-M3R6RCXY.js.map → chunk-UDJ2KN2A.js.map} +1 -1
  73. package/dist/{chunk-BJWMPPEA.js → chunk-UT4TIDAA.js} +3 -3
  74. package/dist/{chunk-BJWMPPEA.js.map → chunk-UT4TIDAA.js.map} +1 -1
  75. package/dist/{chunk-RODV6PC4.cjs → chunk-UWRTV6IV.cjs} +7 -7
  76. package/dist/{chunk-RODV6PC4.cjs.map → chunk-UWRTV6IV.cjs.map} +1 -1
  77. package/dist/{chunk-IT2TVXC7.js → chunk-WTF6JXHN.js} +4 -4
  78. package/dist/{chunk-IT2TVXC7.js.map → chunk-WTF6JXHN.js.map} +1 -1
  79. package/dist/{chunk-7BEJHG43.js → chunk-X5QJO4ZD.js} +3 -3
  80. package/dist/{chunk-7BEJHG43.js.map → chunk-X5QJO4ZD.js.map} +1 -1
  81. package/dist/{chunk-NFT6VW73.js → chunk-XV2DTN6G.js} +3 -3
  82. package/dist/{chunk-NFT6VW73.js.map → chunk-XV2DTN6G.js.map} +1 -1
  83. package/dist/{chunk-XUEROLSB.cjs → chunk-YUPG2M3I.cjs} +16 -16
  84. package/dist/chunk-YUPG2M3I.cjs.map +1 -0
  85. package/dist/{chunk-K5QG53GT.cjs → chunk-ZCW7YH3C.cjs} +26 -26
  86. package/dist/{chunk-K5QG53GT.cjs.map → chunk-ZCW7YH3C.cjs.map} +1 -1
  87. package/dist/{chunk-GYTWJ6VB.cjs → chunk-ZFNZ2FYI.cjs} +67 -48
  88. package/dist/chunk-ZFNZ2FYI.cjs.map +1 -0
  89. package/dist/{chunk-3YXXZ4LT.cjs → chunk-ZZJDGGC3.cjs} +33 -33
  90. package/dist/{chunk-3YXXZ4LT.cjs.map → chunk-ZZJDGGC3.cjs.map} +1 -1
  91. package/dist/diagrams/blockdiagram/index.cjs +6 -6
  92. package/dist/diagrams/blockdiagram/index.d.cts +1 -1
  93. package/dist/diagrams/blockdiagram/index.d.ts +1 -1
  94. package/dist/diagrams/blockdiagram/index.js +2 -2
  95. package/dist/diagrams/circuit/index.cjs +8 -8
  96. package/dist/diagrams/circuit/index.d.cts +1 -1
  97. package/dist/diagrams/circuit/index.d.ts +1 -1
  98. package/dist/diagrams/circuit/index.js +2 -2
  99. package/dist/diagrams/ecomap/index.cjs +8 -8
  100. package/dist/diagrams/ecomap/index.d.cts +1 -1
  101. package/dist/diagrams/ecomap/index.d.ts +1 -1
  102. package/dist/diagrams/ecomap/index.js +3 -3
  103. package/dist/diagrams/entity/index.cjs +6 -6
  104. package/dist/diagrams/entity/index.d.cts +1 -1
  105. package/dist/diagrams/entity/index.d.ts +1 -1
  106. package/dist/diagrams/entity/index.js +2 -2
  107. package/dist/diagrams/fishbone/index.cjs +8 -8
  108. package/dist/diagrams/fishbone/index.d.cts +1 -1
  109. package/dist/diagrams/fishbone/index.d.ts +1 -1
  110. package/dist/diagrams/fishbone/index.js +2 -2
  111. package/dist/diagrams/flowchart/index.cjs +8 -8
  112. package/dist/diagrams/flowchart/index.d.cts +2 -2
  113. package/dist/diagrams/flowchart/index.d.ts +2 -2
  114. package/dist/diagrams/flowchart/index.js +2 -2
  115. package/dist/diagrams/genogram/index.cjs +10 -10
  116. package/dist/diagrams/genogram/index.d.cts +1 -1
  117. package/dist/diagrams/genogram/index.d.ts +1 -1
  118. package/dist/diagrams/genogram/index.js +3 -3
  119. package/dist/diagrams/ladder/index.cjs +6 -6
  120. package/dist/diagrams/ladder/index.d.cts +1 -1
  121. package/dist/diagrams/ladder/index.d.ts +1 -1
  122. package/dist/diagrams/ladder/index.js +2 -2
  123. package/dist/diagrams/logic/index.cjs +6 -6
  124. package/dist/diagrams/logic/index.d.cts +1 -1
  125. package/dist/diagrams/logic/index.d.ts +1 -1
  126. package/dist/diagrams/logic/index.js +2 -2
  127. package/dist/diagrams/orgchart/index.cjs +7 -7
  128. package/dist/diagrams/orgchart/index.d.cts +1 -1
  129. package/dist/diagrams/orgchart/index.d.ts +1 -1
  130. package/dist/diagrams/orgchart/index.js +2 -2
  131. package/dist/diagrams/pedigree/index.cjs +8 -8
  132. package/dist/diagrams/pedigree/index.d.cts +1 -1
  133. package/dist/diagrams/pedigree/index.d.ts +1 -1
  134. package/dist/diagrams/pedigree/index.js +3 -3
  135. package/dist/diagrams/phylo/index.cjs +7 -7
  136. package/dist/diagrams/phylo/index.d.cts +1 -1
  137. package/dist/diagrams/phylo/index.d.ts +1 -1
  138. package/dist/diagrams/phylo/index.js +2 -2
  139. package/dist/diagrams/sld/index.cjs +6 -6
  140. package/dist/diagrams/sld/index.d.cts +1 -1
  141. package/dist/diagrams/sld/index.d.ts +1 -1
  142. package/dist/diagrams/sld/index.js +2 -2
  143. package/dist/diagrams/sociogram/index.cjs +7 -7
  144. package/dist/diagrams/sociogram/index.d.cts +1 -1
  145. package/dist/diagrams/sociogram/index.d.ts +1 -1
  146. package/dist/diagrams/sociogram/index.js +3 -3
  147. package/dist/diagrams/timing/index.cjs +5 -5
  148. package/dist/diagrams/timing/index.d.cts +1 -1
  149. package/dist/diagrams/timing/index.d.ts +1 -1
  150. package/dist/diagrams/timing/index.js +2 -2
  151. package/dist/diagrams/venn/index.cjs +9 -9
  152. package/dist/diagrams/venn/index.d.cts +1 -1
  153. package/dist/diagrams/venn/index.d.ts +1 -1
  154. package/dist/diagrams/venn/index.js +2 -2
  155. package/dist/{index-dWDwG6BW.d.ts → index-D3u6vcA4.d.ts} +1 -1
  156. package/dist/{index-BrLxEzSQ.d.cts → index-bdfj6FpQ.d.cts} +1 -1
  157. package/dist/index.cjs +41 -41
  158. package/dist/index.d.cts +2 -2
  159. package/dist/index.d.ts +2 -2
  160. package/dist/index.js +19 -19
  161. package/dist/react.cjs +20 -20
  162. package/dist/react.js +19 -19
  163. package/dist/{types-BtiUg7Gx.d.cts → types-DnU2UlWz.d.cts} +2 -0
  164. package/dist/{types-BtiUg7Gx.d.ts → types-DnU2UlWz.d.ts} +2 -0
  165. package/package.json +1 -1
  166. package/dist/chunk-2J2QWNGI.js.map +0 -1
  167. package/dist/chunk-GYTWJ6VB.cjs.map +0 -1
  168. package/dist/chunk-LFZZ4NCP.cjs.map +0 -1
  169. package/dist/chunk-WHJXRLFD.js.map +0 -1
  170. package/dist/chunk-XUEROLSB.cjs.map +0 -1
  171. package/dist/chunk-ZNLEUL7T.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkLFZZ4NCP_cjs = require('./chunk-LFZZ4NCP.cjs');
3
+ var chunk3WNW5Y7P_cjs = require('./chunk-3WNW5Y7P.cjs');
4
4
 
5
5
  // src/core/legend-parser.ts
6
6
  var VALID_POSITIONS = /* @__PURE__ */ new Set([
@@ -358,7 +358,7 @@ function renderBottomInline(spec, sections, bySection, anchor, theme, config, pa
358
358
  if (ri === 0) {
359
359
  if (isTitleRow && sec.label) {
360
360
  out.push(
361
- chunkLFZZ4NCP_cjs.text(
361
+ chunk3WNW5Y7P_cjs.text(
362
362
  { x: startX, y: titleBaseline, class: "schematex-legend-title" },
363
363
  sec.label
364
364
  )
@@ -367,7 +367,7 @@ function renderBottomInline(spec, sections, bySection, anchor, theme, config, pa
367
367
  if (startX + w > usedRight) usedRight = startX + w;
368
368
  } else if (sec.label) {
369
369
  out.push(
370
- chunkLFZZ4NCP_cjs.text(
370
+ chunk3WNW5Y7P_cjs.text(
371
371
  { x: startX, y: sectionBaseline, class: "schematex-legend-section" },
372
372
  sec.label
373
373
  )
@@ -378,7 +378,7 @@ function renderBottomInline(spec, sections, bySection, anchor, theme, config, pa
378
378
  const cx = startX + itemColX + cell.x;
379
379
  const swatchY = yMid - SWATCH_H / 2;
380
380
  const swatch = renderSwatch(cell.item, cx, swatchY, SWATCH_W, SWATCH_H, theme);
381
- const label = chunkLFZZ4NCP_cjs.text(
381
+ const label = chunk3WNW5Y7P_cjs.text(
382
382
  {
383
383
  x: cx + SWATCH_W + SWATCH_LABEL_GAP,
384
384
  y: labelBaseline,
@@ -387,7 +387,7 @@ function renderBottomInline(spec, sections, bySection, anchor, theme, config, pa
387
387
  cell.item.label
388
388
  );
389
389
  out.push(
390
- chunkLFZZ4NCP_cjs.group(
390
+ chunk3WNW5Y7P_cjs.group(
391
391
  {
392
392
  class: "schematex-legend-row",
393
393
  "data-legend-key": cell.item.key,
@@ -408,7 +408,7 @@ function renderBottomInline(spec, sections, bySection, anchor, theme, config, pa
408
408
  );
409
409
  const minRight = effectiveCanvasW - padding;
410
410
  if (minRight > usedRight) usedRight = minRight;
411
- const svg = chunkLFZZ4NCP_cjs.group({ class: "schematex-legend" }, out);
411
+ const svg = chunk3WNW5Y7P_cjs.group({ class: "schematex-legend" }, out);
412
412
  const bbox = {
413
413
  x: startX,
414
414
  y: startY,
@@ -451,7 +451,7 @@ function renderBottomRight(spec, sections, bySection, anchor, theme, config, pad
451
451
  if (showTitle) {
452
452
  cursorY += ROW_H / 2;
453
453
  out.push(
454
- chunkLFZZ4NCP_cjs.text(
454
+ chunk3WNW5Y7P_cjs.text(
455
455
  {
456
456
  x: x + CARD_PAD,
457
457
  y: cursorY + TITLE_FONT_SIZE / 2 - 2,
@@ -468,7 +468,7 @@ function renderBottomRight(spec, sections, bySection, anchor, theme, config, pad
468
468
  if (s.title && s.id !== "_default") {
469
469
  cursorY += ROW_H / 2;
470
470
  out.push(
471
- chunkLFZZ4NCP_cjs.text(
471
+ chunk3WNW5Y7P_cjs.text(
472
472
  {
473
473
  x: x + CARD_PAD,
474
474
  y: cursorY + SECTION_FONT_SIZE / 2 - 1,
@@ -483,7 +483,7 @@ function renderBottomRight(spec, sections, bySection, anchor, theme, config, pad
483
483
  const yMid = cursorY + ROW_H / 2;
484
484
  const swatchY = yMid - SWATCH_H / 2;
485
485
  const swatch = renderSwatch(it, x + CARD_PAD, swatchY, SWATCH_W, SWATCH_H, theme);
486
- const label = chunkLFZZ4NCP_cjs.text(
486
+ const label = chunk3WNW5Y7P_cjs.text(
487
487
  {
488
488
  x: x + CARD_PAD + SWATCH_W + SWATCH_LABEL_GAP,
489
489
  y: yMid + FONT_SIZE / 2 - 2,
@@ -492,7 +492,7 @@ function renderBottomRight(spec, sections, bySection, anchor, theme, config, pad
492
492
  it.label
493
493
  );
494
494
  out.push(
495
- chunkLFZZ4NCP_cjs.group(
495
+ chunk3WNW5Y7P_cjs.group(
496
496
  {
497
497
  class: "schematex-legend-row",
498
498
  "data-legend-key": it.key,
@@ -504,7 +504,7 @@ function renderBottomRight(spec, sections, bySection, anchor, theme, config, pad
504
504
  cursorY += ROW_H;
505
505
  }
506
506
  }
507
- const svg = chunkLFZZ4NCP_cjs.group({ class: "schematex-legend" }, out);
507
+ const svg = chunk3WNW5Y7P_cjs.group({ class: "schematex-legend" }, out);
508
508
  return { svg, bbox: { x, y, w: boxW, h: boxH } };
509
509
  }
510
510
  function renderSwatch(item, x, y, w, h, theme) {
@@ -534,23 +534,23 @@ function renderShapeSwatch(item, x, y, w, h, theme) {
534
534
  const innerR = Math.min(w, h) / 2 - 1;
535
535
  switch (shape) {
536
536
  case "circle":
537
- return chunkLFZZ4NCP_cjs.circle({ cx, cy, r: innerR, fill: usedFill, stroke: usedStroke });
537
+ return chunk3WNW5Y7P_cjs.circle({ cx, cy, r: innerR, fill: usedFill, stroke: usedStroke });
538
538
  case "diamond": {
539
- return chunkLFZZ4NCP_cjs.polygon({
539
+ return chunk3WNW5Y7P_cjs.polygon({
540
540
  points: `${cx},${cy - innerR} ${cx + innerR},${cy} ${cx},${cy + innerR} ${cx - innerR},${cy}`,
541
541
  fill: usedFill,
542
542
  stroke: usedStroke
543
543
  });
544
544
  }
545
545
  case "triangle": {
546
- return chunkLFZZ4NCP_cjs.polygon({
546
+ return chunk3WNW5Y7P_cjs.polygon({
547
547
  points: `${cx},${cy - innerR} ${cx + innerR},${cy + innerR * 0.8} ${cx - innerR},${cy + innerR * 0.8}`,
548
548
  fill: usedFill,
549
549
  stroke: usedStroke
550
550
  });
551
551
  }
552
552
  case "concentric-square": {
553
- const inner = chunkLFZZ4NCP_cjs.rect({
553
+ const inner = chunk3WNW5Y7P_cjs.rect({
554
554
  x: x + 3,
555
555
  y: y + 3,
556
556
  width: w - 6,
@@ -558,7 +558,7 @@ function renderShapeSwatch(item, x, y, w, h, theme) {
558
558
  fill: usedFill,
559
559
  stroke: usedStroke
560
560
  });
561
- const outer = chunkLFZZ4NCP_cjs.rect({
561
+ const outer = chunk3WNW5Y7P_cjs.rect({
562
562
  x: x + 1,
563
563
  y: y + 1,
564
564
  width: w - 2,
@@ -570,14 +570,14 @@ function renderShapeSwatch(item, x, y, w, h, theme) {
570
570
  return inner + outer;
571
571
  }
572
572
  case "concentric-circle": {
573
- const innerC = chunkLFZZ4NCP_cjs.circle({
573
+ const innerC = chunk3WNW5Y7P_cjs.circle({
574
574
  cx,
575
575
  cy,
576
576
  r: innerR - 2,
577
577
  fill: usedFill,
578
578
  stroke: usedStroke
579
579
  });
580
- const outerC = chunkLFZZ4NCP_cjs.circle({
580
+ const outerC = chunk3WNW5Y7P_cjs.circle({
581
581
  cx,
582
582
  cy,
583
583
  r: innerR,
@@ -589,7 +589,7 @@ function renderShapeSwatch(item, x, y, w, h, theme) {
589
589
  }
590
590
  case "square":
591
591
  default:
592
- return chunkLFZZ4NCP_cjs.rect({
592
+ return chunk3WNW5Y7P_cjs.rect({
593
593
  x: x + 1,
594
594
  y: y + 1,
595
595
  width: w - 2,
@@ -600,7 +600,7 @@ function renderShapeSwatch(item, x, y, w, h, theme) {
600
600
  }
601
601
  }
602
602
  function renderFillSwatch(item, x, y, w, h, theme) {
603
- return chunkLFZZ4NCP_cjs.rect({
603
+ return chunk3WNW5Y7P_cjs.rect({
604
604
  x: x + 1,
605
605
  y: y + 1,
606
606
  width: w - 2,
@@ -618,7 +618,7 @@ function renderFillPatternSwatch(item, x, y, w, h, theme) {
618
618
  const color = item.color ?? theme.fill;
619
619
  const color2 = item.color2 ?? "transparent";
620
620
  const stroke = theme.stroke;
621
- const baseRect = chunkLFZZ4NCP_cjs.rect({
621
+ const baseRect = chunk3WNW5Y7P_cjs.rect({
622
622
  x: innerX,
623
623
  y: innerY,
624
624
  width: innerW,
@@ -628,27 +628,27 @@ function renderFillPatternSwatch(item, x, y, w, h, theme) {
628
628
  });
629
629
  switch (pattern) {
630
630
  case "half-left":
631
- return baseRect + chunkLFZZ4NCP_cjs.rect({ x: innerX, y: innerY, width: innerW / 2, height: innerH, fill: color });
631
+ return baseRect + chunk3WNW5Y7P_cjs.rect({ x: innerX, y: innerY, width: innerW / 2, height: innerH, fill: color });
632
632
  case "half-right":
633
- return baseRect + chunkLFZZ4NCP_cjs.rect({ x: innerX + innerW / 2, y: innerY, width: innerW / 2, height: innerH, fill: color });
633
+ return baseRect + chunk3WNW5Y7P_cjs.rect({ x: innerX + innerW / 2, y: innerY, width: innerW / 2, height: innerH, fill: color });
634
634
  case "half-top":
635
- return baseRect + chunkLFZZ4NCP_cjs.rect({ x: innerX, y: innerY, width: innerW, height: innerH / 2, fill: color });
635
+ return baseRect + chunk3WNW5Y7P_cjs.rect({ x: innerX, y: innerY, width: innerW, height: innerH / 2, fill: color });
636
636
  case "half-bottom":
637
- return baseRect + chunkLFZZ4NCP_cjs.rect({ x: innerX, y: innerY + innerH / 2, width: innerW, height: innerH / 2, fill: color });
637
+ return baseRect + chunk3WNW5Y7P_cjs.rect({ x: innerX, y: innerY + innerH / 2, width: innerW, height: innerH / 2, fill: color });
638
638
  case "quad-tl":
639
- return baseRect + chunkLFZZ4NCP_cjs.rect({ x: innerX, y: innerY, width: innerW / 2, height: innerH / 2, fill: color });
639
+ return baseRect + chunk3WNW5Y7P_cjs.rect({ x: innerX, y: innerY, width: innerW / 2, height: innerH / 2, fill: color });
640
640
  case "quad-tr":
641
- return baseRect + chunkLFZZ4NCP_cjs.rect({ x: innerX + innerW / 2, y: innerY, width: innerW / 2, height: innerH / 2, fill: color });
641
+ return baseRect + chunk3WNW5Y7P_cjs.rect({ x: innerX + innerW / 2, y: innerY, width: innerW / 2, height: innerH / 2, fill: color });
642
642
  case "quad-bl":
643
- return baseRect + chunkLFZZ4NCP_cjs.rect({ x: innerX, y: innerY + innerH / 2, width: innerW / 2, height: innerH / 2, fill: color });
643
+ return baseRect + chunk3WNW5Y7P_cjs.rect({ x: innerX, y: innerY + innerH / 2, width: innerW / 2, height: innerH / 2, fill: color });
644
644
  case "quad-br":
645
- return baseRect + chunkLFZZ4NCP_cjs.rect({ x: innerX + innerW / 2, y: innerY + innerH / 2, width: innerW / 2, height: innerH / 2, fill: color });
645
+ return baseRect + chunk3WNW5Y7P_cjs.rect({ x: innerX + innerW / 2, y: innerY + innerH / 2, width: innerW / 2, height: innerH / 2, fill: color });
646
646
  case "striped":
647
647
  case "carrier": {
648
648
  const stripes = [baseRect];
649
649
  const stripeW = 2;
650
650
  for (let sx = innerX; sx < innerX + innerW; sx += stripeW * 2) {
651
- stripes.push(chunkLFZZ4NCP_cjs.rect({
651
+ stripes.push(chunk3WNW5Y7P_cjs.rect({
652
652
  x: sx,
653
653
  y: innerY,
654
654
  width: Math.min(stripeW, innerX + innerW - sx),
@@ -662,13 +662,13 @@ function renderFillPatternSwatch(item, x, y, w, h, theme) {
662
662
  const dots = [baseRect];
663
663
  const cy = innerY + innerH / 2;
664
664
  for (let dx = innerX + 3; dx < innerX + innerW - 1; dx += 4) {
665
- dots.push(chunkLFZZ4NCP_cjs.circle({ cx: dx, cy, r: 1, fill: color }));
665
+ dots.push(chunk3WNW5Y7P_cjs.circle({ cx: dx, cy, r: 1, fill: color }));
666
666
  }
667
667
  return dots.join("");
668
668
  }
669
669
  case "full":
670
670
  default:
671
- return chunkLFZZ4NCP_cjs.rect({
671
+ return chunk3WNW5Y7P_cjs.rect({
672
672
  x: innerX,
673
673
  y: innerY,
674
674
  width: innerW,
@@ -687,7 +687,7 @@ function renderLineSwatch(item, x, y, w, h, theme) {
687
687
  const dash = patternDasharray(item.pattern);
688
688
  if (item.pattern === "double") {
689
689
  const off = Math.max(2, sw);
690
- return chunkLFZZ4NCP_cjs.line({ x1, y1: cy - off, x2, y2: cy - off, stroke, "stroke-width": sw }) + chunkLFZZ4NCP_cjs.line({ x1, y1: cy + off, x2, y2: cy + off, stroke, "stroke-width": sw });
690
+ return chunk3WNW5Y7P_cjs.line({ x1, y1: cy - off, x2, y2: cy - off, stroke, "stroke-width": sw }) + chunk3WNW5Y7P_cjs.line({ x1, y1: cy + off, x2, y2: cy + off, stroke, "stroke-width": sw });
691
691
  }
692
692
  if (item.pattern === "wavy") {
693
693
  const amp = Math.min(h / 3, 3);
@@ -701,7 +701,7 @@ function renderLineSwatch(item, x, y, w, h, theme) {
701
701
  sx = nx;
702
702
  up = !up;
703
703
  }
704
- return chunkLFZZ4NCP_cjs.path({ d: segs.join(" "), fill: "none", stroke, "stroke-width": sw });
704
+ return chunk3WNW5Y7P_cjs.path({ d: segs.join(" "), fill: "none", stroke, "stroke-width": sw });
705
705
  }
706
706
  const attrs = {
707
707
  x1,
@@ -713,7 +713,7 @@ function renderLineSwatch(item, x, y, w, h, theme) {
713
713
  "stroke-linecap": "round"
714
714
  };
715
715
  if (dash) attrs["stroke-dasharray"] = dash;
716
- return chunkLFZZ4NCP_cjs.line(attrs);
716
+ return chunk3WNW5Y7P_cjs.line(attrs);
717
717
  }
718
718
  function renderMarkerSwatch(item, x, y, w, h, theme) {
719
719
  const cx = x + w / 2;
@@ -724,20 +724,20 @@ function renderMarkerSwatch(item, x, y, w, h, theme) {
724
724
  case "X":
725
725
  case "x": {
726
726
  const r = Math.min(w, h) / 3;
727
- return chunkLFZZ4NCP_cjs.line({ x1: cx - r, y1: cy - r, x2: cx + r, y2: cy + r, stroke: color, "stroke-width": 1.6, "stroke-linecap": "round" }) + chunkLFZZ4NCP_cjs.line({ x1: cx + r, y1: cy - r, x2: cx - r, y2: cy + r, stroke: color, "stroke-width": 1.6, "stroke-linecap": "round" });
727
+ return chunk3WNW5Y7P_cjs.line({ x1: cx - r, y1: cy - r, x2: cx + r, y2: cy + r, stroke: color, "stroke-width": 1.6, "stroke-linecap": "round" }) + chunk3WNW5Y7P_cjs.line({ x1: cx + r, y1: cy - r, x2: cx - r, y2: cy + r, stroke: color, "stroke-width": 1.6, "stroke-linecap": "round" });
728
728
  }
729
729
  case "arrow": {
730
730
  const x1 = x + 2;
731
731
  const x2 = x + w - 4;
732
- return chunkLFZZ4NCP_cjs.line({ x1, y1: cy, x2, y2: cy, stroke: color, "stroke-width": 1.6, "stroke-linecap": "round" }) + chunkLFZZ4NCP_cjs.polygon({ points: `${x2},${cy - 3} ${x + w - 1},${cy} ${x2},${cy + 3}`, fill: color });
732
+ return chunk3WNW5Y7P_cjs.line({ x1, y1: cy, x2, y2: cy, stroke: color, "stroke-width": 1.6, "stroke-linecap": "round" }) + chunk3WNW5Y7P_cjs.polygon({ points: `${x2},${cy - 3} ${x + w - 1},${cy} ${x2},${cy + 3}`, fill: color });
733
733
  }
734
734
  case "star":
735
- return chunkLFZZ4NCP_cjs.text(
735
+ return chunk3WNW5Y7P_cjs.text(
736
736
  { x: cx, y: cy + 4, "text-anchor": "middle", "font-size": 14, fill: color },
737
737
  "\u2605"
738
738
  );
739
739
  case "slash":
740
- return chunkLFZZ4NCP_cjs.line({
740
+ return chunk3WNW5Y7P_cjs.line({
741
741
  x1: cx - 4,
742
742
  y1: cy + 5,
743
743
  x2: cx + 4,
@@ -748,13 +748,13 @@ function renderMarkerSwatch(item, x, y, w, h, theme) {
748
748
  case "P":
749
749
  case "C":
750
750
  case "E":
751
- return chunkLFZZ4NCP_cjs.text(
751
+ return chunk3WNW5Y7P_cjs.text(
752
752
  { x: cx, y: cy + 4, "text-anchor": "middle", "font-size": 11, "font-weight": "bold", fill: color },
753
753
  marker
754
754
  );
755
755
  case "dot":
756
756
  default:
757
- return chunkLFZZ4NCP_cjs.circle({ cx, cy, r: 3, fill: color });
757
+ return chunk3WNW5Y7P_cjs.circle({ cx, cy, r: 3, fill: color });
758
758
  }
759
759
  }
760
760
  function renderEdgeSwatch(item, x, y, w, h, theme) {
@@ -786,7 +786,7 @@ function buildStyleBlock(theme, fontFamily) {
786
786
  .schematex-legend-section { font-size: ${SECTION_FONT_SIZE}px; font-weight: 600; fill: ${theme.textMuted}; letter-spacing: 0.6px; }
787
787
  .schematex-legend-label { font-size: ${FONT_SIZE}px; fill: ${theme.text}; dominant-baseline: alphabetic; }
788
788
  `;
789
- return chunkLFZZ4NCP_cjs.el("style", {}, css);
789
+ return chunk3WNW5Y7P_cjs.el("style", {}, css);
790
790
  }
791
791
  function capitalize(s) {
792
792
  if (!s) return s;
@@ -796,5 +796,5 @@ function capitalize(s) {
796
796
  exports.applyLegendOverrides = applyLegendOverrides;
797
797
  exports.parseLegendDirective = parseLegendDirective;
798
798
  exports.renderLegend = renderLegend;
799
- //# sourceMappingURL=chunk-75BMFCP5.cjs.map
800
- //# sourceMappingURL=chunk-75BMFCP5.cjs.map
799
+ //# sourceMappingURL=chunk-5UCXMYE7.cjs.map
800
+ //# sourceMappingURL=chunk-5UCXMYE7.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/legend-parser.ts","../src/core/legend.ts"],"names":["line","text","group","circle","polygon","rect","path","el"],"mappings":"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","file":"chunk-75BMFCP5.cjs","sourcesContent":["/**\n * Shared DSL directive parser for the unified Legend system.\n *\n * Diagram parsers call `parseLegendDirective(line, overrides)` for each\n * non-content line. If the line is a `legend.*` directive, it is consumed\n * (overrides mutated in place) and the function returns true. Otherwise it\n * returns false and the caller continues normal parsing.\n *\n * Recognized forms (see docs/reference/LEGEND-SYSTEM.md):\n *\n * legend: on | off | <position> | on <position>\n * legend.title: \"...\"\n * legend.position: <position>\n * legend.columns: <n>\n * legend.label <key>: \"...\"\n * legend.hide: a, b, c\n * legend.section <id>: \"...\"\n * legend.section <id>.hide: true|false\n * legend.item <id>: \"...\" (kind: ..., color: ..., pattern: ..., shape: ..., marker: ..., section: ...)\n */\n\nimport type {\n LegendItem,\n LegendItemKind,\n LegendLinePattern,\n LegendOverrides,\n LegendPosition,\n} from \"./types\";\n\nconst VALID_POSITIONS: ReadonlySet<LegendPosition> = new Set<LegendPosition>([\n \"top-left\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-right\",\n \"outside-right\",\n \"outside-bottom\",\n \"right\",\n \"bottom-center\",\n \"none\",\n]);\n\nconst VALID_KINDS: ReadonlySet<LegendItemKind> = new Set<LegendItemKind>([\n \"shape\",\n \"fill\",\n \"fill-pattern\",\n \"line\",\n \"marker\",\n \"edge\",\n]);\n\nconst VALID_PATTERNS: ReadonlySet<LegendLinePattern> = new Set<LegendLinePattern>([\n \"solid\",\n \"dashed\",\n \"dotted\",\n \"double\",\n \"wavy\",\n \"zigzag\",\n \"broken\",\n]);\n\nexport function parseLegendDirective(\n rawLine: string,\n overrides: LegendOverrides\n): boolean {\n const line = rawLine.trim();\n if (!line.toLowerCase().startsWith(\"legend\")) return false;\n\n // `legend: ...` shorthand (toggle / position keyword)\n const masterMatch = line.match(/^legend\\s*:\\s*(.+)$/i);\n if (masterMatch && !line.toLowerCase().startsWith(\"legend.\")) {\n return applyMaster(masterMatch[1].trim(), overrides);\n }\n\n // `legend.title: \"...\"`\n const titleMatch = line.match(/^legend\\.title\\s*:\\s*(.+)$/i);\n if (titleMatch) {\n overrides.title = unquote(titleMatch[1].trim());\n return true;\n }\n\n // `legend.position: <pos>`\n const posMatch = line.match(/^legend\\.position\\s*:\\s*(.+)$/i);\n if (posMatch) {\n const pos = posMatch[1].trim().toLowerCase();\n if (VALID_POSITIONS.has(pos as LegendPosition)) {\n overrides.position = pos as LegendPosition;\n return true;\n }\n return false;\n }\n\n // `legend.columns: N`\n const colsMatch = line.match(/^legend\\.columns\\s*:\\s*(\\d+)\\s*$/i);\n if (colsMatch) {\n overrides.columns = Number.parseInt(colsMatch[1], 10);\n return true;\n }\n\n // `legend.label <key>: \"...\"`\n const labelMatch = line.match(/^legend\\.label\\s+([^\\s:]+)\\s*:\\s*(.+)$/i);\n if (labelMatch) {\n overrides.labels ??= {};\n overrides.labels[labelMatch[1]] = unquote(labelMatch[2].trim());\n return true;\n }\n\n // `legend.hide: a, b, c`\n const hideMatch = line.match(/^legend\\.hide\\s*:\\s*(.+)$/i);\n if (hideMatch) {\n const keys = hideMatch[1]\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n overrides.hide = (overrides.hide ?? []).concat(keys);\n return true;\n }\n\n // `legend.section <id>.hide: true|false`\n const sectionHideMatch = line.match(\n /^legend\\.section\\s+([^\\s.]+)\\.hide\\s*:\\s*(true|false)\\s*$/i\n );\n if (sectionHideMatch) {\n const id = sectionHideMatch[1];\n const flag = sectionHideMatch[2].toLowerCase() === \"true\";\n overrides.sections ??= {};\n overrides.sections[id] = { ...(overrides.sections[id] ?? {}), hidden: flag };\n return true;\n }\n\n // `legend.section <id>: \"...\"` (rename)\n const sectionMatch = line.match(/^legend\\.section\\s+([^\\s:]+)\\s*:\\s*(.+)$/i);\n if (sectionMatch) {\n const id = sectionMatch[1];\n overrides.sections ??= {};\n overrides.sections[id] = {\n ...(overrides.sections[id] ?? {}),\n title: unquote(sectionMatch[2].trim()),\n };\n return true;\n }\n\n // `legend.item <id>: \"label\" (kind: X, color: Y, ...)`\n const itemMatch = line.match(\n /^legend\\.item\\s+([^\\s:]+)\\s*:\\s*\"([^\"]*)\"\\s*(?:\\(([^)]*)\\))?\\s*$/i\n );\n if (itemMatch) {\n const item = buildItem(itemMatch[1], itemMatch[2], itemMatch[3]);\n if (item) {\n overrides.added ??= [];\n overrides.added.push(item);\n return true;\n }\n }\n\n return false;\n}\n\nfunction applyMaster(value: string, overrides: LegendOverrides): boolean {\n const parts = value.split(/\\s+/).filter(Boolean);\n let consumed = false;\n for (const tok of parts) {\n const t = tok.toLowerCase();\n if (t === \"on\" || t === \"off\" || t === \"auto\") {\n overrides.mode = t;\n consumed = true;\n } else if (VALID_POSITIONS.has(t as LegendPosition)) {\n overrides.position = t as LegendPosition;\n // A position keyword implies on (unless explicitly off)\n if (overrides.mode !== \"off\") overrides.mode = \"on\";\n consumed = true;\n } else {\n return false;\n }\n }\n return consumed;\n}\n\nfunction buildItem(\n id: string,\n label: string,\n attrsRaw: string | undefined\n): LegendItem | null {\n const item: LegendItem = { key: id, label, kind: \"fill\" };\n if (!attrsRaw) return item;\n\n for (const part of attrsRaw.split(\",\")) {\n const eq = part.indexOf(\":\");\n if (eq < 0) continue;\n const k = part.slice(0, eq).trim().toLowerCase();\n const v = part.slice(eq + 1).trim();\n switch (k) {\n case \"kind\":\n if (VALID_KINDS.has(v as LegendItemKind)) item.kind = v as LegendItemKind;\n else return null;\n break;\n case \"color\":\n item.color = v;\n break;\n case \"color2\":\n item.color2 = v;\n break;\n case \"pattern\":\n if (VALID_PATTERNS.has(v as LegendLinePattern))\n item.pattern = v as LegendLinePattern;\n break;\n case \"shape\":\n item.shape = v;\n break;\n case \"marker\":\n item.marker = v;\n break;\n case \"section\":\n item.section = v;\n break;\n case \"stroke-width\":\n case \"strokewidth\": {\n const n = Number.parseFloat(v);\n if (Number.isFinite(n)) item.strokeWidth = n;\n break;\n }\n default:\n // Unknown attribute — ignore silently to keep DSL forward-compatible.\n break;\n }\n }\n return item;\n}\n\nfunction unquote(s: string): string {\n const m = s.match(/^\"(.*)\"$/);\n return m ? m[1] : s;\n}\n","/**\n * Shared legend renderer.\n *\n * Pipeline:\n * buildXxxLegend(ast, theme) → auto LegendSpec\n * applyLegendOverrides(spec, o) → final LegendSpec\n * renderLegend(spec, ...) → { svg, bbox }\n *\n * Standard positions (others are silently aliased):\n * - \"bottom-inline\" (default) horizontal strip below the diagram, no box.\n * - \"bottom-right\" compact overlay anchored at bottom-right corner.\n * - \"none\" not rendered.\n */\n\nimport type { BaseTheme } from \"./theme\";\nimport type {\n LegendItem,\n LegendLinePattern,\n LegendOverrides,\n LegendPosition,\n LegendSection,\n LegendSpec,\n} from \"./types\";\nimport {\n el,\n group,\n rect,\n circle,\n line as lineEl,\n path as pathEl,\n polygon,\n text as textEl,\n} from \"./svg\";\n\n// ─── Public API ──────────────────────────────────────────────\n\nexport function applyLegendOverrides(\n auto: LegendSpec,\n overrides: LegendOverrides | undefined\n): LegendSpec {\n if (!overrides) return resolveAuto(auto);\n\n const sections = auto.sections.map((s) => {\n const o = overrides.sections?.[s.id];\n if (!o) return s;\n return { ...s, title: o.title ?? s.title, hidden: o.hidden ?? s.hidden };\n });\n\n const hideSet = new Set<string>(overrides.hide ?? []);\n const hiddenSectionIds = new Set<string>(\n sections.filter((s) => s.hidden).map((s) => s.id)\n );\n\n const baseItems = auto.items.filter((it) => {\n if (hideSet.has(it.key)) return false;\n if (it.section && hiddenSectionIds.has(it.section)) return false;\n return true;\n });\n\n const renamedBase = baseItems.map((it) => {\n const newLabel = overrides.labels?.[it.key];\n return newLabel === undefined ? it : { ...it, label: newLabel };\n });\n\n const added = (overrides.added ?? []).map((it) => ({\n ...it,\n section: it.section ?? \"custom\",\n }));\n\n let finalSections = sections;\n if (added.some((it) => it.section === \"custom\") &&\n !finalSections.some((s) => s.id === \"custom\")) {\n finalSections = [...finalSections, { id: \"custom\", title: \"Custom\" }];\n }\n\n const items = [...renamedBase, ...added];\n\n let mode = overrides.mode ?? auto.mode;\n if (mode === \"auto\") mode = items.length > 0 ? \"on\" : \"off\";\n\n return {\n mode,\n title: overrides.title ?? auto.title,\n position: overrides.position ?? auto.position,\n columns: overrides.columns ?? auto.columns,\n sections: finalSections,\n items,\n };\n}\n\nfunction resolveAuto(spec: LegendSpec): LegendSpec {\n if (spec.mode !== \"auto\") return spec;\n return { ...spec, mode: spec.items.length > 0 ? \"on\" : \"off\" };\n}\n\nexport interface LegendRenderResult {\n svg: string;\n bbox: { x: number; y: number; w: number; h: number };\n}\n\nexport interface LegendAnchor {\n canvasWidth: number;\n canvasHeight: number;\n /** Side margin from the canvas edge. Default 16. */\n padding?: number;\n /** Top offset reserved for diagram title (used by bottom-right anchoring). */\n titleHeight?: number;\n}\n\nexport interface LegendRenderConfig {\n fontFamily: string;\n fontSize: number;\n}\n\nconst ZERO_BBOX = { x: 0, y: 0, w: 0, h: 0 } as const;\n\n// Standardize legacy positions onto one of the 3 supported placements.\nfunction normalizePosition(p: LegendPosition): \"bottom-inline\" | \"bottom-right\" | \"none\" {\n switch (p) {\n case \"bottom-inline\":\n case \"outside-bottom\":\n case \"bottom-left\":\n case \"bottom-center\":\n return \"bottom-inline\";\n case \"bottom-right\":\n case \"outside-right\":\n case \"right\":\n case \"top-right\":\n case \"top-left\":\n return \"bottom-right\";\n case \"none\":\n default:\n return p === \"none\" ? \"none\" : \"bottom-inline\";\n }\n}\n\nconst FONT_SIZE = 11;\nconst SECTION_FONT_SIZE = 9;\nconst TITLE_FONT_SIZE = 12;\nconst SWATCH_W = 22;\nconst SWATCH_H = 12;\nconst SWATCH_LABEL_GAP = 8;\nconst ITEM_GAP = 18;\nconst SECTION_LABEL_GAP = 14;\nconst ROW_H = 18;\nconst INLINE_TOP_GAP = 14;\nconst INLINE_BOTTOM_PAD = 8;\nconst CARD_PAD = 4;\n// Width estimates per character (account for measured rendering, not just font-size).\nconst CHAR_W = FONT_SIZE * 0.6;\n// Section labels are uppercase with 0.6px letter-spacing → bigger glyph footprint.\nconst SECTION_CHAR_W = SECTION_FONT_SIZE * 0.85;\nconst TITLE_CHAR_W = TITLE_FONT_SIZE * 0.65;\n// Minimum effective canvas width for bottom-inline layout. If the diagram is\n// narrower, the legend (and the SVG viewBox) is widened to this value to avoid\n// excessive wrapping into 5+ rows.\nconst MIN_INLINE_WIDTH = 480;\n\nexport function renderLegend(\n spec: LegendSpec,\n anchor: LegendAnchor,\n theme: BaseTheme,\n config: LegendRenderConfig\n): LegendRenderResult {\n if (spec.mode === \"off\" || spec.position === \"none\" || spec.items.length === 0) {\n return { svg: \"\", bbox: { ...ZERO_BBOX } };\n }\n\n const padding = anchor.padding ?? 16;\n const layout = normalizePosition(spec.position);\n\n // Group items by section, preserving order.\n const itemsBySection = new Map<string, LegendItem[]>();\n for (const it of spec.items) {\n const sid = it.section ?? \"_default\";\n const arr = itemsBySection.get(sid) ?? [];\n arr.push(it);\n itemsBySection.set(sid, arr);\n }\n\n const declared = spec.sections.length\n ? spec.sections.filter(\n (s) => !s.hidden && (itemsBySection.get(s.id)?.length ?? 0) > 0\n )\n : [{ id: \"_default\", title: \"\" } as LegendSection];\n\n const declaredIds = new Set(declared.map((s) => s.id));\n const orderedSections: LegendSection[] = [...declared];\n for (const [sid] of itemsBySection) {\n if (!declaredIds.has(sid) && (itemsBySection.get(sid)?.length ?? 0) > 0) {\n orderedSections.push({ id: sid, title: capitalize(sid) });\n }\n }\n\n const showTitle = !!spec.title && spec.title !== \"Legend\";\n\n if (layout === \"bottom-inline\") {\n return renderBottomInline(\n spec,\n orderedSections,\n itemsBySection,\n anchor,\n theme,\n config,\n padding,\n showTitle\n );\n }\n return renderBottomRight(\n spec,\n orderedSections,\n itemsBySection,\n anchor,\n theme,\n config,\n padding,\n showTitle\n );\n}\n\n// ─── bottom-inline: horizontal flow strip below canvas ───────\n//\n// Layout rules:\n// - Each section gets its own row (or rows). Sections never share a row.\n// - All sections share a fixed left \"label column\" so swatches line up.\n// - Items wrap within a section if they don't fit in one row; the\n// continuation row is indented past the label column.\n// - Optional title (when explicitly set by user) is rendered as its own\n// leading row, also left-aligned in the label column.\n// - If canvas is narrower than MIN_INLINE_WIDTH, the legend is rendered\n// at MIN_INLINE_WIDTH and the bbox reflects this — caller grows viewBox.\n\nfunction renderBottomInline(\n spec: LegendSpec,\n sections: LegendSection[],\n bySection: Map<string, LegendItem[]>,\n anchor: LegendAnchor,\n theme: BaseTheme,\n config: LegendRenderConfig,\n padding: number,\n showTitle: boolean\n): LegendRenderResult {\n const effectiveCanvasW = Math.max(anchor.canvasWidth, MIN_INLINE_WIDTH);\n const startX = padding;\n const endX = effectiveCanvasW - padding;\n const availW = Math.max(120, endX - startX);\n const startY = anchor.canvasHeight + INLINE_TOP_GAP;\n\n // Determine label-column width: max of all section label widths (uppercase).\n let labelColW = 0;\n for (const s of sections) {\n if (!s.title || s.id === \"_default\") continue;\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n const lw = SECTION_CHAR_W * s.title.length;\n if (lw > labelColW) labelColW = lw;\n }\n if (showTitle) {\n const tw = TITLE_CHAR_W * spec.title.length;\n if (tw > labelColW) labelColW = tw;\n }\n // Add right-side gap between label column and items.\n const itemColX = labelColW > 0 ? labelColW + SECTION_LABEL_GAP : 0;\n const itemAvailW = Math.max(80, availW - itemColX);\n\n function itemWidth(it: LegendItem): number {\n return SWATCH_W + SWATCH_LABEL_GAP + Math.ceil(it.label.length * CHAR_W);\n }\n\n // For each section, pack its items into rows that fit in itemAvailW.\n type SectionRows = {\n label: string | null;\n rows: { item: LegendItem; x: number }[][];\n };\n const sectionRows: SectionRows[] = [];\n\n if (showTitle) {\n sectionRows.push({ label: spec.title, rows: [[]] }); // title-only row\n // Title is rendered without items; we'll treat the title text via labelCol.\n }\n\n for (const s of sections) {\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n const rows: { item: LegendItem; x: number }[][] = [];\n let row: { item: LegendItem; x: number }[] = [];\n let cursor = 0;\n for (const it of items) {\n const w = itemWidth(it);\n const gap = row.length > 0 ? ITEM_GAP : 0;\n if (cursor > 0 && cursor + gap + w > itemAvailW) {\n rows.push(row);\n row = [];\n cursor = 0;\n }\n const x = cursor + (cursor > 0 ? gap : 0);\n row.push({ item: it, x });\n cursor = x + w;\n }\n if (row.length > 0) rows.push(row);\n const label = s.title && s.id !== \"_default\" ? s.title.toUpperCase() : null;\n sectionRows.push({ label, rows });\n }\n\n // Build SVG.\n const out: string[] = [];\n out.push(buildStyleBlock(theme, config.fontFamily));\n\n let cursorY = startY;\n let usedRight = 0;\n\n for (let si = 0; si < sectionRows.length; si++) {\n const sec = sectionRows[si];\n const isTitleRow = showTitle && si === 0;\n for (let ri = 0; ri < sec.rows.length; ri++) {\n const yMid = cursorY + ROW_H / 2;\n const labelBaseline = yMid + FONT_SIZE / 2 - 2;\n const sectionBaseline = yMid + SECTION_FONT_SIZE / 2 - 1;\n const titleBaseline = yMid + TITLE_FONT_SIZE / 2 - 2;\n\n // Section/title label only on the first row of the section.\n if (ri === 0) {\n if (isTitleRow && sec.label) {\n out.push(\n textEl(\n { x: startX, y: titleBaseline, class: \"schematex-legend-title\" },\n sec.label\n )\n );\n const w = TITLE_CHAR_W * sec.label.length;\n if (startX + w > usedRight) usedRight = startX + w;\n } else if (sec.label) {\n out.push(\n textEl(\n { x: startX, y: sectionBaseline, class: \"schematex-legend-section\" },\n sec.label\n )\n );\n }\n }\n\n for (const cell of sec.rows[ri]) {\n const cx = startX + itemColX + cell.x;\n const swatchY = yMid - SWATCH_H / 2;\n const swatch = renderSwatch(cell.item, cx, swatchY, SWATCH_W, SWATCH_H, theme);\n const label = textEl(\n {\n x: cx + SWATCH_W + SWATCH_LABEL_GAP,\n y: labelBaseline,\n class: \"schematex-legend-label\",\n },\n cell.item.label\n );\n out.push(\n group(\n {\n class: \"schematex-legend-row\",\n \"data-legend-key\": cell.item.key,\n \"data-legend-section\": cell.item.section ?? \"\",\n },\n [swatch, label]\n )\n );\n const right = cx + itemWidth(cell.item);\n if (right > usedRight) usedRight = right;\n }\n\n cursorY += ROW_H;\n }\n }\n\n const totalRows = sectionRows.reduce(\n (sum, sec) => sum + Math.max(1, sec.rows.length),\n 0\n );\n\n // Force right edge to at least the effective canvas right padding so the\n // caller's viewBox grows to include any min-width expansion.\n const minRight = effectiveCanvasW - padding;\n if (minRight > usedRight) usedRight = minRight;\n\n const svg = group({ class: \"schematex-legend\" }, out);\n const bbox = {\n x: startX,\n y: startY,\n w: usedRight - startX,\n h: totalRows * ROW_H + INLINE_BOTTOM_PAD,\n };\n return { svg, bbox };\n}\n\n// ─── bottom-right: compact overlay card (no box) ─────────────\n\nfunction renderBottomRight(\n spec: LegendSpec,\n sections: LegendSection[],\n bySection: Map<string, LegendItem[]>,\n anchor: LegendAnchor,\n theme: BaseTheme,\n config: LegendRenderConfig,\n padding: number,\n showTitle: boolean\n): LegendRenderResult {\n // Measure box width.\n let maxRowW = 0;\n if (showTitle) {\n maxRowW = Math.max(maxRowW, TITLE_CHAR_W * spec.title.length);\n }\n for (const s of sections) {\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n if (s.title && s.id !== \"_default\") {\n maxRowW = Math.max(maxRowW, SECTION_CHAR_W * s.title.length);\n }\n for (const it of items) {\n const w = SWATCH_W + SWATCH_LABEL_GAP + Math.ceil(it.label.length * CHAR_W);\n if (w > maxRowW) maxRowW = w;\n }\n }\n const boxW = maxRowW + CARD_PAD * 2;\n\n // Measure rows.\n let rowCount = 0;\n if (showTitle) rowCount++;\n for (const s of sections) {\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n if (s.title && s.id !== \"_default\") rowCount++;\n rowCount += items.length;\n }\n const boxH = rowCount * ROW_H + CARD_PAD * 2;\n\n const x = anchor.canvasWidth - boxW - padding;\n const y = anchor.canvasHeight - boxH - padding;\n\n const out: string[] = [];\n out.push(buildStyleBlock(theme, config.fontFamily));\n\n let cursorY = y + CARD_PAD;\n if (showTitle) {\n cursorY += ROW_H / 2;\n out.push(\n textEl(\n {\n x: x + CARD_PAD,\n y: cursorY + TITLE_FONT_SIZE / 2 - 2,\n class: \"schematex-legend-title\",\n },\n spec.title\n )\n );\n cursorY += ROW_H / 2;\n }\n for (const s of sections) {\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n if (s.title && s.id !== \"_default\") {\n cursorY += ROW_H / 2;\n out.push(\n textEl(\n {\n x: x + CARD_PAD,\n y: cursorY + SECTION_FONT_SIZE / 2 - 1,\n class: \"schematex-legend-section\",\n },\n s.title.toUpperCase()\n )\n );\n cursorY += ROW_H / 2;\n }\n for (const it of items) {\n const yMid = cursorY + ROW_H / 2;\n const swatchY = yMid - SWATCH_H / 2;\n const swatch = renderSwatch(it, x + CARD_PAD, swatchY, SWATCH_W, SWATCH_H, theme);\n const label = textEl(\n {\n x: x + CARD_PAD + SWATCH_W + SWATCH_LABEL_GAP,\n y: yMid + FONT_SIZE / 2 - 2,\n class: \"schematex-legend-label\",\n },\n it.label\n );\n out.push(\n group(\n {\n class: \"schematex-legend-row\",\n \"data-legend-key\": it.key,\n \"data-legend-section\": it.section ?? \"\",\n },\n [swatch, label]\n )\n );\n cursorY += ROW_H;\n }\n }\n\n const svg = group({ class: \"schematex-legend\" }, out);\n return { svg, bbox: { x, y, w: boxW, h: boxH } };\n}\n\n// ─── Swatch primitives ───────────────────────────────────────\n\nfunction renderSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n switch (item.kind) {\n case \"shape\":\n return renderShapeSwatch(item, x, y, w, h, theme);\n case \"fill\":\n return renderFillSwatch(item, x, y, w, h, theme);\n case \"fill-pattern\":\n return renderFillPatternSwatch(item, x, y, w, h, theme);\n case \"line\":\n return renderLineSwatch(item, x, y, w, h, theme);\n case \"marker\":\n return renderMarkerSwatch(item, x, y, w, h, theme);\n case \"edge\":\n return renderEdgeSwatch(item, x, y, w, h, theme);\n default:\n return renderFillSwatch(item, x, y, w, h, theme);\n }\n}\n\nfunction renderShapeSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const shape = item.shape ?? \"square\";\n const cx = x + w / 2;\n const cy = y + h / 2;\n // Resolution rule:\n // - if item.fill is set: it wins for fill, item.color (if any) is stroke, else theme.stroke.\n // - else: item.color (if any) is fill, theme.stroke is stroke.\n const usedFill = item.fill ?? item.color ?? theme.fill;\n const usedStroke = item.fill !== undefined ? (item.color ?? theme.stroke) : theme.stroke;\n const innerR = Math.min(w, h) / 2 - 1;\n switch (shape) {\n case \"circle\":\n return circle({ cx, cy, r: innerR, fill: usedFill, stroke: usedStroke });\n case \"diamond\": {\n return polygon({\n points: `${cx},${cy - innerR} ${cx + innerR},${cy} ${cx},${cy + innerR} ${cx - innerR},${cy}`,\n fill: usedFill,\n stroke: usedStroke,\n });\n }\n case \"triangle\": {\n return polygon({\n points: `${cx},${cy - innerR} ${cx + innerR},${cy + innerR * 0.8} ${cx - innerR},${cy + innerR * 0.8}`,\n fill: usedFill,\n stroke: usedStroke,\n });\n }\n case \"concentric-square\": {\n const inner = rect({\n x: x + 3,\n y: y + 3,\n width: w - 6,\n height: h - 6,\n fill: usedFill,\n stroke: usedStroke,\n });\n const outer = rect({\n x: x + 1,\n y: y + 1,\n width: w - 2,\n height: h - 2,\n fill: \"none\",\n stroke: usedStroke,\n \"stroke-width\": 1.2,\n });\n return inner + outer;\n }\n case \"concentric-circle\": {\n const innerC = circle({\n cx,\n cy,\n r: innerR - 2,\n fill: usedFill,\n stroke: usedStroke,\n });\n const outerC = circle({\n cx,\n cy,\n r: innerR,\n fill: \"none\",\n stroke: usedStroke,\n \"stroke-width\": 1.2,\n });\n return innerC + outerC;\n }\n case \"square\":\n default:\n return rect({\n x: x + 1,\n y: y + 1,\n width: w - 2,\n height: h - 2,\n fill: usedFill,\n stroke: usedStroke,\n });\n }\n}\n\nfunction renderFillSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n return rect({\n x: x + 1,\n y: y + 1,\n width: w - 2,\n height: h - 2,\n fill: item.color ?? theme.fill,\n stroke: theme.stroke,\n });\n}\n\nfunction renderFillPatternSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const pattern = item.shape ?? \"full\";\n const innerX = x + 1;\n const innerY = y + 1;\n const innerW = w - 2;\n const innerH = h - 2;\n const color = item.color ?? theme.fill;\n const color2 = item.color2 ?? \"transparent\";\n const stroke = theme.stroke;\n\n const baseRect = rect({\n x: innerX,\n y: innerY,\n width: innerW,\n height: innerH,\n fill: color2,\n stroke,\n });\n\n switch (pattern) {\n case \"half-left\":\n return baseRect + rect({ x: innerX, y: innerY, width: innerW / 2, height: innerH, fill: color });\n case \"half-right\":\n return baseRect + rect({ x: innerX + innerW / 2, y: innerY, width: innerW / 2, height: innerH, fill: color });\n case \"half-top\":\n return baseRect + rect({ x: innerX, y: innerY, width: innerW, height: innerH / 2, fill: color });\n case \"half-bottom\":\n return baseRect + rect({ x: innerX, y: innerY + innerH / 2, width: innerW, height: innerH / 2, fill: color });\n case \"quad-tl\":\n return baseRect + rect({ x: innerX, y: innerY, width: innerW / 2, height: innerH / 2, fill: color });\n case \"quad-tr\":\n return baseRect + rect({ x: innerX + innerW / 2, y: innerY, width: innerW / 2, height: innerH / 2, fill: color });\n case \"quad-bl\":\n return baseRect + rect({ x: innerX, y: innerY + innerH / 2, width: innerW / 2, height: innerH / 2, fill: color });\n case \"quad-br\":\n return baseRect + rect({ x: innerX + innerW / 2, y: innerY + innerH / 2, width: innerW / 2, height: innerH / 2, fill: color });\n case \"striped\":\n case \"carrier\": {\n const stripes: string[] = [baseRect];\n const stripeW = 2;\n for (let sx = innerX; sx < innerX + innerW; sx += stripeW * 2) {\n stripes.push(rect({\n x: sx,\n y: innerY,\n width: Math.min(stripeW, innerX + innerW - sx),\n height: innerH,\n fill: color,\n }));\n }\n return stripes.join(\"\");\n }\n case \"dotted\": {\n const dots: string[] = [baseRect];\n const cy = innerY + innerH / 2;\n for (let dx = innerX + 3; dx < innerX + innerW - 1; dx += 4) {\n dots.push(circle({ cx: dx, cy, r: 1, fill: color }));\n }\n return dots.join(\"\");\n }\n case \"full\":\n default:\n return rect({\n x: innerX,\n y: innerY,\n width: innerW,\n height: innerH,\n fill: color,\n stroke,\n });\n }\n}\n\nfunction renderLineSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const cy = y + h / 2;\n const x1 = x + 1;\n const x2 = x + w - 1;\n const stroke = item.color ?? theme.stroke;\n const sw = item.strokeWidth ?? 2;\n const dash = patternDasharray(item.pattern);\n\n if (item.pattern === \"double\") {\n const off = Math.max(2, sw);\n return (\n lineEl({ x1, y1: cy - off, x2, y2: cy - off, stroke, \"stroke-width\": sw }) +\n lineEl({ x1, y1: cy + off, x2, y2: cy + off, stroke, \"stroke-width\": sw })\n );\n }\n\n if (item.pattern === \"wavy\") {\n const amp = Math.min(h / 3, 3);\n const period = 6;\n const segs: string[] = [`M ${x1} ${cy}`];\n let sx = x1;\n let up = true;\n while (sx < x2) {\n const nx = Math.min(sx + period, x2);\n segs.push(`Q ${sx + period / 2} ${cy + (up ? -amp : amp)} ${nx} ${cy}`);\n sx = nx;\n up = !up;\n }\n return pathEl({ d: segs.join(\" \"), fill: \"none\", stroke, \"stroke-width\": sw });\n }\n\n const attrs: Record<string, string | number> = {\n x1,\n y1: cy,\n x2,\n y2: cy,\n stroke,\n \"stroke-width\": sw,\n \"stroke-linecap\": \"round\",\n };\n if (dash) attrs[\"stroke-dasharray\"] = dash;\n return lineEl(attrs);\n}\n\nfunction renderMarkerSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const cx = x + w / 2;\n const cy = y + h / 2;\n const color = item.color ?? theme.text;\n const marker = item.marker ?? \"dot\";\n switch (marker) {\n case \"X\":\n case \"x\": {\n const r = Math.min(w, h) / 3;\n return (\n lineEl({ x1: cx - r, y1: cy - r, x2: cx + r, y2: cy + r, stroke: color, \"stroke-width\": 1.6, \"stroke-linecap\": \"round\" }) +\n lineEl({ x1: cx + r, y1: cy - r, x2: cx - r, y2: cy + r, stroke: color, \"stroke-width\": 1.6, \"stroke-linecap\": \"round\" })\n );\n }\n case \"arrow\": {\n const x1 = x + 2;\n const x2 = x + w - 4;\n return (\n lineEl({ x1, y1: cy, x2, y2: cy, stroke: color, \"stroke-width\": 1.6, \"stroke-linecap\": \"round\" }) +\n polygon({ points: `${x2},${cy - 3} ${x + w - 1},${cy} ${x2},${cy + 3}`, fill: color })\n );\n }\n case \"star\":\n return textEl(\n { x: cx, y: cy + 4, \"text-anchor\": \"middle\", \"font-size\": 14, fill: color },\n \"★\"\n );\n case \"slash\":\n return lineEl({\n x1: cx - 4, y1: cy + 5,\n x2: cx + 4, y2: cy - 5,\n stroke: color, \"stroke-width\": 1.6,\n });\n case \"P\":\n case \"C\":\n case \"E\":\n return textEl(\n { x: cx, y: cy + 4, \"text-anchor\": \"middle\", \"font-size\": 11, \"font-weight\": \"bold\", fill: color },\n marker\n );\n case \"dot\":\n default:\n return circle({ cx, cy, r: 3, fill: color });\n }\n}\n\nfunction renderEdgeSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const linePart = renderLineSwatch(item, x, y, w, h, theme);\n if (!item.marker) return linePart;\n return linePart + renderMarkerSwatch(item, x + w - 8, y, 12, h, theme);\n}\n\nfunction patternDasharray(p: LegendLinePattern | undefined): string | null {\n switch (p) {\n case \"dashed\":\n return \"5,3\";\n case \"dotted\":\n return \"1.5,3\";\n case \"broken\":\n return \"2,8\";\n case \"zigzag\":\n return \"8,3,2,3\";\n case \"solid\":\n case undefined:\n return null;\n default:\n return null;\n }\n}\n\n// ─── Style block ─────────────────────────────────────────────\n\nfunction buildStyleBlock(theme: BaseTheme, fontFamily: string): string {\n const css = `\n.schematex-legend { font-family: ${fontFamily}; }\n.schematex-legend-title { font-size: ${TITLE_FONT_SIZE}px; font-weight: 700; fill: ${theme.text}; }\n.schematex-legend-section { font-size: ${SECTION_FONT_SIZE}px; font-weight: 600; fill: ${theme.textMuted}; letter-spacing: 0.6px; }\n.schematex-legend-label { font-size: ${FONT_SIZE}px; fill: ${theme.text}; dominant-baseline: alphabetic; }\n`;\n return el(\"style\", {}, css);\n}\n\nfunction capitalize(s: string): string {\n if (!s) return s;\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n"]}
1
+ {"version":3,"sources":["../src/core/legend-parser.ts","../src/core/legend.ts"],"names":["line","text","group","circle","polygon","rect","path","el"],"mappings":"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","file":"chunk-5UCXMYE7.cjs","sourcesContent":["/**\n * Shared DSL directive parser for the unified Legend system.\n *\n * Diagram parsers call `parseLegendDirective(line, overrides)` for each\n * non-content line. If the line is a `legend.*` directive, it is consumed\n * (overrides mutated in place) and the function returns true. Otherwise it\n * returns false and the caller continues normal parsing.\n *\n * Recognized forms (see docs/reference/LEGEND-SYSTEM.md):\n *\n * legend: on | off | <position> | on <position>\n * legend.title: \"...\"\n * legend.position: <position>\n * legend.columns: <n>\n * legend.label <key>: \"...\"\n * legend.hide: a, b, c\n * legend.section <id>: \"...\"\n * legend.section <id>.hide: true|false\n * legend.item <id>: \"...\" (kind: ..., color: ..., pattern: ..., shape: ..., marker: ..., section: ...)\n */\n\nimport type {\n LegendItem,\n LegendItemKind,\n LegendLinePattern,\n LegendOverrides,\n LegendPosition,\n} from \"./types\";\n\nconst VALID_POSITIONS: ReadonlySet<LegendPosition> = new Set<LegendPosition>([\n \"top-left\",\n \"top-right\",\n \"bottom-left\",\n \"bottom-right\",\n \"outside-right\",\n \"outside-bottom\",\n \"right\",\n \"bottom-center\",\n \"none\",\n]);\n\nconst VALID_KINDS: ReadonlySet<LegendItemKind> = new Set<LegendItemKind>([\n \"shape\",\n \"fill\",\n \"fill-pattern\",\n \"line\",\n \"marker\",\n \"edge\",\n]);\n\nconst VALID_PATTERNS: ReadonlySet<LegendLinePattern> = new Set<LegendLinePattern>([\n \"solid\",\n \"dashed\",\n \"dotted\",\n \"double\",\n \"wavy\",\n \"zigzag\",\n \"broken\",\n]);\n\nexport function parseLegendDirective(\n rawLine: string,\n overrides: LegendOverrides\n): boolean {\n const line = rawLine.trim();\n if (!line.toLowerCase().startsWith(\"legend\")) return false;\n\n // `legend: ...` shorthand (toggle / position keyword)\n const masterMatch = line.match(/^legend\\s*:\\s*(.+)$/i);\n if (masterMatch && !line.toLowerCase().startsWith(\"legend.\")) {\n return applyMaster(masterMatch[1].trim(), overrides);\n }\n\n // `legend.title: \"...\"`\n const titleMatch = line.match(/^legend\\.title\\s*:\\s*(.+)$/i);\n if (titleMatch) {\n overrides.title = unquote(titleMatch[1].trim());\n return true;\n }\n\n // `legend.position: <pos>`\n const posMatch = line.match(/^legend\\.position\\s*:\\s*(.+)$/i);\n if (posMatch) {\n const pos = posMatch[1].trim().toLowerCase();\n if (VALID_POSITIONS.has(pos as LegendPosition)) {\n overrides.position = pos as LegendPosition;\n return true;\n }\n return false;\n }\n\n // `legend.columns: N`\n const colsMatch = line.match(/^legend\\.columns\\s*:\\s*(\\d+)\\s*$/i);\n if (colsMatch) {\n overrides.columns = Number.parseInt(colsMatch[1], 10);\n return true;\n }\n\n // `legend.label <key>: \"...\"`\n const labelMatch = line.match(/^legend\\.label\\s+([^\\s:]+)\\s*:\\s*(.+)$/i);\n if (labelMatch) {\n overrides.labels ??= {};\n overrides.labels[labelMatch[1]] = unquote(labelMatch[2].trim());\n return true;\n }\n\n // `legend.hide: a, b, c`\n const hideMatch = line.match(/^legend\\.hide\\s*:\\s*(.+)$/i);\n if (hideMatch) {\n const keys = hideMatch[1]\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n overrides.hide = (overrides.hide ?? []).concat(keys);\n return true;\n }\n\n // `legend.section <id>.hide: true|false`\n const sectionHideMatch = line.match(\n /^legend\\.section\\s+([^\\s.]+)\\.hide\\s*:\\s*(true|false)\\s*$/i\n );\n if (sectionHideMatch) {\n const id = sectionHideMatch[1];\n const flag = sectionHideMatch[2].toLowerCase() === \"true\";\n overrides.sections ??= {};\n overrides.sections[id] = { ...(overrides.sections[id] ?? {}), hidden: flag };\n return true;\n }\n\n // `legend.section <id>: \"...\"` (rename)\n const sectionMatch = line.match(/^legend\\.section\\s+([^\\s:]+)\\s*:\\s*(.+)$/i);\n if (sectionMatch) {\n const id = sectionMatch[1];\n overrides.sections ??= {};\n overrides.sections[id] = {\n ...(overrides.sections[id] ?? {}),\n title: unquote(sectionMatch[2].trim()),\n };\n return true;\n }\n\n // `legend.item <id>: \"label\" (kind: X, color: Y, ...)`\n const itemMatch = line.match(\n /^legend\\.item\\s+([^\\s:]+)\\s*:\\s*\"([^\"]*)\"\\s*(?:\\(([^)]*)\\))?\\s*$/i\n );\n if (itemMatch) {\n const item = buildItem(itemMatch[1], itemMatch[2], itemMatch[3]);\n if (item) {\n overrides.added ??= [];\n overrides.added.push(item);\n return true;\n }\n }\n\n return false;\n}\n\nfunction applyMaster(value: string, overrides: LegendOverrides): boolean {\n const parts = value.split(/\\s+/).filter(Boolean);\n let consumed = false;\n for (const tok of parts) {\n const t = tok.toLowerCase();\n if (t === \"on\" || t === \"off\" || t === \"auto\") {\n overrides.mode = t;\n consumed = true;\n } else if (VALID_POSITIONS.has(t as LegendPosition)) {\n overrides.position = t as LegendPosition;\n // A position keyword implies on (unless explicitly off)\n if (overrides.mode !== \"off\") overrides.mode = \"on\";\n consumed = true;\n } else {\n return false;\n }\n }\n return consumed;\n}\n\nfunction buildItem(\n id: string,\n label: string,\n attrsRaw: string | undefined\n): LegendItem | null {\n const item: LegendItem = { key: id, label, kind: \"fill\" };\n if (!attrsRaw) return item;\n\n for (const part of attrsRaw.split(\",\")) {\n const eq = part.indexOf(\":\");\n if (eq < 0) continue;\n const k = part.slice(0, eq).trim().toLowerCase();\n const v = part.slice(eq + 1).trim();\n switch (k) {\n case \"kind\":\n if (VALID_KINDS.has(v as LegendItemKind)) item.kind = v as LegendItemKind;\n else return null;\n break;\n case \"color\":\n item.color = v;\n break;\n case \"color2\":\n item.color2 = v;\n break;\n case \"pattern\":\n if (VALID_PATTERNS.has(v as LegendLinePattern))\n item.pattern = v as LegendLinePattern;\n break;\n case \"shape\":\n item.shape = v;\n break;\n case \"marker\":\n item.marker = v;\n break;\n case \"section\":\n item.section = v;\n break;\n case \"stroke-width\":\n case \"strokewidth\": {\n const n = Number.parseFloat(v);\n if (Number.isFinite(n)) item.strokeWidth = n;\n break;\n }\n default:\n // Unknown attribute — ignore silently to keep DSL forward-compatible.\n break;\n }\n }\n return item;\n}\n\nfunction unquote(s: string): string {\n const m = s.match(/^\"(.*)\"$/);\n return m ? m[1] : s;\n}\n","/**\n * Shared legend renderer.\n *\n * Pipeline:\n * buildXxxLegend(ast, theme) → auto LegendSpec\n * applyLegendOverrides(spec, o) → final LegendSpec\n * renderLegend(spec, ...) → { svg, bbox }\n *\n * Standard positions (others are silently aliased):\n * - \"bottom-inline\" (default) horizontal strip below the diagram, no box.\n * - \"bottom-right\" compact overlay anchored at bottom-right corner.\n * - \"none\" not rendered.\n */\n\nimport type { BaseTheme } from \"./theme\";\nimport type {\n LegendItem,\n LegendLinePattern,\n LegendOverrides,\n LegendPosition,\n LegendSection,\n LegendSpec,\n} from \"./types\";\nimport {\n el,\n group,\n rect,\n circle,\n line as lineEl,\n path as pathEl,\n polygon,\n text as textEl,\n} from \"./svg\";\n\n// ─── Public API ──────────────────────────────────────────────\n\nexport function applyLegendOverrides(\n auto: LegendSpec,\n overrides: LegendOverrides | undefined\n): LegendSpec {\n if (!overrides) return resolveAuto(auto);\n\n const sections = auto.sections.map((s) => {\n const o = overrides.sections?.[s.id];\n if (!o) return s;\n return { ...s, title: o.title ?? s.title, hidden: o.hidden ?? s.hidden };\n });\n\n const hideSet = new Set<string>(overrides.hide ?? []);\n const hiddenSectionIds = new Set<string>(\n sections.filter((s) => s.hidden).map((s) => s.id)\n );\n\n const baseItems = auto.items.filter((it) => {\n if (hideSet.has(it.key)) return false;\n if (it.section && hiddenSectionIds.has(it.section)) return false;\n return true;\n });\n\n const renamedBase = baseItems.map((it) => {\n const newLabel = overrides.labels?.[it.key];\n return newLabel === undefined ? it : { ...it, label: newLabel };\n });\n\n const added = (overrides.added ?? []).map((it) => ({\n ...it,\n section: it.section ?? \"custom\",\n }));\n\n let finalSections = sections;\n if (added.some((it) => it.section === \"custom\") &&\n !finalSections.some((s) => s.id === \"custom\")) {\n finalSections = [...finalSections, { id: \"custom\", title: \"Custom\" }];\n }\n\n const items = [...renamedBase, ...added];\n\n let mode = overrides.mode ?? auto.mode;\n if (mode === \"auto\") mode = items.length > 0 ? \"on\" : \"off\";\n\n return {\n mode,\n title: overrides.title ?? auto.title,\n position: overrides.position ?? auto.position,\n columns: overrides.columns ?? auto.columns,\n sections: finalSections,\n items,\n };\n}\n\nfunction resolveAuto(spec: LegendSpec): LegendSpec {\n if (spec.mode !== \"auto\") return spec;\n return { ...spec, mode: spec.items.length > 0 ? \"on\" : \"off\" };\n}\n\nexport interface LegendRenderResult {\n svg: string;\n bbox: { x: number; y: number; w: number; h: number };\n}\n\nexport interface LegendAnchor {\n canvasWidth: number;\n canvasHeight: number;\n /** Side margin from the canvas edge. Default 16. */\n padding?: number;\n /** Top offset reserved for diagram title (used by bottom-right anchoring). */\n titleHeight?: number;\n}\n\nexport interface LegendRenderConfig {\n fontFamily: string;\n fontSize: number;\n}\n\nconst ZERO_BBOX = { x: 0, y: 0, w: 0, h: 0 } as const;\n\n// Standardize legacy positions onto one of the 3 supported placements.\nfunction normalizePosition(p: LegendPosition): \"bottom-inline\" | \"bottom-right\" | \"none\" {\n switch (p) {\n case \"bottom-inline\":\n case \"outside-bottom\":\n case \"bottom-left\":\n case \"bottom-center\":\n return \"bottom-inline\";\n case \"bottom-right\":\n case \"outside-right\":\n case \"right\":\n case \"top-right\":\n case \"top-left\":\n return \"bottom-right\";\n case \"none\":\n default:\n return p === \"none\" ? \"none\" : \"bottom-inline\";\n }\n}\n\nconst FONT_SIZE = 11;\nconst SECTION_FONT_SIZE = 9;\nconst TITLE_FONT_SIZE = 12;\nconst SWATCH_W = 22;\nconst SWATCH_H = 12;\nconst SWATCH_LABEL_GAP = 8;\nconst ITEM_GAP = 18;\nconst SECTION_LABEL_GAP = 14;\nconst ROW_H = 18;\nconst INLINE_TOP_GAP = 14;\nconst INLINE_BOTTOM_PAD = 8;\nconst CARD_PAD = 4;\n// Width estimates per character (account for measured rendering, not just font-size).\nconst CHAR_W = FONT_SIZE * 0.6;\n// Section labels are uppercase with 0.6px letter-spacing → bigger glyph footprint.\nconst SECTION_CHAR_W = SECTION_FONT_SIZE * 0.85;\nconst TITLE_CHAR_W = TITLE_FONT_SIZE * 0.65;\n// Minimum effective canvas width for bottom-inline layout. If the diagram is\n// narrower, the legend (and the SVG viewBox) is widened to this value to avoid\n// excessive wrapping into 5+ rows.\nconst MIN_INLINE_WIDTH = 480;\n\nexport function renderLegend(\n spec: LegendSpec,\n anchor: LegendAnchor,\n theme: BaseTheme,\n config: LegendRenderConfig\n): LegendRenderResult {\n if (spec.mode === \"off\" || spec.position === \"none\" || spec.items.length === 0) {\n return { svg: \"\", bbox: { ...ZERO_BBOX } };\n }\n\n const padding = anchor.padding ?? 16;\n const layout = normalizePosition(spec.position);\n\n // Group items by section, preserving order.\n const itemsBySection = new Map<string, LegendItem[]>();\n for (const it of spec.items) {\n const sid = it.section ?? \"_default\";\n const arr = itemsBySection.get(sid) ?? [];\n arr.push(it);\n itemsBySection.set(sid, arr);\n }\n\n const declared = spec.sections.length\n ? spec.sections.filter(\n (s) => !s.hidden && (itemsBySection.get(s.id)?.length ?? 0) > 0\n )\n : [{ id: \"_default\", title: \"\" } as LegendSection];\n\n const declaredIds = new Set(declared.map((s) => s.id));\n const orderedSections: LegendSection[] = [...declared];\n for (const [sid] of itemsBySection) {\n if (!declaredIds.has(sid) && (itemsBySection.get(sid)?.length ?? 0) > 0) {\n orderedSections.push({ id: sid, title: capitalize(sid) });\n }\n }\n\n const showTitle = !!spec.title && spec.title !== \"Legend\";\n\n if (layout === \"bottom-inline\") {\n return renderBottomInline(\n spec,\n orderedSections,\n itemsBySection,\n anchor,\n theme,\n config,\n padding,\n showTitle\n );\n }\n return renderBottomRight(\n spec,\n orderedSections,\n itemsBySection,\n anchor,\n theme,\n config,\n padding,\n showTitle\n );\n}\n\n// ─── bottom-inline: horizontal flow strip below canvas ───────\n//\n// Layout rules:\n// - Each section gets its own row (or rows). Sections never share a row.\n// - All sections share a fixed left \"label column\" so swatches line up.\n// - Items wrap within a section if they don't fit in one row; the\n// continuation row is indented past the label column.\n// - Optional title (when explicitly set by user) is rendered as its own\n// leading row, also left-aligned in the label column.\n// - If canvas is narrower than MIN_INLINE_WIDTH, the legend is rendered\n// at MIN_INLINE_WIDTH and the bbox reflects this — caller grows viewBox.\n\nfunction renderBottomInline(\n spec: LegendSpec,\n sections: LegendSection[],\n bySection: Map<string, LegendItem[]>,\n anchor: LegendAnchor,\n theme: BaseTheme,\n config: LegendRenderConfig,\n padding: number,\n showTitle: boolean\n): LegendRenderResult {\n const effectiveCanvasW = Math.max(anchor.canvasWidth, MIN_INLINE_WIDTH);\n const startX = padding;\n const endX = effectiveCanvasW - padding;\n const availW = Math.max(120, endX - startX);\n const startY = anchor.canvasHeight + INLINE_TOP_GAP;\n\n // Determine label-column width: max of all section label widths (uppercase).\n let labelColW = 0;\n for (const s of sections) {\n if (!s.title || s.id === \"_default\") continue;\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n const lw = SECTION_CHAR_W * s.title.length;\n if (lw > labelColW) labelColW = lw;\n }\n if (showTitle) {\n const tw = TITLE_CHAR_W * spec.title.length;\n if (tw > labelColW) labelColW = tw;\n }\n // Add right-side gap between label column and items.\n const itemColX = labelColW > 0 ? labelColW + SECTION_LABEL_GAP : 0;\n const itemAvailW = Math.max(80, availW - itemColX);\n\n function itemWidth(it: LegendItem): number {\n return SWATCH_W + SWATCH_LABEL_GAP + Math.ceil(it.label.length * CHAR_W);\n }\n\n // For each section, pack its items into rows that fit in itemAvailW.\n type SectionRows = {\n label: string | null;\n rows: { item: LegendItem; x: number }[][];\n };\n const sectionRows: SectionRows[] = [];\n\n if (showTitle) {\n sectionRows.push({ label: spec.title, rows: [[]] }); // title-only row\n // Title is rendered without items; we'll treat the title text via labelCol.\n }\n\n for (const s of sections) {\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n const rows: { item: LegendItem; x: number }[][] = [];\n let row: { item: LegendItem; x: number }[] = [];\n let cursor = 0;\n for (const it of items) {\n const w = itemWidth(it);\n const gap = row.length > 0 ? ITEM_GAP : 0;\n if (cursor > 0 && cursor + gap + w > itemAvailW) {\n rows.push(row);\n row = [];\n cursor = 0;\n }\n const x = cursor + (cursor > 0 ? gap : 0);\n row.push({ item: it, x });\n cursor = x + w;\n }\n if (row.length > 0) rows.push(row);\n const label = s.title && s.id !== \"_default\" ? s.title.toUpperCase() : null;\n sectionRows.push({ label, rows });\n }\n\n // Build SVG.\n const out: string[] = [];\n out.push(buildStyleBlock(theme, config.fontFamily));\n\n let cursorY = startY;\n let usedRight = 0;\n\n for (let si = 0; si < sectionRows.length; si++) {\n const sec = sectionRows[si];\n const isTitleRow = showTitle && si === 0;\n for (let ri = 0; ri < sec.rows.length; ri++) {\n const yMid = cursorY + ROW_H / 2;\n const labelBaseline = yMid + FONT_SIZE / 2 - 2;\n const sectionBaseline = yMid + SECTION_FONT_SIZE / 2 - 1;\n const titleBaseline = yMid + TITLE_FONT_SIZE / 2 - 2;\n\n // Section/title label only on the first row of the section.\n if (ri === 0) {\n if (isTitleRow && sec.label) {\n out.push(\n textEl(\n { x: startX, y: titleBaseline, class: \"schematex-legend-title\" },\n sec.label\n )\n );\n const w = TITLE_CHAR_W * sec.label.length;\n if (startX + w > usedRight) usedRight = startX + w;\n } else if (sec.label) {\n out.push(\n textEl(\n { x: startX, y: sectionBaseline, class: \"schematex-legend-section\" },\n sec.label\n )\n );\n }\n }\n\n for (const cell of sec.rows[ri]) {\n const cx = startX + itemColX + cell.x;\n const swatchY = yMid - SWATCH_H / 2;\n const swatch = renderSwatch(cell.item, cx, swatchY, SWATCH_W, SWATCH_H, theme);\n const label = textEl(\n {\n x: cx + SWATCH_W + SWATCH_LABEL_GAP,\n y: labelBaseline,\n class: \"schematex-legend-label\",\n },\n cell.item.label\n );\n out.push(\n group(\n {\n class: \"schematex-legend-row\",\n \"data-legend-key\": cell.item.key,\n \"data-legend-section\": cell.item.section ?? \"\",\n },\n [swatch, label]\n )\n );\n const right = cx + itemWidth(cell.item);\n if (right > usedRight) usedRight = right;\n }\n\n cursorY += ROW_H;\n }\n }\n\n const totalRows = sectionRows.reduce(\n (sum, sec) => sum + Math.max(1, sec.rows.length),\n 0\n );\n\n // Force right edge to at least the effective canvas right padding so the\n // caller's viewBox grows to include any min-width expansion.\n const minRight = effectiveCanvasW - padding;\n if (minRight > usedRight) usedRight = minRight;\n\n const svg = group({ class: \"schematex-legend\" }, out);\n const bbox = {\n x: startX,\n y: startY,\n w: usedRight - startX,\n h: totalRows * ROW_H + INLINE_BOTTOM_PAD,\n };\n return { svg, bbox };\n}\n\n// ─── bottom-right: compact overlay card (no box) ─────────────\n\nfunction renderBottomRight(\n spec: LegendSpec,\n sections: LegendSection[],\n bySection: Map<string, LegendItem[]>,\n anchor: LegendAnchor,\n theme: BaseTheme,\n config: LegendRenderConfig,\n padding: number,\n showTitle: boolean\n): LegendRenderResult {\n // Measure box width.\n let maxRowW = 0;\n if (showTitle) {\n maxRowW = Math.max(maxRowW, TITLE_CHAR_W * spec.title.length);\n }\n for (const s of sections) {\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n if (s.title && s.id !== \"_default\") {\n maxRowW = Math.max(maxRowW, SECTION_CHAR_W * s.title.length);\n }\n for (const it of items) {\n const w = SWATCH_W + SWATCH_LABEL_GAP + Math.ceil(it.label.length * CHAR_W);\n if (w > maxRowW) maxRowW = w;\n }\n }\n const boxW = maxRowW + CARD_PAD * 2;\n\n // Measure rows.\n let rowCount = 0;\n if (showTitle) rowCount++;\n for (const s of sections) {\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n if (s.title && s.id !== \"_default\") rowCount++;\n rowCount += items.length;\n }\n const boxH = rowCount * ROW_H + CARD_PAD * 2;\n\n const x = anchor.canvasWidth - boxW - padding;\n const y = anchor.canvasHeight - boxH - padding;\n\n const out: string[] = [];\n out.push(buildStyleBlock(theme, config.fontFamily));\n\n let cursorY = y + CARD_PAD;\n if (showTitle) {\n cursorY += ROW_H / 2;\n out.push(\n textEl(\n {\n x: x + CARD_PAD,\n y: cursorY + TITLE_FONT_SIZE / 2 - 2,\n class: \"schematex-legend-title\",\n },\n spec.title\n )\n );\n cursorY += ROW_H / 2;\n }\n for (const s of sections) {\n const items = bySection.get(s.id) ?? [];\n if (items.length === 0) continue;\n if (s.title && s.id !== \"_default\") {\n cursorY += ROW_H / 2;\n out.push(\n textEl(\n {\n x: x + CARD_PAD,\n y: cursorY + SECTION_FONT_SIZE / 2 - 1,\n class: \"schematex-legend-section\",\n },\n s.title.toUpperCase()\n )\n );\n cursorY += ROW_H / 2;\n }\n for (const it of items) {\n const yMid = cursorY + ROW_H / 2;\n const swatchY = yMid - SWATCH_H / 2;\n const swatch = renderSwatch(it, x + CARD_PAD, swatchY, SWATCH_W, SWATCH_H, theme);\n const label = textEl(\n {\n x: x + CARD_PAD + SWATCH_W + SWATCH_LABEL_GAP,\n y: yMid + FONT_SIZE / 2 - 2,\n class: \"schematex-legend-label\",\n },\n it.label\n );\n out.push(\n group(\n {\n class: \"schematex-legend-row\",\n \"data-legend-key\": it.key,\n \"data-legend-section\": it.section ?? \"\",\n },\n [swatch, label]\n )\n );\n cursorY += ROW_H;\n }\n }\n\n const svg = group({ class: \"schematex-legend\" }, out);\n return { svg, bbox: { x, y, w: boxW, h: boxH } };\n}\n\n// ─── Swatch primitives ───────────────────────────────────────\n\nfunction renderSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n switch (item.kind) {\n case \"shape\":\n return renderShapeSwatch(item, x, y, w, h, theme);\n case \"fill\":\n return renderFillSwatch(item, x, y, w, h, theme);\n case \"fill-pattern\":\n return renderFillPatternSwatch(item, x, y, w, h, theme);\n case \"line\":\n return renderLineSwatch(item, x, y, w, h, theme);\n case \"marker\":\n return renderMarkerSwatch(item, x, y, w, h, theme);\n case \"edge\":\n return renderEdgeSwatch(item, x, y, w, h, theme);\n default:\n return renderFillSwatch(item, x, y, w, h, theme);\n }\n}\n\nfunction renderShapeSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const shape = item.shape ?? \"square\";\n const cx = x + w / 2;\n const cy = y + h / 2;\n // Resolution rule:\n // - if item.fill is set: it wins for fill, item.color (if any) is stroke, else theme.stroke.\n // - else: item.color (if any) is fill, theme.stroke is stroke.\n const usedFill = item.fill ?? item.color ?? theme.fill;\n const usedStroke = item.fill !== undefined ? (item.color ?? theme.stroke) : theme.stroke;\n const innerR = Math.min(w, h) / 2 - 1;\n switch (shape) {\n case \"circle\":\n return circle({ cx, cy, r: innerR, fill: usedFill, stroke: usedStroke });\n case \"diamond\": {\n return polygon({\n points: `${cx},${cy - innerR} ${cx + innerR},${cy} ${cx},${cy + innerR} ${cx - innerR},${cy}`,\n fill: usedFill,\n stroke: usedStroke,\n });\n }\n case \"triangle\": {\n return polygon({\n points: `${cx},${cy - innerR} ${cx + innerR},${cy + innerR * 0.8} ${cx - innerR},${cy + innerR * 0.8}`,\n fill: usedFill,\n stroke: usedStroke,\n });\n }\n case \"concentric-square\": {\n const inner = rect({\n x: x + 3,\n y: y + 3,\n width: w - 6,\n height: h - 6,\n fill: usedFill,\n stroke: usedStroke,\n });\n const outer = rect({\n x: x + 1,\n y: y + 1,\n width: w - 2,\n height: h - 2,\n fill: \"none\",\n stroke: usedStroke,\n \"stroke-width\": 1.2,\n });\n return inner + outer;\n }\n case \"concentric-circle\": {\n const innerC = circle({\n cx,\n cy,\n r: innerR - 2,\n fill: usedFill,\n stroke: usedStroke,\n });\n const outerC = circle({\n cx,\n cy,\n r: innerR,\n fill: \"none\",\n stroke: usedStroke,\n \"stroke-width\": 1.2,\n });\n return innerC + outerC;\n }\n case \"square\":\n default:\n return rect({\n x: x + 1,\n y: y + 1,\n width: w - 2,\n height: h - 2,\n fill: usedFill,\n stroke: usedStroke,\n });\n }\n}\n\nfunction renderFillSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n return rect({\n x: x + 1,\n y: y + 1,\n width: w - 2,\n height: h - 2,\n fill: item.color ?? theme.fill,\n stroke: theme.stroke,\n });\n}\n\nfunction renderFillPatternSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const pattern = item.shape ?? \"full\";\n const innerX = x + 1;\n const innerY = y + 1;\n const innerW = w - 2;\n const innerH = h - 2;\n const color = item.color ?? theme.fill;\n const color2 = item.color2 ?? \"transparent\";\n const stroke = theme.stroke;\n\n const baseRect = rect({\n x: innerX,\n y: innerY,\n width: innerW,\n height: innerH,\n fill: color2,\n stroke,\n });\n\n switch (pattern) {\n case \"half-left\":\n return baseRect + rect({ x: innerX, y: innerY, width: innerW / 2, height: innerH, fill: color });\n case \"half-right\":\n return baseRect + rect({ x: innerX + innerW / 2, y: innerY, width: innerW / 2, height: innerH, fill: color });\n case \"half-top\":\n return baseRect + rect({ x: innerX, y: innerY, width: innerW, height: innerH / 2, fill: color });\n case \"half-bottom\":\n return baseRect + rect({ x: innerX, y: innerY + innerH / 2, width: innerW, height: innerH / 2, fill: color });\n case \"quad-tl\":\n return baseRect + rect({ x: innerX, y: innerY, width: innerW / 2, height: innerH / 2, fill: color });\n case \"quad-tr\":\n return baseRect + rect({ x: innerX + innerW / 2, y: innerY, width: innerW / 2, height: innerH / 2, fill: color });\n case \"quad-bl\":\n return baseRect + rect({ x: innerX, y: innerY + innerH / 2, width: innerW / 2, height: innerH / 2, fill: color });\n case \"quad-br\":\n return baseRect + rect({ x: innerX + innerW / 2, y: innerY + innerH / 2, width: innerW / 2, height: innerH / 2, fill: color });\n case \"striped\":\n case \"carrier\": {\n const stripes: string[] = [baseRect];\n const stripeW = 2;\n for (let sx = innerX; sx < innerX + innerW; sx += stripeW * 2) {\n stripes.push(rect({\n x: sx,\n y: innerY,\n width: Math.min(stripeW, innerX + innerW - sx),\n height: innerH,\n fill: color,\n }));\n }\n return stripes.join(\"\");\n }\n case \"dotted\": {\n const dots: string[] = [baseRect];\n const cy = innerY + innerH / 2;\n for (let dx = innerX + 3; dx < innerX + innerW - 1; dx += 4) {\n dots.push(circle({ cx: dx, cy, r: 1, fill: color }));\n }\n return dots.join(\"\");\n }\n case \"full\":\n default:\n return rect({\n x: innerX,\n y: innerY,\n width: innerW,\n height: innerH,\n fill: color,\n stroke,\n });\n }\n}\n\nfunction renderLineSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const cy = y + h / 2;\n const x1 = x + 1;\n const x2 = x + w - 1;\n const stroke = item.color ?? theme.stroke;\n const sw = item.strokeWidth ?? 2;\n const dash = patternDasharray(item.pattern);\n\n if (item.pattern === \"double\") {\n const off = Math.max(2, sw);\n return (\n lineEl({ x1, y1: cy - off, x2, y2: cy - off, stroke, \"stroke-width\": sw }) +\n lineEl({ x1, y1: cy + off, x2, y2: cy + off, stroke, \"stroke-width\": sw })\n );\n }\n\n if (item.pattern === \"wavy\") {\n const amp = Math.min(h / 3, 3);\n const period = 6;\n const segs: string[] = [`M ${x1} ${cy}`];\n let sx = x1;\n let up = true;\n while (sx < x2) {\n const nx = Math.min(sx + period, x2);\n segs.push(`Q ${sx + period / 2} ${cy + (up ? -amp : amp)} ${nx} ${cy}`);\n sx = nx;\n up = !up;\n }\n return pathEl({ d: segs.join(\" \"), fill: \"none\", stroke, \"stroke-width\": sw });\n }\n\n const attrs: Record<string, string | number> = {\n x1,\n y1: cy,\n x2,\n y2: cy,\n stroke,\n \"stroke-width\": sw,\n \"stroke-linecap\": \"round\",\n };\n if (dash) attrs[\"stroke-dasharray\"] = dash;\n return lineEl(attrs);\n}\n\nfunction renderMarkerSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const cx = x + w / 2;\n const cy = y + h / 2;\n const color = item.color ?? theme.text;\n const marker = item.marker ?? \"dot\";\n switch (marker) {\n case \"X\":\n case \"x\": {\n const r = Math.min(w, h) / 3;\n return (\n lineEl({ x1: cx - r, y1: cy - r, x2: cx + r, y2: cy + r, stroke: color, \"stroke-width\": 1.6, \"stroke-linecap\": \"round\" }) +\n lineEl({ x1: cx + r, y1: cy - r, x2: cx - r, y2: cy + r, stroke: color, \"stroke-width\": 1.6, \"stroke-linecap\": \"round\" })\n );\n }\n case \"arrow\": {\n const x1 = x + 2;\n const x2 = x + w - 4;\n return (\n lineEl({ x1, y1: cy, x2, y2: cy, stroke: color, \"stroke-width\": 1.6, \"stroke-linecap\": \"round\" }) +\n polygon({ points: `${x2},${cy - 3} ${x + w - 1},${cy} ${x2},${cy + 3}`, fill: color })\n );\n }\n case \"star\":\n return textEl(\n { x: cx, y: cy + 4, \"text-anchor\": \"middle\", \"font-size\": 14, fill: color },\n \"★\"\n );\n case \"slash\":\n return lineEl({\n x1: cx - 4, y1: cy + 5,\n x2: cx + 4, y2: cy - 5,\n stroke: color, \"stroke-width\": 1.6,\n });\n case \"P\":\n case \"C\":\n case \"E\":\n return textEl(\n { x: cx, y: cy + 4, \"text-anchor\": \"middle\", \"font-size\": 11, \"font-weight\": \"bold\", fill: color },\n marker\n );\n case \"dot\":\n default:\n return circle({ cx, cy, r: 3, fill: color });\n }\n}\n\nfunction renderEdgeSwatch(\n item: LegendItem,\n x: number,\n y: number,\n w: number,\n h: number,\n theme: BaseTheme\n): string {\n const linePart = renderLineSwatch(item, x, y, w, h, theme);\n if (!item.marker) return linePart;\n return linePart + renderMarkerSwatch(item, x + w - 8, y, 12, h, theme);\n}\n\nfunction patternDasharray(p: LegendLinePattern | undefined): string | null {\n switch (p) {\n case \"dashed\":\n return \"5,3\";\n case \"dotted\":\n return \"1.5,3\";\n case \"broken\":\n return \"2,8\";\n case \"zigzag\":\n return \"8,3,2,3\";\n case \"solid\":\n case undefined:\n return null;\n default:\n return null;\n }\n}\n\n// ─── Style block ─────────────────────────────────────────────\n\nfunction buildStyleBlock(theme: BaseTheme, fontFamily: string): string {\n const css = `\n.schematex-legend { font-family: ${fontFamily}; }\n.schematex-legend-title { font-size: ${TITLE_FONT_SIZE}px; font-weight: 700; fill: ${theme.text}; }\n.schematex-legend-section { font-size: ${SECTION_FONT_SIZE}px; font-weight: 600; fill: ${theme.textMuted}; letter-spacing: 0.6px; }\n.schematex-legend-label { font-size: ${FONT_SIZE}px; fill: ${theme.text}; dominant-baseline: alphabetic; }\n`;\n return el(\"style\", {}, css);\n}\n\nfunction capitalize(s: string): string {\n if (!s) return s;\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { el, group, text, circle, path, svgRoot, title, desc, defs } from './chunk-WHJXRLFD.js';
1
+ import { el, group, text, circle, path, svgRoot, title, desc, defs } from './chunk-SYYBKDL7.js';
2
2
 
3
3
  // src/diagrams/blockdiagram/parser.ts
4
4
  var BlockDiagramParseError = class extends Error {
@@ -802,5 +802,5 @@ var blockdiagram = {
802
802
  };
803
803
 
804
804
  export { blockdiagram, layoutBlockDiagram, parseBlockDiagram, renderBlockDiagram };
805
- //# sourceMappingURL=chunk-F6OROIHS.js.map
806
- //# sourceMappingURL=chunk-F6OROIHS.js.map
805
+ //# sourceMappingURL=chunk-66XQBGX7.js.map
806
+ //# sourceMappingURL=chunk-66XQBGX7.js.map