schematex 0.2.2 → 0.2.4

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 (163) hide show
  1. package/dist/ai/ai-sdk.cjs +85 -0
  2. package/dist/ai/ai-sdk.cjs.map +1 -0
  3. package/dist/ai/ai-sdk.d.cts +30 -0
  4. package/dist/ai/ai-sdk.d.ts +30 -0
  5. package/dist/ai/ai-sdk.js +83 -0
  6. package/dist/ai/ai-sdk.js.map +1 -0
  7. package/dist/ai/index.cjs +60 -0
  8. package/dist/ai/index.cjs.map +1 -0
  9. package/dist/ai/index.d.cts +155 -0
  10. package/dist/ai/index.d.ts +155 -0
  11. package/dist/ai/index.js +23 -0
  12. package/dist/ai/index.js.map +1 -0
  13. package/dist/browser.cjs +16 -15
  14. package/dist/browser.cjs.map +1 -1
  15. package/dist/browser.js +14 -13
  16. package/dist/browser.js.map +1 -1
  17. package/dist/{chunk-ZO77FHBF.cjs → chunk-2JDVJRR3.cjs} +14 -6
  18. package/dist/chunk-2JDVJRR3.cjs.map +1 -0
  19. package/dist/{chunk-QR7VTCI4.cjs → chunk-3YZ6FPQW.cjs} +13 -7
  20. package/dist/chunk-3YZ6FPQW.cjs.map +1 -0
  21. package/dist/{chunk-GEPBET4L.js → chunk-45KP67RR.js} +14 -6
  22. package/dist/chunk-45KP67RR.js.map +1 -0
  23. package/dist/{chunk-LKOBOVNL.cjs → chunk-5AEN2PLB.cjs} +14 -6
  24. package/dist/chunk-5AEN2PLB.cjs.map +1 -0
  25. package/dist/{chunk-7IRT3LOY.cjs → chunk-A5D2IMOX.cjs} +16 -8
  26. package/dist/chunk-A5D2IMOX.cjs.map +1 -0
  27. package/dist/{chunk-XVCAOGFL.cjs → chunk-B37IKTI7.cjs} +221 -44
  28. package/dist/chunk-B37IKTI7.cjs.map +1 -0
  29. package/dist/{chunk-ISACNVFE.cjs → chunk-B6INLQBU.cjs} +15 -9
  30. package/dist/chunk-B6INLQBU.cjs.map +1 -0
  31. package/dist/{chunk-YXIIWLLB.cjs → chunk-COLTVQWR.cjs} +174 -6
  32. package/dist/chunk-COLTVQWR.cjs.map +1 -0
  33. package/dist/chunk-DNZFOCV7.js +796 -0
  34. package/dist/chunk-DNZFOCV7.js.map +1 -0
  35. package/dist/chunk-DPQYGWCT.cjs +1121 -0
  36. package/dist/chunk-DPQYGWCT.cjs.map +1 -0
  37. package/dist/{chunk-XHZ7GXP2.cjs → chunk-E65ITQXV.cjs} +178 -22
  38. package/dist/chunk-E65ITQXV.cjs.map +1 -0
  39. package/dist/{chunk-LCR3KOJV.js → chunk-FCGHV6ZK.js} +16 -8
  40. package/dist/chunk-FCGHV6ZK.js.map +1 -0
  41. package/dist/{chunk-X2BQKXMA.js → chunk-FE6GAUNW.js} +13 -7
  42. package/dist/chunk-FE6GAUNW.js.map +1 -0
  43. package/dist/{chunk-YN467EEQ.js → chunk-H2OEUBPO.js} +547 -101
  44. package/dist/chunk-H2OEUBPO.js.map +1 -0
  45. package/dist/{chunk-Z3WOHHG3.js → chunk-J2LVOWVY.js} +177 -24
  46. package/dist/chunk-J2LVOWVY.js.map +1 -0
  47. package/dist/{chunk-CJ2A3UEQ.js → chunk-LR4X4ZRG.js} +179 -23
  48. package/dist/chunk-LR4X4ZRG.js.map +1 -0
  49. package/dist/{chunk-LXNFVHDT.cjs → chunk-MCFQAUQV.cjs} +21 -13
  50. package/dist/chunk-MCFQAUQV.cjs.map +1 -0
  51. package/dist/{chunk-Z63XPA2V.cjs → chunk-MJGDP3CS.cjs} +546 -100
  52. package/dist/chunk-MJGDP3CS.cjs.map +1 -0
  53. package/dist/chunk-MR5HU5WU.js +1112 -0
  54. package/dist/chunk-MR5HU5WU.js.map +1 -0
  55. package/dist/{chunk-7HKXU7J2.cjs → chunk-MSYBSOU2.cjs} +65 -38
  56. package/dist/chunk-MSYBSOU2.cjs.map +1 -0
  57. package/dist/{chunk-4KYW63IK.js → chunk-OC22GGQN.js} +222 -45
  58. package/dist/chunk-OC22GGQN.js.map +1 -0
  59. package/dist/{chunk-5UV5VQ7J.js → chunk-RP5UATRA.js} +174 -6
  60. package/dist/chunk-RP5UATRA.js.map +1 -0
  61. package/dist/{chunk-ZNZIL244.js → chunk-U6L3FAML.js} +15 -9
  62. package/dist/chunk-U6L3FAML.js.map +1 -0
  63. package/dist/{chunk-CXHPP5BL.cjs → chunk-UAGSCTYI.cjs} +177 -24
  64. package/dist/chunk-UAGSCTYI.cjs.map +1 -0
  65. package/dist/{chunk-5SH5NUDW.js → chunk-UGCUNADI.js} +21 -13
  66. package/dist/chunk-UGCUNADI.js.map +1 -0
  67. package/dist/chunk-ULYRO2KY.cjs +800 -0
  68. package/dist/chunk-ULYRO2KY.cjs.map +1 -0
  69. package/dist/{chunk-UUPYTUGR.js → chunk-VPKCW4PB.js} +54 -27
  70. package/dist/chunk-VPKCW4PB.js.map +1 -0
  71. package/dist/{chunk-6YMQSTFF.js → chunk-ZNDIGQJD.js} +14 -6
  72. package/dist/chunk-ZNDIGQJD.js.map +1 -0
  73. package/dist/diagrams/blockdiagram/index.cjs +5 -5
  74. package/dist/diagrams/blockdiagram/index.d.cts +1 -1
  75. package/dist/diagrams/blockdiagram/index.d.ts +1 -1
  76. package/dist/diagrams/blockdiagram/index.js +1 -1
  77. package/dist/diagrams/circuit/index.d.cts +1 -1
  78. package/dist/diagrams/circuit/index.d.ts +1 -1
  79. package/dist/diagrams/ecomap/index.cjs +7 -6
  80. package/dist/diagrams/ecomap/index.d.cts +2 -2
  81. package/dist/diagrams/ecomap/index.d.ts +2 -2
  82. package/dist/diagrams/ecomap/index.js +2 -1
  83. package/dist/diagrams/entity/index.d.cts +1 -1
  84. package/dist/diagrams/entity/index.d.ts +1 -1
  85. package/dist/diagrams/fishbone/index.cjs +7 -7
  86. package/dist/diagrams/fishbone/index.d.cts +1 -1
  87. package/dist/diagrams/fishbone/index.d.ts +1 -1
  88. package/dist/diagrams/fishbone/index.js +1 -1
  89. package/dist/diagrams/flowchart/index.cjs +7 -7
  90. package/dist/diagrams/flowchart/index.d.cts +2 -2
  91. package/dist/diagrams/flowchart/index.d.ts +2 -2
  92. package/dist/diagrams/flowchart/index.js +1 -1
  93. package/dist/diagrams/genogram/index.cjs +9 -8
  94. package/dist/diagrams/genogram/index.d.cts +1 -1
  95. package/dist/diagrams/genogram/index.d.ts +1 -1
  96. package/dist/diagrams/genogram/index.js +2 -1
  97. package/dist/diagrams/ladder/index.cjs +5 -5
  98. package/dist/diagrams/ladder/index.d.cts +1 -1
  99. package/dist/diagrams/ladder/index.d.ts +1 -1
  100. package/dist/diagrams/ladder/index.js +1 -1
  101. package/dist/diagrams/logic/index.d.cts +1 -1
  102. package/dist/diagrams/logic/index.d.ts +1 -1
  103. package/dist/diagrams/orgchart/index.cjs +6 -6
  104. package/dist/diagrams/orgchart/index.d.cts +5 -2
  105. package/dist/diagrams/orgchart/index.d.ts +5 -2
  106. package/dist/diagrams/orgchart/index.js +1 -1
  107. package/dist/diagrams/pedigree/index.cjs +7 -6
  108. package/dist/diagrams/pedigree/index.d.cts +1 -1
  109. package/dist/diagrams/pedigree/index.d.ts +1 -1
  110. package/dist/diagrams/pedigree/index.js +2 -1
  111. package/dist/diagrams/phylo/index.d.cts +1 -1
  112. package/dist/diagrams/phylo/index.d.ts +1 -1
  113. package/dist/diagrams/sld/index.cjs +5 -5
  114. package/dist/diagrams/sld/index.d.cts +1 -1
  115. package/dist/diagrams/sld/index.d.ts +1 -1
  116. package/dist/diagrams/sld/index.js +1 -1
  117. package/dist/diagrams/sociogram/index.cjs +6 -5
  118. package/dist/diagrams/sociogram/index.d.cts +2 -1
  119. package/dist/diagrams/sociogram/index.d.ts +2 -1
  120. package/dist/diagrams/sociogram/index.js +2 -1
  121. package/dist/diagrams/timing/index.cjs +4 -4
  122. package/dist/diagrams/timing/index.d.cts +1 -1
  123. package/dist/diagrams/timing/index.d.ts +1 -1
  124. package/dist/diagrams/timing/index.js +1 -1
  125. package/dist/diagrams/venn/index.d.cts +1 -1
  126. package/dist/diagrams/venn/index.d.ts +1 -1
  127. package/dist/{index-ga04CTBI.d.ts → index-BTZEka65.d.cts} +11 -2
  128. package/dist/{index-SSGpCggE.d.cts → index-DcU88F9i.d.ts} +11 -2
  129. package/dist/index.cjs +28 -27
  130. package/dist/index.d.cts +2 -2
  131. package/dist/index.d.ts +2 -2
  132. package/dist/index.js +13 -12
  133. package/dist/react.cjs +14 -13
  134. package/dist/react.cjs.map +1 -1
  135. package/dist/react.js +13 -12
  136. package/dist/react.js.map +1 -1
  137. package/dist/{types-BcPhMdHd.d.ts → types-C4LnMEcB.d.cts} +58 -4
  138. package/dist/{types-BcPhMdHd.d.cts → types-C4LnMEcB.d.ts} +58 -4
  139. package/package.json +27 -5
  140. package/dist/chunk-4KYW63IK.js.map +0 -1
  141. package/dist/chunk-5SH5NUDW.js.map +0 -1
  142. package/dist/chunk-5UV5VQ7J.js.map +0 -1
  143. package/dist/chunk-6YMQSTFF.js.map +0 -1
  144. package/dist/chunk-7HKXU7J2.cjs.map +0 -1
  145. package/dist/chunk-7IRT3LOY.cjs.map +0 -1
  146. package/dist/chunk-CJ2A3UEQ.js.map +0 -1
  147. package/dist/chunk-CXHPP5BL.cjs.map +0 -1
  148. package/dist/chunk-GEPBET4L.js.map +0 -1
  149. package/dist/chunk-ISACNVFE.cjs.map +0 -1
  150. package/dist/chunk-LCR3KOJV.js.map +0 -1
  151. package/dist/chunk-LKOBOVNL.cjs.map +0 -1
  152. package/dist/chunk-LXNFVHDT.cjs.map +0 -1
  153. package/dist/chunk-QR7VTCI4.cjs.map +0 -1
  154. package/dist/chunk-UUPYTUGR.js.map +0 -1
  155. package/dist/chunk-X2BQKXMA.js.map +0 -1
  156. package/dist/chunk-XHZ7GXP2.cjs.map +0 -1
  157. package/dist/chunk-XVCAOGFL.cjs.map +0 -1
  158. package/dist/chunk-YN467EEQ.js.map +0 -1
  159. package/dist/chunk-YXIIWLLB.cjs.map +0 -1
  160. package/dist/chunk-Z3WOHHG3.js.map +0 -1
  161. package/dist/chunk-Z63XPA2V.cjs.map +0 -1
  162. package/dist/chunk-ZNZIL244.js.map +0 -1
  163. package/dist/chunk-ZO77FHBF.cjs.map +0 -1
