@diagrammo/dgmo 0.70.0 → 0.72.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.
Files changed (188) hide show
  1. package/README.md +2 -0
  2. package/dist/advanced.d.ts +37 -30
  3. package/dist/advanced.js +91 -91
  4. package/dist/block.js +47 -47
  5. package/dist/{calculator-GU4NVYE2.js → calculator-4CNL2GKU.js} +3 -3
  6. package/dist/{chart-meta-DNsYpNbh.d.ts → chart-meta-6JaOudSs.d.ts} +8 -1
  7. package/dist/chart-meta.d.ts +2 -2
  8. package/dist/chart-meta.js +42 -42
  9. package/dist/{charts-d3-HWKV46CS.js → charts-d3-6IHGTXBR.js} +5 -5
  10. package/dist/{chunk-YYVTBZZC.js → chunk-24YPR5EH.js} +1 -1
  11. package/dist/{chunk-USOLDMYO.js → chunk-2OTYNNHS.js} +6 -6
  12. package/dist/{chunk-SHS3O7ZZ.js → chunk-2VBJCTSG.js} +4 -4
  13. package/dist/{chunk-6WI76LHG.js → chunk-376ATV2Q.js} +19 -5
  14. package/dist/{chunk-PMDE3I53.js → chunk-3HN32MEK.js} +2 -2
  15. package/dist/{chunk-EHRME74D.js → chunk-3SNE4CLI.js} +3 -3
  16. package/dist/{chunk-V5VCGTS4.js → chunk-4VUFJ7UA.js} +3 -3
  17. package/dist/{chunk-7YCHRBD3.js → chunk-5DYDPP7K.js} +2 -2
  18. package/dist/{chunk-LK35AH5V.js → chunk-66VHK7PP.js} +5 -5
  19. package/dist/{chunk-R2VVBC52.js → chunk-6DGMS2WJ.js} +4 -4
  20. package/dist/{chunk-Z6G367CM.js → chunk-6OAKQTXQ.js} +3 -3
  21. package/dist/{chunk-IODPKTRZ.js → chunk-6PA32CUB.js} +2 -2
  22. package/dist/{chunk-VSZRPDIZ.js → chunk-6S53NO3M.js} +5 -2
  23. package/dist/{chunk-PP75ABA4.js → chunk-7BHM774H.js} +6 -6
  24. package/dist/{chunk-QRLNO6C7.js → chunk-7RAWNJI5.js} +192 -122
  25. package/dist/{chunk-YXW2ZYS3.js → chunk-7SEQPFBX.js} +38 -7
  26. package/dist/{chunk-VALNMR2Y.js → chunk-7TSBM4BV.js} +3 -3
  27. package/dist/{chunk-EDFUVEO6.js → chunk-7U3NDE7T.js} +7 -7
  28. package/dist/{chunk-3QLXP6QZ.js → chunk-AEYRSPVV.js} +2 -2
  29. package/dist/{chunk-BNJC5KVG.js → chunk-BYSRXYRW.js} +4 -4
  30. package/dist/{chunk-EC5USK74.js → chunk-DEVZWCD5.js} +17 -5
  31. package/dist/{chunk-FH3S7FDS.js → chunk-DHKVHP3Y.js} +5 -5
  32. package/dist/{chunk-PBXMUXBW.js → chunk-DPGI742S.js} +20 -2
  33. package/dist/{chunk-UFKFABSP.js → chunk-DZ34UUXC.js} +7 -7
  34. package/dist/{chunk-ASUFSCVV.js → chunk-E36Q5ABQ.js} +4 -4
  35. package/dist/{chunk-TJ5PDNGU.js → chunk-EETUTZ5C.js} +2 -2
  36. package/dist/{chunk-KVM4POFR.js → chunk-ELIGVSLE.js} +10 -3
  37. package/dist/{chunk-KSK6B35D.js → chunk-FFD6A3B2.js} +22 -5
  38. package/dist/{chunk-K3MUWASA.js → chunk-FLXDMH7B.js} +3 -3
  39. package/dist/{chunk-J3XFVPEU.js → chunk-FTPNAYL2.js} +18 -6
  40. package/dist/{chunk-UJ4FJLBF.js → chunk-FX2USYOU.js} +13 -1
  41. package/dist/{chunk-IOVJT4PE.js → chunk-GCTKJDLY.js} +5 -5
  42. package/dist/{chunk-WBPWR2CX.js → chunk-GK4AU57A.js} +4 -4
  43. package/dist/{chunk-5ECGBM5S.js → chunk-HKL66CKW.js} +25 -21
  44. package/dist/{chunk-Z4KRDDZC.js → chunk-HWNF22ZZ.js} +20 -15
  45. package/dist/{chunk-2QLYLYLN.js → chunk-HZQCKXPB.js} +70 -385
  46. package/dist/{chunk-ZCWEJ3VB.js → chunk-IXVK7XCN.js} +3 -3
  47. package/dist/{chunk-BQVCENFX.js → chunk-JIWDWOYA.js} +3 -3
  48. package/dist/{chunk-HAGHVHR7.js → chunk-K6MQJ5IV.js} +2 -2
  49. package/dist/{chunk-MOMPLSQI.js → chunk-KJWIU5AM.js} +2 -2
  50. package/dist/{chunk-65KNPZCC.js → chunk-KOVRFBGR.js} +25 -4
  51. package/dist/{chunk-B6MHT3A7.js → chunk-L3XB446I.js} +2 -2
  52. package/dist/{chunk-NZ2Z4ZEN.js → chunk-LSHROB27.js} +3 -3
  53. package/dist/{chunk-Q7UM3R3Y.js → chunk-LTGOPJUV.js} +2 -2
  54. package/dist/{chunk-MMYRNZRQ.js → chunk-MC2H32SM.js} +3 -3
  55. package/dist/{chunk-CE2Z3OXR.js → chunk-MFSTE3YG.js} +18 -4
  56. package/dist/{chunk-4FEPSBUH.js → chunk-MKNWMFZU.js} +15 -5
  57. package/dist/{chunk-FQ7OYKOS.js → chunk-MUVASOBD.js} +7 -7
  58. package/dist/{chunk-6NWCQCJV.js → chunk-MWWRIOEN.js} +2 -2
  59. package/dist/{chunk-HK3JTWG3.js → chunk-MX3BYU7V.js} +2 -2
  60. package/dist/{chunk-4CTCOHDS.js → chunk-N34OTOGH.js} +12 -3
  61. package/dist/{chunk-H4VRTBMS.js → chunk-N5247W2W.js} +59 -16
  62. package/dist/{chunk-76XAJN7L.js → chunk-NEC7R2CB.js} +2 -2
  63. package/dist/{chunk-56TCBKXP.js → chunk-NJKUTY4M.js} +3 -3
  64. package/dist/{chunk-D62K46CW.js → chunk-NNMNHE3J.js} +2 -2
  65. package/dist/{chunk-XDEVAAY4.js → chunk-NTBHGUXY.js} +13 -3
  66. package/dist/{chunk-YYFIZ3AO.js → chunk-NUF7YTHA.js} +2 -2
  67. package/dist/{chunk-TSY25V7W.js → chunk-O4OVVK6J.js} +4 -4
  68. package/dist/{chunk-R2UUKZ6R.js → chunk-P6RPHRX7.js} +4 -4
  69. package/dist/{chunk-AA6LBVBN.js → chunk-PBV2C3BW.js} +27 -6
  70. package/dist/{chunk-Y37EDBPR.js → chunk-PKTRDOBI.js} +3 -3
  71. package/dist/{chunk-CVMD5UWI.js → chunk-QAJFIXJE.js} +19 -5
  72. package/dist/{chunk-7LIDBQDO.js → chunk-QITH5XOX.js} +6 -6
  73. package/dist/{chunk-YA464EGR.js → chunk-QPG55HGH.js} +3 -3
  74. package/dist/{chunk-MUXI4Y6U.js → chunk-REBTZP3W.js} +2 -2
  75. package/dist/{chunk-H7LQGRM3.js → chunk-RJI6MHHK.js} +3 -3
  76. package/dist/{chunk-G5UTJZFR.js → chunk-T7W5LM4N.js} +11 -3
  77. package/dist/{chunk-GAK5UOKL.js → chunk-TF7CFAZ5.js} +3 -3
  78. package/dist/{chunk-XAPHRRQ4.js → chunk-U4NFAWQW.js} +5 -5
  79. package/dist/{chunk-HQBY3N3S.js → chunk-UCGEBFUC.js} +3 -3
  80. package/dist/{chunk-6KJMPC6H.js → chunk-UF3EALKC.js} +9 -9
  81. package/dist/{chunk-JCAINYVG.js → chunk-UKOOGXRF.js} +288 -26
  82. package/dist/{chunk-ZLPNK7U2.js → chunk-UNM2PX5D.js} +3 -3
  83. package/dist/{chunk-JR6H5MEF.js → chunk-UNTFANSM.js} +3 -3
  84. package/dist/{chunk-UG3MRJL6.js → chunk-UTVKOGFF.js} +2 -2
  85. package/dist/{chunk-MGAWLZQE.js → chunk-UY77QQWU.js} +2 -2
  86. package/dist/{chunk-7LMDJ3U7.js → chunk-VE7PPEU3.js} +105 -18
  87. package/dist/{chunk-MZBEPHFY.js → chunk-VGLSKDDI.js} +2 -2
  88. package/dist/{chunk-WN6V4ILM.js → chunk-VLXYWPPE.js} +5 -5
  89. package/dist/{chunk-5FBSYKPQ.js → chunk-VMXV2CL5.js} +4 -4
  90. package/dist/{chunk-FFI25S5O.js → chunk-W27BULCB.js} +4 -4
  91. package/dist/{chunk-NTXNVS47.js → chunk-W7SZKJR6.js} +3 -3
  92. package/dist/{chunk-MACY4WJ4.js → chunk-WEC3JPTN.js} +4 -4
  93. package/dist/{chunk-LQB3NKEA.js → chunk-WPXHTYET.js} +16 -11
  94. package/dist/{chunk-QQI4JTJB.js → chunk-WRWUZ2C4.js} +3 -3
  95. package/dist/{chunk-QQFO63AA.js → chunk-XIZCHGP7.js} +3 -3
  96. package/dist/{chunk-PYL2K5CE.js → chunk-YG35ZCNW.js} +20 -5
  97. package/dist/{chunk-6NEFSIL3.js → chunk-YH5KJIO5.js} +4 -4
  98. package/dist/{chunk-N5XT3OWL.js → chunk-YTFA4VTW.js} +2 -2
  99. package/dist/{chunk-SW36YNNE.js → chunk-YYBQ55V2.js} +35 -74
  100. package/dist/{chunk-M2QQQWM3.js → chunk-ZJJWON5O.js} +15 -5
  101. package/dist/collapse-JRGPUE67.js +13 -0
  102. package/dist/completion-registry.js +14 -9
  103. package/dist/{dgmo-router-EAW7XiBE.d.ts → dgmo-router-Lya7cs3R.d.ts} +28 -0
  104. package/dist/dgmo-router-O55I5UXN.js +89 -0
  105. package/dist/{dimensions-RIZPH26J.js → dimensions-EFEBIRS6.js} +5 -5
  106. package/dist/editor.js +6 -3
  107. package/dist/{flowchart-parser-A64T3OEL.js → flowchart-parser-LZF2GW2P.js} +4 -4
  108. package/dist/{flowchart-renderer-F6PDPKK7.js → flowchart-renderer-JMGOCLTQ.js} +6 -6
  109. package/dist/highlight.js +6 -3
  110. package/dist/index.d.ts +1 -1
  111. package/dist/index.js +60 -47
  112. package/dist/{layout-2D6VKW6G.js → layout-2DVT24YY.js} +3 -3
  113. package/dist/{layout-COGPMCW5.js → layout-4D5JRUHX.js} +4 -4
  114. package/dist/{layout-FFCYSTW7.js → layout-AWPST2S3.js} +3 -3
  115. package/dist/{layout-CYNBG5EP.js → layout-BGXLVSXL.js} +4 -4
  116. package/dist/{layout-36Z4NU4W.js → layout-VMDNULKS.js} +5 -5
  117. package/dist/{layout-2DUQIJOI.js → layout-VVTXA3W2.js} +4 -4
  118. package/dist/{parser-LGDW543A.js → parser-2CXA7K5C.js} +4 -4
  119. package/dist/{parser-6OWUGHKY.js → parser-4E2TVMOK.js} +4 -4
  120. package/dist/{parser-2PN2WRYX.js → parser-52AZJ3BA.js} +4 -4
  121. package/dist/{parser-A3B5KVPK.js → parser-52BOCAVQ.js} +4 -4
  122. package/dist/{parser-FNOWLKC4.js → parser-5IPCYVXY.js} +4 -4
  123. package/dist/{parser-U3T76HY2.js → parser-6BF5TJQH.js} +4 -4
  124. package/dist/{parser-SEFSLUXW.js → parser-6VZISXFY.js} +3 -3
  125. package/dist/{parser-VDD3N5SC.js → parser-6Y5BMNNJ.js} +5 -5
  126. package/dist/{parser-LJZIQJRA.js → parser-7HUZBXKW.js} +3 -3
  127. package/dist/{parser-PXI5UCVR.js → parser-AEJ73QJS.js} +3 -3
  128. package/dist/{parser-M7HBD7V2.js → parser-AWNEAGMJ.js} +4 -4
  129. package/dist/{parser-53ALMRAE.js → parser-C2QRTZPJ.js} +4 -4
  130. package/dist/{parser-DLIBNGNQ.js → parser-CBSYFN6U.js} +3 -3
  131. package/dist/{parser-IL4T3HCM.js → parser-CDMP3UVH.js} +4 -4
  132. package/dist/{parser-CDA5DGXA.js → parser-CNKHKQKZ.js} +4 -4
  133. package/dist/{parser-VQKLDBS7.js → parser-EX3AGFT5.js} +4 -4
  134. package/dist/{parser-SOOR27MC.js → parser-GK3JWVHY.js} +5 -5
  135. package/dist/{parser-4VIMOING.js → parser-GZKR6BFA.js} +4 -4
  136. package/dist/{parser-YCRATNR6.js → parser-K26KDCZN.js} +3 -3
  137. package/dist/{parser-SZXKUTVE.js → parser-LTJ5AKY4.js} +4 -4
  138. package/dist/{parser-Q2K7TDEA.js → parser-NIGB4EYX.js} +3 -3
  139. package/dist/{parser-DAMYSBVY.js → parser-O7GTECFP.js} +3 -3
  140. package/dist/{parser-3QXKYLDG.js → parser-OHWDJGCP.js} +3 -3
  141. package/dist/{parser-RZIIZ3EW.js → parser-QCVEWLCO.js} +3 -3
  142. package/dist/{parser-E33LTBYE.js → parser-SUAOF72Y.js} +4 -4
  143. package/dist/{parser-CLDLYMDI.js → parser-TJ3SP2MJ.js} +4 -4
  144. package/dist/{parser-GEELVJ4X.js → parser-W2HXBHNC.js} +3 -3
  145. package/dist/{parser-2QQJFTMD.js → parser-WF4R7225.js} +4 -4
  146. package/dist/{parser-5ETIIQIM.js → parser-XM6JC3UK.js} +4 -4
  147. package/dist/{parser-D5EZ6Y5I.js → parser-XRZQ7SC7.js} +4 -4
  148. package/dist/{parser-ZXI4IQ5Y.js → parser-YRJAGBV7.js} +4 -4
  149. package/dist/{parser-4CEHZFZG.js → parser-Z3LN7P6G.js} +5 -5
  150. package/dist/{parser-52SRJNP4.js → parser-ZIEEBJMU.js} +4 -4
  151. package/dist/{renderer-PR3AGJ37.js → renderer-2MEPYGAP.js} +7 -7
  152. package/dist/{renderer-P2MICJH5.js → renderer-2T2RAFWX.js} +8 -8
  153. package/dist/{renderer-SDCMF5AF.js → renderer-4DFEFP4X.js} +6 -6
  154. package/dist/{renderer-WPGW6FTW.js → renderer-ACGZ5KJG.js} +8 -8
  155. package/dist/{renderer-F75AZ6HF.js → renderer-B4Q6LUW2.js} +6 -6
  156. package/dist/{renderer-WA5K5VWA.js → renderer-CB44E262.js} +8 -8
  157. package/dist/{renderer-3VPTEQBU.js → renderer-CL4X5S3T.js} +6 -6
  158. package/dist/{renderer-PUYQ5CDE.js → renderer-E3UQ24DE.js} +5 -5
  159. package/dist/{renderer-3EN7ZSXI.js → renderer-E42I44WZ.js} +7 -7
  160. package/dist/{renderer-VK6KVXFB.js → renderer-H5QR3LC3.js} +4 -4
  161. package/dist/{renderer-RY7RQQ37.js → renderer-IH5C7NQT.js} +4 -4
  162. package/dist/{renderer-AF6DVUZH.js → renderer-IZFO3G22.js} +8 -8
  163. package/dist/{renderer-EVHFS3PP.js → renderer-JHWGW4Q7.js} +5 -5
  164. package/dist/{renderer-U7INHN4J.js → renderer-K73COK5L.js} +5 -5
  165. package/dist/{renderer-MGYWZFFR.js → renderer-KQIJV5WD.js} +5 -5
  166. package/dist/{renderer-52YQ3EYR.js → renderer-MZ4N2SVV.js} +5 -5
  167. package/dist/{renderer-KLRBL45Z.js → renderer-QMSFXMAL.js} +5 -5
  168. package/dist/{renderer-YZMFPZGC.js → renderer-UPTO25OX.js} +8 -8
  169. package/dist/{renderer-REULT7UI.js → renderer-VEN6AIWW.js} +8 -8
  170. package/dist/{renderer-QOI2SEEA.js → renderer-VOXE7V6L.js} +7 -7
  171. package/dist/{renderer-BT6TOWBE.js → renderer-VP4DPLDY.js} +4 -4
  172. package/dist/{renderer-KVRTLE2D.js → renderer-W7JC2CTQ.js} +4 -4
  173. package/dist/{renderer-XOPHJWNZ.js → renderer-WBG576LB.js} +5 -5
  174. package/dist/{renderer-4LLJHGIQ.js → renderer-WLA3NQCC.js} +7 -7
  175. package/dist/{renderer-UC2ZZISO.js → renderer-XR4SVKNE.js} +6 -6
  176. package/dist/{renderer-Q24E7LBF.js → renderer-Y3D36RIT.js} +6 -6
  177. package/dist/{renderer-SFYFVKVN.js → renderer-Y4VC3VH4.js} +9 -7
  178. package/dist/renderer-YROML2KW.js +76 -0
  179. package/dist/{renderer-RJLAM6G5.js → renderer-YXYEP46H.js} +6 -6
  180. package/dist/{renderer-VTP3QCCP.js → renderer-ZRHTC24Q.js} +7 -7
  181. package/dist/{renderer-radial-AVHNPO2N.js → renderer-radial-KZ3W4WXI.js} +6 -6
  182. package/dist/{state-parser-GSU2ZDVR.js → state-parser-HJNCGIFT.js} +5 -5
  183. package/dist/{state-renderer-Q6XQDK3W.js → state-renderer-FJ2GT4MU.js} +8 -8
  184. package/docs/language-reference.md +22 -1
  185. package/package.json +2 -1
  186. package/dist/collapse-CLPJD2RL.js +0 -11
  187. package/dist/dgmo-router-YFNEFJST.js +0 -89
  188. package/dist/renderer-BQORZPWF.js +0 -76
