@diagrammo/dgmo 0.48.2 → 0.49.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 (216) hide show
  1. package/.cursorrules +8 -3
  2. package/.github/copilot-instructions.md +8 -3
  3. package/.windsurfrules +8 -3
  4. package/SKILL.md +8 -3
  5. package/dist/advanced.d.ts +444 -1
  6. package/dist/advanced.js +208 -146
  7. package/dist/auto.css +63 -0
  8. package/dist/auto.js +202 -102
  9. package/dist/auto.mjs +6849 -824
  10. package/dist/block.css +63 -0
  11. package/dist/block.d.ts +13 -5
  12. package/dist/block.js +137 -57
  13. package/dist/{charts-d3-QOZHKTCT.js → charts-d3-EW3YQTEA.js} +9 -8
  14. package/dist/chunk-26RVGM44.js +331 -0
  15. package/dist/{chunk-44CM72SQ.js → chunk-2WMBWZY2.js} +3 -3
  16. package/dist/{chunk-L66GEFB6.js → chunk-35BBZDFE.js} +4 -4
  17. package/dist/{chunk-4GRI7MEB.js → chunk-3BIAFYD2.js} +6 -6
  18. package/dist/chunk-3NFJWFNP.js +1474 -0
  19. package/dist/{chunk-76OWZ3BA.js → chunk-4BD7EVPK.js} +2 -2
  20. package/dist/{chunk-MITI6NOL.js → chunk-4FIV4K4Z.js} +9 -9
  21. package/dist/chunk-4HVNZ7WF.js +574 -0
  22. package/dist/{chunk-X5LCYCL5.js → chunk-4NQ3IKUM.js} +2 -2
  23. package/dist/{chunk-PWIHZ6NJ.js → chunk-4UDKKGHH.js} +4 -4
  24. package/dist/{chunk-6NYWYNBI.js → chunk-4XK3FLFB.js} +3 -3
  25. package/dist/chunk-4YNP6O47.js +607 -0
  26. package/dist/{chunk-3MQQNXPD.js → chunk-5FGDJIJX.js} +3 -3
  27. package/dist/{chunk-WCT3NYCV.js → chunk-5LWQH6QV.js} +1 -1
  28. package/dist/chunk-5XCM7UUW.js +261 -0
  29. package/dist/{chunk-RYEGFMUO.js → chunk-5ZZLLBFK.js} +2 -2
  30. package/dist/{chunk-EB6FPQUP.js → chunk-65RTDUZH.js} +3 -3
  31. package/dist/chunk-6CLKNXVP.js +664 -0
  32. package/dist/{chunk-H6PI3KJT.js → chunk-6IUAK7RZ.js} +2 -2
  33. package/dist/{chunk-ZGR7ULFJ.js → chunk-6SA7FJE4.js} +31 -19
  34. package/dist/{chunk-LIOHW36Z.js → chunk-6VE3VLWM.js} +3 -3
  35. package/dist/{chunk-AN2MOO5T.js → chunk-7OVSJI2V.js} +3 -3
  36. package/dist/{chunk-YAA6IID3.js → chunk-7UEMZREK.js} +2 -2
  37. package/dist/{chunk-FCIIHT24.js → chunk-7VLUGEMJ.js} +7 -7
  38. package/dist/{chunk-VOKGH627.js → chunk-AHGF2YYA.js} +13 -3
  39. package/dist/{chunk-3R5POCTZ.js → chunk-AJ2PEY7J.js} +6 -6
  40. package/dist/{chunk-PBHE5UG6.js → chunk-ALRHIR6I.js} +46 -12
  41. package/dist/{chunk-7JEGTRLD.js → chunk-B57V3DWN.js} +3 -3
  42. package/dist/{chunk-ILKORZ3H.js → chunk-BCT5G2VN.js} +7 -7
  43. package/dist/{chunk-TYS6CSS5.js → chunk-BCYVE3N5.js} +2 -2
  44. package/dist/{chunk-ZBWMSD5N.js → chunk-BGJV5ATD.js} +4 -4
  45. package/dist/{chunk-G2H74XJZ.js → chunk-BPIJLRYE.js} +8 -8
  46. package/dist/{chunk-YGJTDXVR.js → chunk-C4GQDB5L.js} +2 -2
  47. package/dist/{chunk-Y2ZE3MSG.js → chunk-C63UWAKM.js} +2 -2
  48. package/dist/{chunk-QEBUY5NY.js → chunk-CEHZOPGM.js} +4 -4
  49. package/dist/{chunk-725LDASD.js → chunk-CLD2OKV7.js} +2 -2
  50. package/dist/{chunk-5QXL4NYS.js → chunk-CLR4A2N2.js} +10 -5
  51. package/dist/{chunk-WBRZJOEC.js → chunk-CMCR5WBW.js} +3 -3
  52. package/dist/{chunk-SML67VPV.js → chunk-D5AVQCDN.js} +3 -3
  53. package/dist/{chunk-2LACINWN.js → chunk-DDTJ5N7Q.js} +9 -9
  54. package/dist/{chunk-FITOLXSX.js → chunk-EOFPYPAU.js} +26 -2
  55. package/dist/{chunk-B65G5DNL.js → chunk-EYN7VFKL.js} +3 -3
  56. package/dist/{chunk-4OHACBGX.js → chunk-F2L5GCQ4.js} +2 -2
  57. package/dist/{chunk-RVMRZAPB.js → chunk-F743CM2N.js} +3 -3
  58. package/dist/{chunk-3JLKYGBQ.js → chunk-F7BFXWNQ.js} +2 -2
  59. package/dist/{chunk-WCSOJFU3.js → chunk-FMKTYMP4.js} +3 -3
  60. package/dist/{chunk-RTLBSQ3G.js → chunk-FUCAB3KQ.js} +3 -3
  61. package/dist/{chunk-SGZYXELT.js → chunk-GB3YZTAM.js} +9 -6
  62. package/dist/{chunk-QLCCJEJI.js → chunk-HBVD67XG.js} +2 -2
  63. package/dist/{chunk-PBAHEPLQ.js → chunk-HGN652MU.js} +7 -6
  64. package/dist/{chunk-3SMGIJDD.js → chunk-HHXOONLX.js} +13 -1
  65. package/dist/{chunk-QOOUC2J5.js → chunk-HQCHYB5F.js} +2 -2
  66. package/dist/chunk-IAEC4KLA.js +492 -0
  67. package/dist/{chunk-J5FIXQRT.js → chunk-IBC35BTK.js} +4 -4
  68. package/dist/{chunk-NURGB5Z4.js → chunk-IFK3GIUW.js} +2 -2
  69. package/dist/{chunk-FANX6UJR.js → chunk-IHLSHCPZ.js} +11 -11
  70. package/dist/{chunk-GMR5MFHJ.js → chunk-IUK7AGD4.js} +2 -2
  71. package/dist/chunk-IVKC4GID.js +32 -0
  72. package/dist/{chunk-OJR3MQYV.js → chunk-JFPY3UJ7.js} +296 -57
  73. package/dist/{chunk-5MLYVTYM.js → chunk-K6HNAY5V.js} +2 -2
  74. package/dist/{chunk-P235SVAH.js → chunk-KQAEKMIX.js} +2 -2
  75. package/dist/{chunk-7DTWEFUE.js → chunk-KUBBJ2CD.js} +10 -10
  76. package/dist/{chunk-BUVJFRPY.js → chunk-KV6Y2HE6.js} +4 -4
  77. package/dist/{chunk-OURHMODR.js → chunk-LG4TWW4U.js} +13 -13
  78. package/dist/{chunk-XAKEUMEJ.js → chunk-LVHPTBO3.js} +3 -3
  79. package/dist/{chunk-ERLBPDGU.js → chunk-MJCG5K2O.js} +2 -2
  80. package/dist/{chunk-THXCFRTU.js → chunk-N4J5KGWG.js} +12 -12
  81. package/dist/{chunk-MZSBFAPJ.js → chunk-NVT6C2VE.js} +9 -9
  82. package/dist/{chunk-AELOBFW5.js → chunk-O5MQPK7E.js} +3 -3
  83. package/dist/{chunk-JM4LEPY3.js → chunk-O7NUCTFU.js} +2 -2
  84. package/dist/{chunk-JED6ZDEE.js → chunk-O7WP4ZD4.js} +2 -2
  85. package/dist/{chunk-ZO27FGJS.js → chunk-PH5X4GIP.js} +2 -2
  86. package/dist/{chunk-B7JUCQUA.js → chunk-PU3AUQPA.js} +4 -4
  87. package/dist/{chunk-YGJZWZTY.js → chunk-PZFVK3IH.js} +2 -2
  88. package/dist/chunk-QQJUTGQH.js +135 -0
  89. package/dist/{chunk-HSH73DP6.js → chunk-RI4NIMFP.js} +99 -39
  90. package/dist/{chunk-33LCUH4H.js → chunk-RTERS6S5.js} +3 -3
  91. package/dist/{chunk-T3UBLACL.js → chunk-SCQ5VPUF.js} +19 -5
  92. package/dist/chunk-SGHSY3LU.js +377 -0
  93. package/dist/{chunk-SRTU6HMQ.js → chunk-SJEGO2QL.js} +8 -8
  94. package/dist/chunk-SQDFK5ZQ.js +273 -0
  95. package/dist/{chunk-PZMETGLY.js → chunk-SVDWQGX2.js} +296 -121
  96. package/dist/{chunk-Z5CGSFJB.js → chunk-T7IKPCMI.js} +4 -4
  97. package/dist/chunk-TC3YWBFO.js +233 -0
  98. package/dist/{chunk-EVCVDTXE.js → chunk-TLKMTQYL.js} +3 -3
  99. package/dist/{chunk-IJZFN3HM.js → chunk-TWQUYVP3.js} +4 -4
  100. package/dist/{chunk-IZMRON6C.js → chunk-UVCXZEGU.js} +2 -2
  101. package/dist/{chunk-CKNVO24D.js → chunk-UWDO3O52.js} +2 -2
  102. package/dist/{chunk-RJE5JTVK.js → chunk-VC3TR4NL.js} +7 -7
  103. package/dist/{chunk-CI2G3OEB.js → chunk-X2CH42BN.js} +9 -9
  104. package/dist/{chunk-6HO5ZTXK.js → chunk-XCC2RENT.js} +2 -2
  105. package/dist/chunk-XHVV4NVW.js +51 -0
  106. package/dist/{chunk-ZJEL4H2R.js → chunk-XJ7J6WOO.js} +9 -9
  107. package/dist/{chunk-ULOEATBZ.js → chunk-XKTN7CZF.js} +106 -29
  108. package/dist/{chunk-IPWPWM6R.js → chunk-YM2BSPYW.js} +111 -10
  109. package/dist/{chunk-BUPDIHML.js → chunk-YRVLP7UU.js} +3 -3
  110. package/dist/{chunk-T2OE3YQB.js → chunk-YTN572Q2.js} +3 -3
  111. package/dist/{chunk-WVAJFAIA.js → chunk-YYX3SU6H.js} +3 -3
  112. package/dist/{chunk-MO5YHHMQ.js → chunk-ZDUQGL3N.js} +2 -2
  113. package/dist/{chunk-Y3J7VR52.js → chunk-ZNQX6QWH.js} +30 -2
  114. package/dist/{chunk-UWN33VNX.js → chunk-ZREZOIGS.js} +8 -8
  115. package/dist/{chunk-6SM5NJQH.js → chunk-ZTLWVRNS.js} +4 -4
  116. package/dist/{chunk-RUNNI6VE.js → chunk-ZXL6MB4R.js} +3 -3
  117. package/dist/cli.cjs +159 -122
  118. package/dist/dgmo-router-ODKPEJ3P.js +79 -0
  119. package/dist/dimensions-WSIJXT5Q.js +22 -0
  120. package/dist/editor.js +4 -1
  121. package/dist/element.js +203 -103
  122. package/dist/element.mjs +6849 -824
  123. package/dist/{flowchart-parser-ZNSKIBVR.js → flowchart-parser-IVZN7CQN.js} +4 -4
  124. package/dist/{flowchart-renderer-SNDSII4D.js → flowchart-renderer-GMI2U3DD.js} +9 -9
  125. package/dist/highlight.js +7 -1
  126. package/dist/index.d.ts +5 -1
  127. package/dist/index.js +193 -232
  128. package/dist/{layout-HRBZPFCN.js → layout-34CLNICW.js} +5 -5
  129. package/dist/{layout-5RA6QWR6.js → layout-4Z5JM7PT.js} +6 -6
  130. package/dist/layout-6RDJHS6E.js +9 -0
  131. package/dist/{layout-7QXCNOVS.js → layout-7H4H46CS.js} +3 -3
  132. package/dist/{layout-46N4JJYK.js → layout-7SKMFYHL.js} +5 -5
  133. package/dist/{layout-HWDSRX5E.js → layout-D42XE4RE.js} +6 -6
  134. package/dist/{layout-EE6GE46Y.js → layout-DC4TVXER.js} +5 -5
  135. package/dist/layout-FGQWRYYW.js +14 -0
  136. package/dist/layout-GZ2CWONU.js +14 -0
  137. package/dist/layout-HQMBPJVS.js +10 -0
  138. package/dist/{layout-UM5F4DJB.js → layout-K2ZN3Q42.js} +5 -5
  139. package/dist/{layout-S2QBYSK2.js → layout-NXG63LWH.js} +3 -3
  140. package/dist/{layout-N76NR4ZO.js → layout-PUQCB6AN.js} +7 -7
  141. package/dist/{layout-HYZPWAK5.js → layout-QNUQLEHU.js} +3 -3
  142. package/dist/layout-S3EK4IYO.js +14 -0
  143. package/dist/{layout-search-OYV77HHS.js → layout-search-QS44PI5R.js} +6 -6
  144. package/dist/{parser-KNSQSKQO.js → parser-4BKIFG2C.js} +5 -5
  145. package/dist/{parser-OV7NOBW6.js → parser-4ROBKVUR.js} +4 -4
  146. package/dist/parser-667RGSUW.js +13 -0
  147. package/dist/{parser-IXSZZQHY.js → parser-BL7Z72EY.js} +4 -4
  148. package/dist/{parser-AQETEVRW.js → parser-CLMFZWCC.js} +4 -4
  149. package/dist/{parser-XKRP7QKP.js → parser-D6ONJQFR.js} +3 -3
  150. package/dist/{parser-2EWECDSA.js → parser-DERPY5KC.js} +4 -4
  151. package/dist/{parser-4OGOBJJ4.js → parser-GFSOPDB7.js} +4 -4
  152. package/dist/{parser-2MFP2H2E.js → parser-HVJFTOXL.js} +3 -3
  153. package/dist/{parser-VQP2UJ6W.js → parser-IKZFTLOJ.js} +3 -3
  154. package/dist/parser-J3P2D6IP.js +13 -0
  155. package/dist/{parser-PQ3POX45.js → parser-JD7OQ2E6.js} +4 -4
  156. package/dist/{parser-O5J4VBII.js → parser-K647FRI4.js} +3 -3
  157. package/dist/{parser-NGU3ETO6.js → parser-KPMN5KKE.js} +4 -4
  158. package/dist/{parser-4FL2CMDG.js → parser-MBJSBTL5.js} +4 -4
  159. package/dist/{parser-TFZFBVWN.js → parser-MCJWF5G3.js} +3 -3
  160. package/dist/{parser-NRAI6O25.js → parser-MRBPXXIV.js} +4 -4
  161. package/dist/{parser-6BTRLKRZ.js → parser-OBQG655V.js} +4 -4
  162. package/dist/{parser-3STE62GB.js → parser-QJYS7KQQ.js} +4 -4
  163. package/dist/{parser-XDVELHRK.js → parser-SMBJO3XN.js} +4 -4
  164. package/dist/{parser-TRTHDFPP.js → parser-TITK4YW6.js} +5 -5
  165. package/dist/{parser-I6KXEYFK.js → parser-TNYX5S7E.js} +4 -4
  166. package/dist/{parser-Y6WTBU76.js → parser-UBGPTIZD.js} +3 -3
  167. package/dist/parser-UGA23PYK.js +14 -0
  168. package/dist/{parser-N5O4IHUN.js → parser-WISPH7LW.js} +4 -4
  169. package/dist/{parser-CFZD5IBL.js → parser-XWUDFJ7P.js} +4 -4
  170. package/dist/parser-ZKF5K2H2.js +15 -0
  171. package/dist/{parser-ZSDPZYQP.js → parser-ZYC3XGNS.js} +4 -4
  172. package/dist/{renderer-AWWAF6XD.js → renderer-4IUPINAE.js} +10 -10
  173. package/dist/renderer-6L3NBEY5.js +24 -0
  174. package/dist/{renderer-ZRNG54CW.js → renderer-6T3KK4S3.js} +11 -11
  175. package/dist/{renderer-KQB7UGDS.js → renderer-7RH2SI3B.js} +3 -3
  176. package/dist/{renderer-6EEZHMH4.js → renderer-A5VFZQQK.js} +9 -9
  177. package/dist/{renderer-5MYBMBYO.js → renderer-BB5PREMY.js} +5 -5
  178. package/dist/{renderer-BYCNMBF7.js → renderer-CGW7QPNA.js} +10 -10
  179. package/dist/{renderer-QIWVHWZO.js → renderer-DAXMXIKD.js} +3 -3
  180. package/dist/{renderer-7MVLWWQD.js → renderer-DKESNMU5.js} +9 -9
  181. package/dist/{renderer-UV6MI64M.js → renderer-HVCU2C3Z.js} +3 -3
  182. package/dist/{renderer-VACVQYML.js → renderer-LWGJFT3D.js} +8 -8
  183. package/dist/{renderer-PGX2TKVS.js → renderer-MFJ7HY2H.js} +8 -8
  184. package/dist/{renderer-B2OMQIQG.js → renderer-MJDDU27W.js} +15 -15
  185. package/dist/{renderer-4JHRUBE6.js → renderer-QL5KO6SK.js} +10 -10
  186. package/dist/{renderer-W4M6QLIJ.js → renderer-QNHUXCRL.js} +14 -14
  187. package/dist/{renderer-ZGNTUWC4.js → renderer-ROV756WT.js} +8 -8
  188. package/dist/{renderer-YY2OSF6E.js → renderer-SQ3JUAI7.js} +9 -9
  189. package/dist/renderer-THD6V5TL.js +22 -0
  190. package/dist/{renderer-5NDVNDAZ.js → renderer-TPIBXNOS.js} +9 -9
  191. package/dist/{renderer-RPOA5YPZ.js → renderer-TYXRHMRI.js} +13 -13
  192. package/dist/{renderer-N43WR5GV.js → renderer-UZF3JROD.js} +11 -11
  193. package/dist/{renderer-6W5462RB.js → renderer-V3JEMWMM.js} +9 -9
  194. package/dist/{renderer-JGBKUCZD.js → renderer-VFUVRNLK.js} +4 -4
  195. package/dist/{renderer-Z7I3W2PP.js → renderer-VICQ4WNY.js} +8 -8
  196. package/dist/renderer-W5RMOURB.js +21 -0
  197. package/dist/renderer-XEKIRPI6.js +23 -0
  198. package/dist/{renderer-CLJHQPBJ.js → renderer-YHXPN3GF.js} +12 -12
  199. package/dist/renderer-radial-MHO2VDXN.js +21 -0
  200. package/dist/{resolver-NOAA7ID7.js → resolver-FHBCO3PL.js} +3 -3
  201. package/dist/{state-parser-Z2V23ATR.js → state-parser-RX3GXOIB.js} +4 -4
  202. package/dist/{state-renderer-B4DQBM6M.js → state-renderer-AJUKGNWU.js} +9 -9
  203. package/docs/ai-integration.md +8 -3
  204. package/docs/language-reference.md +179 -5
  205. package/gallery/fixtures/family.dgmo +23 -0
  206. package/gallery/fixtures/sketch.dgmo +22 -0
  207. package/package.json +1 -1
  208. package/dist/chunk-ODZVHU3R.js +0 -153
  209. package/dist/dgmo-router-X35VLZLM.js +0 -73
  210. package/dist/dimensions-J3FHIMJ6.js +0 -22
  211. package/dist/layout-5T6RH5M6.js +0 -14
  212. package/dist/layout-G23F7LDH.js +0 -9
  213. package/dist/layout-OB3RI63S.js +0 -14
  214. package/dist/parser-JAL2HD4I.js +0 -13
  215. package/dist/renderer-SMIBCRVB.js +0 -24
  216. package/dist/renderer-radial-C32GPJQ7.js +0 -21