@@ -0,0 +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-ULYRO2KY.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,30 +1,34 @@
1
- import { orgchart } from './chunk-LCR3KOJV.js';
1
+ import { orgchart } from './chunk-FCGHV6ZK.js';
2
2
  import { circuit } from './chunk-PGALHQFF.js';
3
- import { blockdiagram } from './chunk-5SH5NUDW.js';
4
- import { ladder } from './chunk-ZNZIL244.js';
5
- import { sld } from './chunk-X2BQKXMA.js';
3
+ import { blockdiagram } from './chunk-UGCUNADI.js';
4
+ import { ladder } from './chunk-U6L3FAML.js';
5
+ import { sld } from './chunk-FE6GAUNW.js';
6
6
  import { entity } from './chunk-M5B2UUNW.js';
7
- import { fishbone } from './chunk-6YMQSTFF.js';
7
+ import { fishbone } from './chunk-ZNDIGQJD.js';
8
8
  import { venn } from './chunk-JDTB7IKL.js';
9
- import { flowchart } from './chunk-Z3WOHHG3.js';
10
- import { genogram } from './chunk-YN467EEQ.js';
11
- import { ecomap } from './chunk-CJ2A3UEQ.js';
12
- import { pedigree } from './chunk-4KYW63IK.js';
9
+ import { flowchart } from './chunk-J2LVOWVY.js';
10
+ import { genogram } from './chunk-H2OEUBPO.js';
11
+ import { ecomap } from './chunk-LR4X4ZRG.js';
12
+ import { pedigree } from './chunk-OC22GGQN.js';
13
13
  import { phylo } from './chunk-YQANC7HQ.js';