@@ -1,25 +1,23 @@
1
1
  import {
2
- AUTO_TAG_COLOR_SENTINEL,
3
- finalizeAutoTagColors,
4
- isTagBlockHeading,
5
- matchTagBlockHeading,
6
- stripDefaultModifier,
7
- validateTagGroupNames
8
- } from "./chunk-PBXMUXBW.js";
2
+ isTagBlockHeading
3
+ } from "./chunk-DPGI742S.js";
9
4
  import {
10
5
  OPTION_NOCOLON_RE,
11
- extractColor,
12
6
  measureIndent,
13
7
  parseFirstLine,
14
8
  tryParseSharedOption
15
- } from "./chunk-M2QQQWM3.js";
9
+ } from "./chunk-ZJJWON5O.js";
16
10
  import {
17
11
  formatDgmoError,
18
12
  makeDgmoError
19
13
  } from "./chunk-OLMWTJVU.js";
20
14
 
21
15
  // src/wireframe/parser.ts
22
- var KNOWN_OPTIONS = /* @__PURE__ */ new Set(["palette", "theme", "active-tag"]);
16
+ var KNOWN_OPTIONS = /* @__PURE__ */ new Set(["palette", "theme"]);
17
+ var INERT_OPTIONS = {
18
+ "active-tag": '"active-tag" does nothing on a wireframe \u2014 it has no tag groups. Element appearance comes from the trailing state keywords (primary, disabled, selected, \u2026).'
19
+ };
20
+ var NO_TAG_GROUPS_MESSAGE = "A wireframe has no tag groups \u2014 this block is ignored. Element appearance comes from the trailing state keywords (primary, disabled, selected, \u2026).";
23
21
  var GROUP_ONLY_METADATA = /* @__PURE__ */ new Set([
24
22
  "horizontal",
25
23
  "scrollable",
@@ -411,22 +409,15 @@ function parseWireframe(content) {
411
409
  let formFactor = "desktop";
412
410
  const roots = [];
413
411
  const modals = [];
414
- const tagGroups = [];
415
412
  const options = {};
416
413
  let phase = "header";
417
- let currentTagGroup = null;
414
+ let swallowingTagBlock = false;
418
415
  function pushWarning(line, msg) {
419
416
  diagnostics.push(makeDgmoError(line, msg, "warning"));
420
417
  }
421
- function makeTagGroup(trimmed, lineNumber) {
422
- const match = matchTagBlockHeading(trimmed);
423
- if (!match) return null;
424
- return {
425
- name: match.name,
426
- ...match.alias !== void 0 && { alias: match.alias },
427
- entries: [],
428
- lineNumber
429
- };
418
+ function refuseTagBlock(lineNumber) {
419
+ pushWarning(lineNumber, NO_TAG_GROUPS_MESSAGE);
420
+ swallowingTagBlock = true;
430
421
  }
431
422
  const indentStack = [];
432
423
  function findParent(indent) {
@@ -500,6 +491,10 @@ function parseWireframe(content) {
500
491
  const trimmed = line.trim();
501
492
  if (!trimmed || trimmed.startsWith("//")) continue;
502
493
  const indent = measureIndent(line);
494
+ if (swallowingTagBlock) {
495
+ if (indent > 0) continue;
496
+ swallowingTagBlock = false;
497
+ }
503
498
  if (phase === "header") {
504
499
  const firstLineResult = parseFirstLine(trimmed);
505
500
  if (firstLineResult?.chartType === "wireframe") {
@@ -515,52 +510,23 @@ function parseWireframe(content) {
515
510
  continue;
516
511
  }
517
512
  const optMatch = trimmed.match(OPTION_NOCOLON_RE);
518
- if (optMatch && KNOWN_OPTIONS.has(optMatch[1].toLowerCase())) {
519
- options[optMatch[1]] = optMatch[2] || "";
520
- continue;
521
- }
522
- if (isTagBlockHeading(trimmed)) {
523
- const tg = makeTagGroup(trimmed, lineNumber);
524
- if (tg) {
525
- currentTagGroup = tg;
526
- tagGroups.push(tg);
527
- phase = "tags";
513
+ if (optMatch) {
514
+ const key = optMatch[1].toLowerCase();
515
+ const inertMsg = INERT_OPTIONS[key];
516
+ if (inertMsg) {
517
+ pushWarning(lineNumber, inertMsg);
528
518
  continue;
529
519
  }
530
- }
531
- phase = "content";
532
- }
533
- if (phase === "tags") {
534
- if (isTagBlockHeading(trimmed)) {
535
- const tg = makeTagGroup(trimmed, lineNumber);
536
- if (tg) {
537
- currentTagGroup = tg;
538
- tagGroups.push(tg);
520
+ if (KNOWN_OPTIONS.has(key)) {
521
+ options[key] = optMatch[2] || "";
539
522
  continue;
540
523
  }
541
524
  }
542
- if (indent > 0 && currentTagGroup) {
543
- const { text: cleanEntry, isDefault } = stripDefaultModifier(trimmed);
544
- const { label, color } = extractColor(
545
- cleanEntry,
546
- void 0,
547
- diagnostics,
548
- lineNumber
549
- );
550
- currentTagGroup.entries.push({
551
- value: label,
552
- color: color ?? AUTO_TAG_COLOR_SENTINEL,
553
- lineNumber
554
- });
555
- if (isDefault) {
556
- currentTagGroup.defaultValue = label;
557
- } else if (currentTagGroup.entries.length === 1) {
558
- currentTagGroup.defaultValue = label;
559
- }
525
+ if (isTagBlockHeading(trimmed)) {
526
+ refuseTagBlock(lineNumber);
560
527
  continue;
561
528
  }
562
529
  phase = "content";
563
- currentTagGroup = null;
564
530
  }
565
531
  if (phase !== "content") {
566
532
  phase = "content";
@@ -572,21 +538,21 @@ function parseWireframe(content) {
572
538
  if (indent === 0) {
573
539
  const optMatch = trimmed.match(OPTION_NOCOLON_RE);
574
540
  if (optMatch && !trimmed.startsWith("#") && !trimmed.startsWith("[") && !trimmed.startsWith("(")) {
575
- const key = optMatch[1];
576
- if (["palette", "theme", "active-tag"].includes(key)) {
541
+ const key = optMatch[1].toLowerCase();
542
+ const inertMsg = INERT_OPTIONS[key];
543
+ if (inertMsg) {
544
+ pushWarning(lineNumber, inertMsg);
545
+ continue;
546
+ }
547
+ if (KNOWN_OPTIONS.has(key)) {
577
548
  options[key] = optMatch[2] || "";
578
549
  continue;
579
550
  }
580
551
  }
581
552
  }
582
553
  if (isTagBlockHeading(trimmed)) {
583
- const tg = makeTagGroup(trimmed, lineNumber);
584
- if (tg) {
585
- currentTagGroup = tg;
586
- tagGroups.push(tg);
587
- phase = "tags";
588
- continue;
589
- }
554
+ refuseTagBlock(lineNumber);
555
+ continue;
590
556
  }
591
557
  if (indentStack.length > 0) {
592
558
  const topNode = indentStack[indentStack.length - 1].node;
@@ -663,10 +629,6 @@ function parseWireframe(content) {
663
629
  }
664
630
  }
665
631
  }
666
- finalizeAutoTagColors(tagGroups);
667
- validateTagGroupNames(tagGroups, pushWarning, (line, msg) => {
668
- diagnostics.push(makeDgmoError(line, msg));
669
- });
670
632
  const error = diagnostics.find((d) => d.severity === "error") ? formatDgmoError(diagnostics.find((d) => d.severity === "error")) : null;
671
633
  return {
672
634
  title,
@@ -674,7 +636,6 @@ function parseWireframe(content) {
674
636
  formFactor,
675
637
  roots,
676
638
  modals,
677
- tagGroups,
678
639
  options,
679
640
  diagnostics,
680
641
  error
@@ -729,4 +690,4 @@ export {
729
690
  resetWireframeIds,
730
691
  parseWireframe
731
692
  };
732
- //# sourceMappingURL=chunk-SW36YNNE.js.map
693
+ //# sourceMappingURL=chunk-YYBQ55V2.js.map
@@ -436,7 +436,8 @@ var chartTypesData = [
436
436
  },
437
437
  {
438
438
  id: "c4",
439
- description: "System architecture (context, container, component, deployment)"
439
+ description: "System architecture (context, container, component, deployment)",
440
+ beta: true
440
441
  },
441
442
  {
442
443
  id: "er",
@@ -546,7 +547,8 @@ var chartTypesData = [
546
547
  },
547
548
  {
548
549
  id: "sketch",
549
- description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags \u2014 the markup is generated by the canvas editor"
550
+ description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags \u2014 the markup is generated by the canvas editor",
551
+ beta: true
550
552
  },
551
553
  {
552
554
  id: "goal",
@@ -571,7 +573,8 @@ var chartTypesData = [
571
573
  },
572
574
  {
573
575
  id: "venn",
574
- description: "Set overlaps"
576
+ description: "Set overlaps",
577
+ beta: true
575
578
  },
576
579
  {
577
580
  id: "funnel",
@@ -707,7 +710,14 @@ var ORG_REGISTRY = staticRegistry([
707
710
  "role",
708
711
  "location",
709
712
  "email",
710
- "phone"
713
+ "phone",
714
+ // The collapse view-state marker, in the COLON form only (`collapsed: true`).
715
+ // Org deliberately has no bare trailing-token form the way mindmap and gantt
716
+ // do: an org label is a person's name and `split.color` is already restored
717
+ // into it (see `createOrgNode`), so a trailing bare word cannot be told from
718
+ // part of a name. `key: value` has no such ambiguity. C4 reserves this same
719
+ // key.
720
+ "collapsed"
711
721
  ]);
712
722
  var C4_REGISTRY = staticRegistry([
713
723
  "color",
@@ -1374,4 +1384,4 @@ export {
1374
1384
  splitNameAndMeta,
1375
1385
  warnUnknownMetaKeys
1376
1386
  };
1377
- //# sourceMappingURL=chunk-M2QQQWM3.js.map
1387
+ //# sourceMappingURL=chunk-ZJJWON5O.js.map
@@ -0,0 +1,13 @@
1
+ import {
2
+ collapseOrgTree,
3
+ focusOrgTree,
4
+ unionCollapsedOrgNodes
5
+ } from "./chunk-FX2USYOU.js";
6
+ import "./chunk-BS7SV7C3.js";
7
+ import "./chunk-5WRI5ZAA.js";
8
+ export {
9
+ collapseOrgTree,
10
+ focusOrgTree,
11
+ unionCollapsedOrgNodes
12
+ };
13
+ //# sourceMappingURL=collapse-JRGPUE67.js.map
@@ -4,12 +4,12 @@ import {
4
4
  import {
5
5
  GROUP_ONLY_METADATA,
6
6
  STATE_KEYWORDS
7
- } from "./chunk-SW36YNNE.js";
8
- import "./chunk-PBXMUXBW.js";
7
+ } from "./chunk-YYBQ55V2.js";
8
+ import "./chunk-DPGI742S.js";
9
9
  import {
10
10
  ALL_CHART_TYPES,
11
11
  chartTypes
12
- } from "./chunk-M2QQQWM3.js";
12
+ } from "./chunk-ZJJWON5O.js";
13
13
  import "./chunk-EXNKNJ65.js";
14
14
  import "./chunk-OLMWTJVU.js";
15
15
  import "./chunk-5WRI5ZAA.js";
@@ -21,6 +21,9 @@ var INTERNAL_CHART_TYPE_IDS = new Set(
21
21
  function withoutInternalChartTypes(ids) {
22
22
  return ids.filter((id) => !INTERNAL_CHART_TYPE_IDS.has(id));
23
23
  }
24
+ var BETA_CHART_TYPE_IDS = new Set(
25
+ chartTypes.filter((c) => c.beta).map((c) => c.id)
26
+ );
24
27
 
25
28
  // src/completion-registry.ts
26
29
  var GLOBAL_DIRECTIVES = {
@@ -338,8 +341,8 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
338
341
  "no-legend": { description: "Hide the legend" },
339
342
  roles: {
340
343
  description: "Declare role column order (inline `roles A, B, C` or indented block with per-role pipe metadata)"
341
- },
342
- "active-tag": { description: "Active tag group name" }
344
+ }
345
+ // No `active-tag`: raci has no tag groups at all (#251).
343
346
  })
344
347
  ],
345
348
  [
@@ -512,9 +515,10 @@ var COMPLETION_REGISTRY = /* @__PURE__ */ new Map([
512
515
  ],
513
516
  [
514
517
  "wireframe",
518
+ // No `active-tag`: a wireframe has no tag groups, and the parser now
519
+ // refuses both it and `tag` blocks (#251).
515
520
  withGlobals({
516
- mobile: { description: "Use mobile (narrow vertical) layout" },
517
- "active-tag": { description: "Active tag group name" }
521
+ mobile: { description: "Use mobile (narrow vertical) layout" }
518
522
  })
519
523
  ],
520
524
  [
@@ -915,8 +919,9 @@ var STRUCTURAL_KEYWORDS = /* @__PURE__ */ new Map([
915
919
  "alert",
916
920
  "progress",
917
921
  "chart",
918
- "mobile",
919
- "tag"
922
+ "mobile"
923
+ // No `tag`: wireframe has no tag groups, and dropping it here also
924
+ // drops wireframe from the derived TAG_SUPPORTING_TYPES below (#251).
920
925
  ]
921
926
  ],
922
927
  ["class", ["abstract", "interface", "enum", "extends", "implements"]]
@@ -43,6 +43,31 @@ interface ChartTypeMeta {
43
43
  * it the flag is a convention and the next refactor drops an edge silently.
44
44
  */
45
45
  readonly internal?: true;
46
+ /**
47
+ * Offered, but not finished — expect rough edges and syntax changes.
48
+ *
49
+ * Unlike `internal`, a beta type IS listed everywhere; the flag only adds a
50
+ * mark beside it, so somebody choosing one knows what they are choosing.
51
+ *
52
+ * 🔴 It lives HERE rather than in the app because the app and the marketing
53
+ * site each held their own hand-written id set, kept in step by a comment,
54
+ * and neither reached the CLI, the MCP server or anything else that names a
55
+ * chart type. `sketch` shipped unmarked on every one of those surfaces while
56
+ * being marked in two (issue #221). The original reasoning — "which charts
57
+ * are beta is a product decision, not a parser concern" — was sound about
58
+ * ownership and wrong about location: a fact every surface needs belongs
59
+ * where every surface can read it. It costs a dgmo release to change, which
60
+ * is the right price for something that moves once or twice in a type's life.
61
+ *
62
+ * Honoured at the same kind of edge `internal` is, and for the same reason
63
+ * — an unlisted edge is a surface that silently stops telling the truth:
64
+ * 1. `cli.ts` — `dgmo types` (plain and `--json`)
65
+ * 2. `dgmo-mcp` — `list_chart_types`, so a model says so before choosing
66
+ * 3. `diagrammo-app` — the New File dialog and the docs
67
+ * 4. `diagrammo_app_site` — the docs nav and page headers
68
+ * `tests/beta-chart-types.test.ts` is this flag's specification.
69
+ */
70
+ readonly beta?: true;
46
71
  }
47
72
  declare const chartTypesData: readonly [{
48
73
  readonly id: "journey-map";
@@ -50,6 +75,7 @@ declare const chartTypesData: readonly [{
50
75
  }, {
51
76
  readonly id: "c4";
52
77
  readonly description: "System architecture (context, container, component, deployment)";
78
+ readonly beta: true;
53
79
  }, {
54
80
  readonly id: "er";
55
81
  readonly description: "Database schemas and relationships";
@@ -132,6 +158,7 @@ declare const chartTypesData: readonly [{
132
158
  }, {
133
159
  readonly id: "sketch";
134
160
  readonly description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags — the markup is generated by the canvas editor";
161
+ readonly beta: true;
135
162
  }, {
136
163
  readonly id: "goal";
137
164
  readonly description: "Single progress-toward-a-target value (now vs target) as a progress bar, thermometer, or gauge — KPIs, fundraising, quotas, completion";
@@ -150,6 +177,7 @@ declare const chartTypesData: readonly [{
150
177
  }, {
151
178
  readonly id: "venn";
152
179
  readonly description: "Set overlaps";
180
+ readonly beta: true;
153
181
  }, {
154
182
  readonly id: "funnel";
155
183
  readonly description: "Conversion pipeline";
@@ -0,0 +1,89 @@
1
+ import {
2
+ CHART_TYPE_DESCRIPTIONS,
3
+ chartTypeParsers,
4
+ getAllChartTypes,
5
+ getRenderCategory,
6
+ isExtendedChartType,
7
+ knownChartTypeIds,
8
+ looksLikeC4,
9
+ looksLikeGantt,
10
+ parseDgmo,
11
+ parseDgmoChartType
12
+ } from "./chunk-HZQCKXPB.js";
13
+ import "./chunk-NEC7R2CB.js";
14
+ import "./chunk-A2RUBBVT.js";
15
+ import "./chunk-MC2H32SM.js";
16
+ import "./chunk-T7W5LM4N.js";
17
+ import "./chunk-UNM2PX5D.js";
18
+ import "./chunk-UY77QQWU.js";
19
+ import "./chunk-2CW5ZTNH.js";
20
+ import "./chunk-BDXC7MDK.js";
21
+ import "./chunk-NUF7YTHA.js";
22
+ import "./chunk-376ATV2Q.js";
23
+ import "./chunk-KJWIU5AM.js";
24
+ import "./chunk-6PA32CUB.js";
25
+ import "./chunk-WPXHTYET.js";
26
+ import "./chunk-JIWDWOYA.js";
27
+ import "./chunk-XSVWUOUZ.js";
28
+ import "./chunk-LTGOPJUV.js";
29
+ import "./chunk-5DYDPP7K.js";
30
+ import "./chunk-OQKP2X3D.js";
31
+ import "./chunk-HWNF22ZZ.js";
32
+ import "./chunk-PBV2C3BW.js";
33
+ import "./chunk-NJKUTY4M.js";
34
+ import "./chunk-RT7ACF77.js";
35
+ import "./chunk-TF7CFAZ5.js";
36
+ import "./chunk-QPG55HGH.js";
37
+ import "./chunk-QQJUTGQH.js";
38
+ import "./chunk-QAJFIXJE.js";
39
+ import "./chunk-YTFA4VTW.js";
40
+ import "./chunk-NTBHGUXY.js";
41
+ import "./chunk-3TYUXC7D.js";
42
+ import "./chunk-K6MQJ5IV.js";
43
+ import "./chunk-VMXV2CL5.js";
44
+ import "./chunk-NNMNHE3J.js";
45
+ import "./chunk-AEYRSPVV.js";
46
+ import "./chunk-MKNWMFZU.js";
47
+ import "./chunk-YG35ZCNW.js";
48
+ import "./chunk-MFSTE3YG.js";
49
+ import "./chunk-DEVZWCD5.js";
50
+ import "./chunk-EQW6HOP4.js";
51
+ import "./chunk-DAOFNU6J.js";
52
+ import "./chunk-FFD6A3B2.js";
53
+ import "./chunk-C3Z4DX3V.js";
54
+ import "./chunk-RJI6MHHK.js";
55
+ import "./chunk-7TF3QOOD.js";
56
+ import "./chunk-YH5KJIO5.js";
57
+ import "./chunk-NXMESY4J.js";
58
+ import "./chunk-UNTFANSM.js";
59
+ import "./chunk-KOVRFBGR.js";
60
+ import "./chunk-MX3BYU7V.js";
61
+ import "./chunk-7NK42OIB.js";
62
+ import "./chunk-RRX4Z4TH.js";
63
+ import "./chunk-7SEQPFBX.js";
64
+ import "./chunk-FLXDMH7B.js";
65
+ import "./chunk-IYULMRBE.js";
66
+ import "./chunk-NOTA6TEI.js";
67
+ import "./chunk-I55PVEIX.js";
68
+ import "./chunk-YYBQ55V2.js";
69
+ import "./chunk-DPGI742S.js";
70
+ import "./chunk-ZJJWON5O.js";
71
+ import "./chunk-23RWHHI5.js";
72
+ import "./chunk-R3XI2VC7.js";
73
+ import "./chunk-KWRW6BLG.js";
74
+ import "./chunk-EXNKNJ65.js";
75
+ import "./chunk-OLMWTJVU.js";
76
+ import "./chunk-5WRI5ZAA.js";
77
+ export {
78
+ CHART_TYPE_DESCRIPTIONS,
79
+ chartTypeParsers,
80
+ getAllChartTypes,
81
+ getRenderCategory,
82
+ isExtendedChartType,
83
+ knownChartTypeIds,
84
+ looksLikeC4,
85
+ looksLikeGantt,
86
+ parseDgmo,
87
+ parseDgmoChartType
88
+ };
89
+ //# sourceMappingURL=dgmo-router-O55I5UXN.js.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  mapContentAspect,
3
3
  mapExportDimensions
4
- } from "./chunk-TJ5PDNGU.js";
5
- import "./chunk-MUXI4Y6U.js";
4
+ } from "./chunk-EETUTZ5C.js";
5
+ import "./chunk-REBTZP3W.js";
6
6
  import "./chunk-4QV26TEG.js";
7
7
  import "./chunk-L65WI4HO.js";
8
8
  import "./chunk-A4GOY3PE.js";
9
9
  import "./chunk-MTPKBSTR.js";
10
10
  import "./chunk-QX53GOI7.js";
11
11
  import "./chunk-MTGGOCND.js";
12
- import "./chunk-PBXMUXBW.js";
13
- import "./chunk-M2QQQWM3.js";
12
+ import "./chunk-DPGI742S.js";
13
+ import "./chunk-ZJJWON5O.js";
14
14
  import "./chunk-KWRW6BLG.js";
15
15
  import "./chunk-EXNKNJ65.js";
16
16
  import "./chunk-OLMWTJVU.js";
@@ -19,4 +19,4 @@ export {
19
19
  mapContentAspect,
20
20
  mapExportDimensions
21
21
  };
22
- //# sourceMappingURL=dimensions-RIZPH26J.js.map
22
+ //# sourceMappingURL=dimensions-EFEBIRS6.js.map
package/dist/editor.js CHANGED
@@ -436,7 +436,8 @@ var chartTypesData = [
436
436
  },
437
437
  {
438
438
  id: "c4",
439
- description: "System architecture (context, container, component, deployment)"
439
+ description: "System architecture (context, container, component, deployment)",
440
+ beta: true
440
441
  },
441
442
  {
442
443
  id: "er",
@@ -546,7 +547,8 @@ var chartTypesData = [
546
547
  },
547
548
  {
548
549
  id: "sketch",
549
- description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags \u2014 the markup is generated by the canvas editor"
550
+ description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags \u2014 the markup is generated by the canvas editor",
551
+ beta: true
550
552
  },
551
553
  {
552
554
  id: "goal",
@@ -571,7 +573,8 @@ var chartTypesData = [
571
573
  },
572
574
  {
573
575
  id: "venn",
574
- description: "Set overlaps"
576
+ description: "Set overlaps",
577
+ beta: true
575
578
  },
576
579
  {
577
580
  id: "funnel",
@@ -2,14 +2,14 @@ import {
2
2
  extractSymbols,
3
3
  looksLikeFlowchart,
4
4
  parseFlowchart
5
- } from "./chunk-H7LQGRM3.js";
5
+ } from "./chunk-RJI6MHHK.js";
6
6
  import "./chunk-7TF3QOOD.js";
7
7
  import "./chunk-NXMESY4J.js";
8
- import "./chunk-HK3JTWG3.js";
8
+ import "./chunk-MX3BYU7V.js";
9
9
  import "./chunk-7NK42OIB.js";
10
10
  import "./chunk-RRX4Z4TH.js";
11
11
  import "./chunk-NOTA6TEI.js";
12
- import "./chunk-M2QQQWM3.js";
12
+ import "./chunk-ZJJWON5O.js";
13
13
  import "./chunk-EXNKNJ65.js";
14
14
  import "./chunk-OLMWTJVU.js";
15
15
  import "./chunk-5WRI5ZAA.js";
@@ -18,4 +18,4 @@ export {
18
18
  looksLikeFlowchart,
19
19
  parseFlowchart
20
20
  };
21
- //# sourceMappingURL=flowchart-parser-A64T3OEL.js.map
21
+ //# sourceMappingURL=flowchart-parser-LZF2GW2P.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  renderFlowchart,
3
3
  renderFlowchartForExport
4
- } from "./chunk-R2UUKZ6R.js";
4
+ } from "./chunk-P6RPHRX7.js";
5
5
  import "./chunk-PDKUANDZ.js";
6
6
  import "./chunk-IKHV5IJB.js";
7
7
  import "./chunk-LP7EC4MI.js";
@@ -12,19 +12,19 @@ import "./chunk-5DH3KYFH.js";
12
12
  import "./chunk-NCT22MOD.js";
13
13
  import "./chunk-WGC42WJU.js";
14
14
  import "./chunk-FJ57274M.js";
15
- import "./chunk-YYVTBZZC.js";
15
+ import "./chunk-24YPR5EH.js";
16
16
  import "./chunk-RU2HHHYA.js";
17
17
  import "./chunk-A4GOY3PE.js";
18
18
  import "./chunk-UTCPNJND.js";
19
19
  import "./chunk-MTGGOCND.js";
20
- import "./chunk-H7LQGRM3.js";
20
+ import "./chunk-RJI6MHHK.js";
21
21
  import "./chunk-7TF3QOOD.js";
22
22
  import "./chunk-NXMESY4J.js";
23
- import "./chunk-HK3JTWG3.js";
23
+ import "./chunk-MX3BYU7V.js";
24
24
  import "./chunk-7NK42OIB.js";
25
25
  import "./chunk-RRX4Z4TH.js";
26
26
  import "./chunk-NOTA6TEI.js";
27
- import "./chunk-M2QQQWM3.js";
27
+ import "./chunk-ZJJWON5O.js";
28
28
  import "./chunk-KWRW6BLG.js";
29
29
  import "./chunk-EXNKNJ65.js";
30
30
  import "./chunk-OLMWTJVU.js";
@@ -33,4 +33,4 @@ export {
33
33
  renderFlowchart,
34
34
  renderFlowchartForExport
35
35
  };
36
- //# sourceMappingURL=flowchart-renderer-F6PDPKK7.js.map
36
+ //# sourceMappingURL=flowchart-renderer-JMGOCLTQ.js.map
package/dist/highlight.js CHANGED
@@ -433,7 +433,8 @@ var chartTypesData = [
433
433
  },
434
434
  {
435
435
  id: "c4",
436
- description: "System architecture (context, container, component, deployment)"
436
+ description: "System architecture (context, container, component, deployment)",
437
+ beta: true
437
438
  },
438
439
  {
439
440
  id: "er",
@@ -543,7 +544,8 @@ var chartTypesData = [
543
544
  },
544
545
  {
545
546
  id: "sketch",
546
- description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags \u2014 the markup is generated by the canvas editor"
547
+ description: "GUI-first constrained canvas: uniformly-sized shapes placed freely on a snap grid, arrows between them, meaning through tags \u2014 the markup is generated by the canvas editor",
548
+ beta: true
547
549
  },
548
550
  {
549
551
  id: "goal",
@@ -568,7 +570,8 @@ var chartTypesData = [
568
570
  },
569
571
  {
570
572
  id: "venn",
571
- description: "Set overlaps"
573
+ description: "Set overlaps",
574
+ beta: true
572
575
  },
573
576
  {
574
577
  id: "funnel",
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { b as DiagnosticSpec, P as PaletteConfig, C as CompactViewState, D as DgmoError } from './tag-groups-NUA2F1I5.js';
2
2
  export { c as DgmoSeverity, d as DiagnosticParams, E as EmitOptions, a as PaletteColors, e as emit, f as formatDgmoError } from './tag-groups-NUA2F1I5.js';
3
- export { C as ChartTypeId, a as ChartTypeMeta, c as chartTypes, g as getPalette, r as resolvePaletteOrFallback, p as validate } from './dgmo-router-EAW7XiBE.js';
3
+ export { C as ChartTypeId, a as ChartTypeMeta, c as chartTypes, g as getPalette, r as resolvePaletteOrFallback, p as validate } from './dgmo-router-Lya7cs3R.js';
4
4
  import { T as Theme } from './themes-Dem5xalq.js';
5
5
  export { M as MapCompletionOptions, a as MapLocationMatch, b as MapPlaceCompletion, c as MapRegionCompletion, d as completeMapPlaces, e as completeMapRegions, p as palettes, s as searchMapLocations, t as themes } from './themes-Dem5xalq.js';
6
6
  import { M as MapDataSource } from './d3-Bfhj-XBX.js';