schematex 0.6.1 → 0.6.5

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 (185) hide show
  1. package/dist/ai/ai-sdk.cjs +25 -25
  2. package/dist/ai/ai-sdk.d.cts +4 -4
  3. package/dist/ai/ai-sdk.d.ts +4 -4
  4. package/dist/ai/ai-sdk.js +20 -20
  5. package/dist/ai/index.cjs +31 -31
  6. package/dist/ai/index.d.cts +3 -3
  7. package/dist/ai/index.d.ts +3 -3
  8. package/dist/ai/index.js +20 -20
  9. package/dist/{api-BEJTXyBA.d.cts → api-BIqZjEDf.d.ts} +2 -2
  10. package/dist/{api-DFrSR3lw.d.ts → api-BXkOT7GL.d.cts} +2 -2
  11. package/dist/browser.cjs +26 -26
  12. package/dist/browser.d.cts +3 -3
  13. package/dist/browser.d.ts +3 -3
  14. package/dist/browser.js +20 -20
  15. package/dist/{chunk-ST5YRTTV.cjs → chunk-2F45Y2ON.cjs} +44 -5
  16. package/dist/chunk-2F45Y2ON.cjs.map +1 -0
  17. package/dist/{chunk-UWA5MWCI.js → chunk-35XCP2E4.js} +82 -48
  18. package/dist/chunk-35XCP2E4.js.map +1 -0
  19. package/dist/{chunk-VTSH4YPT.cjs → chunk-3C5DKCBJ.cjs} +12 -12
  20. package/dist/{chunk-VTSH4YPT.cjs.map → chunk-3C5DKCBJ.cjs.map} +1 -1
  21. package/dist/{chunk-HWVBHU3O.cjs → chunk-4THUHX2D.cjs} +5 -5
  22. package/dist/{chunk-HWVBHU3O.cjs.map → chunk-4THUHX2D.cjs.map} +1 -1
  23. package/dist/{chunk-4XR7X7XW.cjs → chunk-624UQ5R6.cjs} +4073 -640
  24. package/dist/chunk-624UQ5R6.cjs.map +1 -0
  25. package/dist/{chunk-LRI4RH2N.js → chunk-AORGFBEH.js} +127 -3
  26. package/dist/chunk-AORGFBEH.js.map +1 -0
  27. package/dist/{chunk-DOK7LKLO.js → chunk-B7ATOBL7.js} +3 -3
  28. package/dist/{chunk-DOK7LKLO.js.map → chunk-B7ATOBL7.js.map} +1 -1
  29. package/dist/{chunk-FKJBXGWP.cjs → chunk-BXNOXOE4.cjs} +4 -4
  30. package/dist/{chunk-FKJBXGWP.cjs.map → chunk-BXNOXOE4.cjs.map} +1 -1
  31. package/dist/{chunk-MFAMNFPA.js → chunk-EPKIJEH7.js} +6 -63
  32. package/dist/chunk-EPKIJEH7.js.map +1 -0
  33. package/dist/{chunk-H4MT5TJP.js → chunk-FHZTWWI6.js} +3 -3
  34. package/dist/{chunk-H4MT5TJP.js.map → chunk-FHZTWWI6.js.map} +1 -1
  35. package/dist/{chunk-2L4YXZAZ.cjs → chunk-FXPOHPBE.cjs} +5 -5
  36. package/dist/{chunk-2L4YXZAZ.cjs.map → chunk-FXPOHPBE.cjs.map} +1 -1
  37. package/dist/{chunk-3VB5AT4R.js → chunk-GPC5BWLI.js} +3 -3
  38. package/dist/{chunk-3VB5AT4R.js.map → chunk-GPC5BWLI.js.map} +1 -1
  39. package/dist/{chunk-MVIEIKOI.js → chunk-GV5QLYTW.js} +3 -3
  40. package/dist/{chunk-MVIEIKOI.js.map → chunk-GV5QLYTW.js.map} +1 -1
  41. package/dist/{chunk-WQDIZH2Z.cjs → chunk-HCBXTBFA.cjs} +12 -12
  42. package/dist/{chunk-WQDIZH2Z.cjs.map → chunk-HCBXTBFA.cjs.map} +1 -1
  43. package/dist/{chunk-6JI6FWLZ.cjs → chunk-I6UJR4SG.cjs} +4 -4
  44. package/dist/{chunk-6JI6FWLZ.cjs.map → chunk-I6UJR4SG.cjs.map} +1 -1
  45. package/dist/{chunk-RJMCWT7Z.js → chunk-IPEHLRTI.js} +3 -3
  46. package/dist/{chunk-RJMCWT7Z.js.map → chunk-IPEHLRTI.js.map} +1 -1
  47. package/dist/{chunk-N5B242WY.js → chunk-KPKGMOTS.js} +3 -3
  48. package/dist/{chunk-N5B242WY.js.map → chunk-KPKGMOTS.js.map} +1 -1
  49. package/dist/{chunk-TWLKXV2O.js → chunk-LGFB4H5B.js} +4 -4
  50. package/dist/{chunk-TWLKXV2O.js.map → chunk-LGFB4H5B.js.map} +1 -1
  51. package/dist/{chunk-I2GQYOZ5.js → chunk-MI77LY6A.js} +4043 -612
  52. package/dist/chunk-MI77LY6A.js.map +1 -0
  53. package/dist/{chunk-7F76AWOI.js → chunk-MKECYIWN.js} +3 -3
  54. package/dist/{chunk-7F76AWOI.js.map → chunk-MKECYIWN.js.map} +1 -1
  55. package/dist/{chunk-522WB2EH.js → chunk-OANWVUBA.js} +100 -25
  56. package/dist/chunk-OANWVUBA.js.map +1 -0
  57. package/dist/{chunk-YS6CGUNH.js → chunk-OHLNH7IO.js} +3 -3
  58. package/dist/{chunk-YS6CGUNH.js.map → chunk-OHLNH7IO.js.map} +1 -1
  59. package/dist/{chunk-6URNSB6G.js → chunk-P26FCZP3.js} +44 -5
  60. package/dist/chunk-P26FCZP3.js.map +1 -0
  61. package/dist/{chunk-L7POWM5B.cjs → chunk-R5E2LSN2.cjs} +129 -2
  62. package/dist/chunk-R5E2LSN2.cjs.map +1 -0
  63. package/dist/{chunk-S3RMAXH5.cjs → chunk-ROX5KEZM.cjs} +15 -15
  64. package/dist/{chunk-S3RMAXH5.cjs.map → chunk-ROX5KEZM.cjs.map} +1 -1
  65. package/dist/{chunk-3IE7KZY4.js → chunk-RVHOCGHT.js} +96 -10
  66. package/dist/chunk-RVHOCGHT.js.map +1 -0
  67. package/dist/{chunk-4UFR2LB6.cjs → chunk-S2CHBZ4A.cjs} +13 -13
  68. package/dist/{chunk-4UFR2LB6.cjs.map → chunk-S2CHBZ4A.cjs.map} +1 -1
  69. package/dist/{chunk-XNCOSVNG.cjs → chunk-SUIDD2C5.cjs} +6 -63
  70. package/dist/chunk-SUIDD2C5.cjs.map +1 -0
  71. package/dist/{chunk-SSLNPHCL.cjs → chunk-T3ZN5P32.cjs} +452 -61
  72. package/dist/chunk-T3ZN5P32.cjs.map +1 -0
  73. package/dist/{chunk-R66QG3XT.cjs → chunk-VZO2SX6Q.cjs} +98 -10
  74. package/dist/chunk-VZO2SX6Q.cjs.map +1 -0
  75. package/dist/{chunk-R6VX5YTJ.cjs → chunk-W3IXH6BN.cjs} +100 -25
  76. package/dist/chunk-W3IXH6BN.cjs.map +1 -0
  77. package/dist/{chunk-V4GILQR6.cjs → chunk-WZ5QBGPZ.cjs} +4 -4
  78. package/dist/{chunk-V4GILQR6.cjs.map → chunk-WZ5QBGPZ.cjs.map} +1 -1
  79. package/dist/{chunk-FBS3PACU.js → chunk-XEIVA2CT.js} +3 -3
  80. package/dist/{chunk-FBS3PACU.js.map → chunk-XEIVA2CT.js.map} +1 -1
  81. package/dist/{chunk-V4RO5KYY.cjs → chunk-XJJUJ2EF.cjs} +83 -49
  82. package/dist/chunk-XJJUJ2EF.cjs.map +1 -0
  83. package/dist/{chunk-C5C5EF3W.cjs → chunk-XO7WW3I6.cjs} +4 -4
  84. package/dist/{chunk-C5C5EF3W.cjs.map → chunk-XO7WW3I6.cjs.map} +1 -1
  85. package/dist/{chunk-HAZALB7U.js → chunk-XSPENTEG.js} +3 -3
  86. package/dist/{chunk-HAZALB7U.js.map → chunk-XSPENTEG.js.map} +1 -1
  87. package/dist/{chunk-YB4XJY5L.cjs → chunk-ZZFPXCAK.cjs} +12 -12
  88. package/dist/{chunk-YB4XJY5L.cjs.map → chunk-ZZFPXCAK.cjs.map} +1 -1
  89. package/dist/{chunk-OTSVMKII.js → chunk-ZZHQBAC3.js} +450 -59
  90. package/dist/chunk-ZZHQBAC3.js.map +1 -0
  91. package/dist/{diagnostics-B-ffSEhl.d.ts → diagnostics-CzHW0RCo.d.cts} +7 -11
  92. package/dist/{diagnostics-B-ffSEhl.d.cts → diagnostics-CzHW0RCo.d.ts} +7 -11
  93. package/dist/diagrams/blockdiagram/index.cjs +5 -5
  94. package/dist/diagrams/blockdiagram/index.d.cts +1 -1
  95. package/dist/diagrams/blockdiagram/index.d.ts +1 -1
  96. package/dist/diagrams/blockdiagram/index.js +1 -1
  97. package/dist/diagrams/circuit/index.cjs +8 -8
  98. package/dist/diagrams/circuit/index.d.cts +1 -1
  99. package/dist/diagrams/circuit/index.d.ts +1 -1
  100. package/dist/diagrams/circuit/index.js +2 -2
  101. package/dist/diagrams/ecomap/index.cjs +7 -7
  102. package/dist/diagrams/ecomap/index.d.cts +1 -1
  103. package/dist/diagrams/ecomap/index.d.ts +1 -1
  104. package/dist/diagrams/ecomap/index.js +2 -2
  105. package/dist/diagrams/entity/index.cjs +6 -6
  106. package/dist/diagrams/entity/index.d.cts +1 -1
  107. package/dist/diagrams/entity/index.d.ts +1 -1
  108. package/dist/diagrams/entity/index.js +2 -2
  109. package/dist/diagrams/fishbone/index.cjs +8 -8
  110. package/dist/diagrams/fishbone/index.d.cts +1 -1
  111. package/dist/diagrams/fishbone/index.d.ts +1 -1
  112. package/dist/diagrams/fishbone/index.js +2 -2
  113. package/dist/diagrams/flowchart/index.cjs +8 -8
  114. package/dist/diagrams/flowchart/index.d.cts +2 -2
  115. package/dist/diagrams/flowchart/index.d.ts +2 -2
  116. package/dist/diagrams/flowchart/index.js +2 -2
  117. package/dist/diagrams/genogram/index.cjs +9 -9
  118. package/dist/diagrams/genogram/index.d.cts +1 -1
  119. package/dist/diagrams/genogram/index.d.ts +1 -1
  120. package/dist/diagrams/genogram/index.js +2 -2
  121. package/dist/diagrams/ladder/index.cjs +7 -7
  122. package/dist/diagrams/ladder/index.d.cts +1 -1
  123. package/dist/diagrams/ladder/index.d.ts +1 -1
  124. package/dist/diagrams/ladder/index.js +3 -3
  125. package/dist/diagrams/logic/index.cjs +15 -6
  126. package/dist/diagrams/logic/index.d.cts +7 -2
  127. package/dist/diagrams/logic/index.d.ts +7 -2
  128. package/dist/diagrams/logic/index.js +3 -2
  129. package/dist/diagrams/orgchart/index.cjs +7 -7
  130. package/dist/diagrams/orgchart/index.d.cts +1 -1
  131. package/dist/diagrams/orgchart/index.d.ts +1 -1
  132. package/dist/diagrams/orgchart/index.js +2 -2
  133. package/dist/diagrams/pedigree/index.cjs +7 -7
  134. package/dist/diagrams/pedigree/index.d.cts +1 -1
  135. package/dist/diagrams/pedigree/index.d.ts +1 -1
  136. package/dist/diagrams/pedigree/index.js +2 -2
  137. package/dist/diagrams/phylo/index.cjs +7 -7
  138. package/dist/diagrams/phylo/index.d.cts +1 -1
  139. package/dist/diagrams/phylo/index.d.ts +1 -1
  140. package/dist/diagrams/phylo/index.js +2 -2
  141. package/dist/diagrams/sld/index.cjs +9 -9
  142. package/dist/diagrams/sld/index.d.cts +1 -1
  143. package/dist/diagrams/sld/index.d.ts +1 -1
  144. package/dist/diagrams/sld/index.js +3 -3
  145. package/dist/diagrams/sociogram/index.cjs +6 -6
  146. package/dist/diagrams/sociogram/index.d.cts +1 -1
  147. package/dist/diagrams/sociogram/index.d.ts +1 -1
  148. package/dist/diagrams/sociogram/index.js +2 -2
  149. package/dist/diagrams/timing/index.cjs +4 -4
  150. package/dist/diagrams/timing/index.d.cts +1 -1
  151. package/dist/diagrams/timing/index.d.ts +1 -1
  152. package/dist/diagrams/timing/index.js +1 -1
  153. package/dist/diagrams/venn/index.cjs +9 -9
  154. package/dist/diagrams/venn/index.d.cts +1 -1
  155. package/dist/diagrams/venn/index.d.ts +1 -1
  156. package/dist/diagrams/venn/index.js +2 -2
  157. package/dist/{index-DPWdYfNx.d.ts → index-DdR1Auby.d.ts} +1 -1
  158. package/dist/{index-S0njakQ2.d.cts → index-R0IwpG20.d.cts} +1 -1
  159. package/dist/index.cjs +84 -76
  160. package/dist/index.d.cts +9 -5
  161. package/dist/index.d.ts +9 -5
  162. package/dist/index.js +24 -24
  163. package/dist/react.cjs +20 -20
  164. package/dist/react.d.cts +2 -2
  165. package/dist/react.d.ts +2 -2
  166. package/dist/react.js +19 -19
  167. package/dist/{tools-CeGGMCs7.d.cts → tools-B7EqXLgD.d.ts} +3 -3
  168. package/dist/{tools-kK_enDwb.d.ts → tools-DHSVXHM9.d.cts} +3 -3
  169. package/package.json +1 -1
  170. package/dist/chunk-3IE7KZY4.js.map +0 -1
  171. package/dist/chunk-4XR7X7XW.cjs.map +0 -1
  172. package/dist/chunk-522WB2EH.js.map +0 -1
  173. package/dist/chunk-6URNSB6G.js.map +0 -1
  174. package/dist/chunk-I2GQYOZ5.js.map +0 -1
  175. package/dist/chunk-L7POWM5B.cjs.map +0 -1
  176. package/dist/chunk-LRI4RH2N.js.map +0 -1
  177. package/dist/chunk-MFAMNFPA.js.map +0 -1
  178. package/dist/chunk-OTSVMKII.js.map +0 -1
  179. package/dist/chunk-R66QG3XT.cjs.map +0 -1
  180. package/dist/chunk-R6VX5YTJ.cjs.map +0 -1
  181. package/dist/chunk-SSLNPHCL.cjs.map +0 -1
  182. package/dist/chunk-ST5YRTTV.cjs.map +0 -1
  183. package/dist/chunk-UWA5MWCI.js.map +0 -1
  184. package/dist/chunk-V4RO5KYY.cjs.map +0 -1
  185. package/dist/chunk-XNCOSVNG.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/diagrams/timing/parser.ts","../src/diagrams/timing/renderer.ts","../src/diagrams/timing/index.ts"],"names":["text","title","matchQuotedTitle","el","group","svgRoot","desc","defs"],"mappings":"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","file":"chunk-2F45Y2ON.cjs","sourcesContent":["import type { TimingAST, TimingSignal, TimingGroup } from \"../../core/types\";\nimport { matchQuotedTitle } from \"../../core/quotes\";\n\nexport class TimingParseError extends Error {\n constructor(\n message: string,\n public line?: number,\n public column?: number,\n public source?: string\n ) {\n super(line !== undefined ? `Line ${line}: ${message}` : message);\n this.name = \"TimingParseError\";\n }\n}\n\nconst VALID_STATES = /^[01xzpPnNhHlLudD=.23456789]+$/;\n\nfunction splitDataList(rest: string): { wave: string; data: string[] } {\n // Wave string is first token; remaining tokens are quoted strings or a `data: [...]` form\n const trimmed = rest.trim();\n // Accept: `wave data: [\"a\",\"b\"]` or `wave \"a\" \"b\" \"c\"`\n const m = trimmed.match(/^(\\S+)\\s*(.*)$/);\n if (!m) return { wave: trimmed, data: [] };\n const wave = m[1];\n const remainder = m[2].trim();\n if (!remainder) return { wave, data: [] };\n\n const data: string[] = [];\n // Strip `data:` prefix + optional brackets\n let r = remainder.replace(/^data\\s*:\\s*/, \"\").trim();\n if (r.startsWith(\"[\") && r.endsWith(\"]\")) r = r.slice(1, -1);\n const re = /\"([^\"]*)\"/g;\n let match: RegExpExecArray | null;\n while ((match = re.exec(r)) !== null) data.push(match[1]);\n return { wave, data };\n}\n\nexport function parseTiming(text: string): TimingAST {\n const lines = text.split(\"\\n\").map((l) => l.replace(/\\r$/, \"\"));\n const signals: Array<TimingSignal | TimingGroup> = [];\n let title: string | undefined;\n let hscale: number | undefined;\n let currentGroup: TimingGroup | null = null;\n\n for (let i = 0; i < lines.length; i++) {\n const raw = lines[i] ?? \"\";\n const lineNo = i + 1;\n const line = raw.trim();\n if (!line || line.startsWith(\"#\")) continue;\n\n // Header: `timing \"title\" [hscale: 2]`\n if (/^timing\\b/i.test(line)) {\n const t = matchQuotedTitle(line);\n if (t !== undefined) title = t;\n const hs = line.match(/hscale\\s*:\\s*(\\d+(?:\\.\\d+)?)/);\n if (hs) hscale = parseFloat(hs[1]);\n continue;\n }\n\n // Group start: `[GroupName]` or `group \"name\" {`\n const groupOpen = line.match(/^\\[([^\\]]+)\\]$/) || line.match(/^group\\s+\"([^\"]+)\"\\s*\\{?$/);\n if (groupOpen) {\n currentGroup = { label: groupOpen[1], signals: [] };\n signals.push(currentGroup);\n continue;\n }\n if (line === \"}\") {\n currentGroup = null;\n continue;\n }\n if (line === \"---\") {\n currentGroup = null;\n continue;\n }\n\n // Signal: `NAME: wave ...`\n const sigMatch = line.match(/^([^:]+):\\s*(.+)$/);\n if (sigMatch) {\n const name = sigMatch[1].trim();\n const rhs = sigMatch[2].trim();\n const tok = rhs.split(/\\s+/);\n let wave: string;\n let data: string[] = [];\n\n if (/^clock$/i.test(tok[0])) {\n // `NAME: clock 8 [neg]` — N clock periods (no char-counting).\n const n = Number(tok[1]);\n if (!Number.isInteger(n) || n < 1) {\n throw new TimingParseError(\n `clock needs a positive cycle count, e.g. \"${name}: clock 8\"`,\n lineNo, undefined, line\n );\n }\n wave = (/^neg/i.test(tok[2] ?? \"\") ? \"n\" : \"p\").repeat(n);\n } else if (/^rle$/i.test(tok[0])) {\n // `NAME: rle 1*2 0*6 x*1` — run-length, each seg is <state>*<count>.\n wave = \"\";\n for (const seg of tok.slice(1)) {\n const sm = seg.match(/^(.)\\*(\\d+)$/);\n if (!sm || !VALID_STATES.test(sm[1])) {\n throw new TimingParseError(\n `rle segment must be <state>*<count>, e.g. \"1*2 0*6\"; got \"${seg}\"`,\n lineNo, undefined, line\n );\n }\n wave += sm[1].repeat(Number(sm[2]));\n }\n } else {\n const parsed = splitDataList(rhs);\n wave = parsed.wave;\n data = parsed.data;\n if (!VALID_STATES.test(wave)) {\n const bad = [...wave].find((c) => !VALID_STATES.test(c));\n throw new TimingParseError(\n `Invalid wave string \"${wave}\" for signal ${name}` +\n (bad ? ` — \"${bad}\" is not a valid state` : \"\") +\n `. Valid states: 0 1 x z = . p P n N h H l L u d 2-9` +\n `. Tip: use \"clock N\" for a clock or \"rle 1*2 0*6\" for run-length.`,\n lineNo, undefined, line\n );\n }\n }\n\n const signal: TimingSignal = { name, wave, data: data.length ? data : undefined };\n if (currentGroup) currentGroup.signals.push(signal);\n else signals.push(signal);\n continue;\n }\n }\n\n return { type: \"timing\", title, hscale, signals };\n}\n","import type { TimingAST, TimingSignal, TimingGroup } from \"../../core/types\";\nimport { svgRoot, defs, group, el, text, title as titleEl, desc } from \"../../core/svg\";\n\nconst NAME_W = 120;\nconst SIG_H = 36;\nconst PAD_TOP = 12;\nconst PAD_BOT = 12;\nconst PAD_V = 6; // vertical padding inside band for rail spacing\nconst DEFAULT_PW = 40;\nconst GROUP_LABEL_H = 22;\n\ntype FlatRow =\n | { kind: \"signal\"; signal: TimingSignal; indent: number }\n | { kind: \"group\"; label: string; indent: number };\n\nfunction flatten(items: Array<TimingSignal | TimingGroup>, indent = 0): FlatRow[] {\n const out: FlatRow[] = [];\n for (const item of items) {\n if (\"wave\" in item) {\n out.push({ kind: \"signal\", signal: item, indent });\n } else {\n out.push({ kind: \"group\", label: item.label, indent });\n out.push(...flatten(item.signals, indent + 1));\n }\n }\n return out;\n}\n\ninterface WaveCtx {\n pw: number;\n yHi: number;\n yLo: number;\n yMid: number;\n h: number;\n}\n\ntype PrevState = \"hi\" | \"lo\" | \"bus\" | \"z\" | \"x\" | \"none\";\n\nfunction renderWave(signal: TimingSignal, ctx: WaveCtx): { svg: string; labels: string } {\n const { pw, yHi, yLo, yMid } = ctx;\n const wave = signal.wave;\n const paths: string[] = [];\n const busRects: string[] = [];\n const busTexts: string[] = [];\n const xPatchRects: string[] = [];\n const zLines: string[] = [];\n\n let prev: PrevState = \"none\";\n let prevChar = \"\";\n let busStartX = 0;\n let busIndex = 0;\n let dataIdx = 0;\n let linePath = \"\";\n\n const startLine = (x: number, y: number) => {\n if (linePath) paths.push(linePath);\n linePath = `M ${x},${y}`;\n };\n const extendLineTo = (x: number, y: number) => {\n linePath += ` L ${x},${y}`;\n };\n const flushLine = () => {\n if (linePath) {\n paths.push(linePath);\n linePath = \"\";\n }\n };\n\n const closeBus = (x: number) => {\n const start = busStartX;\n const end = x;\n const inset = Math.min(5, (end - start) / 2);\n // Trapezoid outline\n const d = `M ${start + inset},${yHi} L ${end - inset},${yHi} L ${end},${yMid} L ${end - inset},${yLo} L ${start + inset},${yLo} L ${start},${yMid} Z`;\n busRects.push(\n el(\"path\", { class: \"schematex-timing-bus\", d, \"data-bus-index\": String(busIndex) })\n );\n // Data label\n const label = signal.data?.[dataIdx] ?? \"\";\n if (label) {\n busTexts.push(\n text(\n {\n x: (start + end) / 2,\n y: yMid + 4,\n class: \"schematex-timing-bus-label\",\n \"text-anchor\": \"middle\",\n },\n label\n )\n );\n }\n dataIdx++;\n busIndex++;\n };\n\n for (let i = 0; i < wave.length; i++) {\n const ch = wave[i];\n const x = i * pw;\n const xNext = x + pw;\n\n // Handle continuation '.'\n const effective = ch === \".\" ? prevChar : ch;\n\n switch (effective) {\n case \"0\":\n case \"l\":\n case \"L\": {\n if (prev === \"bus\") closeBus(x);\n if (prev === \"x\" || prev === \"z\" || prev === \"none\" || prev === \"bus\") {\n flushLine();\n startLine(x, yLo);\n } else if (prev === \"hi\") {\n extendLineTo(x, yLo);\n }\n extendLineTo(xNext, yLo);\n prev = \"lo\";\n break;\n }\n case \"1\":\n case \"h\":\n case \"H\": {\n if (prev === \"bus\") closeBus(x);\n if (prev === \"x\" || prev === \"z\" || prev === \"none\" || prev === \"bus\") {\n flushLine();\n startLine(x, yHi);\n } else if (prev === \"lo\") {\n extendLineTo(x, yHi);\n }\n extendLineTo(xNext, yHi);\n prev = \"hi\";\n break;\n }\n case \"p\":\n case \"P\": {\n if (prev === \"bus\") closeBus(x);\n flushLine();\n // One-period positive clock: lo→hi at x, hi until midpoint, lo at mid, lo until xNext\n startLine(x, yLo);\n extendLineTo(x, yHi);\n extendLineTo(x + pw / 2, yHi);\n extendLineTo(x + pw / 2, yLo);\n extendLineTo(xNext, yLo);\n flushLine();\n prev = \"lo\";\n break;\n }\n case \"n\":\n case \"N\": {\n if (prev === \"bus\") closeBus(x);\n flushLine();\n startLine(x, yHi);\n extendLineTo(x, yLo);\n extendLineTo(x + pw / 2, yLo);\n extendLineTo(x + pw / 2, yHi);\n extendLineTo(xNext, yHi);\n flushLine();\n prev = \"hi\";\n break;\n }\n case \"u\": {\n if (prev === \"bus\") closeBus(x);\n flushLine();\n startLine(x, yLo);\n extendLineTo(xNext, yHi);\n prev = \"hi\";\n break;\n }\n case \"d\": {\n if (prev === \"bus\") closeBus(x);\n flushLine();\n startLine(x, yHi);\n extendLineTo(xNext, yLo);\n prev = \"lo\";\n break;\n }\n case \"z\": {\n if (prev === \"bus\") closeBus(x);\n flushLine();\n zLines.push(\n el(\"line\", {\n x1: x,\n y1: yMid,\n x2: xNext,\n y2: yMid,\n class: \"schematex-timing-hiz\",\n })\n );\n prev = \"z\";\n break;\n }\n case \"x\": {\n if (prev === \"bus\") closeBus(x);\n flushLine();\n xPatchRects.push(\n el(\"rect\", {\n x,\n y: yHi,\n width: pw,\n height: yLo - yHi,\n class: \"schematex-timing-unknown\",\n fill: \"url(#schematex-timing-xhatch)\",\n })\n );\n prev = \"x\";\n break;\n }\n case \"=\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n // Each fresh bus char (not '.') begins a new segment.\n const isContinuation = ch === \".\";\n if (!isContinuation && prev === \"bus\") closeBus(x);\n if (prev !== \"bus\" || !isContinuation) {\n flushLine();\n busStartX = x;\n }\n prev = \"bus\";\n break;\n }\n default: {\n // unknown char -> treat as x\n flushLine();\n xPatchRects.push(\n el(\"rect\", {\n x,\n y: yHi,\n width: pw,\n height: yLo - yHi,\n class: \"schematex-timing-unknown\",\n fill: \"url(#schematex-timing-xhatch)\",\n })\n );\n prev = \"x\";\n }\n }\n\n prevChar = effective;\n }\n\n // Close trailing bus\n if (prev === \"bus\") closeBus(wave.length * pw);\n flushLine();\n\n const waveSvg = paths\n .map((d) => el(\"path\", { class: \"schematex-timing-wave\", d }))\n .concat(xPatchRects, zLines, busRects)\n .join(\"\");\n\n return { svg: waveSvg, labels: busTexts.join(\"\") };\n}\n\nexport function renderTiming(ast: TimingAST): string {\n const pw = DEFAULT_PW * (ast.hscale ?? 1);\n const rows = flatten(ast.signals);\n const maxWaveLen = Math.max(\n 1,\n ...rows.flatMap((r) => (r.kind === \"signal\" ? [r.signal.wave.length] : []))\n );\n const waveAreaW = maxWaveLen * pw;\n const width = NAME_W + waveAreaW + 20;\n\n let y = PAD_TOP;\n const rowYs: number[] = [];\n for (const r of rows) {\n rowYs.push(y);\n y += r.kind === \"group\" ? GROUP_LABEL_H : SIG_H;\n }\n const height = y + PAD_BOT + 10;\n\n // Render rows\n const waveSvgs: string[] = [];\n const labelSvgs: string[] = [];\n const nameSvgs: string[] = [];\n const gridLines: string[] = [];\n\n // Grid: vertical period ticks across signal area\n for (let i = 0; i <= maxWaveLen; i++) {\n const xg = NAME_W + i * pw;\n gridLines.push(\n el(\"line\", {\n x1: xg,\n y1: PAD_TOP,\n x2: xg,\n y2: height - PAD_BOT,\n class: \"schematex-timing-grid\",\n })\n );\n }\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n const ry = rowYs[i];\n\n if (row.kind === \"group\") {\n nameSvgs.push(\n text(\n {\n x: 6 + row.indent * 10,\n y: ry + GROUP_LABEL_H - 6,\n class: \"schematex-timing-group-label\",\n },\n row.label\n )\n );\n continue;\n }\n\n const signal = row.signal;\n const yHi = ry + PAD_V;\n const yLo = ry + SIG_H - PAD_V;\n const yMid = ry + SIG_H / 2;\n\n // Signal name (right-aligned in name column). `~NAME` or `/NAME` → overlined active-low.\n const activeLow = signal.name.startsWith(\"~\") || signal.name.startsWith(\"/\");\n const displayName = activeLow ? signal.name.slice(1) : signal.name;\n nameSvgs.push(\n text(\n {\n x: NAME_W - 8,\n y: yMid + 4,\n class: activeLow\n ? \"schematex-timing-name schematex-timing-name-activelow\"\n : \"schematex-timing-name\",\n \"text-anchor\": \"end\",\n },\n displayName\n )\n );\n\n const { svg, labels } = renderWave(signal, {\n pw,\n yHi,\n yLo,\n yMid,\n h: SIG_H - 2 * PAD_V,\n });\n\n waveSvgs.push(\n group(\n {\n transform: `translate(${NAME_W}, 0)`,\n \"data-signal\": signal.name,\n },\n [svg]\n )\n );\n labelSvgs.push(\n group({ transform: `translate(${NAME_W}, 0)` }, [labels])\n );\n }\n\n const xhatch = el(\n \"pattern\",\n {\n id: \"schematex-timing-xhatch\",\n patternUnits: \"userSpaceOnUse\",\n width: 6,\n height: 6,\n },\n [\n el(\"rect\", { x: 0, y: 0, width: 6, height: 6, fill: \"#f5f5f5\" }),\n el(\"path\", {\n d: \"M 0,6 L 6,0 M -1,1 L 1,-1 M 5,7 L 7,5\",\n stroke: \"#999\",\n \"stroke-width\": 0.8,\n }),\n ]\n );\n\n const css = `\n.schematex-timing { font-family: system-ui, -apple-system, sans-serif; }\n.schematex-timing-name { font: 12px monospace; fill: #111; }\n.schematex-timing-name-activelow { text-decoration: overline; }\n.schematex-timing-group-label { font: bold 12px sans-serif; fill: #111; }\n.schematex-timing-wave { stroke: #111; stroke-width: 1.75; fill: none; stroke-linejoin: miter; stroke-linecap: square; }\n.schematex-timing-bus { fill: none; stroke: #111; stroke-width: 1.5; }\n.schematex-timing-bus-label { font: 11px monospace; fill: #111; }\n.schematex-timing-unknown { stroke: #555; stroke-width: 0.5; }\n.schematex-timing-hiz { stroke: #555; stroke-width: 1.5; stroke-dasharray: 4 3; }\n.schematex-timing-grid { stroke: #eee; stroke-width: 0.5; }\n`.trim();\n\n return svgRoot(\n {\n class: \"schematex-timing\",\n viewBox: `0 0 ${width} ${height}`,\n width,\n height,\n role: \"img\",\n \"data-diagram-type\": \"timing\",\n },\n [\n titleEl(ast.title ?? \"Timing Diagram\"),\n desc(`Digital timing diagram with ${rows.filter((r) => r.kind === \"signal\").length} signals`),\n defs([xhatch, el(\"style\", {}, css)]),\n group({ class: \"schematex-timing-grid-g\" }, gridLines),\n group({ class: \"schematex-timing-waves\" }, waveSvgs),\n group({ class: \"schematex-timing-labels\" }, labelSvgs),\n group({ class: \"schematex-timing-names\" }, nameSvgs),\n ast.title\n ? text(\n {\n x: width / 2,\n y: 14,\n \"text-anchor\": \"middle\",\n class: \"schematex-timing-title\",\n style: \"font: bold 13px sans-serif; fill: #333;\",\n },\n ast.title\n )\n : \"\",\n ]\n );\n}\n","import type { DiagramPlugin } from \"../../core/types\";\nimport { parseTiming } from \"./parser\";\nimport { renderTiming } from \"./renderer\";\n\nexport const timing: DiagramPlugin = {\n type: \"timing\",\n detect(text: string): boolean {\n const first = text.trim().split(\"\\n\")[0]?.trim().toLowerCase() ?? \"\";\n return first.startsWith(\"timing\");\n },\n parse: parseTiming,\n\n render(text: string): string {\n const ast = parseTiming(text);\n return renderTiming(ast);\n },\n};\n\nexport { parseTiming } from \"./parser\";\nexport { renderTiming } from \"./renderer\";\n"]}