14
- import { sociogram } from './chunk-5UV5VQ7J.js';
15
- import { timing } from './chunk-GEPBET4L.js';
14
+ import { sociogram } from './chunk-RP5UATRA.js';
15
+ import { timing } from './chunk-45KP67RR.js';
16
16
  import { logic } from './chunk-5YYAYW67.js';
17
17
  import { resolveBaseTheme, resolveTimelineTheme, cssCustomProperties, resolveMindmapTheme } from './chunk-2VNMKOUO.js';
18
18
  import { title, desc, el, text, path, rect, group, svgRoot, escapeXml, defs, circle, polygon, line } from './chunk-KLJEK547.js';
19
19
 
20
20
  // src/diagrams/decisiontree/parser.ts
21
21
  var DTreeParseError = class extends Error {
22
- constructor(message, line2) {
22
+ constructor(message, line2, column, source) {
23
23
  super(line2 !== void 0 ? `Line ${line2}: ${message}` : message);
24
24
  this.line = line2;
25
+ this.column = column;
26
+ this.source = source;
25
27
  this.name = "DTreeParseError";
26
28
  }
27
29
  line;
30
+ column;
31
+ source;
28
32
  };
29
33
  function preprocess(src) {
30
34
  const out = [];
@@ -1225,12 +1229,16 @@ function formatYear(value, span) {
1225
1229
 
1226
1230
  // src/diagrams/timeline/parser.ts
1227
1231
  var TimelineParseError = class extends Error {
1228
- constructor(message, line2) {
1232
+ constructor(message, line2, column, source) {
1229
1233
  super(line2 !== void 0 ? `Line ${line2}: ${message}` : message);
1230
1234
  this.line = line2;
1235
+ this.column = column;
1236
+ this.source = source;
1231
1237
  this.name = "TimelineParseError";
1232
1238
  }
1233
1239
  line;
1240
+ column;
1241
+ source;
1234
1242
  };
1235
1243
  function preprocess2(src) {
1236
1244
  const out = [];
@@ -2791,6 +2799,18 @@ function splitWordsWithTrailingSpace(s) {
2791
2799
  }
2792
2800
 
2793
2801
  // src/diagrams/mindmap/parser.ts
2802
+ var MindmapParseError = class extends Error {
2803
+ constructor(message, line2, column, source) {
2804
+ super(line2 !== void 0 ? `Line ${line2}: ${message}` : message);
2805
+ this.line = line2;
2806
+ this.column = column;
2807
+ this.source = source;
2808
+ this.name = "MindmapParseError";
2809
+ }
2810
+ line;
2811
+ column;
2812
+ source;
2813
+ };
2794
2814
  var VALID_STYLES = ["map", "logic-right"];
2795
2815
  var DEFAULT_MAX_LABEL_WIDTH = 240;
2796
2816
  function parseDirective(line2, out) {
@@ -2812,23 +2832,30 @@ function makeNode(id, label, depth) {
2812
2832
  return { id, label, tokens: tokenizeInline(label), depth, children: [] };
2813
2833
  }
2814
2834
  function parseMindmap(text2) {
2815
- const lines = text2.split(/\r?\n/);
2816
- if (lines[0]?.trim().toLowerCase() === "mindmap") lines.shift();
2835
+ const allLines = text2.split(/\r?\n/);
2836
+ let lineOffset = 0;
2837
+ if (allLines[0]?.trim().toLowerCase() === "mindmap") {
2838
+ allLines.shift();
2839
+ lineOffset = 1;
2840
+ }
2841
+ const lines = allLines;
2817
2842
  const directives = { style: "map", maxLabelWidth: DEFAULT_MAX_LABEL_WIDTH };
2818
2843
  let root = null;
2819
2844
  let idCounter2 = 0;
2820
2845
  const nextId2 = () => `n${idCounter2++}`;
2821
2846
  const stack = [];
2822
2847
  let lastHeadingDepth = 0;
2823
- const attach = (node, depth) => {
2848
+ const attach = (node, depth, lineNo, source) => {
2824
2849
  while (stack.length && stack[stack.length - 1].depth >= depth) stack.pop();
2825
2850
  const parent = stack[stack.length - 1]?.node;
2826
- if (!parent) throw new Error("Mindmap: orphan node \u2014 expected root # heading first");
2851
+ if (!parent) throw new MindmapParseError("orphan node \u2014 expected root # heading first", lineNo, void 0, source);
2827
2852
  node.depth = parent.depth + 1;
2828
2853
  parent.children.push(node);
2829
2854
  stack.push({ node, depth });
2830
2855
  };
2831
- for (const raw of lines) {
2856
+ for (let i = 0; i < lines.length; i++) {
2857
+ const raw = lines[i] ?? "";
2858
+ const lineNo = i + 1 + lineOffset;
2832
2859
  const line2 = raw.replace(/\s+$/, "");
2833
2860
  const trimmed = line2.trim();
2834
2861
  if (!trimmed) continue;
@@ -2842,12 +2869,12 @@ function parseMindmap(text2) {
2842
2869
  const label = heading[2].trim();
2843
2870
  const node = makeNode(nextId2(), label, depth);
2844
2871
  if (depth === 0) {
2845
- if (root) throw new Error("Mindmap: multiple `#` center nodes not allowed");
2872
+ if (root) throw new MindmapParseError("multiple `#` center nodes not allowed", lineNo, void 0, line2);
2846
2873
  root = node;
2847
2874
  stack.length = 0;
2848
2875
  stack.push({ node, depth: 0 });
2849
2876
  } else {
2850
- attach(node, depth);
2877
+ attach(node, depth, lineNo, line2);
2851
2878
  }
2852
2879
  lastHeadingDepth = depth;
2853
2880
  continue;
@@ -2858,11 +2885,11 @@ function parseMindmap(text2) {
2858
2885
  const depth = lastHeadingDepth + 1 + Math.floor(indent / 2);
2859
2886
  const label = bullet[2].trim();
2860
2887
  const node = makeNode(nextId2(), label, depth);
2861
- attach(node, depth);
2888
+ attach(node, depth, lineNo, line2);
2862
2889
  continue;
2863
2890
  }
2864
2891
  }
2865
- if (!root) throw new Error("Mindmap: missing central topic \u2014 start with `# Title`");
2892
+ if (!root) throw new MindmapParseError("missing central topic \u2014 start with `# Title`");
2866
2893
  const ast = {
2867
2894
  type: "mindmap",
2868
2895
  style: directives.style,
@@ -3155,8 +3182,7 @@ function paletteColor(theme, branchIndex) {
3155
3182
  if (branchIndex < 0) return theme.centralFill;
3156
3183
  return theme.branchPalette[branchIndex % theme.branchPalette.length];
3157
3184
  }
3158
- function renderLine(line2, cx, cy, fontSize, fontFamily, fontWeight, theme) {
3159
- const leftX = cx - line2.width / 2;
3185
+ function renderLine(line2, leftX, cy, fontSize, fontFamily, fontWeight, theme) {
3160
3186
  const baselineY = cy + fontSize * 0.35;
3161
3187
  const tspans = [];
3162
3188
  const decorations = [];
@@ -3282,10 +3308,11 @@ function renderNode(n, color, theme, fontFamily) {
3282
3308
  const children = [];
3283
3309
  const decorations = [];
3284
3310
  const weight = isRoot ? 700 : isMain ? 600 : 400;
3311
+ const textLeft = n.x - n.labelWidth / 2;
3285
3312
  for (let i = 0; i < lineCount; i++) {
3286
3313
  const line2 = n.lines[i];
3287
3314
  const cy = topY + (i + 0.5) * lh;
3288
- const r = renderLine(line2, n.x, cy, fs, fontFamily, weight, theme);
3315
+ const r = renderLine(line2, textLeft, cy, fs, fontFamily, weight, theme);
3289
3316
  decorations.push(...r.decorations);
3290
3317
  children.push(r.textElement);
3291
3318
  }
@@ -4829,5 +4856,5 @@ function render(text2, config) {
4829
4856
  }
4830
4857
 
4831
4858
  export { decisiontree, parse, render, timeline };
4832
- //# sourceMappingURL=chunk-UUPYTUGR.js.map
4833
- //# sourceMappingURL=chunk-UUPYTUGR.js.map
4859
+ //# sourceMappingURL=chunk-VPKCW4PB.js.map
4860
+ //# sourceMappingURL=chunk-VPKCW4PB.js.map