@@ -5,7 +5,7 @@ import {
5
5
  splitNameAndMeta,
6
6
  tryParseSharedOption,
7
7
  warnUnknownMetaKeys
8
- } from "./chunk-Y3J7VR52.js";
8
+ } from "./chunk-ZNQX6QWH.js";
9
9
  import {
10
10
  makeDgmoError,
11
11
  makeFail
@@ -127,4 +127,4 @@ function parsePyramid(content) {
127
127
  export {
128
128
  parsePyramid
129
129
  };
130
- //# sourceMappingURL=chunk-76OWZ3BA.js.map
130
+ //# sourceMappingURL=chunk-4BD7EVPK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  layoutERDiagram
3
- } from "./chunk-6NYWYNBI.js";
3
+ } from "./chunk-4XK3FLFB.js";
4
4
  import {
5
5
  NOTE_BADGE_RADIUS,
6
6
  noteConnectorPoints,
@@ -12,12 +12,12 @@ import {
12
12
  EDGE_STROKE_WIDTH,
13
13
  NODE_STROKE_WIDTH
14
14
  } from "./chunk-3CIOJ5YJ.js";
15
- import {
16
- renderIntegratedLegend
17
- } from "./chunk-PWIHZ6NJ.js";
18
15
  import {
19
16
  ScaleContext
20
17
  } from "./chunk-YYVTBZZC.js";
18
+ import {
19
+ renderIntegratedLegend
20
+ } from "./chunk-4UDKKGHH.js";
21
21
  import {
22
22
  TITLE_FONT_SIZE,
23
23
  TITLE_FONT_WEIGHT,
@@ -28,13 +28,13 @@ import {
28
28
  } from "./chunk-6KFWC4CO.js";
29
29
  import {
30
30
  LEGEND_HEIGHT
31
- } from "./chunk-QOOUC2J5.js";
31
+ } from "./chunk-HQCHYB5F.js";
32
32
  import {
33
33
  measureText
34
- } from "./chunk-WCT3NYCV.js";
34
+ } from "./chunk-5LWQH6QV.js";
35
35
  import {
36
36
  parseERDiagram
37
- } from "./chunk-L66GEFB6.js";
37
+ } from "./chunk-35BBZDFE.js";
38
38
  import {
39
39
  contrastText,
40
40
  getSeriesColors,
@@ -43,7 +43,7 @@ import {
43
43
  import {
44
44
  resolveTagColor,
45
45
  tagAttrKey
46
- } from "./chunk-QLCCJEJI.js";
46
+ } from "./chunk-HBVD67XG.js";
47
47
 
48
48
  // src/er/renderer.ts
49
49
  import * as d3Selection from "d3-selection";
@@ -545,4 +545,4 @@ export {
545
545
  renderERDiagram,
546
546
  renderERDiagramForExport
547
547
  };
548
- //# sourceMappingURL=chunk-MITI6NOL.js.map
548
+ //# sourceMappingURL=chunk-4FIV4K4Z.js.map
@@ -0,0 +1,574 @@
1
+ import {
2
+ buildCoupleQuotient
3
+ } from "./chunk-QQJUTGQH.js";
4
+ import {
5
+ AUTO_TAG_COLOR_SENTINEL,
6
+ finalizeAutoTagColors,
7
+ matchTagBlockHeading,
8
+ stripDefaultModifier,
9
+ tagAttrKey
10
+ } from "./chunk-HBVD67XG.js";
11
+ import {
12
+ displayName,
13
+ normalizeName
14
+ } from "./chunk-NOTA6TEI.js";
15
+ import {
16
+ FAMILY_PERSON_REGISTRY,
17
+ FAMILY_UNION_REGISTRY,
18
+ cutUnionMetadata,
19
+ extractColor,
20
+ isReservedKey,
21
+ measureIndent,
22
+ parseFirstLine,
23
+ peelTrailingColorName,
24
+ splitNameAndMeta,
25
+ stripQuotes,
26
+ tokenizeQuoteAware,
27
+ tryParseSharedOption,
28
+ withTagAliases
29
+ } from "./chunk-ZNQX6QWH.js";
30
+ import {
31
+ nord,
32
+ resolveColor
33
+ } from "./chunk-TLVIHFRO.js";
34
+ import {
35
+ emit
36
+ } from "./chunk-CXK4DZH3.js";
37
+
38
+ // src/family/diagnostics.ts
39
+ var FAMILY_DX = {
40
+ SELF_UNION: {
41
+ code: "E_FAMILY_SELF_UNION",
42
+ severity: "error",
43
+ chartType: "family",
44
+ title: "Self union",
45
+ message: (p) => `A person cannot marry themselves ('${p.name ?? "Anne"}')`,
46
+ hint: "A union line joins two DIFFERENT people \u2014 check the names on each side of `+`.",
47
+ example: `family
48
+ Anne + Anne`
49
+ },
50
+ TOO_MANY_PARENTS: {
51
+ code: "E_FAMILY_TOO_MANY_PARENTS",
52
+ severity: "error",
53
+ chartType: "family",
54
+ title: "Too many parents in a union",
55
+ message: (p) => `A union joins at most two people, found ${p.count ?? 3} ('${p.line ?? "Anne + Bob + Carol"}')`,
56
+ hint: "Split into separate union lines \u2014 one couple per line. A trio like `A + B + C` is not a union.",
57
+ example: `family
58
+ Anne + Bob + Carol`
59
+ },
60
+ MISSING_OPERAND: {
61
+ code: "E_FAMILY_MISSING_OPERAND",
62
+ severity: "error",
63
+ chartType: "family",
64
+ title: "Union missing an operand",
65
+ message: "A union line needs a name on both sides of `+`",
66
+ hint: "Write `NameA + NameB`. A trailing/leading/doubled `+` with a blank side is not a valid union.",
67
+ example: `family
68
+ Anne +`
69
+ },
70
+ ANCESTRY_CYCLE: {
71
+ code: "E_FAMILY_ANCESTRY_CYCLE",
72
+ severity: "error",
73
+ chartType: "family",
74
+ title: "Ancestry cycle",
75
+ message: "union creates an ancestry cycle \u2014 a person and their own ancestor cannot share a marriage row",
76
+ hint: "Someone is listed as their own ancestor, married to a direct ancestor, or a parent-child pair forms a union. Remove the cycle.",
77
+ example: `family
78
+ Anne + Bob
79
+ Carol
80
+ Carol + Anne`
81
+ },
82
+ CHILD_OUTSIDE_UNION: {
83
+ code: "E_FAMILY_CHILD_OUTSIDE_UNION",
84
+ severity: "error",
85
+ chartType: "family",
86
+ title: "Child outside a union",
87
+ message: "indented child line has no union or person line above it to attach to",
88
+ hint: "A child must be indented under a union line (`A + B`) or a single parent line.",
89
+ example: `family
90
+ Carol`
91
+ },
92
+ UNKNOWN_KEY: {
93
+ code: "W_FAMILY_UNKNOWN_KEY",
94
+ severity: "warning",
95
+ chartType: "family",
96
+ title: "Unknown metadata key",
97
+ message: (p) => `Unknown metadata key "${p.key ?? "favouritecolor"}".`,
98
+ hint: "Recognized person keys: sex, b, d, bp, dp, occupation, military, education, religion, burial. Union key: m.",
99
+ example: `family
100
+ Anne favouritecolor: red`
101
+ },
102
+ DUPLICATE_METADATA: {
103
+ code: "W_FAMILY_DUPLICATE_METADATA",
104
+ severity: "warning",
105
+ chartType: "family",
106
+ title: "Conflicting metadata re-declaration",
107
+ message: (p) => `Metadata key '${p.key ?? "b"}' re-declared with a different value ('${p.old ?? "1665"}' \u2192 '${p.new ?? "1666"}') \u2014 keeping the first.`,
108
+ hint: "A person was declared more than once with conflicting values for the same key. Consolidate the declarations.",
109
+ example: `family
110
+ Anne b: 1665
111
+ Anne b: 1666`
112
+ },
113
+ HIGHLIGHT_UNKNOWN: {
114
+ code: "W_FAMILY_HIGHLIGHT_UNKNOWN",
115
+ severity: "warning",
116
+ chartType: "family",
117
+ title: "Highlight target not found",
118
+ message: (p) => `\`highlight\` names an unknown person "${p.name ?? "Ghost"}" \u2014 nothing was dimmed.`,
119
+ hint: "The `highlight` directive must name a person that appears in the tree.",
120
+ example: `family
121
+ highlight Ghost
122
+
123
+ Anne + Bob`
124
+ }
125
+ };
126
+ var FAMILY_DIAGNOSTICS = Object.values(FAMILY_DX);
127
+
128
+ // src/family/parser.ts
129
+ function normKey(label) {
130
+ return label.trim().replace(/\s+/g, " ").toLowerCase();
131
+ }
132
+ function splitUnionSides(nameRegion) {
133
+ const tokens = tokenizeQuoteAware(nameRegion);
134
+ const sides = [];
135
+ let cur = [];
136
+ for (const tok of tokens) {
137
+ if (tok === "+") {
138
+ sides.push(cur.join(" "));
139
+ cur = [];
140
+ } else {
141
+ cur.push(tok);
142
+ }
143
+ }
144
+ sides.push(cur.join(" "));
145
+ return sides;
146
+ }
147
+ function matchFamilyOption(line) {
148
+ const h = line.match(/^highlight\s+(.+)$/i);
149
+ if (h) return { key: "highlight", value: h[1].trim() };
150
+ if (/^generations$/i.test(line)) return { key: "generations", value: "true" };
151
+ if (/^no-daggers$/i.test(line)) return { key: "no-daggers", value: "true" };
152
+ return null;
153
+ }
154
+ function parseFamily(content, palette) {
155
+ const diagnostics = [];
156
+ const persons = /* @__PURE__ */ new Map();
157
+ const unions = [];
158
+ const tagGroups = [];
159
+ const options = {};
160
+ const rawLines = content.split("\n");
161
+ let title;
162
+ let titleLineNumber;
163
+ let startIdx = 0;
164
+ for (let i = 0; i < rawLines.length; i++) {
165
+ const t = rawLines[i].trim();
166
+ if (!t || t.startsWith("//")) continue;
167
+ const fl = parseFirstLine(rawLines[i]);
168
+ if (fl?.chartType === "family") {
169
+ title = fl.title;
170
+ titleLineNumber = i + 1;
171
+ }
172
+ startIdx = i + 1;
173
+ break;
174
+ }
175
+ const metaAliasMap = /* @__PURE__ */ new Map();
176
+ const aliasKeys = /* @__PURE__ */ new Set();
177
+ let currentTagGroup = null;
178
+ let sawContent = false;
179
+ for (let i = startIdx; i < rawLines.length; i++) {
180
+ const raw = rawLines[i];
181
+ const lineNum = i + 1;
182
+ const trimmed = raw.trim();
183
+ if (!trimmed || trimmed.startsWith("//")) continue;
184
+ const indent = measureIndent(raw);
185
+ const tagMatch = matchTagBlockHeading(trimmed);
186
+ if (tagMatch && indent === 0 && !sawContent) {
187
+ const newGroup = {
188
+ name: tagMatch.name,
189
+ ...tagMatch.alias !== void 0 && { alias: tagMatch.alias },
190
+ entries: [],
191
+ lineNumber: lineNum
192
+ };
193
+ currentTagGroup = newGroup;
194
+ const attr = tagAttrKey(tagMatch.name);
195
+ metaAliasMap.set(normKey(tagMatch.name), attr);
196
+ aliasKeys.add(normKey(tagMatch.name));
197
+ if (tagMatch.alias) {
198
+ metaAliasMap.set(normKey(tagMatch.alias), attr);
199
+ aliasKeys.add(normKey(tagMatch.alias));
200
+ }
201
+ if (tagMatch.inlineValues) {
202
+ for (const rawVal of tagMatch.inlineValues) {
203
+ const { text, isDefault } = stripDefaultModifier(rawVal);
204
+ const { label, color } = extractColor(
205
+ text,
206
+ palette,
207
+ diagnostics,
208
+ lineNum
209
+ );
210
+ newGroup.entries.push({
211
+ value: label,
212
+ color: color ?? AUTO_TAG_COLOR_SENTINEL,
213
+ lineNumber: lineNum
214
+ });
215
+ if (isDefault) newGroup.defaultValue = label;
216
+ }
217
+ if (!newGroup.defaultValue && newGroup.entries.length > 0) {
218
+ newGroup.defaultValue = newGroup.entries[0].value;
219
+ }
220
+ }
221
+ tagGroups.push(newGroup);
222
+ continue;
223
+ }
224
+ if (currentTagGroup && indent > 0 && !sawContent) {
225
+ const { text, isDefault } = stripDefaultModifier(trimmed);
226
+ const { label, color } = extractColor(
227
+ text,
228
+ palette,
229
+ diagnostics,
230
+ lineNum
231
+ );
232
+ currentTagGroup.entries.push({
233
+ value: label,
234
+ color: color ?? AUTO_TAG_COLOR_SENTINEL,
235
+ lineNumber: lineNum
236
+ });
237
+ if (isDefault || currentTagGroup.entries.length === 1) {
238
+ currentTagGroup.defaultValue = label;
239
+ }
240
+ continue;
241
+ }
242
+ if (indent === 0) currentTagGroup = null;
243
+ if (indent === 0) {
244
+ const fam = matchFamilyOption(trimmed);
245
+ if (fam) {
246
+ options[fam.key] = fam.value;
247
+ continue;
248
+ }
249
+ }
250
+ if (indent === 0 && tryParseSharedOption(trimmed, options)) continue;
251
+ if (indent === 0 && !tagMatch) sawContent = true;
252
+ }
253
+ const personRegistry = withTagAliases(FAMILY_PERSON_REGISTRY, aliasKeys);
254
+ const tagAttrKeys = new Set(tagGroups.map((g) => tagAttrKey(g.name)));
255
+ const aliasMap = /* @__PURE__ */ new Map();
256
+ const getPerson = (rawName, lineNum) => {
257
+ const aliasHit = aliasMap.get(normalizeName(rawName));
258
+ const id = aliasHit ?? normalizeName(rawName);
259
+ let p = persons.get(id);
260
+ if (!p) {
261
+ p = {
262
+ id,
263
+ label: displayName(rawName),
264
+ sex: "unknown",
265
+ metadata: {},
266
+ tagMetadata: {},
267
+ lineNumber: lineNum
268
+ };
269
+ persons.set(id, p);
270
+ }
271
+ return p;
272
+ };
273
+ const applyMeta = (p, meta, color, lineNum) => {
274
+ if (color !== void 0 && p.color === void 0) p.color = color;
275
+ for (const [k, v] of Object.entries(meta)) {
276
+ if (k === "sex") {
277
+ const s = v.trim().toLowerCase();
278
+ const sex = s === "m" ? "m" : s === "f" ? "f" : "unknown";
279
+ if (sex !== "unknown" && p.sex === "unknown") p.sex = sex;
280
+ continue;
281
+ }
282
+ if (tagAttrKeys.has(k)) {
283
+ p.tagMetadata[k] = v;
284
+ continue;
285
+ }
286
+ if (isReservedKey(FAMILY_PERSON_REGISTRY, k)) {
287
+ const prev = p.metadata[k];
288
+ if (prev !== void 0 && prev !== v) {
289
+ diagnostics.push(
290
+ emit(FAMILY_DX.DUPLICATE_METADATA, lineNum, {
291
+ key: k,
292
+ old: prev,
293
+ new: v
294
+ })
295
+ );
296
+ continue;
297
+ }
298
+ p.metadata[k] = v;
299
+ continue;
300
+ }
301
+ diagnostics.push(emit(FAMILY_DX.UNKNOWN_KEY, lineNum, { key: k }));
302
+ }
303
+ };
304
+ const parsePersonRef = (segment, lineNum, allowAdopted) => {
305
+ let adopted = false;
306
+ let seg = segment;
307
+ if (allowAdopted) {
308
+ const toks = tokenizeQuoteAware(seg);
309
+ if (toks.length >= 2 && toks[toks.length - 1] === "adopted") {
310
+ adopted = true;
311
+ seg = toks.slice(0, -1).join(" ");
312
+ }
313
+ }
314
+ const {
315
+ name,
316
+ meta,
317
+ color: rawColor,
318
+ alias
319
+ } = splitNameAndMeta(
320
+ seg,
321
+ personRegistry,
322
+ metaAliasMap,
323
+ palette,
324
+ diagnostics,
325
+ lineNum
326
+ );
327
+ let cleanName = name.replace(/,\s*$/, "").trim();
328
+ let color = rawColor;
329
+ if (allowAdopted) {
330
+ const toks = tokenizeQuoteAware(cleanName);
331
+ if (toks.length >= 2 && toks[toks.length - 1] === "adopted") {
332
+ adopted = true;
333
+ cleanName = toks.slice(0, -1).join(" ");
334
+ const re = peelTrailingColorName(cleanName);
335
+ if (re.colorName !== void 0) {
336
+ cleanName = re.label;
337
+ if (color === void 0) color = re.colorName;
338
+ }
339
+ }
340
+ }
341
+ if (!/^["']/.test(cleanName)) {
342
+ const um = cleanName.match(/\b([A-Za-z][\w-]*)\s*:/);
343
+ if (um?.index !== void 0 && um.index > 0 && !isReservedKey(personRegistry, um[1].toLowerCase())) {
344
+ diagnostics.push(
345
+ emit(FAMILY_DX.UNKNOWN_KEY, lineNum, { key: um[1].toLowerCase() })
346
+ );
347
+ cleanName = cleanName.slice(0, um.index).trim();
348
+ }
349
+ }
350
+ cleanName = stripQuotes(cleanName.trim());
351
+ if (cleanName === "?") {
352
+ const ph = {
353
+ id: `?#${++placeholderSeq}`,
354
+ label: "?",
355
+ sex: "unknown",
356
+ metadata: {},
357
+ tagMetadata: {},
358
+ placeholder: true,
359
+ lineNumber: lineNum
360
+ };
361
+ persons.set(ph.id, ph);
362
+ return { person: ph, adopted };
363
+ }
364
+ const person = getPerson(cleanName, lineNum);
365
+ if (alias !== void 0) aliasMap.set(normalizeName(alias), person.id);
366
+ applyMeta(person, meta, color, lineNum);
367
+ return { person, adopted };
368
+ };
369
+ const stack = [];
370
+ let unionSeq = 0;
371
+ let placeholderSeq = 0;
372
+ const unionById = /* @__PURE__ */ new Map();
373
+ const makeUnion = (parents, metadata, lineNum, divorced = false) => {
374
+ const u = {
375
+ id: `u${unionSeq++}`,
376
+ parents,
377
+ metadata,
378
+ children: [],
379
+ ...divorced && { divorced: true },
380
+ lineNumber: lineNum
381
+ };
382
+ unions.push(u);
383
+ unionById.set(u.id, u);
384
+ return u;
385
+ };
386
+ const attachChild = (parentScope, childId, adopted, lineNum) => {
387
+ let unionId = parentScope.unionId;
388
+ if (!unionId) {
389
+ if (!parentScope.singleParentUnionId) {
390
+ const u2 = makeUnion([parentScope.personId], {}, lineNum);
391
+ parentScope.singleParentUnionId = u2.id;
392
+ }
393
+ unionId = parentScope.singleParentUnionId;
394
+ }
395
+ const u = unionById.get(unionId);
396
+ u.children.push({ personId: childId, adopted });
397
+ };
398
+ let inTagBlock = false;
399
+ for (let i = startIdx; i < rawLines.length; i++) {
400
+ const raw = rawLines[i];
401
+ const lineNum = i + 1;
402
+ let trimmed = raw.trim();
403
+ if (!trimmed || trimmed.startsWith("//")) continue;
404
+ const cIdx = trimmed.indexOf(" //");
405
+ if (cIdx > 0) trimmed = trimmed.slice(0, cIdx).trim();
406
+ if (!trimmed) continue;
407
+ const indent = measureIndent(raw);
408
+ if (indent === 0 && matchTagBlockHeading(trimmed)) {
409
+ inTagBlock = true;
410
+ continue;
411
+ }
412
+ if (indent === 0) inTagBlock = false;
413
+ if (inTagBlock && indent > 0) continue;
414
+ if (indent === 0 && matchFamilyOption(trimmed)) continue;
415
+ if (indent === 0 && tryParseSharedOption(trimmed, {})) continue;
416
+ while (stack.length && stack[stack.length - 1].indent >= indent) {
417
+ stack.pop();
418
+ }
419
+ const parentScope = stack.length ? stack[stack.length - 1] : null;
420
+ let divorced = false;
421
+ if (/\s\+\s/.test(trimmed) && /\s+divorced$/i.test(trimmed)) {
422
+ divorced = true;
423
+ trimmed = trimmed.replace(/\s+divorced$/i, "").trimEnd();
424
+ }
425
+ const cut = cutUnionMetadata(trimmed, FAMILY_UNION_REGISTRY);
426
+ const nameRegion = cut < 0 ? trimmed : trimmed.slice(0, cut).trimEnd();
427
+ const metaRegion = cut < 0 ? "" : trimmed.slice(cut);
428
+ const rawSides = splitUnionSides(nameRegion);
429
+ const hadPlus = rawSides.length >= 2;
430
+ const sides = rawSides.map((s) => s.trim()).filter((s) => s !== "");
431
+ if (hadPlus && sides.length >= 2) {
432
+ let parentSides = sides;
433
+ if (sides.length > 2) {
434
+ diagnostics.push(
435
+ emit(FAMILY_DX.TOO_MANY_PARENTS, lineNum, {
436
+ count: sides.length,
437
+ line: nameRegion
438
+ })
439
+ );
440
+ parentSides = sides.slice(0, 2);
441
+ }
442
+ const unionMeta = {};
443
+ if (metaRegion) {
444
+ const { meta } = splitNameAndMeta(
445
+ metaRegion,
446
+ withTagAliases(FAMILY_UNION_REGISTRY, /* @__PURE__ */ new Set()),
447
+ /* @__PURE__ */ new Map(),
448
+ palette,
449
+ diagnostics,
450
+ lineNum
451
+ );
452
+ for (const [k, v] of Object.entries(meta)) {
453
+ if (k === "m") unionMeta["m"] = v;
454
+ else
455
+ diagnostics.push(emit(FAMILY_DX.UNKNOWN_KEY, lineNum, { key: k }));
456
+ }
457
+ }
458
+ const parentPersons = parentSides.map(
459
+ (s) => parsePersonRef(s, lineNum, false).person
460
+ );
461
+ if (parentPersons.length === 2 && parentPersons[0].id === parentPersons[1].id) {
462
+ diagnostics.push(
463
+ emit(FAMILY_DX.SELF_UNION, lineNum, {
464
+ name: parentPersons[0].label
465
+ })
466
+ );
467
+ }
468
+ if (parentScope) {
469
+ attachChild(parentScope, parentPersons[0].id, false, lineNum);
470
+ }
471
+ const u = makeUnion(
472
+ parentPersons.map((p) => p.id),
473
+ unionMeta,
474
+ lineNum,
475
+ divorced
476
+ );
477
+ stack.push({ indent, unionId: u.id });
478
+ } else if (hadPlus) {
479
+ diagnostics.push(
480
+ emit(FAMILY_DX.MISSING_OPERAND, lineNum, { line: nameRegion })
481
+ );
482
+ if (sides.length === 1) {
483
+ const isChild = parentScope !== null;
484
+ const { person, adopted } = parsePersonRef(sides[0], lineNum, isChild);
485
+ if (parentScope) attachChild(parentScope, person.id, adopted, lineNum);
486
+ stack.push({ indent, personId: person.id });
487
+ }
488
+ } else {
489
+ const isChild = parentScope !== null;
490
+ const { person, adopted } = parsePersonRef(trimmed, lineNum, isChild);
491
+ if (parentScope) {
492
+ attachChild(parentScope, person.id, adopted, lineNum);
493
+ } else if (indent > 0) {
494
+ diagnostics.push(emit(FAMILY_DX.CHILD_OUTSIDE_UNION, lineNum, {}));
495
+ }
496
+ stack.push({ indent, personId: person.id });
497
+ }
498
+ }
499
+ finalizeAutoTagColors(tagGroups, palette);
500
+ const SEX_META = {
501
+ m: ["Male", "blue", nord.nord10],
502
+ f: ["Female", "purple", nord.nord15],
503
+ unknown: ["Unknown", "gray", nord.nord3]
504
+ };
505
+ const anySex = [...persons.values()].some((p) => p.sex !== "unknown");
506
+ if (anySex) {
507
+ const present = new Set([...persons.values()].map((p) => p.sex));
508
+ const order = ["m", "f", "unknown"];
509
+ const entries = order.filter((s) => present.has(s)).map((s) => {
510
+ const [label, colorName, fallback] = SEX_META[s];
511
+ return {
512
+ value: label,
513
+ color: resolveColor(colorName, palette) ?? fallback,
514
+ lineNumber: 0
515
+ };
516
+ });
517
+ for (const p of persons.values()) p.tagMetadata["sex"] = SEX_META[p.sex][0];
518
+ const sexGroup = {
519
+ name: "Sex",
520
+ entries,
521
+ defaultValue: entries[0].value,
522
+ lineNumber: 0
523
+ };
524
+ tagGroups.unshift(sexGroup);
525
+ }
526
+ const frozenPersons = /* @__PURE__ */ new Map();
527
+ for (const [id, p] of persons) {
528
+ frozenPersons.set(id, {
529
+ id: p.id,
530
+ label: p.label,
531
+ sex: p.sex,
532
+ metadata: p.metadata,
533
+ ...p.color !== void 0 && { color: p.color },
534
+ tagMetadata: p.tagMetadata,
535
+ ...p.placeholder && { placeholder: true },
536
+ lineNumber: p.lineNumber
537
+ });
538
+ }
539
+ if (options["highlight"]) {
540
+ const norm = normalizeName(options["highlight"]);
541
+ const hit = aliasMap.get(norm) ?? (frozenPersons.has(norm) ? norm : void 0);
542
+ if (hit) {
543
+ options["highlight"] = hit;
544
+ } else {
545
+ diagnostics.push(
546
+ emit(FAMILY_DX.HIGHLIGHT_UNKNOWN, 0, { name: options["highlight"] })
547
+ );
548
+ delete options["highlight"];
549
+ }
550
+ }
551
+ let error = null;
552
+ const quotient = buildCoupleQuotient(frozenPersons, unions);
553
+ if (quotient.cycle) {
554
+ const diag = emit(FAMILY_DX.ANCESTRY_CYCLE, 0, {});
555
+ diagnostics.push(diag);
556
+ error = diag.message;
557
+ }
558
+ return {
559
+ ...title !== void 0 && { title },
560
+ ...titleLineNumber !== void 0 && { titleLineNumber },
561
+ persons: frozenPersons,
562
+ unions,
563
+ tagGroups,
564
+ options,
565
+ diagnostics,
566
+ error
567
+ };
568
+ }
569
+
570
+ export {
571
+ FAMILY_DIAGNOSTICS,
572
+ parseFamily
573
+ };
574
+ //# sourceMappingURL=chunk-4HVNZ7WF.js.map
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  resolveTagColor,
19
19
  tagAttrKey
20
- } from "./chunk-QLCCJEJI.js";
20
+ } from "./chunk-HBVD67XG.js";
21
21
  import {
22
22
  CATEGORICAL_COLOR_ORDER,
23
23
  resolveColor
@@ -391,4 +391,4 @@ function drawCenteredLabel(g, label, cx, cy, fill, fontSize, tight = false, halo
391
391
  export {
392
392
  renderSwimlaneForExport
393
393
  };
394
- //# sourceMappingURL=chunk-X5LCYCL5.js.map
394
+ //# sourceMappingURL=chunk-4NQ3IKUM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  computeLegendLayout
3
- } from "./chunk-YAA6IID3.js";
3
+ } from "./chunk-7UEMZREK.js";
4
4
  import {
5
5
  FONT_FAMILY
6
6
  } from "./chunk-6KFWC4CO.js";