@@ -1,4 +1,4 @@
1
- import { resolveIndustrialTheme } from './chunk-LRI4RH2N.js';
1
+ import { resolveIndustrialTheme } from './chunk-AORGFBEH.js';
2
2
  import { matchQuotedTitle } from './chunk-5IKOLUWK.js';
3
3
  import { text, svgRoot, title, desc, defs, el, group, circle, escapeXml } from './chunk-SYYBKDL7.js';
4
4
 
@@ -1130,16 +1130,19 @@ function parseNetlist(body, title2) {
1130
1130
  ensureNet(net).anchors.push(`${id}.${pinOrder[p]}`);
1131
1131
  }
1132
1132
  pinMap[id] = pins;
1133
+ const dirHint = (kv.dir ?? kv.orient ?? kv.direction)?.toLowerCase();
1134
+ const explicitDir = dirHint === "right" || dirHint === "left" || dirHint === "up" || dirHint === "down" ? dirHint : void 0;
1133
1135
  const comp = {
1134
1136
  id,
1135
1137
  componentType: cType,
1136
- direction: "right",
1138
+ direction: explicitDir ?? "right",
1137
1139
  label: kv.label ?? id,
1138
1140
  value: kv.value ?? valueFromTail,
1139
- attrs: {}
1141
+ attrs: explicitDir ? { dirExplicit: "true" } : {}
1140
1142
  };
