schematex 0.6.1 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/ai-sdk.cjs +25 -25
- package/dist/ai/ai-sdk.d.cts +4 -4
- package/dist/ai/ai-sdk.d.ts +4 -4
- package/dist/ai/ai-sdk.js +20 -20
- package/dist/ai/index.cjs +31 -31
- package/dist/ai/index.d.cts +3 -3
- package/dist/ai/index.d.ts +3 -3
- package/dist/ai/index.js +20 -20
- package/dist/{api-BEJTXyBA.d.cts → api-BIqZjEDf.d.ts} +2 -2
- package/dist/{api-DFrSR3lw.d.ts → api-BXkOT7GL.d.cts} +2 -2
- package/dist/browser.cjs +26 -26
- package/dist/browser.d.cts +3 -3
- package/dist/browser.d.ts +3 -3
- package/dist/browser.js +20 -20
- package/dist/{chunk-ST5YRTTV.cjs → chunk-2F45Y2ON.cjs} +44 -5
- package/dist/chunk-2F45Y2ON.cjs.map +1 -0
- package/dist/{chunk-UWA5MWCI.js → chunk-35XCP2E4.js} +82 -48
- package/dist/chunk-35XCP2E4.js.map +1 -0
- package/dist/{chunk-VTSH4YPT.cjs → chunk-3C5DKCBJ.cjs} +12 -12
- package/dist/{chunk-VTSH4YPT.cjs.map → chunk-3C5DKCBJ.cjs.map} +1 -1
- package/dist/{chunk-HWVBHU3O.cjs → chunk-4THUHX2D.cjs} +5 -5
- package/dist/{chunk-HWVBHU3O.cjs.map → chunk-4THUHX2D.cjs.map} +1 -1
- package/dist/{chunk-4XR7X7XW.cjs → chunk-624UQ5R6.cjs} +4073 -640
- package/dist/chunk-624UQ5R6.cjs.map +1 -0
- package/dist/{chunk-LRI4RH2N.js → chunk-AORGFBEH.js} +127 -3
- package/dist/chunk-AORGFBEH.js.map +1 -0
- package/dist/{chunk-DOK7LKLO.js → chunk-B7ATOBL7.js} +3 -3
- package/dist/{chunk-DOK7LKLO.js.map → chunk-B7ATOBL7.js.map} +1 -1
- package/dist/{chunk-FKJBXGWP.cjs → chunk-BXNOXOE4.cjs} +4 -4
- package/dist/{chunk-FKJBXGWP.cjs.map → chunk-BXNOXOE4.cjs.map} +1 -1
- package/dist/{chunk-MFAMNFPA.js → chunk-EPKIJEH7.js} +6 -63
- package/dist/chunk-EPKIJEH7.js.map +1 -0
- package/dist/{chunk-H4MT5TJP.js → chunk-FHZTWWI6.js} +3 -3
- package/dist/{chunk-H4MT5TJP.js.map → chunk-FHZTWWI6.js.map} +1 -1
- package/dist/{chunk-2L4YXZAZ.cjs → chunk-FXPOHPBE.cjs} +5 -5
- package/dist/{chunk-2L4YXZAZ.cjs.map → chunk-FXPOHPBE.cjs.map} +1 -1
- package/dist/{chunk-3VB5AT4R.js → chunk-GPC5BWLI.js} +3 -3
- package/dist/{chunk-3VB5AT4R.js.map → chunk-GPC5BWLI.js.map} +1 -1
- package/dist/{chunk-MVIEIKOI.js → chunk-GV5QLYTW.js} +3 -3
- package/dist/{chunk-MVIEIKOI.js.map → chunk-GV5QLYTW.js.map} +1 -1
- package/dist/{chunk-WQDIZH2Z.cjs → chunk-HCBXTBFA.cjs} +12 -12
- package/dist/{chunk-WQDIZH2Z.cjs.map → chunk-HCBXTBFA.cjs.map} +1 -1
- package/dist/{chunk-6JI6FWLZ.cjs → chunk-I6UJR4SG.cjs} +4 -4
- package/dist/{chunk-6JI6FWLZ.cjs.map → chunk-I6UJR4SG.cjs.map} +1 -1
- package/dist/{chunk-RJMCWT7Z.js → chunk-IPEHLRTI.js} +3 -3
- package/dist/{chunk-RJMCWT7Z.js.map → chunk-IPEHLRTI.js.map} +1 -1
- package/dist/{chunk-N5B242WY.js → chunk-KPKGMOTS.js} +3 -3
- package/dist/{chunk-N5B242WY.js.map → chunk-KPKGMOTS.js.map} +1 -1
- package/dist/{chunk-TWLKXV2O.js → chunk-LGFB4H5B.js} +4 -4
- package/dist/{chunk-TWLKXV2O.js.map → chunk-LGFB4H5B.js.map} +1 -1
- package/dist/{chunk-I2GQYOZ5.js → chunk-MI77LY6A.js} +4043 -612
- package/dist/chunk-MI77LY6A.js.map +1 -0
- package/dist/{chunk-7F76AWOI.js → chunk-MKECYIWN.js} +3 -3
- package/dist/{chunk-7F76AWOI.js.map → chunk-MKECYIWN.js.map} +1 -1
- package/dist/{chunk-522WB2EH.js → chunk-OANWVUBA.js} +100 -25
- package/dist/chunk-OANWVUBA.js.map +1 -0
- package/dist/{chunk-YS6CGUNH.js → chunk-OHLNH7IO.js} +3 -3
- package/dist/{chunk-YS6CGUNH.js.map → chunk-OHLNH7IO.js.map} +1 -1
- package/dist/{chunk-6URNSB6G.js → chunk-P26FCZP3.js} +44 -5
- package/dist/chunk-P26FCZP3.js.map +1 -0
- package/dist/{chunk-L7POWM5B.cjs → chunk-R5E2LSN2.cjs} +129 -2
- package/dist/chunk-R5E2LSN2.cjs.map +1 -0
- package/dist/{chunk-S3RMAXH5.cjs → chunk-ROX5KEZM.cjs} +15 -15
- package/dist/{chunk-S3RMAXH5.cjs.map → chunk-ROX5KEZM.cjs.map} +1 -1
- package/dist/{chunk-3IE7KZY4.js → chunk-RVHOCGHT.js} +96 -10
- package/dist/chunk-RVHOCGHT.js.map +1 -0
- package/dist/{chunk-4UFR2LB6.cjs → chunk-S2CHBZ4A.cjs} +13 -13
- package/dist/{chunk-4UFR2LB6.cjs.map → chunk-S2CHBZ4A.cjs.map} +1 -1
- package/dist/{chunk-XNCOSVNG.cjs → chunk-SUIDD2C5.cjs} +6 -63
- package/dist/chunk-SUIDD2C5.cjs.map +1 -0
- package/dist/{chunk-SSLNPHCL.cjs → chunk-T3ZN5P32.cjs} +452 -61
- package/dist/chunk-T3ZN5P32.cjs.map +1 -0
- package/dist/{chunk-R66QG3XT.cjs → chunk-VZO2SX6Q.cjs} +98 -10
- package/dist/chunk-VZO2SX6Q.cjs.map +1 -0
- package/dist/{chunk-R6VX5YTJ.cjs → chunk-W3IXH6BN.cjs} +100 -25
- package/dist/chunk-W3IXH6BN.cjs.map +1 -0
- package/dist/{chunk-V4GILQR6.cjs → chunk-WZ5QBGPZ.cjs} +4 -4
- package/dist/{chunk-V4GILQR6.cjs.map → chunk-WZ5QBGPZ.cjs.map} +1 -1
- package/dist/{chunk-FBS3PACU.js → chunk-XEIVA2CT.js} +3 -3
- package/dist/{chunk-FBS3PACU.js.map → chunk-XEIVA2CT.js.map} +1 -1
- package/dist/{chunk-V4RO5KYY.cjs → chunk-XJJUJ2EF.cjs} +83 -49
- package/dist/chunk-XJJUJ2EF.cjs.map +1 -0
- package/dist/{chunk-C5C5EF3W.cjs → chunk-XO7WW3I6.cjs} +4 -4
- package/dist/{chunk-C5C5EF3W.cjs.map → chunk-XO7WW3I6.cjs.map} +1 -1
- package/dist/{chunk-HAZALB7U.js → chunk-XSPENTEG.js} +3 -3
- package/dist/{chunk-HAZALB7U.js.map → chunk-XSPENTEG.js.map} +1 -1
- package/dist/{chunk-YB4XJY5L.cjs → chunk-ZZFPXCAK.cjs} +12 -12
- package/dist/{chunk-YB4XJY5L.cjs.map → chunk-ZZFPXCAK.cjs.map} +1 -1
- package/dist/{chunk-OTSVMKII.js → chunk-ZZHQBAC3.js} +450 -59
- package/dist/chunk-ZZHQBAC3.js.map +1 -0
- package/dist/{diagnostics-B-ffSEhl.d.ts → diagnostics-CzHW0RCo.d.cts} +7 -11
- package/dist/{diagnostics-B-ffSEhl.d.cts → diagnostics-CzHW0RCo.d.ts} +7 -11
- package/dist/diagrams/blockdiagram/index.cjs +5 -5
- package/dist/diagrams/blockdiagram/index.d.cts +1 -1
- package/dist/diagrams/blockdiagram/index.d.ts +1 -1
- package/dist/diagrams/blockdiagram/index.js +1 -1
- 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 +7 -7
- package/dist/diagrams/ecomap/index.d.cts +1 -1
- package/dist/diagrams/ecomap/index.d.ts +1 -1
- package/dist/diagrams/ecomap/index.js +2 -2
- 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 +9 -9
- package/dist/diagrams/genogram/index.d.cts +1 -1
- package/dist/diagrams/genogram/index.d.ts +1 -1
- package/dist/diagrams/genogram/index.js +2 -2
- package/dist/diagrams/ladder/index.cjs +7 -7
- package/dist/diagrams/ladder/index.d.cts +1 -1
- package/dist/diagrams/ladder/index.d.ts +1 -1
- package/dist/diagrams/ladder/index.js +3 -3
- package/dist/diagrams/logic/index.cjs +15 -6
- package/dist/diagrams/logic/index.d.cts +7 -2
- package/dist/diagrams/logic/index.d.ts +7 -2
- package/dist/diagrams/logic/index.js +3 -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 +7 -7
- package/dist/diagrams/pedigree/index.d.cts +1 -1
- package/dist/diagrams/pedigree/index.d.ts +1 -1
- package/dist/diagrams/pedigree/index.js +2 -2
- 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 +9 -9
- package/dist/diagrams/sld/index.d.cts +1 -1
- package/dist/diagrams/sld/index.d.ts +1 -1
- package/dist/diagrams/sld/index.js +3 -3
- package/dist/diagrams/sociogram/index.cjs +6 -6
- package/dist/diagrams/sociogram/index.d.cts +1 -1
- package/dist/diagrams/sociogram/index.d.ts +1 -1
- package/dist/diagrams/sociogram/index.js +2 -2
- package/dist/diagrams/timing/index.cjs +4 -4
- package/dist/diagrams/timing/index.d.cts +1 -1
- package/dist/diagrams/timing/index.d.ts +1 -1
- package/dist/diagrams/timing/index.js +1 -1
- 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-DPWdYfNx.d.ts → index-DdR1Auby.d.ts} +1 -1
- package/dist/{index-S0njakQ2.d.cts → index-R0IwpG20.d.cts} +1 -1
- package/dist/index.cjs +84 -76
- package/dist/index.d.cts +9 -5
- package/dist/index.d.ts +9 -5
- package/dist/index.js +24 -24
- package/dist/react.cjs +20 -20
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +19 -19
- package/dist/{tools-CeGGMCs7.d.cts → tools-B7EqXLgD.d.ts} +3 -3
- package/dist/{tools-kK_enDwb.d.ts → tools-DHSVXHM9.d.cts} +3 -3
- package/package.json +1 -1
- package/dist/chunk-3IE7KZY4.js.map +0 -1
- package/dist/chunk-4XR7X7XW.cjs.map +0 -1
- package/dist/chunk-522WB2EH.js.map +0 -1
- package/dist/chunk-6URNSB6G.js.map +0 -1
- package/dist/chunk-I2GQYOZ5.js.map +0 -1
- package/dist/chunk-L7POWM5B.cjs.map +0 -1
- package/dist/chunk-LRI4RH2N.js.map +0 -1
- package/dist/chunk-MFAMNFPA.js.map +0 -1
- package/dist/chunk-OTSVMKII.js.map +0 -1
- package/dist/chunk-R66QG3XT.cjs.map +0 -1
- package/dist/chunk-R6VX5YTJ.cjs.map +0 -1
- package/dist/chunk-SSLNPHCL.cjs.map +0 -1
- package/dist/chunk-ST5YRTTV.cjs.map +0 -1
- package/dist/chunk-UWA5MWCI.js.map +0 -1
- package/dist/chunk-V4RO5KYY.cjs.map +0 -1
- package/dist/chunk-XNCOSVNG.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/diagrams/logic/parser.ts","../src/diagrams/logic/symbols.ts","../src/diagrams/logic/layout.ts","../src/diagrams/logic/renderer.ts","../src/diagrams/logic/index.ts"],"names":["text","title","matchQuotedTitle","path","PORT_SIZE","PORT_H","el","circle","polygon","resolveIndustrialTheme","group","svgRoot","desc","defs"],"mappings":"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","file":"chunk-R66QG3XT.cjs","sourcesContent":["import type {\n LogicGateAST,\n LogicGateInput,\n LogicGateOutput,\n LogicGateNode,\n LogicGateType,\n LogicGateStyle,\n LogicGateModule,\n} from \"../../core/types\";\nimport { matchQuotedTitle } from \"../../core/quotes\";\n\nexport class LogicParseError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"LogicParseError\";\n }\n}\n\nconst GATE_TYPES = new Set<string>([\n \"AND\", \"OR\", \"NOT\", \"NAND\", \"NOR\", \"XOR\", \"XNOR\", \"BUF\",\n \"TRISTATE_BUF\", \"TRISTATE_INV\", \"OPEN_DRAIN\", \"SCHMITT\",\n \"DFF\", \"JKFF\", \"SRFF\", \"TFF\", \"LATCH_SR\", \"LATCH_D\",\n \"MUX\", \"DEMUX\", \"DECODER\", \"ENCODER\", \"COUNTER\", \"SHIFT_REG\",\n]);\n\nfunction splitIds(s: string): string[] {\n return s\n .split(\",\")\n .map((x) => x.trim())\n .filter(Boolean);\n}\n\nfunction parseInputList(s: string): string[] {\n // Supports named (D=A) or positional. Returns raw tokens (keep ~ prefix for active-low).\n return s\n .split(\",\")\n .map((x) => x.trim())\n .filter(Boolean)\n .map((tok) => {\n const eq = tok.indexOf(\"=\");\n return eq >= 0 ? tok.slice(eq + 1).trim() : tok;\n });\n}\n\nexport function parseLogic(text: string): LogicGateAST {\n const lines = text.split(\"\\n\").map((l) => l.replace(/\\r$/, \"\").trim());\n let title: string | undefined;\n let style: LogicGateStyle | undefined;\n const inputs: LogicGateInput[] = [];\n const outputs: LogicGateOutput[] = [];\n const gates: LogicGateNode[] = [];\n const modules: LogicGateModule[] = [];\n const moduleStack: string[] = [];\n let moduleCounter = 0;\n const explicitOutputFrom = new Map<string, string>();\n\n for (const rawLine of lines) {\n // Strip line comments\n const line = rawLine.replace(/#.*$/, \"\").replace(/--.*$/, \"\").trim();\n if (!line) continue;\n\n // module \"Label\" { or module Label {\n const modOpen = line.match(/^module\\s+(?:\"([^\"]+)\"|([a-zA-Z_][\\w]*))\\s*\\{$/);\n if (modOpen) {\n const label = modOpen[1] ?? modOpen[2];\n const id = `mod_${moduleCounter++}`;\n modules.push({ id, label });\n moduleStack.push(id);\n continue;\n }\n\n // close module\n if (line === \"}\") {\n if (moduleStack.length === 0) {\n throw new LogicParseError(\"Unmatched `}` — no open module\");\n }\n moduleStack.pop();\n continue;\n }\n\n // Header\n if (/^logic\\b/i.test(line)) {\n const t = matchQuotedTitle(line);\n if (t !== undefined) title = t;\n const s = line.match(/style\\s*:\\s*(ansi|iec)/i);\n if (s) style = s[1].toLowerCase() as LogicGateStyle;\n continue;\n }\n\n // input A, B, C\n const inputMatch = line.match(/^input\\s+(.+)$/i);\n if (inputMatch) {\n for (const id of splitIds(inputMatch[1])) {\n const isLow = id.startsWith(\"~\");\n const clean = isLow ? id.slice(1) : id;\n inputs.push({ id: clean, label: clean, isActiveLow: isLow || undefined });\n }\n continue;\n }\n\n // output X, Y\n const outputMatch = line.match(/^output\\s+(.+)$/i);\n if (outputMatch) {\n for (const id of splitIds(outputMatch[1])) {\n outputs.push({ id, label: id, from: id });\n }\n continue;\n }\n\n // OUTPUT <- GATE (map output to gate)\n const assignMatch = line.match(/^([a-zA-Z_][\\w]*)\\s*<-\\s*([a-zA-Z_][\\w]*)$/);\n if (assignMatch) {\n explicitOutputFrom.set(assignMatch[1], assignMatch[2]);\n continue;\n }\n\n // Gate: ID = GATE(a, b, ...)\n const gateMatch = line.match(/^([a-zA-Z_][\\w]*)\\s*=\\s*([A-Za-z_][\\w]*)\\s*\\(([^)]*)\\)$/);\n if (gateMatch) {\n const id = gateMatch[1];\n const rawType = gateMatch[2].toUpperCase();\n if (!GATE_TYPES.has(rawType)) {\n throw new LogicParseError(`Unknown gate type: ${rawType}`);\n }\n const gInputs = parseInputList(gateMatch[3]);\n const moduleId = moduleStack[moduleStack.length - 1];\n gates.push({ id, gateType: rawType as LogicGateType, inputs: gInputs, moduleId });\n continue;\n }\n }\n\n if (moduleStack.length > 0) {\n throw new LogicParseError(`Unclosed module (${moduleStack.length} open)`);\n }\n\n // Wire outputs: if output not explicitly mapped, look for gate with same id\n for (const out of outputs) {\n const mapped = explicitOutputFrom.get(out.id);\n if (mapped) out.from = mapped;\n else if (gates.some((g) => g.id === out.id)) out.from = out.id;\n }\n\n // Resolve undefined signal references: auto-declare them as inputs and\n // emit a warning. Hard-failing here is hostile to LLM-generated DSL where\n // the model often forgets the explicit `input` line — see playbook.\n const warnings: string[] = [];\n const known = new Set<string>([\n ...inputs.map((i) => i.id),\n ...gates.map((g) => g.id),\n ]);\n const autoDeclared = new Set<string>();\n for (const g of gates) {\n for (const inp of g.inputs) {\n const isLow = inp.startsWith(\"~\");\n const clean = isLow ? inp.slice(1) : inp;\n if (!known.has(clean) && !autoDeclared.has(clean)) {\n autoDeclared.add(clean);\n inputs.push({\n id: clean,\n label: clean,\n isActiveLow: isLow || undefined,\n autoDeclared: true,\n });\n warnings.push(\n `Signal \"${clean}\" referenced in gate ${g.id} was not declared; auto-declared as input.`\n );\n }\n }\n }\n\n return {\n type: \"logic\",\n title,\n style: style ?? \"ansi\",\n inputs,\n outputs,\n gates,\n modules: modules.length > 0 ? modules : undefined,\n warnings: warnings.length > 0 ? warnings : undefined,\n };\n}\n","import type { LogicGateType } from \"../../core/types\";\n\n// Normalized gate geometry: combinational gates fit in 100×60; sequential in 60×80.\nexport interface GateGeometry {\n width: number;\n height: number;\n inputPins: Array<{ id: string; x: number; y: number; label?: string }>;\n outputPins: Array<{ id: string; x: number; y: number; label?: string; bubble?: boolean }>;\n /** Body SVG path (ANSI) */\n ansiPath: string;\n /** Output bubble? */\n outputBubble?: boolean;\n /** Clock triangle pin id (sequential) */\n clockPin?: string;\n /** IEC label inside rectangle */\n iecLabel?: string;\n}\n\nfunction combPins(nInputs: number, _width: number, leftX: number): Array<{ id: string; x: number; y: number }> {\n const pins: Array<{ id: string; x: number; y: number }> = [];\n if (nInputs === 1) {\n pins.push({ id: \"in1\", x: leftX, y: 30 });\n } else if (nInputs === 2) {\n pins.push({ id: \"in1\", x: leftX, y: 15 });\n pins.push({ id: \"in2\", x: leftX, y: 45 });\n } else {\n const step = 50 / (nInputs - 1);\n for (let i = 0; i < nInputs; i++) {\n pins.push({ id: `in${i + 1}`, x: leftX, y: 5 + step * i });\n }\n }\n return pins;\n}\n\nexport function getGateGeometry(\n gateType: LogicGateType,\n inputCount: number\n): GateGeometry {\n switch (gateType) {\n case \"AND\":\n case \"NAND\": {\n const bubble = gateType === \"NAND\";\n return {\n width: bubble ? 90 : 80,\n height: 60,\n inputPins: combPins(inputCount, 80, 20).map((p) => ({ ...p, x: 20 })),\n outputPins: [{ id: \"out\", x: bubble ? 90 : 80, y: 30, bubble }],\n ansiPath: \"M 20,60 L 20,0 Q 80,0 80,30 Q 80,60 20,60 Z\",\n outputBubble: bubble,\n iecLabel: \"&\",\n };\n }\n case \"OR\":\n case \"NOR\": {\n const bubble = gateType === \"NOR\";\n return {\n width: bubble ? 80 : 70,\n height: 60,\n inputPins: combPins(inputCount, 80, 18).map((p) => ({ ...p, x: 18 })),\n outputPins: [{ id: \"out\", x: bubble ? 80 : 70, y: 30, bubble }],\n ansiPath: \"M 15,60 Q 10,30 15,0 Q 30,15 70,30 Q 30,45 15,60 Z\",\n outputBubble: bubble,\n iecLabel: \"≥1\",\n };\n }\n case \"XOR\":\n case \"XNOR\": {\n const bubble = gateType === \"XNOR\";\n return {\n width: bubble ? 80 : 70,\n height: 60,\n inputPins: combPins(inputCount, 80, 12).map((p) => ({ ...p, x: 12 })),\n outputPins: [{ id: \"out\", x: bubble ? 80 : 70, y: 30, bubble }],\n ansiPath:\n \"M 15,60 Q 10,30 15,0 Q 30,15 70,30 Q 30,45 15,60 Z M 8,60 Q 3,30 8,0\",\n outputBubble: bubble,\n iecLabel: \"=1\",\n };\n }\n case \"NOT\": {\n return {\n width: 70,\n height: 60,\n inputPins: [{ id: \"in1\", x: 10, y: 30 }],\n outputPins: [{ id: \"out\", x: 70, y: 30, bubble: true }],\n ansiPath: \"M 10,55 L 60,30 L 10,5 Z\",\n outputBubble: true,\n iecLabel: \"1\",\n };\n }\n case \"BUF\":\n case \"SCHMITT\": {\n return {\n width: 60,\n height: 60,\n inputPins: [{ id: \"in1\", x: 10, y: 30 }],\n outputPins: [{ id: \"out\", x: 60, y: 30 }],\n ansiPath: \"M 10,55 L 60,30 L 10,5 Z\",\n iecLabel: \"1\",\n };\n }\n case \"TRISTATE_BUF\":\n case \"TRISTATE_INV\":\n case \"OPEN_DRAIN\": {\n const bubble = gateType === \"TRISTATE_INV\";\n return {\n width: bubble ? 70 : 60,\n height: 70,\n inputPins: [\n { id: \"in1\", x: 10, y: 30 },\n { id: \"en\", x: 35, y: 65, label: \"EN\" },\n ],\n outputPins: [{ id: \"out\", x: bubble ? 70 : 60, y: 30, bubble }],\n ansiPath: \"M 10,55 L 60,30 L 10,5 Z\",\n outputBubble: bubble,\n iecLabel: \"1\",\n };\n }\n case \"DFF\": {\n return {\n width: 60,\n height: 80,\n inputPins: [\n { id: \"D\", x: 0, y: 20, label: \"D\" },\n { id: \"CLK\", x: 0, y: 50, label: \"\" },\n ],\n outputPins: [\n { id: \"Q\", x: 60, y: 20, label: \"Q\" },\n { id: \"Qn\", x: 60, y: 60, label: \"Q̄\", bubble: true },\n ],\n ansiPath: \"M 0,0 H 60 V 80 H 0 Z\",\n clockPin: \"CLK\",\n iecLabel: \"DFF\",\n };\n }\n case \"JKFF\": {\n return {\n width: 60,\n height: 80,\n inputPins: [\n { id: \"J\", x: 0, y: 15, label: \"J\" },\n { id: \"CLK\", x: 0, y: 40 },\n { id: \"K\", x: 0, y: 65, label: \"K\" },\n ],\n outputPins: [\n { id: \"Q\", x: 60, y: 20, label: \"Q\" },\n { id: \"Qn\", x: 60, y: 60, label: \"Q̄\", bubble: true },\n ],\n ansiPath: \"M 0,0 H 60 V 80 H 0 Z\",\n clockPin: \"CLK\",\n iecLabel: \"JK\",\n };\n }\n case \"SRFF\":\n case \"LATCH_SR\": {\n return {\n width: 60,\n height: 80,\n inputPins: [\n { id: \"S\", x: 0, y: 20, label: \"S\" },\n { id: \"R\", x: 0, y: 60, label: \"R\" },\n ],\n outputPins: [\n { id: \"Q\", x: 60, y: 20, label: \"Q\" },\n { id: \"Qn\", x: 60, y: 60, label: \"Q̄\", bubble: true },\n ],\n ansiPath: \"M 0,0 H 60 V 80 H 0 Z\",\n iecLabel: \"SR\",\n };\n }\n case \"TFF\": {\n return {\n width: 60,\n height: 80,\n inputPins: [\n { id: \"T\", x: 0, y: 20, label: \"T\" },\n { id: \"CLK\", x: 0, y: 50 },\n ],\n outputPins: [\n { id: \"Q\", x: 60, y: 20, label: \"Q\" },\n { id: \"Qn\", x: 60, y: 60, label: \"Q̄\", bubble: true },\n ],\n ansiPath: \"M 0,0 H 60 V 80 H 0 Z\",\n clockPin: \"CLK\",\n iecLabel: \"T\",\n };\n }\n case \"LATCH_D\": {\n return {\n width: 60,\n height: 80,\n inputPins: [\n { id: \"D\", x: 0, y: 20, label: \"D\" },\n { id: \"E\", x: 0, y: 60, label: \"E\" },\n ],\n outputPins: [\n { id: \"Q\", x: 60, y: 20, label: \"Q\" },\n { id: \"Qn\", x: 60, y: 60, label: \"Q̄\", bubble: true },\n ],\n ansiPath: \"M 0,0 H 60 V 80 H 0 Z\",\n iecLabel: \"D\",\n };\n }\n default: {\n // Generic box for MUX/DEMUX/DECODER/ENCODER/COUNTER/SHIFT_REG\n const ins = Math.max(inputCount, 2);\n const inputPins = combPins(ins, 100, 0).map((p, i) => ({\n ...p,\n x: 0,\n label: `I${i}`,\n }));\n return {\n width: 100,\n height: 80,\n inputPins,\n outputPins: [{ id: \"out\", x: 100, y: 40 }],\n ansiPath: \"M 0,0 H 100 V 80 H 0 Z\",\n iecLabel: gateType,\n };\n }\n }\n}\n","import type { LogicGateAST } from \"../../core/types\";\nimport { getGateGeometry, type GateGeometry } from \"./symbols\";\n\nexport interface LogicLayoutNode {\n id: string;\n kind: \"input\" | \"gate\" | \"output\";\n x: number;\n y: number;\n layer: number;\n geometry?: GateGeometry;\n gateType?: string;\n label: string;\n isActiveLow?: boolean;\n}\n\nexport interface LogicLayoutWire {\n fromNode: string;\n fromX: number;\n fromY: number;\n toNode: string;\n toX: number;\n toY: number;\n isActiveLow?: boolean;\n path: string;\n}\n\nexport interface LogicLayoutModule {\n id: string;\n label: string;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface LogicLayoutResult {\n width: number;\n height: number;\n nodes: LogicLayoutNode[];\n wires: LogicLayoutWire[];\n modules: LogicLayoutModule[];\n}\n\nconst LAYER_GAP = 80; // extra horizontal gap between layers\nconst ROW_GAP = 40; // vertical gap between rows in same layer\nconst PORT_SIZE = 40; // input/output port pseudo-box width\nconst PORT_H = 30;\n\nexport function layoutLogic(ast: LogicGateAST): LogicLayoutResult {\n // Determine layer per signal id using longest-path layering\n const layerOf = new Map<string, number>();\n for (const inp of ast.inputs) layerOf.set(inp.id, 0);\n\n // Build dependency map for gates\n const pending = new Set(ast.gates.map((g) => g.id));\n let safety = 0;\n while (pending.size > 0 && safety++ < 1000) {\n for (const g of ast.gates) {\n if (!pending.has(g.id)) continue;\n let maxDep = -1;\n let ready = true;\n for (const inp of g.inputs) {\n const clean = inp.startsWith(\"~\") ? inp.slice(1) : inp;\n const l = layerOf.get(clean);\n if (l === undefined) {\n ready = false;\n break;\n }\n if (l > maxDep) maxDep = l;\n }\n if (ready) {\n layerOf.set(g.id, maxDep + 1);\n pending.delete(g.id);\n }\n }\n }\n if (pending.size > 0) {\n // cycle or unresolved: force layer 1\n for (const id of pending) layerOf.set(id, 1);\n }\n\n const outputLayer =\n Math.max(0, ...Array.from(layerOf.values())) + 1;\n // All outputs get a terminal label node. Use synthetic id to avoid colliding\n // with a gate that shares the output's name (e.g. `output Y; Y = AND(A,B)`).\n const outTermId = (o: { id: string }) => `$out$${o.id}`;\n const portOutputs = ast.outputs.map((o) => ({\n ...o,\n termId: outTermId(o),\n source: o.from,\n }));\n for (const o of portOutputs) layerOf.set(o.termId, outputLayer);\n\n // Group ids by layer\n const layers = new Map<number, string[]>();\n const addToLayer = (id: string, layer: number) => {\n if (!layers.has(layer)) layers.set(layer, []);\n layers.get(layer)!.push(id);\n };\n for (const i of ast.inputs) addToLayer(i.id, 0);\n for (const g of ast.gates) addToLayer(g.id, layerOf.get(g.id)!);\n for (const o of portOutputs) addToLayer(o.termId, outputLayer);\n\n // Compute sizes per node (precompute geometries for gates)\n const gateGeoms = new Map<string, GateGeometry>();\n for (const g of ast.gates) {\n gateGeoms.set(g.id, getGateGeometry(g.gateType, g.inputs.length));\n }\n\n // Assign coordinates\n const nodes: LogicLayoutNode[] = [];\n const sortedLayers = Array.from(layers.keys()).sort((a, b) => a - b);\n\n // compute each layer's widest node\n const layerWidth = new Map<number, number>();\n for (const [layerIdx, ids] of layers) {\n let maxW = 60;\n for (const id of ids) {\n const g = gateGeoms.get(id);\n if (g && g.width > maxW) maxW = g.width;\n if (!g && layerIdx === 0) maxW = Math.max(maxW, PORT_SIZE);\n if (!g && layerIdx === outputLayer) maxW = Math.max(maxW, PORT_SIZE);\n }\n layerWidth.set(layerIdx, maxW);\n }\n\n let cursorX = 20;\n const layerStartMap = new Map<number, number>();\n for (const layerIdx of sortedLayers) {\n layerStartMap.set(layerIdx, cursorX);\n cursorX += (layerWidth.get(layerIdx) ?? 60) + LAYER_GAP;\n }\n const totalW = cursorX;\n\n // Compute vertical placement per layer\n const heightOf = (id: string): number => {\n const g = gateGeoms.get(id);\n if (g) return g.height;\n return PORT_H;\n };\n\n // find max column height\n let maxColH = 0;\n for (const ids of layers.values()) {\n const total = ids.reduce((s, id) => s + heightOf(id), 0) + (ids.length - 1) * ROW_GAP;\n if (total > maxColH) maxColH = total;\n }\n const totalH = maxColH + 80;\n\n const nodeInfo = new Map<string, LogicLayoutNode>();\n for (const [layerIdx, ids] of layers) {\n const xStart = layerStartMap.get(layerIdx)!;\n const total = ids.reduce((s, id) => s + heightOf(id), 0) + (ids.length - 1) * ROW_GAP;\n let y = 40 + (maxColH - total) / 2;\n for (const id of ids) {\n const h = heightOf(id);\n const g = gateGeoms.get(id);\n let node: LogicLayoutNode;\n if (layerIdx === 0) {\n const inp = ast.inputs.find((i) => i.id === id)!;\n node = {\n id,\n kind: \"input\",\n x: xStart,\n y,\n layer: 0,\n label: inp.label,\n isActiveLow: inp.isActiveLow,\n };\n } else if (layerIdx === outputLayer && !g && id.startsWith(\"$out$\")) {\n const out = portOutputs.find((o) => o.termId === id)!;\n node = {\n id,\n kind: \"output\",\n x: xStart,\n y,\n layer: outputLayer,\n label: out.label,\n isActiveLow: out.isActiveLow,\n };\n } else {\n node = {\n id,\n kind: \"gate\",\n x: xStart,\n y,\n layer: layerIdx,\n geometry: g,\n gateType: ast.gates.find((gg) => gg.id === id)!.gateType,\n label: id,\n };\n }\n nodes.push(node);\n nodeInfo.set(id, node);\n y += h + ROW_GAP;\n }\n }\n\n // Wires\n const wires: LogicLayoutWire[] = [];\n const getSourcePoint = (id: string) => {\n const n = nodeInfo.get(id);\n if (!n) return null;\n if (n.kind === \"input\") return { x: n.x + PORT_SIZE, y: n.y + PORT_H / 2 };\n if (n.kind === \"gate\" && n.geometry) {\n const out = n.geometry.outputPins[0];\n return { x: n.x + out.x, y: n.y + out.y };\n }\n return null;\n };\n\n for (const g of ast.gates) {\n const target = nodeInfo.get(g.id);\n if (!target || !target.geometry) continue;\n g.inputs.forEach((rawInp, idx) => {\n const isLow = rawInp.startsWith(\"~\");\n const srcId = isLow ? rawInp.slice(1) : rawInp;\n const src = getSourcePoint(srcId);\n if (!src) return;\n const pin = target.geometry!.inputPins[idx];\n if (!pin) return;\n const toX = target.x + pin.x;\n const toY = target.y + pin.y;\n const midX = (src.x + toX) / 2;\n const path = `M ${src.x},${src.y} L ${midX},${src.y} L ${midX},${toY} L ${toX},${toY}`;\n wires.push({\n fromNode: srcId,\n fromX: src.x,\n fromY: src.y,\n toNode: g.id,\n toX,\n toY,\n isActiveLow: isLow,\n path,\n });\n });\n }\n\n // Output port wires\n for (const o of portOutputs) {\n const src = getSourcePoint(o.source);\n const target = nodeInfo.get(o.termId);\n if (!src || !target || target.kind !== \"output\") continue;\n const toX = target.x;\n const toY = target.y + PORT_H / 2;\n let path: string;\n if (Math.abs(src.y - toY) < 0.5) {\n path = `M ${src.x},${src.y} L ${toX},${toY}`;\n } else {\n const midX = (src.x + toX) / 2;\n path = `M ${src.x},${src.y} L ${midX},${src.y} L ${midX},${toY} L ${toX},${toY}`;\n }\n wires.push({\n fromNode: o.source,\n fromX: src.x,\n fromY: src.y,\n toNode: o.termId,\n toX,\n toY,\n path,\n });\n }\n\n // Module bounding boxes (dashed enclosure for sub-circuits)\n const modules: LogicLayoutModule[] = [];\n if (ast.modules && ast.modules.length > 0) {\n const PAD = 14;\n for (const mod of ast.modules) {\n const memberIds = new Set(\n ast.gates.filter((g) => g.moduleId === mod.id).map((g) => g.id)\n );\n if (memberIds.size === 0) continue;\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n for (const n of nodes) {\n if (!memberIds.has(n.id)) continue;\n const w = n.geometry?.width ?? 60;\n const h = n.geometry?.height ?? 60;\n if (n.x < minX) minX = n.x;\n if (n.y < minY) minY = n.y;\n if (n.x + w > maxX) maxX = n.x + w;\n if (n.y + h > maxY) maxY = n.y + h;\n }\n if (!isFinite(minX)) continue;\n modules.push({\n id: mod.id,\n label: mod.label,\n x: minX - PAD,\n y: minY - PAD - 4,\n width: maxX - minX + PAD * 2,\n height: maxY - minY + PAD * 2 + 4,\n });\n }\n }\n\n return { width: totalW, height: totalH, nodes, wires, modules };\n}\n","import type { LogicGateAST, LogicGateStyle, RenderConfig } from \"../../core/types\";\nimport { layoutLogic } from \"./layout\";\nimport {\n svgRoot,\n defs,\n group,\n el,\n circle,\n path as pathEl,\n text,\n title as titleEl,\n desc,\n polygon,\n} from \"../../core/svg\";\nimport { resolveIndustrialTheme } from \"../../core/theme\";\n\nconst PORT_SIZE = 40;\nconst PORT_H = 30;\n\nfunction renderGateBody(\n n: ReturnType<typeof layoutLogic>[\"nodes\"][number],\n style: LogicGateStyle\n): string[] {\n const out: string[] = [];\n if (!n.geometry) return out;\n const g = n.geometry;\n\n if (style === \"iec\") {\n // Rectangle\n out.push(\n el(\"rect\", {\n x: 0,\n y: 0,\n width: g.width,\n height: g.height,\n class: \"schematex-logic-gate-body\",\n })\n );\n if (g.iecLabel) {\n out.push(\n text(\n {\n x: g.width / 2,\n y: g.height / 2 + 4,\n class: \"schematex-logic-gate-iec-label\",\n \"text-anchor\": \"middle\",\n },\n g.iecLabel\n )\n );\n }\n } else {\n out.push(\n el(\"path\", { d: g.ansiPath, class: \"schematex-logic-gate-body\" })\n );\n }\n\n // Output bubble\n if (g.outputBubble) {\n const op = g.outputPins[0];\n out.push(\n circle({\n cx: op.x - 4,\n cy: op.y,\n r: 4,\n class: \"schematex-logic-bubble\",\n })\n );\n }\n\n // Clock triangle\n if (g.clockPin) {\n const cp = g.inputPins.find((p) => p.id === g.clockPin);\n if (cp) {\n out.push(\n polygon({\n points: `${cp.x},${cp.y - 5} ${cp.x + 8},${cp.y} ${cp.x},${cp.y + 5}`,\n class: \"schematex-logic-clock-tri\",\n })\n );\n }\n }\n\n // Qn bubble (sequential)\n for (const op of g.outputPins) {\n if (op.bubble && op.id !== \"out\") {\n out.push(\n circle({\n cx: op.x + 4,\n cy: op.y,\n r: 4,\n class: \"schematex-logic-bubble\",\n })\n );\n }\n }\n\n // Pin labels\n for (const pin of g.inputPins) {\n if (pin.label && pin.id !== g.clockPin) {\n out.push(\n text(\n {\n x: pin.x + 5,\n y: pin.y + 3,\n class: \"schematex-logic-pin-label\",\n },\n pin.label\n )\n );\n }\n }\n for (const pin of g.outputPins) {\n if (pin.label) {\n out.push(\n text(\n {\n x: pin.x - 6,\n y: pin.y + 3,\n class: \"schematex-logic-pin-label\",\n \"text-anchor\": \"end\",\n },\n pin.label\n )\n );\n }\n }\n\n // Gate type label (center top, small)\n if (style === \"ansi\" && g.iecLabel && g.height >= 60) {\n const labelX = g.width / 2;\n const labelY = g.height + 14;\n out.push(\n text(\n {\n x: labelX,\n y: labelY,\n class: \"schematex-logic-gate-type\",\n \"text-anchor\": \"middle\",\n },\n n.gateType ?? \"\"\n )\n );\n }\n\n return out;\n}\n\nexport function renderLogic(ast: LogicGateAST, config?: RenderConfig): string {\n const style: LogicGateStyle = ast.style ?? \"ansi\";\n const layout = layoutLogic(ast);\n const { width, height } = layout;\n const t = resolveIndustrialTheme(config?.theme ?? \"default\");\n\n const gateSvgs: string[] = [];\n const portSvgs: string[] = [];\n const moduleSvgs: string[] = [];\n\n for (const m of layout.modules) {\n moduleSvgs.push(\n group({ \"data-module-id\": m.id }, [\n el(\"rect\", {\n x: m.x,\n y: m.y,\n width: m.width,\n height: m.height,\n rx: 6,\n class: \"schematex-logic-module\",\n }),\n text(\n {\n x: m.x + 10,\n y: m.y + 14,\n class: \"schematex-logic-module-label\",\n },\n m.label\n ),\n ])\n );\n }\n\n for (const n of layout.nodes) {\n if (n.kind === \"gate\") {\n gateSvgs.push(\n group(\n {\n transform: `translate(${n.x}, ${n.y})`,\n \"data-gate-id\": n.id,\n \"data-gate-type\": n.gateType ?? \"\",\n },\n renderGateBody(n, style)\n )\n );\n } else if (n.kind === \"input\") {\n // Label + short stub line; no rectangle.\n const cy = PORT_H / 2;\n portSvgs.push(\n group({ transform: `translate(${n.x}, ${n.y})`, \"data-port\": \"input\" }, [\n text(\n {\n x: 0,\n y: cy + 4,\n \"text-anchor\": \"start\",\n class: \"schematex-logic-port-label\",\n },\n n.label\n ),\n el(\"line\", {\n x1: PORT_SIZE - 12,\n y1: cy,\n x2: n.isActiveLow ? PORT_SIZE - 8 : PORT_SIZE,\n y2: cy,\n class: \"schematex-logic-wire\",\n }),\n n.isActiveLow\n ? circle({\n cx: PORT_SIZE - 4,\n cy,\n r: 4,\n class: \"schematex-logic-bubble\",\n })\n : \"\",\n ])\n );\n } else if (n.kind === \"output\") {\n const cy = PORT_H / 2;\n portSvgs.push(\n group({ transform: `translate(${n.x}, ${n.y})`, \"data-port\": \"output\" }, [\n el(\"line\", {\n x1: 0,\n y1: cy,\n x2: 12,\n y2: cy,\n class: \"schematex-logic-wire\",\n }),\n text(\n {\n x: 16,\n y: cy + 4,\n \"text-anchor\": \"start\",\n class: \"schematex-logic-port-label\",\n },\n n.label\n ),\n ])\n );\n }\n }\n\n const wireSvgs = layout.wires.map((w) => {\n const extras: string[] = [];\n if (w.isActiveLow) {\n extras.push(\n circle({\n cx: w.toX - 4,\n cy: w.toY,\n r: 4,\n class: \"schematex-logic-bubble\",\n })\n );\n }\n return [\n pathEl({\n d: w.path,\n class: \"schematex-logic-wire\",\n \"data-from\": w.fromNode,\n \"data-to\": w.toNode,\n }),\n ...extras,\n ].join(\"\");\n });\n\n const css = `\n.schematex-logic { font-family: system-ui, -apple-system, sans-serif; }\n.schematex-logic-gate-body { fill: none; stroke: ${t.strokeHeavy}; stroke-width: 1.75; stroke-linejoin: round; }\n.schematex-logic-bubble { fill: ${t.bg}; stroke: ${t.strokeHeavy}; stroke-width: 1.5; }\n.schematex-logic-clock-tri { fill: none; stroke: ${t.strokeHeavy}; stroke-width: 1.5; stroke-linejoin: round; }\n.schematex-logic-wire { stroke: ${t.strokeHeavy}; stroke-width: 1.5; fill: none; stroke-linecap: square; }\n.schematex-logic-port-label { font: 13px system-ui, sans-serif; fill: ${t.text}; }\n.schematex-logic-pin-label { font: 9px sans-serif; fill: ${t.stroke}; }\n.schematex-logic-gate-type { font: 10px sans-serif; fill: ${t.textMuted}; }\n.schematex-logic-gate-iec-label { font: bold 13px sans-serif; fill: ${t.text}; }\n.schematex-logic-title { font: bold 14px sans-serif; fill: ${t.text}; }\n.schematex-logic-module { fill: none; stroke: ${t.textMuted}; stroke-width: 1.25; stroke-dasharray: 6 4; }\n.schematex-logic-module-label { font: 11px sans-serif; fill: ${t.textMuted}; font-style: italic; }\n`.trim();\n\n const titleSvg = ast.title\n ? text(\n {\n x: width / 2,\n y: 18,\n \"text-anchor\": \"middle\",\n class: \"schematex-logic-title\",\n },\n ast.title\n )\n : \"\";\n\n return svgRoot(\n {\n class: \"schematex-logic\",\n viewBox: `0 0 ${width} ${height + (ast.title ? 20 : 0)}`,\n width,\n height: height + (ast.title ? 20 : 0),\n role: \"img\",\n \"data-diagram-type\": \"logic\",\n },\n [\n titleEl(ast.title ?? \"Logic Gate Diagram\"),\n desc(\n `Logic gate diagram with ${ast.gates.length} gates, ${ast.inputs.length} inputs, ${ast.outputs.length} outputs`\n ),\n defs([el(\"style\", {}, css)]),\n group(\n { transform: `translate(0, ${ast.title ? 20 : 0})` },\n [\n group({ class: \"schematex-logic-modules\" }, moduleSvgs),\n group({ class: \"schematex-logic-wires\" }, wireSvgs),\n group({ class: \"schematex-logic-gates\" }, gateSvgs),\n group({ class: \"schematex-logic-ports\" }, portSvgs),\n ]\n ),\n titleSvg,\n ]\n );\n}\n","import type { DiagramPlugin } from \"../../core/types\";\nimport { parseLogic } from \"./parser\";\nimport { renderLogic } from \"./renderer\";\n\nexport const logic: DiagramPlugin = {\n type: \"logic\",\n detect(text: string): boolean {\n const first = text.trim().split(\"\\n\")[0]?.trim().toLowerCase() ?? \"\";\n return first.startsWith(\"logic\");\n },\n parse: parseLogic,\n\n render(text: string, config): string {\n const ast = parseLogic(text);\n return renderLogic(ast, config);\n },\n};\n\nexport { parseLogic } from \"./parser\";\nexport { renderLogic } from \"./renderer\";\nexport { layoutLogic } from \"./layout\";\n"]}
|