schematex 0.3.0 → 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-HDKDQAEQ.cjs → chunk-3WNW5Y7P.cjs} +54 -2
- package/dist/chunk-3WNW5Y7P.cjs.map +1 -0
- package/dist/{chunk-B6INLQBU.cjs → chunk-55UEHL57.cjs} +46 -46
- package/dist/{chunk-B6INLQBU.cjs.map → chunk-55UEHL57.cjs.map} +1 -1
- package/dist/{chunk-JDTB7IKL.js → chunk-5U2W3HQA.js} +3 -3
- package/dist/{chunk-JDTB7IKL.js.map → chunk-5U2W3HQA.js.map} +1 -1
- package/dist/{chunk-ULYRO2KY.cjs → chunk-5UCXMYE7.cjs} +44 -44
- package/dist/{chunk-ULYRO2KY.cjs.map → chunk-5UCXMYE7.cjs.map} +1 -1
- package/dist/{chunk-UGCUNADI.js → chunk-66XQBGX7.js} +35 -16
- package/dist/chunk-66XQBGX7.js.map +1 -0
- package/dist/{chunk-45KP67RR.js → chunk-6TIN33CA.js} +5 -5
- package/dist/chunk-6TIN33CA.js.map +1 -0
- package/dist/{chunk-NNU4RGT3.js → chunk-6YUP3QMA.js} +39 -27
- package/dist/chunk-6YUP3QMA.js.map +1 -0
- package/dist/{chunk-COLTVQWR.cjs → chunk-7EWFVNYD.cjs} +25 -25
- package/dist/{chunk-COLTVQWR.cjs.map → chunk-7EWFVNYD.cjs.map} +1 -1
- package/dist/{chunk-RP5UATRA.js → chunk-AC3XH3LB.js} +4 -4
- package/dist/{chunk-RP5UATRA.js.map → chunk-AC3XH3LB.js.map} +1 -1
- package/dist/{chunk-XTATRNUN.cjs → chunk-APV4AWQ5.cjs} +442 -430
- package/dist/chunk-APV4AWQ5.cjs.map +1 -0
- package/dist/{chunk-NZH4GWE6.cjs → chunk-AVIKQZSX.cjs} +37 -37
- package/dist/{chunk-NZH4GWE6.cjs.map → chunk-AVIKQZSX.cjs.map} +1 -1
- package/dist/{chunk-X7RPFTTR.cjs → chunk-CWZKP3CJ.cjs} +26 -26
- package/dist/{chunk-X7RPFTTR.cjs.map → chunk-CWZKP3CJ.cjs.map} +1 -1
- package/dist/{chunk-TYCHEOQX.js → chunk-FIVUMDLF.js} +49 -24
- package/dist/chunk-FIVUMDLF.js.map +1 -0
- package/dist/{chunk-DNZFOCV7.js → chunk-FO7BLCEW.js} +3 -3
- package/dist/{chunk-DNZFOCV7.js.map → chunk-FO7BLCEW.js.map} +1 -1
- package/dist/{chunk-OC22GGQN.js → chunk-GLFBHQSQ.js} +54 -4
- package/dist/chunk-GLFBHQSQ.js.map +1 -0
- package/dist/{chunk-XZNPAD6E.js → chunk-GVCPFBAV.js} +59 -8
- package/dist/chunk-GVCPFBAV.js.map +1 -0
- package/dist/{chunk-B37IKTI7.cjs → chunk-HOI6QKC6.cjs} +97 -47
- package/dist/chunk-HOI6QKC6.cjs.map +1 -0
- package/dist/{chunk-A5D2IMOX.cjs → chunk-IAEABLIV.cjs} +47 -47
- package/dist/{chunk-A5D2IMOX.cjs.map → chunk-IAEABLIV.cjs.map} +1 -1
- package/dist/{chunk-5YYAYW67.js → chunk-IQRRZPVZ.js} +3 -3
- package/dist/{chunk-5YYAYW67.js.map → chunk-IQRRZPVZ.js.map} +1 -1
- package/dist/{chunk-VLMK7MQK.js → chunk-MNOO7STY.js} +25 -6
- package/dist/chunk-MNOO7STY.js.map +1 -0
- package/dist/{chunk-ZNOD4VZT.cjs → chunk-N56YC75X.cjs} +46 -46
- package/dist/{chunk-ZNOD4VZT.cjs.map → chunk-N56YC75X.cjs.map} +1 -1
- package/dist/{chunk-YQANC7HQ.js → chunk-PAG3BNIV.js} +3 -3
- package/dist/{chunk-YQANC7HQ.js.map → chunk-PAG3BNIV.js.map} +1 -1
- package/dist/{chunk-QSQX77S2.cjs → chunk-PG6TDGKI.cjs} +21 -21
- package/dist/{chunk-QSQX77S2.cjs.map → chunk-PG6TDGKI.cjs.map} +1 -1
- package/dist/{chunk-WYFXOXVK.cjs → chunk-Q5OFA4I2.cjs} +35 -35
- package/dist/{chunk-WYFXOXVK.cjs.map → chunk-Q5OFA4I2.cjs.map} +1 -1
- package/dist/{chunk-MJGDP3CS.cjs → chunk-QOLBWCF5.cjs} +488 -109
- package/dist/chunk-QOLBWCF5.cjs.map +1 -0
- package/dist/{chunk-MCFQAUQV.cjs → chunk-QXL7AY2H.cjs} +58 -39
- package/dist/chunk-QXL7AY2H.cjs.map +1 -0
- package/dist/chunk-SYYBKDL7.js +122 -0
- package/dist/chunk-SYYBKDL7.js.map +1 -0
- package/dist/{chunk-H2OEUBPO.js → chunk-TQU44E46.js} +441 -62
- package/dist/chunk-TQU44E46.js.map +1 -0
- package/dist/{chunk-FCGHV6ZK.js → chunk-U3KRKXF7.js} +4 -4
- package/dist/{chunk-FCGHV6ZK.js.map → chunk-U3KRKXF7.js.map} +1 -1
- package/dist/{chunk-3YZ6FPQW.cjs → chunk-UDGU73RL.cjs} +131 -131
- package/dist/{chunk-3YZ6FPQW.cjs.map → chunk-UDGU73RL.cjs.map} +1 -1
- package/dist/{chunk-U6L3FAML.js → chunk-UDJ2KN2A.js} +3 -3
- package/dist/{chunk-U6L3FAML.js.map → chunk-UDJ2KN2A.js.map} +1 -1
- package/dist/{chunk-FE6GAUNW.js → chunk-UT4TIDAA.js} +5 -5
- package/dist/{chunk-FE6GAUNW.js.map → chunk-UT4TIDAA.js.map} +1 -1
- package/dist/{chunk-SQKLKBBK.cjs → chunk-UWRTV6IV.cjs} +27 -8
- package/dist/chunk-UWRTV6IV.cjs.map +1 -0
- package/dist/{chunk-NB56L5QK.js → chunk-WTF6JXHN.js} +4 -4
- package/dist/{chunk-NB56L5QK.js.map → chunk-WTF6JXHN.js.map} +1 -1
- package/dist/{chunk-ZNDIGQJD.js → chunk-X5QJO4ZD.js} +3 -3
- package/dist/{chunk-ZNDIGQJD.js.map → chunk-X5QJO4ZD.js.map} +1 -1
- package/dist/{chunk-M5B2UUNW.js → chunk-XV2DTN6G.js} +4 -4
- package/dist/{chunk-M5B2UUNW.js.map → chunk-XV2DTN6G.js.map} +1 -1
- package/dist/{chunk-K2SOC3XF.cjs → chunk-YUPG2M3I.cjs} +71 -20
- package/dist/chunk-YUPG2M3I.cjs.map +1 -0
- package/dist/{chunk-2JDVJRR3.cjs → chunk-ZCW7YH3C.cjs} +28 -28
- package/dist/chunk-ZCW7YH3C.cjs.map +1 -0
- package/dist/{chunk-3FKS4KQK.cjs → chunk-ZFNZ2FYI.cjs} +88 -63
- package/dist/chunk-ZFNZ2FYI.cjs.map +1 -0
- package/dist/{chunk-5AEN2PLB.cjs → chunk-ZZJDGGC3.cjs} +33 -33
- package/dist/{chunk-5AEN2PLB.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-CUwp4GXI.d.ts → index-D3u6vcA4.d.ts} +1 -1
- package/dist/{index-ivhNGsyU.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.cjs.map +1 -1
- package/dist/react.js +19 -19
- package/dist/react.js.map +1 -1
- package/dist/{types-Bl-Pn7Wj.d.cts → types-DnU2UlWz.d.cts} +26 -3
- package/dist/{types-Bl-Pn7Wj.d.ts → types-DnU2UlWz.d.ts} +26 -3
- package/package.json +1 -1
- package/dist/chunk-2JDVJRR3.cjs.map +0 -1
- package/dist/chunk-3FKS4KQK.cjs.map +0 -1
- package/dist/chunk-45KP67RR.js.map +0 -1
- package/dist/chunk-B37IKTI7.cjs.map +0 -1
- package/dist/chunk-H2OEUBPO.js.map +0 -1
- package/dist/chunk-HDKDQAEQ.cjs.map +0 -1
- package/dist/chunk-K2SOC3XF.cjs.map +0 -1
- package/dist/chunk-KLJEK547.js +0 -71
- package/dist/chunk-KLJEK547.js.map +0 -1
- package/dist/chunk-MCFQAUQV.cjs.map +0 -1
- package/dist/chunk-MJGDP3CS.cjs.map +0 -1
- package/dist/chunk-NNU4RGT3.js.map +0 -1
- package/dist/chunk-OC22GGQN.js.map +0 -1
- package/dist/chunk-SQKLKBBK.cjs.map +0 -1
- package/dist/chunk-TYCHEOQX.js.map +0 -1
- package/dist/chunk-UGCUNADI.js.map +0 -1
- package/dist/chunk-VLMK7MQK.js.map +0 -1
- package/dist/chunk-XTATRNUN.cjs.map +0 -1
- package/dist/chunk-XZNPAD6E.js.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","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 {
|
|
@@ -17,76 +17,81 @@ var FlowchartParseError = class extends Error {
|
|
|
17
17
|
source;
|
|
18
18
|
};
|
|
19
19
|
var DIRECTIONS = /* @__PURE__ */ new Set(["TB", "TD", "BT", "LR", "RL"]);
|
|
20
|
+
function unquoteLabel(s) {
|
|
21
|
+
const t = s.trim();
|
|
22
|
+
if (t.length >= 2 && t.startsWith('"') && t.endsWith('"')) return t.slice(1, -1);
|
|
23
|
+
return t;
|
|
24
|
+
}
|
|
20
25
|
function parseShapeSuffix(line2, pos) {
|
|
21
26
|
const ch = line2[pos];
|
|
22
27
|
if (ch === void 0) return null;
|
|
23
28
|
if (ch === ">") {
|
|
24
29
|
const end = line2.indexOf("]", pos + 1);
|
|
25
30
|
if (end < 0) return null;
|
|
26
|
-
return { shape: "asymmetric", label: line2.slice(pos + 1, end)
|
|
31
|
+
return { shape: "asymmetric", label: unquoteLabel(line2.slice(pos + 1, end)), end: end + 1 };
|
|
27
32
|
}
|
|
28
33
|
if (ch === "(" && line2[pos + 1] === "(" && line2[pos + 2] === "(") {
|
|
29
34
|
const end = line2.indexOf(")))", pos + 3);
|
|
30
35
|
if (end < 0) return null;
|
|
31
|
-
return { shape: "double-circle", label: line2.slice(pos + 3, end)
|
|
36
|
+
return { shape: "double-circle", label: unquoteLabel(line2.slice(pos + 3, end)), end: end + 3 };
|
|
32
37
|
}
|
|
33
38
|
if (ch === "(" && line2[pos + 1] === "[") {
|
|
34
39
|
const end = line2.indexOf("])", pos + 2);
|
|
35
40
|
if (end < 0) return null;
|
|
36
|
-
return { shape: "stadium", label: line2.slice(pos + 2, end)
|
|
41
|
+
return { shape: "stadium", label: unquoteLabel(line2.slice(pos + 2, end)), end: end + 2 };
|
|
37
42
|
}
|
|
38
43
|
if (ch === "(" && line2[pos + 1] === "(") {
|
|
39
44
|
const end = line2.indexOf("))", pos + 2);
|
|
40
45
|
if (end < 0) return null;
|
|
41
|
-
return { shape: "circle", label: line2.slice(pos + 2, end)
|
|
46
|
+
return { shape: "circle", label: unquoteLabel(line2.slice(pos + 2, end)), end: end + 2 };
|
|
42
47
|
}
|
|
43
48
|
if (ch === "[" && line2[pos + 1] === "[") {
|
|
44
49
|
const end = line2.indexOf("]]", pos + 2);
|
|
45
50
|
if (end < 0) return null;
|
|
46
|
-
return { shape: "subroutine", label: line2.slice(pos + 2, end)
|
|
51
|
+
return { shape: "subroutine", label: unquoteLabel(line2.slice(pos + 2, end)), end: end + 2 };
|
|
47
52
|
}
|
|
48
53
|
if (ch === "[" && line2[pos + 1] === "(") {
|
|
49
54
|
const end = line2.indexOf(")]", pos + 2);
|
|
50
55
|
if (end < 0) return null;
|
|
51
|
-
return { shape: "cylinder", label: line2.slice(pos + 2, end)
|
|
56
|
+
return { shape: "cylinder", label: unquoteLabel(line2.slice(pos + 2, end)), end: end + 2 };
|
|
52
57
|
}
|
|
53
58
|
if (ch === "{" && line2[pos + 1] === "{") {
|
|
54
59
|
const end = line2.indexOf("}}", pos + 2);
|
|
55
60
|
if (end < 0) return null;
|
|
56
|
-
return { shape: "hexagon", label: line2.slice(pos + 2, end)
|
|
61
|
+
return { shape: "hexagon", label: unquoteLabel(line2.slice(pos + 2, end)), end: end + 2 };
|
|
57
62
|
}
|
|
58
63
|
if (ch === "[" && line2[pos + 1] === "/") {
|
|
59
64
|
const endSlash = line2.indexOf("\\]", pos + 2);
|
|
60
65
|
if (endSlash >= 0) {
|
|
61
|
-
return { shape: "trapezoid", label: line2.slice(pos + 2, endSlash)
|
|
66
|
+
return { shape: "trapezoid", label: unquoteLabel(line2.slice(pos + 2, endSlash)), end: endSlash + 2 };
|
|
62
67
|
}
|
|
63
68
|
const end = line2.indexOf("/]", pos + 2);
|
|
64
69
|
if (end < 0) return null;
|
|
65
|
-
return { shape: "parallelogram", label: line2.slice(pos + 2, end)
|
|
70
|
+
return { shape: "parallelogram", label: unquoteLabel(line2.slice(pos + 2, end)), end: end + 2 };
|
|
66
71
|
}
|
|
67
72
|
if (ch === "[" && line2[pos + 1] === "\\") {
|
|
68
73
|
const endFwd = line2.indexOf("/]", pos + 2);
|
|
69
74
|
if (endFwd >= 0) {
|
|
70
|
-
return { shape: "trapezoid-alt", label: line2.slice(pos + 2, endFwd)
|
|
75
|
+
return { shape: "trapezoid-alt", label: unquoteLabel(line2.slice(pos + 2, endFwd)), end: endFwd + 2 };
|
|
71
76
|
}
|
|
72
77
|
const end = line2.indexOf("\\]", pos + 2);
|
|
73
78
|
if (end < 0) return null;
|
|
74
|
-
return { shape: "parallelogram-alt", label: line2.slice(pos + 2, end)
|
|
79
|
+
return { shape: "parallelogram-alt", label: unquoteLabel(line2.slice(pos + 2, end)), end: end + 2 };
|
|
75
80
|
}
|
|
76
81
|
if (ch === "[") {
|
|
77
82
|
const end = line2.indexOf("]", pos + 1);
|
|
78
83
|
if (end < 0) return null;
|
|
79
|
-
return { shape: "rect", label: line2.slice(pos + 1, end)
|
|
84
|
+
return { shape: "rect", label: unquoteLabel(line2.slice(pos + 1, end)), end: end + 1 };
|
|
80
85
|
}
|
|
81
86
|
if (ch === "(") {
|
|
82
87
|
const end = line2.indexOf(")", pos + 1);
|
|
83
88
|
if (end < 0) return null;
|
|
84
|
-
return { shape: "round", label: line2.slice(pos + 1, end)
|
|
89
|
+
return { shape: "round", label: unquoteLabel(line2.slice(pos + 1, end)), end: end + 1 };
|
|
85
90
|
}
|
|
86
91
|
if (ch === "{") {
|
|
87
92
|
const end = line2.indexOf("}", pos + 1);
|
|
88
93
|
if (end < 0) return null;
|
|
89
|
-
return { shape: "diamond", label: line2.slice(pos + 1, end)
|
|
94
|
+
return { shape: "diamond", label: unquoteLabel(line2.slice(pos + 1, end)), end: end + 1 };
|
|
90
95
|
}
|
|
91
96
|
return null;
|
|
92
97
|
}
|
|
@@ -170,7 +175,7 @@ function parsePipeLabel(line2, pos) {
|
|
|
170
175
|
if (line2[pos] !== "|") return null;
|
|
171
176
|
const end = line2.indexOf("|", pos + 1);
|
|
172
177
|
if (end < 0) return null;
|
|
173
|
-
return { label: line2.slice(pos + 1, end)
|
|
178
|
+
return { label: unquoteLabel(line2.slice(pos + 1, end)), end: end + 1 };
|
|
174
179
|
}
|
|
175
180
|
function skipSpaces(line2, pos) {
|
|
176
181
|
while (pos < line2.length && (line2[pos] === " " || line2[pos] === " ")) pos++;
|
|
@@ -399,7 +404,18 @@ function parseFlowchart(source) {
|
|
|
399
404
|
}
|
|
400
405
|
continue;
|
|
401
406
|
}
|
|
402
|
-
|
|
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
|
+
}
|
|
403
419
|
let parsed;
|
|
404
420
|
try {
|
|
405
421
|
parsed = parseChainStatement(trimmed, i + 1);
|
|
@@ -1569,6 +1585,8 @@ function layoutFlowchart(ast) {
|
|
|
1569
1585
|
if (flipX) c.x = outWidth - c.x;
|
|
1570
1586
|
}
|
|
1571
1587
|
}
|
|
1588
|
+
const edgeIndex = /* @__PURE__ */ new Map();
|
|
1589
|
+
ast.edges.forEach((e, i) => edgeIndex.set(e, i));
|
|
1572
1590
|
const outEdges = updatedEdges.map((le) => {
|
|
1573
1591
|
const chain = le.chain.length > 0 ? le.chain : [le.from, le.to];
|
|
1574
1592
|
const points = [];
|
|
@@ -1583,7 +1601,7 @@ function layoutFlowchart(ast) {
|
|
|
1583
1601
|
}
|
|
1584
1602
|
}
|
|
1585
1603
|
if (points.length < 2) {
|
|
1586
|
-
return { edge: le.original, path: "" };
|
|
1604
|
+
return { edge: le.original, path: "", index: edgeIndex.get(le.original) };
|
|
1587
1605
|
}
|
|
1588
1606
|
const startNode = nodeCenter.get(chain[0]);
|
|
1589
1607
|
const endNode = nodeCenter.get(chain[chain.length - 1]);
|
|
@@ -1608,7 +1626,8 @@ function layoutFlowchart(ast) {
|
|
|
1608
1626
|
isReversed: le.isReversed
|
|
1609
1627
|
},
|
|
1610
1628
|
path: d,
|
|
1611
|
-
labelAnchor
|
|
1629
|
+
labelAnchor,
|
|
1630
|
+
index: edgeIndex.get(le.original)
|
|
1612
1631
|
};
|
|
1613
1632
|
});
|
|
1614
1633
|
function collectDescendantNodeIds(sgId) {
|
|
@@ -1713,52 +1732,52 @@ function shapeSVG(shape, w, h) {
|
|
|
1713
1732
|
switch (shape) {
|
|
1714
1733
|
// ── M1 core shapes ─────────────────────────────────────────
|
|
1715
1734
|
case "rect":
|
|
1716
|
-
return
|
|
1735
|
+
return chunk3WNW5Y7P_cjs.rect({ x: 0, y: 0, width: w, height: h, rx: 14, ry: 14, class: "sx-fc-node" });
|
|
1717
1736
|
case "round":
|
|
1718
|
-
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" });
|
|
1719
1738
|
case "stadium": {
|
|
1720
1739
|
const r = Math.min(h / 2, 24);
|
|
1721
|
-
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" });
|
|
1722
1741
|
}
|
|
1723
1742
|
case "diamond": {
|
|
1724
1743
|
const points = `${w / 2},0 ${w},${h / 2} ${w / 2},${h} 0,${h / 2}`;
|
|
1725
|
-
return
|
|
1744
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node sx-fc-node-diamond" });
|
|
1726
1745
|
}
|
|
1727
1746
|
case "parallelogram": {
|
|
1728
1747
|
const slant = SHAPE_SLANT.parallelogram;
|
|
1729
1748
|
const points = `${slant},0 ${w},0 ${w - slant},${h} 0,${h}`;
|
|
1730
|
-
return
|
|
1749
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node" });
|
|
1731
1750
|
}
|
|
1732
1751
|
// ── M2 additional shapes ────────────────────────────────────
|
|
1733
1752
|
case "parallelogram-alt": {
|
|
1734
1753
|
const slant = SHAPE_SLANT.parallelogram;
|
|
1735
1754
|
const points = `0,0 ${w - slant},0 ${w},${h} ${slant},${h}`;
|
|
1736
|
-
return
|
|
1755
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node" });
|
|
1737
1756
|
}
|
|
1738
1757
|
case "trapezoid": {
|
|
1739
1758
|
const slant = SHAPE_SLANT.trapezoid;
|
|
1740
1759
|
const points = `0,0 ${w},0 ${w - slant},${h} ${slant},${h}`;
|
|
1741
|
-
return
|
|
1760
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node" });
|
|
1742
1761
|
}
|
|
1743
1762
|
case "trapezoid-alt": {
|
|
1744
1763
|
const slant = SHAPE_SLANT.trapezoid;
|
|
1745
1764
|
const points = `${slant},0 ${w - slant},0 ${w},${h} 0,${h}`;
|
|
1746
|
-
return
|
|
1765
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node" });
|
|
1747
1766
|
}
|
|
1748
1767
|
case "subroutine": {
|
|
1749
1768
|
const barX = 10;
|
|
1750
|
-
const body =
|
|
1751
|
-
const left =
|
|
1752
|
-
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" });
|
|
1753
1772
|
return body + left + right;
|
|
1754
1773
|
}
|
|
1755
1774
|
case "cylinder": {
|
|
1756
1775
|
const ry = Math.min(8, h / 4);
|
|
1757
|
-
const silhouette =
|
|
1776
|
+
const silhouette = chunk3WNW5Y7P_cjs.path({
|
|
1758
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`,
|
|
1759
1778
|
class: "sx-fc-node"
|
|
1760
1779
|
});
|
|
1761
|
-
const topRim =
|
|
1780
|
+
const topRim = chunk3WNW5Y7P_cjs.path({
|
|
1762
1781
|
d: `M0,${ry} A${w / 2},${ry} 0 0,0 ${w},${ry}`,
|
|
1763
1782
|
class: "sx-fc-node-arc"
|
|
1764
1783
|
});
|
|
@@ -1766,26 +1785,26 @@ function shapeSVG(shape, w, h) {
|
|
|
1766
1785
|
}
|
|
1767
1786
|
case "circle": {
|
|
1768
1787
|
const r = Math.min(w, h) / 2 - 1;
|
|
1769
|
-
return
|
|
1788
|
+
return chunk3WNW5Y7P_cjs.circle({ cx: w / 2, cy: h / 2, r, class: "sx-fc-node sx-fc-node-circle" });
|
|
1770
1789
|
}
|
|
1771
1790
|
case "double-circle": {
|
|
1772
1791
|
const r1 = Math.min(w, h) / 2 - 1;
|
|
1773
1792
|
const r2 = r1 - 5;
|
|
1774
|
-
const outer =
|
|
1775
|
-
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" });
|
|
1776
1795
|
return outer + inner;
|
|
1777
1796
|
}
|
|
1778
1797
|
case "hexagon": {
|
|
1779
1798
|
const cut = Math.min(20, w / 4);
|
|
1780
1799
|
const points = `${cut},0 ${w - cut},0 ${w},${h / 2} ${w - cut},${h} ${cut},${h} 0,${h / 2}`;
|
|
1781
|
-
return
|
|
1800
|
+
return chunk3WNW5Y7P_cjs.polygon({ points, class: "sx-fc-node sx-fc-node-hexagon" });
|
|
1782
1801
|
}
|
|
1783
1802
|
case "asymmetric": {
|
|
1784
1803
|
const pts = `0,0 ${w - 15},0 ${w},${h / 2} ${w - 15},${h} 0,${h}`;
|
|
1785
|
-
return
|
|
1804
|
+
return chunk3WNW5Y7P_cjs.polygon({ points: pts, class: "sx-fc-node" });
|
|
1786
1805
|
}
|
|
1787
1806
|
default:
|
|
1788
|
-
return
|
|
1807
|
+
return chunk3WNW5Y7P_cjs.rect({ x: 0, y: 0, width: w, height: h, rx: 14, ry: 14, class: "sx-fc-node" });
|
|
1789
1808
|
}
|
|
1790
1809
|
}
|
|
1791
1810
|
|
|
@@ -1863,12 +1882,12 @@ function markerStartFor(edge) {
|
|
|
1863
1882
|
}
|
|
1864
1883
|
function renderCluster(lc) {
|
|
1865
1884
|
const sg = lc.subgraph;
|
|
1866
|
-
const bg =
|
|
1867
|
-
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(
|
|
1868
1887
|
{ x: lc.x + 12, y: lc.y + 15, class: "sx-fc-cluster-title" },
|
|
1869
1888
|
sg.label
|
|
1870
1889
|
);
|
|
1871
|
-
return
|
|
1890
|
+
return chunk3WNW5Y7P_cjs.group(
|
|
1872
1891
|
{ "data-cluster-id": sg.id, "data-depth": lc.depth, class: "sx-fc-cluster-g" },
|
|
1873
1892
|
[bg, label]
|
|
1874
1893
|
);
|
|
@@ -1876,7 +1895,7 @@ function renderCluster(lc) {
|
|
|
1876
1895
|
function renderNode(ln) {
|
|
1877
1896
|
const n = ln.node;
|
|
1878
1897
|
const shapeEl = shapeSVG(n.shape, ln.width, ln.height);
|
|
1879
|
-
const label =
|
|
1898
|
+
const label = chunk3WNW5Y7P_cjs.multilineText(
|
|
1880
1899
|
{
|
|
1881
1900
|
x: ln.width / 2,
|
|
1882
1901
|
y: ln.height / 2,
|
|
@@ -1886,9 +1905,10 @@ function renderNode(ln) {
|
|
|
1886
1905
|
},
|
|
1887
1906
|
n.label
|
|
1888
1907
|
);
|
|
1889
|
-
const
|
|
1908
|
+
const plainLabel = n.label.replace(/<br\s*\/?>/gi, " ").replace(/<\/?[bi]>/gi, "");
|
|
1909
|
+
const nodeTitle = chunk3WNW5Y7P_cjs.title(plainLabel);
|
|
1890
1910
|
const classAttr = ["sx-fc-node-g", ...(n.classes ?? []).map((c) => `sx-fc-class-${c}`)].join(" ");
|
|
1891
|
-
return
|
|
1911
|
+
return chunk3WNW5Y7P_cjs.group(
|
|
1892
1912
|
{
|
|
1893
1913
|
"data-node-id": n.id,
|
|
1894
1914
|
"data-shape": n.shape,
|
|
@@ -1910,19 +1930,20 @@ function renderEdge(le) {
|
|
|
1910
1930
|
const ms = markerStartFor(e);
|
|
1911
1931
|
if (me) attrs["marker-end"] = me;
|
|
1912
1932
|
if (ms) attrs["marker-start"] = ms;
|
|
1913
|
-
const p =
|
|
1933
|
+
const p = chunk3WNW5Y7P_cjs.path(attrs);
|
|
1914
1934
|
const labelEl = e.label && le.labelAnchor ? renderEdgeLabel(
|
|
1915
1935
|
e.label,
|
|
1916
1936
|
le.labelAnchor.x,
|
|
1917
1937
|
le.labelAnchor.y,
|
|
1918
1938
|
le.labelAnchor.textAnchor ?? "middle"
|
|
1919
1939
|
) : "";
|
|
1920
|
-
const edgeTitle =
|
|
1940
|
+
const edgeTitle = chunk3WNW5Y7P_cjs.title(
|
|
1921
1941
|
e.label ? `${e.from} \u2192 ${e.to}: ${e.label}` : `${e.from} \u2192 ${e.to}`
|
|
1922
1942
|
);
|
|
1923
|
-
return
|
|
1943
|
+
return chunk3WNW5Y7P_cjs.group(
|
|
1924
1944
|
{
|
|
1925
1945
|
"data-edge-id": e.id ?? `${e.from}->${e.to}`,
|
|
1946
|
+
"data-edge-index": le.index,
|
|
1926
1947
|
"data-kind": e.kind,
|
|
1927
1948
|
"data-from": e.from,
|
|
1928
1949
|
"data-to": e.to
|
|
@@ -1935,7 +1956,7 @@ function renderEdgeLabel(label, cx, cy, textAnchor) {
|
|
|
1935
1956
|
const h = 16;
|
|
1936
1957
|
const rx = cx - (textAnchor === "start" ? 0 : textAnchor === "end" ? w : w / 2);
|
|
1937
1958
|
const ry = cy - h / 2;
|
|
1938
|
-
const bg =
|
|
1959
|
+
const bg = chunk3WNW5Y7P_cjs.rect({
|
|
1939
1960
|
x: rx,
|
|
1940
1961
|
y: ry,
|
|
1941
1962
|
width: w,
|
|
@@ -1943,7 +1964,7 @@ function renderEdgeLabel(label, cx, cy, textAnchor) {
|
|
|
1943
1964
|
rx: 3,
|
|
1944
1965
|
class: "sx-fc-edge-label-bg"
|
|
1945
1966
|
});
|
|
1946
|
-
const t =
|
|
1967
|
+
const t = chunk3WNW5Y7P_cjs.text(
|
|
1947
1968
|
{
|
|
1948
1969
|
x: cx,
|
|
1949
1970
|
y: cy,
|
|
@@ -1953,7 +1974,7 @@ function renderEdgeLabel(label, cx, cy, textAnchor) {
|
|
|
1953
1974
|
},
|
|
1954
1975
|
label
|
|
1955
1976
|
);
|
|
1956
|
-
return
|
|
1977
|
+
return chunk3WNW5Y7P_cjs.group({ class: "sx-fc-edge-label-g" }, [bg, t]);
|
|
1957
1978
|
}
|
|
1958
1979
|
function fmt2(n) {
|
|
1959
1980
|
return (Math.round(n * 100) / 100).toString();
|
|
@@ -1971,7 +1992,11 @@ function renderFlowchartAST(ast, themeName = "default") {
|
|
|
1971
1992
|
const props = Object.entries(cd.props).map(([k, v]) => `${k}:${v}`).join(";");
|
|
1972
1993
|
return `.sx-fc-class-${cd.id} > .sx-fc-node { ${props} }`;
|
|
1973
1994
|
}).join("\n");
|
|
1974
|
-
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(
|
|
1975
2000
|
{
|
|
1976
2001
|
x: layout.width / 2,
|
|
1977
2002
|
y: 16,
|
|
@@ -1980,24 +2005,24 @@ function renderFlowchartAST(ast, themeName = "default") {
|
|
|
1980
2005
|
},
|
|
1981
2006
|
ast.title
|
|
1982
2007
|
) : "";
|
|
1983
|
-
const cssOverrides = [nodeStyleOverrides, classDefOverrides].filter((s) => s.length > 0).join("\n");
|
|
2008
|
+
const cssOverrides = [nodeStyleOverrides, classDefOverrides, linkStyleOverrides].filter((s) => s.length > 0).join("\n");
|
|
1984
2009
|
const headMeta = [
|
|
1985
|
-
|
|
1986
|
-
|
|
2010
|
+
chunk3WNW5Y7P_cjs.title(ast.title ? `${ast.title} \u2014 Flowchart` : "Flowchart"),
|
|
2011
|
+
chunk3WNW5Y7P_cjs.desc(
|
|
1987
2012
|
`Flowchart with ${ast.nodes.length} node${ast.nodes.length === 1 ? "" : "s"} and ${ast.edges.length} edge${ast.edges.length === 1 ? "" : "s"}.`
|
|
1988
2013
|
),
|
|
1989
|
-
|
|
1990
|
-
|
|
2014
|
+
chunk3WNW5Y7P_cjs.el("style", {}, CSS_TEMPLATE(themeName) + (cssOverrides ? "\n" + cssOverrides : "")),
|
|
2015
|
+
chunk3WNW5Y7P_cjs.defs([ARROW_MARKER])
|
|
1991
2016
|
];
|
|
1992
2017
|
const content = [];
|
|
1993
|
-
if (clusterSvg.length > 0) content.push(
|
|
1994
|
-
content.push(
|
|
1995
|
-
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));
|
|
1996
2021
|
const hasClusters = layout.clusters.length > 0;
|
|
1997
2022
|
const topPad = ast.title ? hasClusters ? 56 : 24 : 0;
|
|
1998
2023
|
const totalH = layout.height + topPad;
|
|
1999
2024
|
const titleSvg = titleBlock;
|
|
2000
|
-
return
|
|
2025
|
+
return chunk3WNW5Y7P_cjs.svgRoot(
|
|
2001
2026
|
{
|
|
2002
2027
|
viewBox: `0 0 ${fmt2(layout.width)} ${fmt2(totalH)}`,
|
|
2003
2028
|
width: fmt2(layout.width),
|
|
@@ -2010,7 +2035,7 @@ function renderFlowchartAST(ast, themeName = "default") {
|
|
|
2010
2035
|
topPad > 0 ? [
|
|
2011
2036
|
...headMeta,
|
|
2012
2037
|
titleSvg,
|
|
2013
|
-
|
|
2038
|
+
chunk3WNW5Y7P_cjs.group({ transform: `translate(0 ${topPad})` }, content)
|
|
2014
2039
|
] : [...headMeta, titleSvg, ...content]
|
|
2015
2040
|
);
|
|
2016
2041
|
}
|
|
@@ -2045,5 +2070,5 @@ exports.layoutFlowchart = layoutFlowchart;
|
|
|
2045
2070
|
exports.parseFlowchart = parseFlowchart;
|
|
2046
2071
|
exports.renderFlowchart = renderFlowchart;
|
|
2047
2072
|
exports.renderFlowchartAST = renderFlowchartAST;
|
|
2048
|
-
//# sourceMappingURL=chunk-
|
|
2049
|
-
//# sourceMappingURL=chunk-
|
|
2073
|
+
//# sourceMappingURL=chunk-ZFNZ2FYI.cjs.map
|
|
2074
|
+
//# sourceMappingURL=chunk-ZFNZ2FYI.cjs.map
|