1141
1143
  for (const [k, v] of Object.entries(kv)) {
1142
1144
  if (k === "label" || k === "value" || k === "type") continue;
1145
+ if (k === "dir" || k === "orient" || k === "direction") continue;
1143
1146
  comp.attrs[k] = v;
1144
1147
  }
1145
1148
  components.push(comp);
@@ -1667,11 +1670,11 @@ function layoutCircuit(ast) {
1667
1670
  }
1668
1671
 
1669
1672
  // src/diagrams/circuit/autolayout.ts
1670
- var COL_W = 120;
1671
- var ROW_H = 100;
1672
- var RAIL_PAD = 60;
1673
- var LEFT_MARGIN = 80;
1674
- var TOP_MARGIN = 60;
1673
+ var COL_W = 96;
1674
+ var ROW_H = 80;
1675
+ var LEFT_MARGIN = 70;
1676
+ var TOP_MARGIN = 56;
1677
+ var SHUNT_OFFSET = 28;
1675
1678
  function isPowerSource(c) {
1676
1679
  return c.componentType === "voltage_source" || c.componentType === "current_source" || c.componentType === "ac_source" || c.componentType === "battery" || c.componentType === "vcc";
1677
1680
  }
@@ -1700,56 +1703,87 @@ function extendBBox(bbox, pt) {
1700
1703
  }
