schematex 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/ai-sdk.cjs +25 -25
- package/dist/ai/ai-sdk.d.cts +1 -1
- package/dist/ai/ai-sdk.d.ts +1 -1
- package/dist/ai/ai-sdk.js +20 -20
- package/dist/ai/index.cjs +28 -28
- package/dist/ai/index.d.cts +1 -1
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.js +20 -20
- package/dist/browser.cjs +22 -22
- package/dist/browser.js +20 -20
- package/dist/{chunk-LFZZ4NCP.cjs → chunk-3WNW5Y7P.cjs} +48 -8
- package/dist/chunk-3WNW5Y7P.cjs.map +1 -0
- package/dist/{chunk-MKKFIPKU.cjs → chunk-55UEHL57.cjs} +46 -46
- package/dist/{chunk-MKKFIPKU.cjs.map → chunk-55UEHL57.cjs.map} +1 -1
- package/dist/{chunk-BJ65PKDU.js → chunk-5U2W3HQA.js} +3 -3
- package/dist/{chunk-BJ65PKDU.js.map → chunk-5U2W3HQA.js.map} +1 -1
- package/dist/{chunk-75BMFCP5.cjs → chunk-5UCXMYE7.cjs} +44 -44
- package/dist/{chunk-75BMFCP5.cjs.map → chunk-5UCXMYE7.cjs.map} +1 -1
- package/dist/{chunk-F6OROIHS.js → chunk-66XQBGX7.js} +3 -3
- package/dist/{chunk-F6OROIHS.js.map → chunk-66XQBGX7.js.map} +1 -1
- package/dist/{chunk-HIQPEAL7.js → chunk-6TIN33CA.js} +3 -3
- package/dist/{chunk-HIQPEAL7.js.map → chunk-6TIN33CA.js.map} +1 -1
- package/dist/{chunk-RNGYXGHS.js → chunk-6YUP3QMA.js} +19 -19
- package/dist/{chunk-RNGYXGHS.js.map → chunk-6YUP3QMA.js.map} +1 -1
- package/dist/{chunk-C3IVD7DI.cjs → chunk-7EWFVNYD.cjs} +25 -25
- package/dist/{chunk-C3IVD7DI.cjs.map → chunk-7EWFVNYD.cjs.map} +1 -1
- package/dist/{chunk-56LXBM45.js → chunk-AC3XH3LB.js} +4 -4
- package/dist/{chunk-56LXBM45.js.map → chunk-AC3XH3LB.js.map} +1 -1
- package/dist/{chunk-YTEEZV6J.cjs → chunk-APV4AWQ5.cjs} +422 -422
- package/dist/{chunk-YTEEZV6J.cjs.map → chunk-APV4AWQ5.cjs.map} +1 -1
- package/dist/{chunk-UK7JF5QB.cjs → chunk-AVIKQZSX.cjs} +37 -37
- package/dist/{chunk-UK7JF5QB.cjs.map → chunk-AVIKQZSX.cjs.map} +1 -1
- package/dist/{chunk-OK5RYX55.cjs → chunk-CWZKP3CJ.cjs} +26 -26
- package/dist/{chunk-OK5RYX55.cjs.map → chunk-CWZKP3CJ.cjs.map} +1 -1
- package/dist/{chunk-2J2QWNGI.js → chunk-FIVUMDLF.js} +26 -7
- package/dist/chunk-FIVUMDLF.js.map +1 -0
- package/dist/{chunk-ZTSO3S4P.js → chunk-FO7BLCEW.js} +3 -3
- package/dist/{chunk-ZTSO3S4P.js.map → chunk-FO7BLCEW.js.map} +1 -1
- package/dist/{chunk-6BKUD5EJ.js → chunk-GLFBHQSQ.js} +4 -4
- package/dist/{chunk-6BKUD5EJ.js.map → chunk-GLFBHQSQ.js.map} +1 -1
- package/dist/{chunk-ZNLEUL7T.js → chunk-GVCPFBAV.js} +4 -4
- package/dist/chunk-GVCPFBAV.js.map +1 -0
- package/dist/{chunk-KUXOHLGC.cjs → chunk-HOI6QKC6.cjs} +52 -52
- package/dist/{chunk-KUXOHLGC.cjs.map → chunk-HOI6QKC6.cjs.map} +1 -1
- package/dist/{chunk-L2KUGWFR.cjs → chunk-IAEABLIV.cjs} +46 -46
- package/dist/{chunk-L2KUGWFR.cjs.map → chunk-IAEABLIV.cjs.map} +1 -1
- package/dist/{chunk-M5ZC3LFJ.js → chunk-IQRRZPVZ.js} +3 -3
- package/dist/{chunk-M5ZC3LFJ.js.map → chunk-IQRRZPVZ.js.map} +1 -1
- package/dist/{chunk-H4CJTKEH.js → chunk-MNOO7STY.js} +5 -5
- package/dist/{chunk-H4CJTKEH.js.map → chunk-MNOO7STY.js.map} +1 -1
- package/dist/{chunk-XI6JOG76.cjs → chunk-N56YC75X.cjs} +45 -45
- package/dist/{chunk-XI6JOG76.cjs.map → chunk-N56YC75X.cjs.map} +1 -1
- package/dist/{chunk-X4F6VVEJ.js → chunk-PAG3BNIV.js} +3 -3
- package/dist/{chunk-X4F6VVEJ.js.map → chunk-PAG3BNIV.js.map} +1 -1
- package/dist/{chunk-W7GIQTJV.cjs → chunk-PG6TDGKI.cjs} +21 -21
- package/dist/{chunk-W7GIQTJV.cjs.map → chunk-PG6TDGKI.cjs.map} +1 -1
- package/dist/{chunk-7MVDN5UC.cjs → chunk-Q5OFA4I2.cjs} +35 -35
- package/dist/{chunk-7MVDN5UC.cjs.map → chunk-Q5OFA4I2.cjs.map} +1 -1
- package/dist/{chunk-BUN3CRMP.cjs → chunk-QOLBWCF5.cjs} +65 -65
- package/dist/{chunk-BUN3CRMP.cjs.map → chunk-QOLBWCF5.cjs.map} +1 -1
- package/dist/{chunk-2UJAVPA4.cjs → chunk-QXL7AY2H.cjs} +26 -26
- package/dist/{chunk-2UJAVPA4.cjs.map → chunk-QXL7AY2H.cjs.map} +1 -1
- package/dist/{chunk-WHJXRLFD.js → chunk-SYYBKDL7.js} +48 -8
- package/dist/chunk-SYYBKDL7.js.map +1 -0
- package/dist/{chunk-SE23X5OE.js → chunk-TQU44E46.js} +4 -4
- package/dist/{chunk-SE23X5OE.js.map → chunk-TQU44E46.js.map} +1 -1
- package/dist/{chunk-SFSZUOFT.js → chunk-U3KRKXF7.js} +3 -3
- package/dist/{chunk-SFSZUOFT.js.map → chunk-U3KRKXF7.js.map} +1 -1
- package/dist/{chunk-EYHD7LV3.cjs → chunk-UDGU73RL.cjs} +129 -129
- package/dist/{chunk-EYHD7LV3.cjs.map → chunk-UDGU73RL.cjs.map} +1 -1
- package/dist/{chunk-M3R6RCXY.js → chunk-UDJ2KN2A.js} +3 -3
- package/dist/{chunk-M3R6RCXY.js.map → chunk-UDJ2KN2A.js.map} +1 -1
- package/dist/{chunk-BJWMPPEA.js → chunk-UT4TIDAA.js} +3 -3
- package/dist/{chunk-BJWMPPEA.js.map → chunk-UT4TIDAA.js.map} +1 -1
- package/dist/{chunk-RODV6PC4.cjs → chunk-UWRTV6IV.cjs} +7 -7
- package/dist/{chunk-RODV6PC4.cjs.map → chunk-UWRTV6IV.cjs.map} +1 -1
- package/dist/{chunk-IT2TVXC7.js → chunk-WTF6JXHN.js} +4 -4
- package/dist/{chunk-IT2TVXC7.js.map → chunk-WTF6JXHN.js.map} +1 -1
- package/dist/{chunk-7BEJHG43.js → chunk-X5QJO4ZD.js} +3 -3
- package/dist/{chunk-7BEJHG43.js.map → chunk-X5QJO4ZD.js.map} +1 -1
- package/dist/{chunk-NFT6VW73.js → chunk-XV2DTN6G.js} +3 -3
- package/dist/{chunk-NFT6VW73.js.map → chunk-XV2DTN6G.js.map} +1 -1
- package/dist/{chunk-XUEROLSB.cjs → chunk-YUPG2M3I.cjs} +16 -16
- package/dist/chunk-YUPG2M3I.cjs.map +1 -0
- package/dist/{chunk-K5QG53GT.cjs → chunk-ZCW7YH3C.cjs} +26 -26
- package/dist/{chunk-K5QG53GT.cjs.map → chunk-ZCW7YH3C.cjs.map} +1 -1
- package/dist/{chunk-GYTWJ6VB.cjs → chunk-ZFNZ2FYI.cjs} +67 -48
- package/dist/chunk-ZFNZ2FYI.cjs.map +1 -0
- package/dist/{chunk-3YXXZ4LT.cjs → chunk-ZZJDGGC3.cjs} +33 -33
- package/dist/{chunk-3YXXZ4LT.cjs.map → chunk-ZZJDGGC3.cjs.map} +1 -1
- package/dist/diagrams/blockdiagram/index.cjs +6 -6
- package/dist/diagrams/blockdiagram/index.d.cts +1 -1
- package/dist/diagrams/blockdiagram/index.d.ts +1 -1
- package/dist/diagrams/blockdiagram/index.js +2 -2
- package/dist/diagrams/circuit/index.cjs +8 -8
- package/dist/diagrams/circuit/index.d.cts +1 -1
- package/dist/diagrams/circuit/index.d.ts +1 -1
- package/dist/diagrams/circuit/index.js +2 -2
- package/dist/diagrams/ecomap/index.cjs +8 -8
- package/dist/diagrams/ecomap/index.d.cts +1 -1
- package/dist/diagrams/ecomap/index.d.ts +1 -1
- package/dist/diagrams/ecomap/index.js +3 -3
- package/dist/diagrams/entity/index.cjs +6 -6
- package/dist/diagrams/entity/index.d.cts +1 -1
- package/dist/diagrams/entity/index.d.ts +1 -1
- package/dist/diagrams/entity/index.js +2 -2
- package/dist/diagrams/fishbone/index.cjs +8 -8
- package/dist/diagrams/fishbone/index.d.cts +1 -1
- package/dist/diagrams/fishbone/index.d.ts +1 -1
- package/dist/diagrams/fishbone/index.js +2 -2
- package/dist/diagrams/flowchart/index.cjs +8 -8
- package/dist/diagrams/flowchart/index.d.cts +2 -2
- package/dist/diagrams/flowchart/index.d.ts +2 -2
- package/dist/diagrams/flowchart/index.js +2 -2
- package/dist/diagrams/genogram/index.cjs +10 -10
- package/dist/diagrams/genogram/index.d.cts +1 -1
- package/dist/diagrams/genogram/index.d.ts +1 -1
- package/dist/diagrams/genogram/index.js +3 -3
- package/dist/diagrams/ladder/index.cjs +6 -6
- package/dist/diagrams/ladder/index.d.cts +1 -1
- package/dist/diagrams/ladder/index.d.ts +1 -1
- package/dist/diagrams/ladder/index.js +2 -2
- package/dist/diagrams/logic/index.cjs +6 -6
- package/dist/diagrams/logic/index.d.cts +1 -1
- package/dist/diagrams/logic/index.d.ts +1 -1
- package/dist/diagrams/logic/index.js +2 -2
- package/dist/diagrams/orgchart/index.cjs +7 -7
- package/dist/diagrams/orgchart/index.d.cts +1 -1
- package/dist/diagrams/orgchart/index.d.ts +1 -1
- package/dist/diagrams/orgchart/index.js +2 -2
- package/dist/diagrams/pedigree/index.cjs +8 -8
- package/dist/diagrams/pedigree/index.d.cts +1 -1
- package/dist/diagrams/pedigree/index.d.ts +1 -1
- package/dist/diagrams/pedigree/index.js +3 -3
- package/dist/diagrams/phylo/index.cjs +7 -7
- package/dist/diagrams/phylo/index.d.cts +1 -1
- package/dist/diagrams/phylo/index.d.ts +1 -1
- package/dist/diagrams/phylo/index.js +2 -2
- package/dist/diagrams/sld/index.cjs +6 -6
- package/dist/diagrams/sld/index.d.cts +1 -1
- package/dist/diagrams/sld/index.d.ts +1 -1
- package/dist/diagrams/sld/index.js +2 -2
- package/dist/diagrams/sociogram/index.cjs +7 -7
- package/dist/diagrams/sociogram/index.d.cts +1 -1
- package/dist/diagrams/sociogram/index.d.ts +1 -1
- package/dist/diagrams/sociogram/index.js +3 -3
- package/dist/diagrams/timing/index.cjs +5 -5
- package/dist/diagrams/timing/index.d.cts +1 -1
- package/dist/diagrams/timing/index.d.ts +1 -1
- package/dist/diagrams/timing/index.js +2 -2
- package/dist/diagrams/venn/index.cjs +9 -9
- package/dist/diagrams/venn/index.d.cts +1 -1
- package/dist/diagrams/venn/index.d.ts +1 -1
- package/dist/diagrams/venn/index.js +2 -2
- package/dist/{index-dWDwG6BW.d.ts → index-D3u6vcA4.d.ts} +1 -1
- package/dist/{index-BrLxEzSQ.d.cts → index-bdfj6FpQ.d.cts} +1 -1
- package/dist/index.cjs +41 -41
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +19 -19
- package/dist/react.cjs +20 -20
- package/dist/react.js +19 -19
- package/dist/{types-BtiUg7Gx.d.cts → types-DnU2UlWz.d.cts} +2 -0
- package/dist/{types-BtiUg7Gx.d.ts → types-DnU2UlWz.d.ts} +2 -0
- package/package.json +1 -1
- package/dist/chunk-2J2QWNGI.js.map +0 -1
- package/dist/chunk-GYTWJ6VB.cjs.map +0 -1
- package/dist/chunk-LFZZ4NCP.cjs.map +0 -1
- package/dist/chunk-WHJXRLFD.js.map +0 -1
- package/dist/chunk-XUEROLSB.cjs.map +0 -1
- package/dist/chunk-ZNLEUL7T.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/diagrams/timing/parser.ts","../src/diagrams/timing/renderer.ts","../src/diagrams/timing/index.ts"],"names":["text","title","el","group","svgRoot","desc","defs"],"mappings":"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","file":"chunk-K5QG53GT.cjs","sourcesContent":["import type { TimingAST, TimingSignal, TimingGroup } from \"../../core/types\";\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 titleMatch = line.match(/\"([^\"]*)\"/);\n if (titleMatch) title = titleMatch[1];\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 { wave, data } = splitDataList(sigMatch[2]);\n if (!VALID_STATES.test(wave)) {\n throw new TimingParseError(`Invalid wave string \"${wave}\" for signal ${name}`, lineNo, undefined, line);\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 { background: #fff; 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
|
+
{"version":3,"sources":["../src/diagrams/timing/parser.ts","../src/diagrams/timing/renderer.ts","../src/diagrams/timing/index.ts"],"names":["text","title","el","group","svgRoot","desc","defs"],"mappings":"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","file":"chunk-ZCW7YH3C.cjs","sourcesContent":["import type { TimingAST, TimingSignal, TimingGroup } from \"../../core/types\";\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 titleMatch = line.match(/\"([^\"]*)\"/);\n if (titleMatch) title = titleMatch[1];\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 { wave, data } = splitDataList(sigMatch[2]);\n if (!VALID_STATES.test(wave)) {\n throw new TimingParseError(`Invalid wave string \"${wave}\" for signal ${name}`, lineNo, undefined, line);\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 { background: #fff; 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,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkD7EHZFK4_cjs = require('./chunk-D7EHZFK4.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunk3WNW5Y7P_cjs = require('./chunk-3WNW5Y7P.cjs');
|
|
5
5
|
|
|
6
6
|
// src/diagrams/flowchart/parser.ts
|
|
7
7
|
var FlowchartParseError = class extends Error {
|
|
@@ -404,7 +404,18 @@ function parseFlowchart(source) {
|
|
|
404
404
|
}
|
|
405
405
|
continue;
|
|
406
406
|
}
|
|
407
|
-
|
|
407
|
+
const linkStyleMatch = /^linkStyle\s+([\d,\s]+|default)\s+(.+)$/.exec(trimmed);
|
|
408
|
+
if (linkStyleMatch) {
|
|
409
|
+
const sel = linkStyleMatch[1].trim();
|
|
410
|
+
const props = parseCssProps(linkStyleMatch[2]);
|
|
411
|
+
if (sel !== "default") {
|
|
412
|
+
const indices = sel.split(/[,\s]+/).map((s) => s.trim()).filter((s) => s.length > 0).map((s) => parseInt(s, 10)).filter((n) => !isNaN(n));
|
|
413
|
+
for (const idx of indices) {
|
|
414
|
+
ast.linkStyles.set(idx, { ...ast.linkStyles.get(idx) ?? {}, ...props });
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
408
419
|
let parsed;
|
|
409
420
|
try {
|
|
410
421
|
parsed = parseChainStatement(trimmed, i + 1);
|
|
@@ -1574,6 +1585,8 @@ function layoutFlowchart(ast) {
|
|
|
1574
1585
|
if (flipX) c.x = outWidth - c.x;
|
|
1575
1586
|
}
|
|
1576
1587
|
}
|
|
1588
|
+
const edgeIndex = /* @__PURE__ */ new Map();
|
|
1589
|
+
ast.edges.forEach((e, i) => edgeIndex.set(e, i));
|
|
1577
1590
|
const outEdges = updatedEdges.map((le) => {
|
|
1578
1591
|
const chain = le.chain.length > 0 ? le.chain : [le.from, le.to];
|
|
1579
1592
|
const points = [];
|
|
@@ -1588,7 +1601,7 @@ function layoutFlowchart(ast) {
|
|
|
1588
1601
|
}
|
|
1589
1602
|
}
|
|
1590
1603
|
if (points.length < 2) {
|
|
1591
|
-
return { edge: le.original, path: "" };
|
|
1604
|
+
return { edge: le.original, path: "", index: edgeIndex.get(le.original) };
|
|
1592
1605
|
}
|
|
1593
1606
|
const startNode = nodeCenter.get(chain[0]);
|
|
1594
1607
|
const endNode = nodeCenter.get(chain[chain.length - 1]);
|
|
@@ -1613,7 +1626,8 @@ function layoutFlowchart(ast) {
|
|
|
1613
1626
|
isReversed: le.isReversed
|
|
1614
1627
|
},
|
|
1615
1628
|
path: d,
|
|
1616
|
-
labelAnchor
|
|
1629
|
+
labelAnchor,
|
|
1630
|
+
index: edgeIndex.get(le.original)
|
|
1617
1631
|
};
|
|
1618
1632
|
});
|
|
1619
1633
|
function collectDescendantNodeIds(sgId) {
|
|
@@ -1718,52 +1732,52 @@ function shapeSVG(shape, w, h) {
|
|
|
1718
1732
|
switch (shape) {
|
|
1719
1733
|
// ── M1 core shapes ─────────────────────────────────────────
|
|
1720
1734
|
case "rect":
|
|
1721
|
-
return
|
|
1735
|
+
return chunk3WNW5Y7P_cjs.rect({ x: 0, y: 0, width: w, height: h, rx: 14, ry: 14, class: "sx-fc-node" });
|
|
1722
1736
|
case "round":
|
|
1723
|
-
return
|
|
1737
|
+
return chunk3WNW5Y7P_cjs.rect({ x: 0, y: 0, width: w, height: h, rx: 20, ry: 20, class: "sx-fc-node sx-fc-node-round" });
|
|
1724
1738
|
case "stadium": {
|
|
1725
1739
|
const r = Math.min(h / 2, 24);
|
|
1726
|
-
return
|
|
1740
|
+
return chunk3WNW5Y7P_cjs.rect({ x: 0, y: 0, width: w, height: h, rx: r, ry: r, class: "sx-fc-node sx-fc-node-stadium" });
|
|
1727
1741
|
}
|
|
1728
1742
|
case "diamond": {
|
|
1729
1743
|
const points = `${w / 2},0 ${w},${h / 2} ${w / 2},${h} 0,${h / 2}`;
|
|
1730
|
-
return
|
|
1744
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node sx-fc-node-diamond" });
|
|
1731
1745
|
}
|
|
1732
1746
|
case "parallelogram": {
|
|
1733
1747
|
const slant = SHAPE_SLANT.parallelogram;
|
|
1734
1748
|
const points = `${slant},0 ${w},0 ${w - slant},${h} 0,${h}`;
|
|
1735
|
-
return
|
|
1749
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node" });
|
|
1736
1750
|
}
|
|
1737
1751
|
// ── M2 additional shapes ────────────────────────────────────
|
|
1738
1752
|
case "parallelogram-alt": {
|
|
1739
1753
|
const slant = SHAPE_SLANT.parallelogram;
|
|
1740
1754
|
const points = `0,0 ${w - slant},0 ${w},${h} ${slant},${h}`;
|
|
1741
|
-
return
|
|
1755
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node" });
|
|
1742
1756
|
}
|
|
1743
1757
|
case "trapezoid": {
|
|
1744
1758
|
const slant = SHAPE_SLANT.trapezoid;
|
|
1745
1759
|
const points = `0,0 ${w},0 ${w - slant},${h} ${slant},${h}`;
|
|
1746
|
-
return
|
|
1760
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node" });
|
|
1747
1761
|
}
|
|
1748
1762
|
case "trapezoid-alt": {
|
|
1749
1763
|
const slant = SHAPE_SLANT.trapezoid;
|
|
1750
1764
|
const points = `${slant},0 ${w - slant},0 ${w},${h} 0,${h}`;
|
|
1751
|
-
return
|
|
1765
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node" });
|
|
1752
1766
|
}
|
|
1753
1767
|
case "subroutine": {
|
|
1754
1768
|
const barX = 10;
|
|
1755
|
-
const body =
|
|
1756
|
-
const left =
|
|
1757
|
-
const right =
|
|
1769
|
+
const body = chunk3WNW5Y7P_cjs.rect({ x: 0, y: 0, width: w, height: h, rx: 2, class: "sx-fc-node" });
|
|
1770
|
+
const left = chunk3WNW5Y7P_cjs.line({ x1: barX, y1: 0, x2: barX, y2: h, class: "sx-fc-node-subline" });
|
|
1771
|
+
const right = chunk3WNW5Y7P_cjs.line({ x1: w - barX, y1: 0, x2: w - barX, y2: h, class: "sx-fc-node-subline" });
|
|
1758
1772
|
return body + left + right;
|
|
1759
1773
|
}
|
|
1760
1774
|
case "cylinder": {
|
|
1761
1775
|
const ry = Math.min(8, h / 4);
|
|
1762
|
-
const silhouette =
|
|
1776
|
+
const silhouette = chunk3WNW5Y7P_cjs.path({
|
|
1763
1777
|
d: `M0,${ry} A${w / 2},${ry} 0 0,1 ${w},${ry} L${w},${h - ry} A${w / 2},${ry} 0 0,1 0,${h - ry} Z`,
|
|
1764
1778
|
class: "sx-fc-node"
|
|
1765
1779
|
});
|
|
1766
|
-
const topRim =
|
|
1780
|
+
const topRim = chunk3WNW5Y7P_cjs.path({
|
|
1767
1781
|
d: `M0,${ry} A${w / 2},${ry} 0 0,0 ${w},${ry}`,
|
|
1768
1782
|
class: "sx-fc-node-arc"
|
|
1769
1783
|
});
|
|
@@ -1771,26 +1785,26 @@ function shapeSVG(shape, w, h) {
|
|
|
1771
1785
|
}
|
|
1772
1786
|
case "circle": {
|
|
1773
1787
|
const r = Math.min(w, h) / 2 - 1;
|
|
1774
|
-
return
|
|
1788
|
+
return chunk3WNW5Y7P_cjs.circle({ cx: w / 2, cy: h / 2, r, class: "sx-fc-node sx-fc-node-circle" });
|
|
1775
1789
|
}
|
|
1776
1790
|
case "double-circle": {
|
|
1777
1791
|
const r1 = Math.min(w, h) / 2 - 1;
|
|
1778
1792
|
const r2 = r1 - 5;
|
|
1779
|
-
const outer =
|
|
1780
|
-
const inner =
|
|
1793
|
+
const outer = chunk3WNW5Y7P_cjs.circle({ cx: w / 2, cy: h / 2, r: r1, class: "sx-fc-node" });
|
|
1794
|
+
const inner = chunk3WNW5Y7P_cjs.circle({ cx: w / 2, cy: h / 2, r: r2, class: "sx-fc-node-ring" });
|
|
1781
1795
|
return outer + inner;
|
|
1782
1796
|
}
|
|
1783
1797
|
case "hexagon": {
|
|
1784
1798
|
const cut = Math.min(20, w / 4);
|
|
1785
1799
|
const points = `${cut},0 ${w - cut},0 ${w},${h / 2} ${w - cut},${h} ${cut},${h} 0,${h / 2}`;
|
|
1786
|
-
return
|
|
1800
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node sx-fc-node-hexagon" });
|
|
1787
1801
|
}
|
|
1788
1802
|
case "asymmetric": {
|
|
1789
1803
|
const pts = `0,0 ${w - 15},0 ${w},${h / 2} ${w - 15},${h} 0,${h}`;
|
|
1790
|
-
return
|
|
1804
|
+
return chunk3WNW5Y7P_cjs.polygon({ points: pts, class: "sx-fc-node" });
|
|
1791
1805
|
}
|
|
1792
1806
|
default:
|
|
1793
|
-
return
|
|
1807
|
+
return chunk3WNW5Y7P_cjs.rect({ x: 0, y: 0, width: w, height: h, rx: 14, ry: 14, class: "sx-fc-node" });
|
|
1794
1808
|
}
|
|
1795
1809
|
}
|
|
1796
1810
|
|
|
@@ -1868,12 +1882,12 @@ function markerStartFor(edge) {
|
|
|
1868
1882
|
}
|
|
1869
1883
|
function renderCluster(lc) {
|
|
1870
1884
|
const sg = lc.subgraph;
|
|
1871
|
-
const bg =
|
|
1872
|
-
const label =
|
|
1885
|
+
const bg = chunk3WNW5Y7P_cjs.rect({ x: lc.x, y: lc.y, width: lc.width, height: lc.height, rx: 8, class: "sx-fc-cluster" });
|
|
1886
|
+
const label = chunk3WNW5Y7P_cjs.text(
|
|
1873
1887
|
{ x: lc.x + 12, y: lc.y + 15, class: "sx-fc-cluster-title" },
|
|
1874
1888
|
sg.label
|
|
1875
1889
|
);
|
|
1876
|
-
return
|
|
1890
|
+
return chunk3WNW5Y7P_cjs.group(
|
|
1877
1891
|
{ "data-cluster-id": sg.id, "data-depth": lc.depth, class: "sx-fc-cluster-g" },
|
|
1878
1892
|
[bg, label]
|
|
1879
1893
|
);
|
|
@@ -1881,7 +1895,7 @@ function renderCluster(lc) {
|
|
|
1881
1895
|
function renderNode(ln) {
|
|
1882
1896
|
const n = ln.node;
|
|
1883
1897
|
const shapeEl = shapeSVG(n.shape, ln.width, ln.height);
|
|
1884
|
-
const label =
|
|
1898
|
+
const label = chunk3WNW5Y7P_cjs.multilineText(
|
|
1885
1899
|
{
|
|
1886
1900
|
x: ln.width / 2,
|
|
1887
1901
|
y: ln.height / 2,
|
|
@@ -1892,9 +1906,9 @@ function renderNode(ln) {
|
|
|
1892
1906
|
n.label
|
|
1893
1907
|
);
|
|
1894
1908
|
const plainLabel = n.label.replace(/<br\s*\/?>/gi, " ").replace(/<\/?[bi]>/gi, "");
|
|
1895
|
-
const nodeTitle =
|
|
1909
|
+
const nodeTitle = chunk3WNW5Y7P_cjs.title(plainLabel);
|
|
1896
1910
|
const classAttr = ["sx-fc-node-g", ...(n.classes ?? []).map((c) => `sx-fc-class-${c}`)].join(" ");
|
|
1897
|
-
return
|
|
1911
|
+
return chunk3WNW5Y7P_cjs.group(
|
|
1898
1912
|
{
|
|
1899
1913
|
"data-node-id": n.id,
|
|
1900
1914
|
"data-shape": n.shape,
|
|
@@ -1916,19 +1930,20 @@ function renderEdge(le) {
|
|
|
1916
1930
|
const ms = markerStartFor(e);
|
|
1917
1931
|
if (me) attrs["marker-end"] = me;
|
|
1918
1932
|
if (ms) attrs["marker-start"] = ms;
|
|
1919
|
-
const p =
|
|
1933
|
+
const p = chunk3WNW5Y7P_cjs.path(attrs);
|
|
1920
1934
|
const labelEl = e.label && le.labelAnchor ? renderEdgeLabel(
|
|
1921
1935
|
e.label,
|
|
1922
1936
|
le.labelAnchor.x,
|
|
1923
1937
|
le.labelAnchor.y,
|
|
1924
1938
|
le.labelAnchor.textAnchor ?? "middle"
|
|
1925
1939
|
) : "";
|
|
1926
|
-
const edgeTitle =
|
|
1940
|
+
const edgeTitle = chunk3WNW5Y7P_cjs.title(
|
|
1927
1941
|
e.label ? `${e.from} \u2192 ${e.to}: ${e.label}` : `${e.from} \u2192 ${e.to}`
|
|
1928
1942
|
);
|
|
1929
|
-
return
|
|
1943
|
+
return chunk3WNW5Y7P_cjs.group(
|
|
1930
1944
|
{
|
|
1931
1945
|
"data-edge-id": e.id ?? `${e.from}->${e.to}`,
|
|
1946
|
+
"data-edge-index": le.index,
|
|
1932
1947
|
"data-kind": e.kind,
|
|
1933
1948
|
"data-from": e.from,
|
|
1934
1949
|
"data-to": e.to
|
|
@@ -1941,7 +1956,7 @@ function renderEdgeLabel(label, cx, cy, textAnchor) {
|
|
|
1941
1956
|
const h = 16;
|
|
1942
1957
|
const rx = cx - (textAnchor === "start" ? 0 : textAnchor === "end" ? w : w / 2);
|
|
1943
1958
|
const ry = cy - h / 2;
|
|
1944
|
-
const bg =
|
|
1959
|
+
const bg = chunk3WNW5Y7P_cjs.rect({
|
|
1945
1960
|
x: rx,
|
|
1946
1961
|
y: ry,
|
|
1947
1962
|
width: w,
|
|
@@ -1949,7 +1964,7 @@ function renderEdgeLabel(label, cx, cy, textAnchor) {
|
|
|
1949
1964
|
rx: 3,
|
|
1950
1965
|
class: "sx-fc-edge-label-bg"
|
|
1951
1966
|
});
|
|
1952
|
-
const t =
|
|
1967
|
+
const t = chunk3WNW5Y7P_cjs.text(
|
|
1953
1968
|
{
|
|
1954
1969
|
x: cx,
|
|
1955
1970
|
y: cy,
|
|
@@ -1959,7 +1974,7 @@ function renderEdgeLabel(label, cx, cy, textAnchor) {
|
|
|
1959
1974
|
},
|
|
1960
1975
|
label
|
|
1961
1976
|
);
|
|
1962
|
-
return
|
|
1977
|
+
return chunk3WNW5Y7P_cjs.group({ class: "sx-fc-edge-label-g" }, [bg, t]);
|
|
1963
1978
|
}
|
|
1964
1979
|
function fmt2(n) {
|
|
1965
1980
|
return (Math.round(n * 100) / 100).toString();
|
|
@@ -1977,7 +1992,11 @@ function renderFlowchartAST(ast, themeName = "default") {
|
|
|
1977
1992
|
const props = Object.entries(cd.props).map(([k, v]) => `${k}:${v}`).join(";");
|
|
1978
1993
|
return `.sx-fc-class-${cd.id} > .sx-fc-node { ${props} }`;
|
|
1979
1994
|
}).join("\n");
|
|
1980
|
-
const
|
|
1995
|
+
const linkStyleOverrides = Array.from(ast.linkStyles.entries()).map(([idx, props]) => {
|
|
1996
|
+
const cssProps = Object.entries(props).map(([k, v]) => `${k}:${v}`).join(";");
|
|
1997
|
+
return `g[data-edge-index="${idx}"] path { ${cssProps} }`;
|
|
1998
|
+
}).join("\n");
|
|
1999
|
+
const titleBlock = ast.title ? chunk3WNW5Y7P_cjs.text(
|
|
1981
2000
|
{
|
|
1982
2001
|
x: layout.width / 2,
|
|
1983
2002
|
y: 16,
|
|
@@ -1986,24 +2005,24 @@ function renderFlowchartAST(ast, themeName = "default") {
|
|
|
1986
2005
|
},
|
|
1987
2006
|
ast.title
|
|
1988
2007
|
) : "";
|
|
1989
|
-
const cssOverrides = [nodeStyleOverrides, classDefOverrides].filter((s) => s.length > 0).join("\n");
|
|
2008
|
+
const cssOverrides = [nodeStyleOverrides, classDefOverrides, linkStyleOverrides].filter((s) => s.length > 0).join("\n");
|
|
1990
2009
|
const headMeta = [
|
|
1991
|
-
|
|
1992
|
-
|
|
2010
|
+
chunk3WNW5Y7P_cjs.title(ast.title ? `${ast.title} \u2014 Flowchart` : "Flowchart"),
|
|
2011
|
+
chunk3WNW5Y7P_cjs.desc(
|
|
1993
2012
|
`Flowchart with ${ast.nodes.length} node${ast.nodes.length === 1 ? "" : "s"} and ${ast.edges.length} edge${ast.edges.length === 1 ? "" : "s"}.`
|
|
1994
2013
|
),
|
|
1995
|
-
|
|
1996
|
-
|
|
2014
|
+
chunk3WNW5Y7P_cjs.el("style", {}, CSS_TEMPLATE(themeName) + (cssOverrides ? "\n" + cssOverrides : "")),
|
|
2015
|
+
chunk3WNW5Y7P_cjs.defs([ARROW_MARKER])
|
|
1997
2016
|
];
|
|
1998
2017
|
const content = [];
|
|
1999
|
-
if (clusterSvg.length > 0) content.push(
|
|
2000
|
-
content.push(
|
|
2001
|
-
content.push(
|
|
2018
|
+
if (clusterSvg.length > 0) content.push(chunk3WNW5Y7P_cjs.group({ class: "sx-fc-clusters" }, clusterSvg));
|
|
2019
|
+
content.push(chunk3WNW5Y7P_cjs.group({ class: "sx-fc-edges" }, edgeSvg));
|
|
2020
|
+
content.push(chunk3WNW5Y7P_cjs.group({ class: "sx-fc-nodes" }, nodeSvg));
|
|
2002
2021
|
const hasClusters = layout.clusters.length > 0;
|
|
2003
2022
|
const topPad = ast.title ? hasClusters ? 56 : 24 : 0;
|
|
2004
2023
|
const totalH = layout.height + topPad;
|
|
2005
2024
|
const titleSvg = titleBlock;
|
|
2006
|
-
return
|
|
2025
|
+
return chunk3WNW5Y7P_cjs.svgRoot(
|
|
2007
2026
|
{
|
|
2008
2027
|
viewBox: `0 0 ${fmt2(layout.width)} ${fmt2(totalH)}`,
|
|
2009
2028
|
width: fmt2(layout.width),
|
|
@@ -2016,7 +2035,7 @@ function renderFlowchartAST(ast, themeName = "default") {
|
|
|
2016
2035
|
topPad > 0 ? [
|
|
2017
2036
|
...headMeta,
|
|
2018
2037
|
titleSvg,
|
|
2019
|
-
|
|
2038
|
+
chunk3WNW5Y7P_cjs.group({ transform: `translate(0 ${topPad})` }, content)
|
|
2020
2039
|
] : [...headMeta, titleSvg, ...content]
|
|
2021
2040
|
);
|
|
2022
2041
|
}
|
|
@@ -2051,5 +2070,5 @@ exports.layoutFlowchart = layoutFlowchart;
|
|
|
2051
2070
|
exports.parseFlowchart = parseFlowchart;
|
|
2052
2071
|
exports.renderFlowchart = renderFlowchart;
|
|
2053
2072
|
exports.renderFlowchartAST = renderFlowchartAST;
|
|
2054
|
-
//# sourceMappingURL=chunk-
|
|
2055
|
-
//# sourceMappingURL=chunk-
|
|
2073
|
+
//# sourceMappingURL=chunk-ZFNZ2FYI.cjs.map
|
|
2074
|
+
//# sourceMappingURL=chunk-ZFNZ2FYI.cjs.map
|