@@ -14,14 +14,14 @@ import {
14
14
  LEGEND_TOGGLE_DOT_R,
15
15
  LEGEND_TOGGLE_OFF_OPACITY,
16
16
  measureLegendText
17
- } from "./chunk-QOOUC2J5.js";
17
+ } from "./chunk-HQCHYB5F.js";
18
18
  import {
19
19
  mix,
20
20
  valueRampStops
21
21
  } from "./chunk-P6T66CCZ.js";
22
22
  import {
23
23
  tagAttrKey
24
- } from "./chunk-QLCCJEJI.js";
24
+ } from "./chunk-HBVD67XG.js";
25
25
 
26
26
  // src/utils/legend-d3.ts
27
27
  var LEGEND_TEXT_DY = "0.32em";
@@ -293,4 +293,4 @@ export {
293
293
  renderLegendD3,
294
294
  renderIntegratedLegend
295
295
  };
296
- //# sourceMappingURL=chunk-PWIHZ6NJ.js.map
296
+ //# sourceMappingURL=chunk-4UDKKGHH.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  buildPlacedNotes
3
- } from "./chunk-JED6ZDEE.js";
3
+ } from "./chunk-O7WP4ZD4.js";
4
4
  import {
5
5
  noteCanvasShift
6
6
  } from "./chunk-6EK55ART.js";
7
7
  import {
8
8
  measureText
9
- } from "./chunk-WCT3NYCV.js";
9
+ } from "./chunk-5LWQH6QV.js";
10
10
  import {
11
11
  resolveNotes
12
12
  } from "./chunk-FMDSF3OV.js";
@@ -326,4 +326,4 @@ function layoutERDiagram(parsed, options) {
326
326
  export {
327
327
  layoutERDiagram
328
328
  };
329
- //# sourceMappingURL=chunk-6NYWYNBI.js.map
329
+ //# sourceMappingURL=chunk-4XK3FLFB.js.map