1701
1704
  function layoutCircuitNetlist(ast) {
1702
1705
  const pinMap = ast.pinMap ?? {};
1706
+ const isShunt = (c) => {
1707
+ if (isPowerSource(c) || isGround(c)) return false;
1708
+ const pins = pinMap[c.id];
1709
+ if (!pins) return false;
1710
+ const nets = Object.values(pins);
1711
+ return nets.length === 2 && nets.filter((n) => n === "GND").length === 1;
1712
+ };
1703
1713
  const powerComps = [];
1704
1714
  const groundComps = [];
1715
+ const shuntComps = [];
1705
1716
  const middleComps = [];
1706
1717
  for (const c of ast.components) {
1707
1718
  if (isPowerSource(c)) powerComps.push(c);
1708
1719
  else if (isGround(c)) groundComps.push(c);
1720
+ else if (isShunt(c)) shuntComps.push(c);
1709
1721
  else middleComps.push(c);
1710
1722
  }
1711
- const ranks = [];
1712
- const mainRank = [...powerComps, ...middleComps];
1713
- if (mainRank.length) ranks.push(mainRank);
1714
- if (groundComps.length) ranks.push(groundComps);
1715
- if (ranks.length === 0) ranks.push(ast.components);
1723
+ const spine = [...powerComps, ...middleComps];
1716
1724
  const placed = /* @__PURE__ */ new Map();
1717
1725
  const items = [];
1718
- let maxCols = 0;
1719
- for (const rank of ranks) maxCols = Math.max(maxCols, rank.length);
1720
- for (let r = 0; r < ranks.length; r++) {
1721
- const rank = ranks[r];
1722
- const rowY = TOP_MARGIN + r * (ROW_H + RAIL_PAD);
1723
- const startX = LEFT_MARGIN + (maxCols - rank.length) * COL_W / 2;
1724
- for (let i = 0; i < rank.length; i++) {
1725
- const comp = rank[i];
1726
- const direction = defaultDirection(comp);
1727
- comp.direction = direction;
1728
- const rot = rotationOf(direction);
1729
- const sym = getSymbol(comp.componentType);
1730
- const x = startX + i * COL_W;
1731
- const y = rowY;
1732
- const worldAnchors = {};
1733
- if (sym) {
1734
- for (const [name, pt] of Object.entries(sym.anchors)) {
1735
- const rp = rotatePt(pt, rot);
1736
- worldAnchors[name] = { x: x + rp.x, y: y + rp.y };
1737
- }
1738
- } else {
1739
- worldAnchors.start = { x, y };
1740
- worldAnchors.end = { x: x + 30, y };
1726
+ const place = (comp, x, y, fallbackDir) => {
1727
+ const direction = comp.attrs?.dirExplicit === "true" ? comp.direction : fallbackDir ?? defaultDirection(comp);
1728
+ comp.direction = direction;
1729
+ const rot = rotationOf(direction);
1730
+ const sym = getSymbol(comp.componentType);
1731
+ const worldAnchors = {};
1732
+ if (sym) {
1733
+ for (const [name, pt] of Object.entries(sym.anchors)) {
1734
+ const rp = rotatePt(pt, rot);
1735
+ worldAnchors[name] = { x: x + rp.x, y: y + rp.y };
1736
+ }
1737
+ } else {
1738
+ worldAnchors.start = { x, y };
1739
+ worldAnchors.end = { x: x + 30, y };
1740
+ }
1741
+ const laid = {
1742
+ component: comp,
1743
+ x,
1744
+ y,
1745
+ rotation: rot,
1746
+ length: sym?.length ?? 30,
1747
+ anchors: worldAnchors
1748
+ };
1749
+ items.push(laid);
1750
+ placed.set(comp.id, laid);
1751
+ return laid;
1752
+ };
1753
+ if (spine.length === 0 && shuntComps.length === 0) {
1754
+ ast.components.forEach(
1755
+ (comp, i) => place(comp, LEFT_MARGIN + i * COL_W, TOP_MARGIN)
1756
+ );
1757
+ } else {
1758
+ const spineY = TOP_MARGIN;
1759
+ spine.forEach((comp, i) => place(comp, LEFT_MARGIN + i * COL_W, spineY));
1760
+ const spinePinX = /* @__PURE__ */ new Map();
1761
+ for (const comp of spine) {
1762
+ const pins = pinMap[comp.id];
1763
+ const laid = placed.get(comp.id);
1764
+ if (!pins || !laid) continue;
1765
+ for (const [pinName, net] of Object.entries(pins)) {
1766
+ if (net === "GND") continue;
1767
+ const a = laid.anchors[pinName];
1768
+ if (a && !spinePinX.has(net)) spinePinX.set(net, a.x);
1741
1769
  }
1742
- const laid = {
1743
- component: comp,
1744
- x,
1745
- y,
1746
- rotation: rot,
1747
- length: sym?.length ?? 30,
1748
- anchors: worldAnchors
1749
- };
1750
- items.push(laid);
1751
- placed.set(comp.id, laid);
1752
1770
  }
1771
+ const shuntY = spineY + ROW_H;
1772
+ const sharedNode = /* @__PURE__ */ new Map();
1773
+ shuntComps.forEach((comp, idx) => {
1774
+ const pins = pinMap[comp.id];
1775
+ const sigNet = Object.values(pins).find((n) => n !== "GND");
1776
+ let x = (sigNet !== void 0 ? spinePinX.get(sigNet) : void 0) ?? LEFT_MARGIN + (spine.length + idx) * COL_W;
1777
+ const used = sharedNode.get(x) ?? 0;
1778
+ sharedNode.set(x, used + 1);
1779
+ x += used * SHUNT_OFFSET;
1780
+ place(comp, x, shuntY, "down");
1781
+ });
1782
+ const baseY = shuntComps.length ? shuntY : spineY;
1783
+ const groundY = baseY + ROW_H;
1784
+ const xs = items.map((it) => it.x);
1785
+ const gx = xs.length ? (Math.min(...xs) + Math.max(...xs)) / 2 : LEFT_MARGIN;
1786
+ groundComps.forEach((comp, i) => place(comp, gx + i * COL_W, groundY, "down"));
1753
1787
  }
1754
1788
  const netPins = /* @__PURE__ */ new Map();
1755
1789
  for (const comp of ast.components) {
@@ -2041,5 +2075,5 @@ var circuit = {
2041
2075
  };
2042
2076
 
2043
2077
  export { EXTRA_SYMBOLS, SYMBOLS, circuit, layoutCircuit, layoutCircuitNetlist, parseCircuit, parseNetlist, renderCircuit };
2044
- //# sourceMappingURL=chunk-UWA5MWCI.js.map
2045
- //# sourceMappingURL=chunk-UWA5MWCI.js.map
2078
+ //# sourceMappingURL=chunk-35XCP2E4.js.map
2079
+ //# sourceMappingURL=chunk-35XCP2E4.js.map