schematex 0.5.2 → 0.6.0
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/README.md +75 -1
- package/dist/ai/ai-sdk.cjs +22 -22
- package/dist/ai/ai-sdk.d.cts +3 -3
- package/dist/ai/ai-sdk.d.ts +3 -3
- package/dist/ai/ai-sdk.js +17 -17
- package/dist/ai/index.cjs +34 -26
- package/dist/ai/index.d.cts +4 -4
- package/dist/ai/index.d.ts +4 -4
- package/dist/ai/index.js +17 -17
- package/dist/{api-Cr_MxttI.d.ts → api-XWHHAhQI.d.ts} +3 -40
- package/dist/{api-C5SECOxZ.d.cts → api-qVDutqXH.d.cts} +3 -40
- package/dist/browser.cjs +23 -23
- package/dist/browser.d.cts +3 -3
- package/dist/browser.d.ts +3 -3
- package/dist/browser.js +17 -17
- package/dist/{chunk-4QPDZJAL.cjs → chunk-25ZON47K.cjs} +11484 -9030
- package/dist/chunk-25ZON47K.cjs.map +1 -0
- package/dist/{chunk-N7W5KZK7.cjs → chunk-2L4YXZAZ.cjs} +4 -4
- package/dist/{chunk-N7W5KZK7.cjs.map → chunk-2L4YXZAZ.cjs.map} +1 -1
- package/dist/{chunk-ZYRCPSBU.js → chunk-3IE7KZY4.js} +4 -4
- package/dist/{chunk-ZYRCPSBU.js.map → chunk-3IE7KZY4.js.map} +1 -1
- package/dist/{chunk-ZX74KJPM.js → chunk-3VB5AT4R.js} +3 -3
- package/dist/{chunk-ZX74KJPM.js.map → chunk-3VB5AT4R.js.map} +1 -1
- package/dist/{chunk-S2KJRHDZ.cjs → chunk-4UFR2LB6.cjs} +13 -13
- package/dist/{chunk-S2KJRHDZ.cjs.map → chunk-4UFR2LB6.cjs.map} +1 -1
- package/dist/{chunk-QTNPMIO2.cjs → chunk-6JI6FWLZ.cjs} +341 -35
- package/dist/chunk-6JI6FWLZ.cjs.map +1 -0
- package/dist/{chunk-OK5ZS3LU.js → chunk-7AFW2J6J.js} +11445 -8998
- package/dist/chunk-7AFW2J6J.js.map +1 -0
- package/dist/{chunk-UFTYX73U.js → chunk-7F76AWOI.js} +339 -35
- package/dist/chunk-7F76AWOI.js.map +1 -0
- package/dist/{chunk-BW4KGTV7.cjs → chunk-C5C5EF3W.cjs} +4 -4
- package/dist/{chunk-BW4KGTV7.cjs.map → chunk-C5C5EF3W.cjs.map} +1 -1
- package/dist/{chunk-VJGMEGMR.js → chunk-DOK7LKLO.js} +125 -13
- package/dist/chunk-DOK7LKLO.js.map +1 -0
- package/dist/{chunk-3M6WB62Y.cjs → chunk-ECD5XHBM.cjs} +139 -7
- package/dist/chunk-ECD5XHBM.cjs.map +1 -0
- package/dist/{chunk-L3CTXXVZ.js → chunk-FBS3PACU.js} +3 -3
- package/dist/{chunk-L3CTXXVZ.js.map → chunk-FBS3PACU.js.map} +1 -1
- package/dist/{chunk-QUKVGHN4.cjs → chunk-FKJBXGWP.cjs} +4 -4
- package/dist/{chunk-QUKVGHN4.cjs.map → chunk-FKJBXGWP.cjs.map} +1 -1
- package/dist/{chunk-SZK376QB.js → chunk-H4MT5TJP.js} +3 -3
- package/dist/{chunk-SZK376QB.js.map → chunk-H4MT5TJP.js.map} +1 -1
- package/dist/{chunk-3M6T7KB4.js → chunk-HAZALB7U.js} +3 -3
- package/dist/{chunk-3M6T7KB4.js.map → chunk-HAZALB7U.js.map} +1 -1
- package/dist/{chunk-VFZOPRQP.cjs → chunk-HWVBHU3O.cjs} +5 -5
- package/dist/{chunk-VFZOPRQP.cjs.map → chunk-HWVBHU3O.cjs.map} +1 -1
- package/dist/{chunk-D7EHZFK4.cjs → chunk-L7POWM5B.cjs} +138 -2
- package/dist/chunk-L7POWM5B.cjs.map +1 -0
- package/dist/{chunk-6OSUNBZY.js → chunk-LGABFD3L.js} +135 -7
- package/dist/chunk-LGABFD3L.js.map +1 -0
- package/dist/{chunk-2VNMKOUO.js → chunk-LRI4RH2N.js} +135 -3
- package/dist/chunk-LRI4RH2N.js.map +1 -0
- package/dist/{chunk-VDSYMSUY.js → chunk-MVIEIKOI.js} +3 -3
- package/dist/{chunk-VDSYMSUY.js.map → chunk-MVIEIKOI.js.map} +1 -1
- package/dist/{chunk-ZL5RB4UV.js → chunk-N5B242WY.js} +3 -3
- package/dist/{chunk-ZL5RB4UV.js.map → chunk-N5B242WY.js.map} +1 -1
- package/dist/{chunk-VKPCR7BG.js → chunk-P63S7P6N.js} +770 -12
- package/dist/chunk-P63S7P6N.js.map +1 -0
- package/dist/{chunk-YLEVMOK2.cjs → chunk-R66QG3XT.cjs} +5 -4
- package/dist/{chunk-YLEVMOK2.cjs.map → chunk-R66QG3XT.cjs.map} +1 -1
- package/dist/{chunk-I55HO32M.js → chunk-RJMCWT7Z.js} +3 -3
- package/dist/{chunk-I55HO32M.js.map → chunk-RJMCWT7Z.js.map} +1 -1
- package/dist/{chunk-TZTCIAYW.cjs → chunk-S3RMAXH5.cjs} +137 -25
- package/dist/chunk-S3RMAXH5.cjs.map +1 -0
- package/dist/{chunk-IBRW3UOA.js → chunk-TWLKXV2O.js} +3 -3
- package/dist/{chunk-IBRW3UOA.js.map → chunk-TWLKXV2O.js.map} +1 -1
- package/dist/{chunk-VCH7RI5H.js → chunk-UWA5MWCI.js} +4 -4
- package/dist/chunk-UWA5MWCI.js.map +1 -0
- package/dist/{chunk-RYVV5UVI.cjs → chunk-V4GILQR6.cjs} +4 -4
- package/dist/{chunk-RYVV5UVI.cjs.map → chunk-V4GILQR6.cjs.map} +1 -1
- package/dist/{chunk-QMTWG6JL.cjs → chunk-V4RO5KYY.cjs} +6 -4
- package/dist/chunk-V4RO5KYY.cjs.map +1 -0
- package/dist/{chunk-VZ5LDNHK.cjs → chunk-VTSH4YPT.cjs} +12 -12
- package/dist/{chunk-VZ5LDNHK.cjs.map → chunk-VTSH4YPT.cjs.map} +1 -1
- package/dist/{chunk-UUBNQV2T.cjs → chunk-WQDIZH2Z.cjs} +12 -12
- package/dist/{chunk-UUBNQV2T.cjs.map → chunk-WQDIZH2Z.cjs.map} +1 -1
- package/dist/{chunk-EGSUMHCS.cjs → chunk-YB4XJY5L.cjs} +12 -12
- package/dist/{chunk-EGSUMHCS.cjs.map → chunk-YB4XJY5L.cjs.map} +1 -1
- package/dist/{chunk-JHDR56XO.js → chunk-YS6CGUNH.js} +3 -3
- package/dist/{chunk-JHDR56XO.js.map → chunk-YS6CGUNH.js.map} +1 -1
- package/dist/{chunk-HK56GQQP.cjs → chunk-YVDUEUFV.cjs} +773 -13
- package/dist/chunk-YVDUEUFV.cjs.map +1 -0
- package/dist/{types-WTr9W5Ud.d.ts → diagnostics-DRxhodP6.d.cts} +74 -2
- package/dist/{types-WTr9W5Ud.d.cts → diagnostics-DRxhodP6.d.ts} +74 -2
- package/dist/diagrams/blockdiagram/index.d.cts +1 -1
- package/dist/diagrams/blockdiagram/index.d.ts +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 +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 +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 +14 -6
- package/dist/diagrams/sld/index.d.cts +14 -2
- package/dist/diagrams/sld/index.d.ts +14 -2
- package/dist/diagrams/sld/index.js +2 -2
- 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.d.cts +1 -1
- package/dist/diagrams/timing/index.d.ts +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-C30zQWZI.d.ts → index-BRIkOPnd.d.cts} +60 -2
- package/dist/{index-BD2yDfQM.d.cts → index-C7SN-FB3.d.ts} +60 -2
- package/dist/index.cjs +342 -54
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +38 -4
- package/dist/index.d.ts +38 -4
- package/dist/index.js +283 -16
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +17 -17
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +16 -16
- package/dist/{tools-BHWaJPOl.d.ts → tools-BVeUNdsU.d.ts} +12 -4
- package/dist/{tools-DlpuE76u.d.cts → tools-DdhP1kWY.d.cts} +12 -4
- package/package.json +1 -1
- package/dist/chunk-2VNMKOUO.js.map +0 -1
- package/dist/chunk-3M6WB62Y.cjs.map +0 -1
- package/dist/chunk-4QPDZJAL.cjs.map +0 -1
- package/dist/chunk-6OSUNBZY.js.map +0 -1
- package/dist/chunk-D7EHZFK4.cjs.map +0 -1
- package/dist/chunk-HK56GQQP.cjs.map +0 -1
- package/dist/chunk-OK5ZS3LU.js.map +0 -1
- package/dist/chunk-QMTWG6JL.cjs.map +0 -1
- package/dist/chunk-QTNPMIO2.cjs.map +0 -1
- package/dist/chunk-TZTCIAYW.cjs.map +0 -1
- package/dist/chunk-UFTYX73U.js.map +0 -1
- package/dist/chunk-VCH7RI5H.js.map +0 -1
- package/dist/chunk-VJGMEGMR.js.map +0 -1
- package/dist/chunk-VKPCR7BG.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/theme.ts"],"names":[],"mappings":"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","file":"chunk-L7POWM5B.cjs","sourcesContent":["/**\n * Shared design-token system for all Schematex diagram renderers.\n *\n * Two-layer architecture:\n * 1. BaseTheme — universal tokens every diagram uses\n * 2. Semantic extensions — diagram-family tokens (PersonTokens, BiologyTokens, …)\n *\n * Three built-in presets: default, monochrome, dark.\n * All tokens are also exposed as CSS custom properties (--schematex-*)\n * so consumers can override them.\n */\n\n// ─── Theme Name ────────────────────────────────────────────\n\nexport type ThemeName = \"default\" | \"monochrome\" | \"dark\";\n\n// ─── Base Theme ────────────────────────────────────────────\n\nexport interface BaseTheme {\n bg: string;\n text: string;\n textMuted: string;\n stroke: string;\n fill: string;\n fillMuted: string;\n /** Emphasis / interactive / link color. Use for net labels, focus, selected. */\n accent: string;\n positive: string;\n negative: string;\n /** Mid-gray. Use for muted strokes, neutral-valence edges, dashed separators. */\n neutral: string;\n warn: string;\n /** Category palette — 8 distinguishable colors for ecomap systems, sociogram groups, etc. */\n palette: readonly string[];\n}\n\n// ─── Diagram-Family Semantic Extensions ────────────────────\n\nexport interface PersonTokens {\n maleFill: string;\n femaleFill: string;\n unknownFill: string;\n deceasedMark: string;\n conditionFill: string;\n}\n\nexport interface BiologyTokens {\n cladeColors: readonly string[];\n supportGood: string;\n supportMedium: string;\n supportWarn: string;\n supportBad: string;\n}\n\n/**\n * Tokens for set-theory diagrams (Venn / Euler). Paletteof set fills is\n * tuned slightly softer than BaseTheme to blend nicely under\n * `mix-blend-mode: multiply`.\n */\nexport interface VennTokens {\n vennSetColors: readonly string[];\n vennBlendMode: \"multiply\" | \"screen\" | \"none\";\n vennSetOpacity: number;\n vennSetStroke: string;\n vennLabelColor: string;\n vennCountColor: string;\n vennLeaderColor: string;\n}\n\n/**\n * Tokens for industrial / compliance diagrams (circuit, ladder, SLD, logic gate).\n * These diagrams must stay monochrome under IEEE 315 / IEC 61131-3 standards, so\n * `default` and `monochrome` resolve to pure black-on-white. `dark` is the only\n * variant that shifts — it inverts luminance (light-on-dark) for dark-mode UI.\n * No colorful variant is exposed by design.\n */\nexport interface IndustrialTokens {\n bg: string;\n stroke: string;\n strokeHeavy: string;\n text: string;\n textMuted: string;\n /** Reserved accent for net/bus labels (not for body lines). */\n accent: string;\n /** Fault/missing-symbol indicator. */\n error: string;\n}\n\n/**\n * Tokens for flowchart semantic node classes. Kept separate from BaseTheme so\n * the class-fill palette can be themed without touching structural tokens.\n */\nexport interface FlowchartClassPair {\n fill: string;\n stroke: string;\n text: string;\n}\n\nexport interface FlowchartTokens {\n stadiumFill: string;\n diamondFill: string;\n roundFill: string;\n classes: {\n start: FlowchartClassPair;\n process: FlowchartClassPair;\n decision: FlowchartClassPair;\n success: FlowchartClassPair;\n danger: FlowchartClassPair;\n neutral: FlowchartClassPair;\n };\n}\n\n/**\n * Tokens for knowledge / brainstorming diagrams (mindmap).\n * Pure color tokens — stroke widths live in mindmap-internal constants.\n */\nexport interface MindmapTokens {\n centralFill: string;\n branchPalette: readonly string[];\n /** Inline `code` foreground/background. */\n codeFg: string;\n codeBg: string;\n /** Link color (with underline). */\n linkColor: string;\n /** Checkbox stroke color (unchecked state). */\n checkboxStroke: string;\n /** Checkbox fill when checked. */\n checkboxFill: string;\n}\n\n/**\n * Tokens for timeline diagrams. Palette-driven so categories/tracks share\n * colors with the rest of the diagram family (ecomap/sociogram/phylo).\n * Era bands and card surfaces use theme-neutral tints so no magic hex codes\n * leak into the renderer.\n */\nexport interface TimelineTokens {\n axis: string;\n axisLabel: string;\n eraLabel: string;\n eraOpacity: number;\n eraPlotOpacity: number;\n /** Alternating lane stripe fill. */\n laneStripe: string;\n laneStripeOpacity: number;\n /** Category / task bar palette. Cycled by `category` (fallback to trackIdx). */\n categoryPalette: readonly string[];\n /** Point/milestone ring — defaults to accent but configurable. */\n markerRing: string;\n markerFill: string;\n milestoneFill: string;\n /** Gantt vertical pin shaft. */\n pinShaft: string;\n /** Lollipop card. */\n cardBg: string;\n cardStroke: string;\n cardText: string;\n cardShadow: string;\n /** Gantt legend chip background. */\n legendBg: string;\n legendStroke: string;\n}\n\n// ─── Resolved Theme ────────────────────────────────────────\n\nexport type ResolvedTheme<T = object> = BaseTheme & T;\n\n// ─── Built-in Presets ──────────────────────────────────────\n\n/**\n * Unified 8-color category palettes. Single source of truth for every\n * diagram family — ecomap systems, sociogram groups, phylo clades, fishbone\n * bones, Venn sets all cycle through the same colors per theme.\n * Default uses Tailwind 600; dark uses Catppuccin Mocha; mono uses greys.\n */\nconst DEFAULT_PALETTE = [\n \"#2563eb\", // blue-600\n \"#059669\", // emerald-600\n \"#d97706\", // amber-600\n \"#7c3aed\", // violet-600\n \"#dc2626\", // red-600\n \"#0891b2\", // cyan-600\n \"#db2777\", // pink-600\n \"#475569\", // slate-600\n] as const;\n\nconst MONOCHROME_PALETTE = [\n \"#1f2937\",\n \"#374151\",\n \"#4b5563\",\n \"#6b7280\",\n \"#9ca3af\",\n \"#7a7a7a\",\n \"#525252\",\n \"#262626\",\n] as const;\n\nconst DARK_PALETTE = [\n \"#89b4fa\", // blue\n \"#a6e3a1\", // green\n \"#fab387\", // peach\n \"#cba6f7\", // mauve\n \"#f38ba8\", // red\n \"#94e2d5\", // teal\n \"#f5c2e7\", // pink\n \"#89dceb\", // sky\n] as const;\n\nconst DEFAULT_THEME: BaseTheme = {\n bg: \"#ffffff\",\n text: \"#0f172a\",\n textMuted: \"#475569\",\n stroke: \"#334155\",\n fill: \"#ffffff\",\n fillMuted: \"#f1f5f9\",\n accent: \"#2563eb\",\n positive: \"#059669\",\n negative: \"#dc2626\",\n neutral: \"#94a3b8\",\n warn: \"#d97706\",\n palette: DEFAULT_PALETTE,\n};\n\nconst MONOCHROME_THEME: BaseTheme = {\n bg: \"#ffffff\",\n text: \"#000000\",\n textMuted: \"#555555\",\n stroke: \"#000000\",\n fill: \"#ffffff\",\n fillMuted: \"#f0f0f0\",\n accent: \"#000000\",\n positive: \"#000000\",\n negative: \"#000000\",\n neutral: \"#888888\",\n warn: \"#000000\",\n palette: MONOCHROME_PALETTE,\n};\n\nconst DARK_THEME: BaseTheme = {\n bg: \"#1e1e2e\",\n text: \"#cdd6f4\",\n textMuted: \"#7f849c\",\n stroke: \"#cdd6f4\",\n fill: \"#313244\",\n fillMuted: \"#45475a\",\n accent: \"#89b4fa\",\n positive: \"#a6e3a1\",\n negative: \"#f38ba8\",\n neutral: \"#6c7086\",\n warn: \"#fab387\",\n palette: DARK_PALETTE,\n};\n\nexport const BASE_THEMES: Record<ThemeName, BaseTheme> = {\n default: DEFAULT_THEME,\n monochrome: MONOCHROME_THEME,\n dark: DARK_THEME,\n};\n\n// ─── Person Tokens Per Theme ───────────────────────────────\n\nconst DEFAULT_PERSON: PersonTokens = {\n maleFill: \"#dbeafe\",\n femaleFill: \"#fce7f3\",\n unknownFill: \"#f5f5f5\",\n deceasedMark: \"#b71c1c\",\n conditionFill: \"#1565c0\",\n};\n\nconst MONOCHROME_PERSON: PersonTokens = {\n maleFill: \"#ffffff\",\n femaleFill: \"#ffffff\",\n unknownFill: \"#ffffff\",\n deceasedMark: \"#000000\",\n conditionFill: \"#000000\",\n};\n\nconst DARK_PERSON: PersonTokens = {\n maleFill: \"#1e3a5f\",\n femaleFill: \"#3e1f3e\",\n unknownFill: \"#45475a\",\n deceasedMark: \"#f38ba8\",\n conditionFill: \"#89b4fa\",\n};\n\nexport const PERSON_TOKENS: Record<ThemeName, PersonTokens> = {\n default: DEFAULT_PERSON,\n monochrome: MONOCHROME_PERSON,\n dark: DARK_PERSON,\n};\n\n// ─── Biology Tokens Per Theme ──────────────────────────────\n\nconst DEFAULT_BIOLOGY: BiologyTokens = {\n cladeColors: DEFAULT_PALETTE,\n supportGood: \"#059669\",\n supportMedium: \"#ca8a04\",\n supportWarn: \"#d97706\",\n supportBad: \"#dc2626\",\n};\n\nconst MONOCHROME_BIOLOGY: BiologyTokens = {\n cladeColors: MONOCHROME_PALETTE,\n supportGood: \"#000000\",\n supportMedium: \"#555555\",\n supportWarn: \"#888888\",\n supportBad: \"#aaaaaa\",\n};\n\nconst DARK_BIOLOGY: BiologyTokens = {\n cladeColors: DARK_PALETTE,\n supportGood: \"#a6e3a1\",\n supportMedium: \"#f9e2af\",\n supportWarn: \"#fab387\",\n supportBad: \"#f38ba8\",\n};\n\nexport const BIOLOGY_TOKENS: Record<ThemeName, BiologyTokens> = {\n default: DEFAULT_BIOLOGY,\n monochrome: MONOCHROME_BIOLOGY,\n dark: DARK_BIOLOGY,\n};\n\n// ─── Venn Tokens Per Theme ─────────────────────────────────\n\nconst DEFAULT_VENN: VennTokens = {\n vennSetColors: DEFAULT_PALETTE,\n vennBlendMode: \"multiply\",\n vennSetOpacity: 0.38,\n vennSetStroke: \"#94a3b8\",\n vennLabelColor: \"#0f172a\",\n vennCountColor: \"#0f172a\",\n vennLeaderColor: \"#64748b\",\n};\n\nconst MONOCHROME_VENN: VennTokens = {\n vennSetColors: [\"#999999\", \"#999999\", \"#999999\", \"#999999\", \"#999999\", \"#999999\", \"#999999\", \"#999999\"],\n vennBlendMode: \"none\",\n vennSetOpacity: 0.22,\n vennSetStroke: \"#000000\",\n vennLabelColor: \"#000000\",\n vennCountColor: \"#000000\",\n vennLeaderColor: \"#444444\",\n};\n\nconst DARK_VENN: VennTokens = {\n vennSetColors: DARK_PALETTE,\n vennBlendMode: \"screen\",\n vennSetOpacity: 0.55,\n vennSetStroke: \"#585b70\",\n vennLabelColor: \"#cdd6f4\",\n vennCountColor: \"#f9e2af\",\n vennLeaderColor: \"#7f849c\",\n};\n\nexport const VENN_TOKENS: Record<ThemeName, VennTokens> = {\n default: DEFAULT_VENN,\n monochrome: MONOCHROME_VENN,\n dark: DARK_VENN,\n};\n\n// ─── Mindmap Tokens Per Theme ──────────────────────────────\n\n// Kept as its own struct so the mindmap palette can diverge from BaseTheme\n// later if we want (e.g., a softer / more organic set of branch colors).\n// Today the values mirror BaseTheme.palette so mindmap visually belongs with\n// the rest of the diagram family.\n\nconst DEFAULT_MINDMAP: MindmapTokens = {\n centralFill: \"#0f172a\",\n branchPalette: DEFAULT_PALETTE,\n codeFg: \"#be185d\",\n codeBg: \"#fdf2f8\",\n linkColor: \"#2563eb\",\n checkboxStroke: \"#64748b\",\n checkboxFill: \"#10b981\",\n};\n\nconst MONOCHROME_MINDMAP: MindmapTokens = {\n centralFill: \"#000000\",\n branchPalette: [\"#000000\"],\n codeFg: \"#000000\",\n codeBg: \"#e5e5e5\",\n linkColor: \"#000000\",\n checkboxStroke: \"#000000\",\n checkboxFill: \"#000000\",\n};\n\nconst DARK_MINDMAP: MindmapTokens = {\n centralFill: \"#cdd6f4\",\n branchPalette: DARK_PALETTE,\n codeFg: \"#f5c2e7\",\n codeBg: \"#313244\",\n linkColor: \"#89b4fa\",\n checkboxStroke: \"#a6adc8\",\n checkboxFill: \"#a6e3a1\",\n};\n\nexport const MINDMAP_TOKENS: Record<ThemeName, MindmapTokens> = {\n default: DEFAULT_MINDMAP,\n monochrome: MONOCHROME_MINDMAP,\n dark: DARK_MINDMAP,\n};\n\n// ─── Industrial Tokens Per Theme ───────────────────────────\n\nconst DEFAULT_INDUSTRIAL: IndustrialTokens = {\n bg: \"#ffffff\",\n stroke: \"#222222\",\n strokeHeavy: \"#111111\",\n text: \"#111111\",\n textMuted: \"#555555\",\n accent: \"#1d4e89\",\n error: \"#cc0000\",\n};\n\nconst MONOCHROME_INDUSTRIAL: IndustrialTokens = {\n bg: \"#ffffff\",\n stroke: \"#000000\",\n strokeHeavy: \"#000000\",\n text: \"#000000\",\n textMuted: \"#333333\",\n accent: \"#000000\",\n error: \"#000000\",\n};\n\n// Dark = inverted luminance only. No colorful semantics — still compliance-grade.\nconst DARK_INDUSTRIAL: IndustrialTokens = {\n bg: \"#1e1e2e\",\n stroke: \"#cdd6f4\",\n strokeHeavy: \"#ffffff\",\n text: \"#cdd6f4\",\n textMuted: \"#9399b2\",\n accent: \"#89b4fa\",\n error: \"#f38ba8\",\n};\n\nexport const INDUSTRIAL_TOKENS: Record<ThemeName, IndustrialTokens> = {\n default: DEFAULT_INDUSTRIAL,\n monochrome: MONOCHROME_INDUSTRIAL,\n dark: DARK_INDUSTRIAL,\n};\n\nexport function resolveIndustrialTheme(name: string): ResolvedTheme<IndustrialTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...INDUSTRIAL_TOKENS[themeName] };\n}\n\n// ─── Flowchart Tokens Per Theme ────────────────────────────\n\nconst DEFAULT_FLOWCHART: FlowchartTokens = {\n stadiumFill: \"#dbeafe\",\n diamondFill: \"#fef3c7\",\n roundFill: \"#dcfce7\",\n classes: {\n start: { fill: \"#f0ece0\", stroke: \"#9a8b6a\", text: \"#5c4e2e\" },\n process: { fill: \"#e8e4ff\", stroke: \"#8b7dd8\", text: \"#4c3a8f\" },\n decision: { fill: \"#fde8c8\", stroke: \"#d4985c\", text: \"#8a5a1f\" },\n success: { fill: \"#d4f0e0\", stroke: \"#7bc19a\", text: \"#1e5a3a\" },\n danger: { fill: \"#fbe0dc\", stroke: \"#d89181\", text: \"#8a3525\" },\n neutral: { fill: \"#ececec\", stroke: \"#a0a0a0\", text: \"#555555\" },\n },\n};\n\nconst MONOCHROME_FLOWCHART: FlowchartTokens = {\n stadiumFill: \"#ffffff\",\n diamondFill: \"#ffffff\",\n roundFill: \"#ffffff\",\n classes: {\n start: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n process: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n decision: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n success: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n danger: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n neutral: { fill: \"#ffffff\", stroke: \"#000000\", text: \"#000000\" },\n },\n};\n\nconst DARK_FLOWCHART: FlowchartTokens = {\n stadiumFill: \"#1e3a5f\",\n diamondFill: \"#3a3a2a\",\n roundFill: \"#1f3a2a\",\n classes: {\n start: { fill: \"#3a3326\", stroke: \"#c9b88a\", text: \"#f5e7c7\" },\n process: { fill: \"#2e2a52\", stroke: \"#a89ee0\", text: \"#d9d2ff\" },\n decision: { fill: \"#3a2d1a\", stroke: \"#d4985c\", text: \"#f2d5a8\" },\n success: { fill: \"#1e3a2a\", stroke: \"#7bc19a\", text: \"#cdefd8\" },\n danger: { fill: \"#3a231f\", stroke: \"#d89181\", text: \"#f2d0c8\" },\n neutral: { fill: \"#313244\", stroke: \"#7f849c\", text: \"#cdd6f4\" },\n },\n};\n\nexport const FLOWCHART_TOKENS: Record<ThemeName, FlowchartTokens> = {\n default: DEFAULT_FLOWCHART,\n monochrome: MONOCHROME_FLOWCHART,\n dark: DARK_FLOWCHART,\n};\n\nexport function resolveFlowchartTheme(name: string): ResolvedTheme<FlowchartTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...FLOWCHART_TOKENS[themeName] };\n}\n\nexport function resolveMindmapTheme(name: string): ResolvedTheme<MindmapTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...MINDMAP_TOKENS[themeName] };\n}\n\n// ─── Timeline Tokens Per Theme ─────────────────────────────\n\nconst DEFAULT_TIMELINE: TimelineTokens = {\n axis: \"#334155\",\n axisLabel: \"#475569\",\n eraLabel: \"#0f172a\",\n eraOpacity: 0.55,\n eraPlotOpacity: 0.14,\n laneStripe: \"#f1f5f9\",\n laneStripeOpacity: 0.6,\n categoryPalette: DEFAULT_PALETTE,\n markerRing: \"#2563eb\",\n markerFill: \"#ffffff\",\n milestoneFill: \"#d97706\",\n pinShaft: \"#94a3b8\",\n cardBg: \"#ffffff\",\n cardStroke: \"#cbd5e1\",\n cardText: \"#0f172a\",\n cardShadow: \"rgba(15,23,42,0.08)\",\n legendBg: \"#f8fafc\",\n legendStroke: \"#e2e8f0\",\n};\n\nconst MONOCHROME_TIMELINE: TimelineTokens = {\n axis: \"#000000\",\n axisLabel: \"#333333\",\n eraLabel: \"#000000\",\n eraOpacity: 0.2,\n eraPlotOpacity: 0.08,\n laneStripe: \"#f0f0f0\",\n laneStripeOpacity: 0.6,\n categoryPalette: MONOCHROME_PALETTE,\n markerRing: \"#000000\",\n markerFill: \"#ffffff\",\n milestoneFill: \"#000000\",\n pinShaft: \"#888888\",\n cardBg: \"#ffffff\",\n cardStroke: \"#000000\",\n cardText: \"#000000\",\n cardShadow: \"rgba(0,0,0,0.06)\",\n legendBg: \"#ffffff\",\n legendStroke: \"#000000\",\n};\n\nconst DARK_TIMELINE: TimelineTokens = {\n axis: \"#cdd6f4\",\n axisLabel: \"#9399b2\",\n eraLabel: \"#cdd6f4\",\n eraOpacity: 0.5,\n eraPlotOpacity: 0.18,\n laneStripe: \"#313244\",\n laneStripeOpacity: 0.5,\n categoryPalette: DARK_PALETTE,\n markerRing: \"#89b4fa\",\n markerFill: \"#1e1e2e\",\n milestoneFill: \"#fab387\",\n pinShaft: \"#6c7086\",\n cardBg: \"#313244\",\n cardStroke: \"#45475a\",\n cardText: \"#cdd6f4\",\n cardShadow: \"rgba(0,0,0,0.35)\",\n legendBg: \"#181825\",\n legendStroke: \"#45475a\",\n};\n\nexport const TIMELINE_TOKENS: Record<ThemeName, TimelineTokens> = {\n default: DEFAULT_TIMELINE,\n monochrome: MONOCHROME_TIMELINE,\n dark: DARK_TIMELINE,\n};\n\nexport function resolveTimelineTheme(name: string): ResolvedTheme<TimelineTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...TIMELINE_TOKENS[themeName] };\n}\n\n// ─── Petri-net Tokens Per Theme ────────────────────────────\n\n/**\n * Tokens for Petri nets (place/transition nets). Petri net is a CS/maths\n * formalism, not an IEC/IEEE compliance drawing — so unlike IndustrialTokens it\n * gets a tasteful colour theme in `default`. The house rule (see\n * 34-PETRINET-STANDARD §6): body in neutral strokes; green (`positive`) reserved\n * for \"enabled\", red (`negative`) reserved for \"inhibitor / dead\", blue\n * (`accent`) only for weight/rate annotations. `monochrome` reproduces the\n * Murata-1989 textbook look faithfully — colour falls back to shape there.\n */\nexport interface PetriTokens {\n placeFill: string;\n placeStroke: string;\n /** Immediate transition: solid bar — the \"ink\" colour. */\n transitionBarFill: string;\n /** Timed transition: hollow box interior. */\n transitionBoxFill: string;\n transitionStroke: string;\n /** Marking dot colour. */\n tokenFill: string;\n /** Enabled (fireable) transition highlight. */\n enabledStroke: string;\n enabledFill: string;\n /** Dead / disabled transition. */\n deadStroke: string;\n /** Inhibitor + reset arcs. */\n inhibitorStroke: string;\n arcStroke: string;\n weightLabel: string;\n /** Coloured-token (CPN) palette. */\n tokenPalette: readonly string[];\n}\n\nconst DEFAULT_PETRI: PetriTokens = {\n placeFill: \"#ffffff\",\n placeStroke: \"#334155\",\n transitionBarFill: \"#334155\",\n transitionBoxFill: \"#ffffff\",\n transitionStroke: \"#334155\",\n tokenFill: \"#0f172a\",\n enabledStroke: \"#059669\",\n enabledFill: \"#ecfdf5\",\n deadStroke: \"#94a3b8\",\n inhibitorStroke: \"#dc2626\",\n arcStroke: \"#334155\",\n weightLabel: \"#2563eb\",\n tokenPalette: DEFAULT_PALETTE,\n};\n\n// Faithful Murata-1989 textbook: pure black/white. Enabled is shown by a bold\n// ring (not green); inhibitor by its hollow-circle head (not red).\nconst MONOCHROME_PETRI: PetriTokens = {\n placeFill: \"#ffffff\",\n placeStroke: \"#000000\",\n transitionBarFill: \"#000000\",\n transitionBoxFill: \"#ffffff\",\n transitionStroke: \"#000000\",\n tokenFill: \"#000000\",\n enabledStroke: \"#000000\",\n enabledFill: \"none\",\n deadStroke: \"#888888\",\n inhibitorStroke: \"#000000\",\n arcStroke: \"#000000\",\n weightLabel: \"#000000\",\n tokenPalette: MONOCHROME_PALETTE,\n};\n\nconst DARK_PETRI: PetriTokens = {\n placeFill: \"#313244\",\n placeStroke: \"#cdd6f4\",\n transitionBarFill: \"#cdd6f4\",\n transitionBoxFill: \"#313244\",\n transitionStroke: \"#cdd6f4\",\n tokenFill: \"#cdd6f4\",\n enabledStroke: \"#a6e3a1\",\n enabledFill: \"rgba(166,227,161,0.15)\",\n deadStroke: \"#6c7086\",\n inhibitorStroke: \"#f38ba8\",\n arcStroke: \"#cdd6f4\",\n weightLabel: \"#89b4fa\",\n tokenPalette: DARK_PALETTE,\n};\n\nexport const PETRI_TOKENS: Record<ThemeName, PetriTokens> = {\n default: DEFAULT_PETRI,\n monochrome: MONOCHROME_PETRI,\n dark: DARK_PETRI,\n};\n\nexport function resolvePetriTheme(name: string): ResolvedTheme<PetriTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...PETRI_TOKENS[themeName] };\n}\n\n// ─── Network Tokens Per Theme ──────────────────────────────\n// 35-NETWORK-STANDARD §6. Coloured-house family (not forced-mono industrial):\n// device bodies in \"network blue\", link type by colour in default / line-style\n// + tag in monochrome, logical overlays dashed-tinted.\n\nexport interface NetworkTokens {\n deviceFill: string;\n deviceStroke: string;\n deviceAccent: string;\n cloudFill: string;\n cloudStroke: string;\n label: string;\n subLabel: string;\n linkCopper: string;\n linkFiber: string;\n linkWireless: string;\n linkSerial: string;\n linkPoe: string;\n linkVpn: string;\n linkLag: string;\n linkLabel: string;\n siteStroke: string;\n subnetStroke: string;\n subnetFill: string;\n zoneStroke: string;\n vlanPalette: readonly string[];\n warn: string;\n}\n\nconst DEFAULT_NETWORK: NetworkTokens = {\n deviceFill: \"#1d6fb8\",\n deviceStroke: \"#0f3a5f\",\n deviceAccent: \"#bfe0f7\",\n cloudFill: \"#ffffff\",\n cloudStroke: \"#334155\",\n label: \"#0f172a\",\n subLabel: \"#64748b\",\n linkCopper: \"#334155\",\n linkFiber: \"#ea7a17\",\n linkWireless: \"#2563eb\",\n linkSerial: \"#7c3aed\",\n linkPoe: \"#059669\",\n linkVpn: \"#0891b2\",\n linkLag: \"#334155\",\n linkLabel: \"#475569\",\n siteStroke: \"#334155\",\n subnetStroke: \"#2563eb\",\n subnetFill: \"#eff6ff\",\n zoneStroke: \"#dc2626\",\n vlanPalette: DEFAULT_PALETTE,\n warn: \"#d97706\",\n};\n\n// Clean line-art for print/audit: meaning rides on line-style + text tag, not colour.\nconst MONOCHROME_NETWORK: NetworkTokens = {\n deviceFill: \"#ffffff\",\n deviceStroke: \"#000000\",\n deviceAccent: \"#000000\",\n cloudFill: \"#ffffff\",\n cloudStroke: \"#000000\",\n label: \"#000000\",\n subLabel: \"#444444\",\n linkCopper: \"#000000\",\n linkFiber: \"#000000\",\n linkWireless: \"#000000\",\n linkSerial: \"#000000\",\n linkPoe: \"#000000\",\n linkVpn: \"#000000\",\n linkLag: \"#000000\",\n linkLabel: \"#222222\",\n siteStroke: \"#000000\",\n subnetStroke: \"#000000\",\n subnetFill: \"none\",\n zoneStroke: \"#000000\",\n vlanPalette: MONOCHROME_PALETTE,\n warn: \"#000000\",\n};\n\nconst DARK_NETWORK: NetworkTokens = {\n deviceFill: \"#89b4fa\",\n deviceStroke: \"#1e1e2e\",\n deviceAccent: \"#1e1e2e\",\n cloudFill: \"#313244\",\n cloudStroke: \"#cdd6f4\",\n label: \"#cdd6f4\",\n subLabel: \"#a6adc8\",\n linkCopper: \"#cdd6f4\",\n linkFiber: \"#fab387\",\n linkWireless: \"#89b4fa\",\n linkSerial: \"#cba6f7\",\n linkPoe: \"#a6e3a1\",\n linkVpn: \"#94e2d5\",\n linkLag: \"#cdd6f4\",\n linkLabel: \"#a6adc8\",\n siteStroke: \"#cdd6f4\",\n subnetStroke: \"#89b4fa\",\n subnetFill: \"rgba(137,180,250,0.12)\",\n zoneStroke: \"#f38ba8\",\n vlanPalette: DARK_PALETTE,\n warn: \"#fab387\",\n};\n\nexport const NETWORK_TOKENS: Record<ThemeName, NetworkTokens> = {\n default: DEFAULT_NETWORK,\n monochrome: MONOCHROME_NETWORK,\n dark: DARK_NETWORK,\n};\n\nexport function resolveNetworkTheme(name: string): ResolvedTheme<NetworkTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...NETWORK_TOKENS[themeName] };\n}\n\n// ─── Theme Resolution ──────────────────────────────────────\n\nexport function resolveBaseTheme(name: string): BaseTheme {\n return BASE_THEMES[name as ThemeName] ?? BASE_THEMES[\"default\"];\n}\n\nexport function resolvePersonTheme(name: string): ResolvedTheme<PersonTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...PERSON_TOKENS[themeName] };\n}\n\nexport function resolveBiologyTheme(name: string): ResolvedTheme<BiologyTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...BIOLOGY_TOKENS[themeName] };\n}\n\n/**\n * Fishbone uses BaseTheme directly — its bone colors come from `theme.palette`.\n * Kept as a named resolver so callers don't have to know that.\n */\nexport function resolveFishboneTheme(name: string): BaseTheme {\n return resolveBaseTheme(name);\n}\n\nexport function resolveVennTheme(name: string): ResolvedTheme<VennTokens> {\n const themeName = (name in BASE_THEMES ? name : \"default\") as ThemeName;\n return { ...BASE_THEMES[themeName], ...VENN_TOKENS[themeName] };\n}\n\n// ─── Genogram Theme Aliases ────────────────────────────────\n\nconst GENOGRAM_ALIASES: Record<string, ThemeName> = {\n clinical: \"monochrome\",\n colorful: \"default\",\n mono: \"monochrome\",\n bw: \"monochrome\",\n};\n\nexport function resolveGenogramTheme(name: string): ResolvedTheme<PersonTokens> {\n const resolved = GENOGRAM_ALIASES[name] ?? name;\n return resolvePersonTheme(resolved);\n}\n\n// ─── Font Sizes ────────────────────────────────────────────\n\n/**\n * Three-tier typography scale. Diagram-specific font sizes (e.g., 14px section\n * labels, 20px hero titles) live as local constants inside their renderer.\n */\nexport const FONT_SIZE = {\n title: 16,\n label: 12,\n small: 9,\n} as const;\n\n// ─── Stroke Widths ─────────────────────────────────────────\n\n/**\n * Three-tier stroke scale. Anything in between is a local constant in the\n * diagram that needs it.\n * thin — hairlines, ticks, secondary gridlines\n * normal — default body strokes (shapes, edges)\n * thick — emphasis (proband index, star node, center shape)\n */\nexport const STROKE_WIDTH = {\n thin: 1,\n normal: 2,\n thick: 3,\n} as const;\n\n// ─── Spacing ───────────────────────────────────────────────\n\nexport const SPACING = {\n labelGap: 4,\n tipLabelGap: 6,\n titleOffset: 30,\n} as const;\n\n// ─── Font Family ───────────────────────────────────────────\n\nexport const DEFAULT_FONT_FAMILY = \"system-ui, -apple-system, sans-serif\";\n\n// ─── CSS Custom Properties ─────────────────────────────────\n\nexport function cssCustomProperties(theme?: BaseTheme): string {\n const t = theme ?? BASE_THEMES[\"default\"];\n return `\n --schematex-bg: ${t.bg};\n --schematex-text: ${t.text};\n --schematex-text-muted: ${t.textMuted};\n --schematex-stroke: ${t.stroke};\n --schematex-fill: ${t.fill};\n --schematex-fill-muted: ${t.fillMuted};\n --schematex-accent: ${t.accent};\n --schematex-positive: ${t.positive};\n --schematex-negative: ${t.negative};\n --schematex-neutral: ${t.neutral};\n --schematex-warn: ${t.warn};\n --schematex-font-title: ${FONT_SIZE.title}px;\n --schematex-font-label: ${FONT_SIZE.label}px;\n --schematex-font-small: ${FONT_SIZE.small}px;\n --schematex-stroke-thin: ${STROKE_WIDTH.thin};\n --schematex-stroke-normal: ${STROKE_WIDTH.normal};\n --schematex-stroke-thick: ${STROKE_WIDTH.thick};`;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { didYouMean } from './chunk-PIV2A3HG.js';
|
|
2
2
|
import { firstContentLine } from './chunk-2KTQ75LN.js';
|
|
3
|
-
import { resolveIndustrialTheme } from './chunk-
|
|
3
|
+
import { resolveIndustrialTheme } from './chunk-LRI4RH2N.js';
|
|
4
4
|
import { matchQuotedTitle } from './chunk-5IKOLUWK.js';
|
|
5
5
|
import { title, desc, el, defs, text, path, group, svgRoot, line } from './chunk-SYYBKDL7.js';
|
|
6
6
|
|
|
@@ -167,6 +167,7 @@ function parseSLDDSL(text2) {
|
|
|
167
167
|
const rawLines = text2.split("\n").map((l) => l.replace(/\r$/, ""));
|
|
168
168
|
const lines = joinBrackets(rawLines);
|
|
169
169
|
let title2;
|
|
170
|
+
let standard;
|
|
170
171
|
const nodes = [];
|
|
171
172
|
const nodeMap = /* @__PURE__ */ new Map();
|
|
172
173
|
const connections = [];
|
|
@@ -177,6 +178,23 @@ function parseSLDDSL(text2) {
|
|
|
177
178
|
if (/^sld\b/i.test(line2)) {
|
|
178
179
|
const t = matchQuotedTitle(line2);
|
|
179
180
|
if (t !== void 0) title2 = t;
|
|
181
|
+
const bracket = line2.match(/\[([^\]]*)\]/);
|
|
182
|
+
if (bracket) {
|
|
183
|
+
for (const [k, v] of splitAttrs(bracket[1])) {
|
|
184
|
+
if (k.toLowerCase() === "standard") {
|
|
185
|
+
const s = v.trim().toLowerCase();
|
|
186
|
+
if (s === "ansi" || s === "iec" || s === "abnt" || s === "as-nzs") {
|
|
187
|
+
standard = s;
|
|
188
|
+
} else {
|
|
189
|
+
throw new SLDParseError(
|
|
190
|
+
`Unknown standard "${v}". Valid: ansi, iec, abnt, as-nzs`,
|
|
191
|
+
i + 1,
|
|
192
|
+
line2
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
180
198
|
continue;
|
|
181
199
|
}
|
|
182
200
|
const connMatch = line2.match(
|
|
@@ -241,7 +259,12 @@ function parseSLDDSL(text2) {
|
|
|
241
259
|
if (nodes.length === 0) {
|
|
242
260
|
throw new SLDParseError("SLD diagram has no nodes");
|
|
243
261
|
}
|
|
244
|
-
return { type: "sld", title: title2, nodes, connections };
|
|
262
|
+
return { type: "sld", title: title2, standard, nodes, connections };
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// src/core/types.ts
|
|
266
|
+
function isIecFamily(standard) {
|
|
267
|
+
return standard === "iec" || standard === "abnt" || standard === "as-nzs";
|
|
245
268
|
}
|
|
246
269
|
|
|
247
270
|
// src/diagrams/sld/symbols.ts
|
|
@@ -642,7 +665,52 @@ function meterSymbol(label) {
|
|
|
642
665
|
lineEl(0, 12, 0, 14)
|
|
643
666
|
]);
|
|
644
667
|
}
|
|
645
|
-
function
|
|
668
|
+
function transformerSymbolIEC(type) {
|
|
669
|
+
const pieces = [
|
|
670
|
+
el("circle", { cx: 0, cy: -7, r: 11, class: "lt-sld-stroke" }),
|
|
671
|
+
el("circle", { cx: 0, cy: 7, r: 11, class: "lt-sld-stroke" }),
|
|
672
|
+
lineEl(0, -24, 0, -18),
|
|
673
|
+
lineEl(0, 18, 0, 24)
|
|
674
|
+
];
|
|
675
|
+
const { primary, secondary } = windingGlyphs(type);
|
|
676
|
+
if (primary) pieces.push(text({ x: 20, y: -10, class: "lt-sld-wdg", "text-anchor": "start" }, primary));
|
|
677
|
+
if (secondary) pieces.push(text({ x: 20, y: 14, class: "lt-sld-wdg", "text-anchor": "start" }, secondary));
|
|
678
|
+
return group({}, pieces);
|
|
679
|
+
}
|
|
680
|
+
function breakerSymbolIEC() {
|
|
681
|
+
return group({}, [
|
|
682
|
+
lineEl(0, -18, 0, -10),
|
|
683
|
+
lineEl(0, 10, 0, 18),
|
|
684
|
+
// open contact arm pivoting from the bottom terminal
|
|
685
|
+
line({ x1: -6, y1: 10, x2: 6, y2: -8, class: "lt-sld-stroke-thick" }),
|
|
686
|
+
// × at the fixed contact
|
|
687
|
+
line({ x1: -4, y1: -13, x2: 4, y2: -7, class: "lt-sld-stroke" }),
|
|
688
|
+
line({ x1: 4, y1: -13, x2: -4, y2: -7, class: "lt-sld-stroke" })
|
|
689
|
+
]);
|
|
690
|
+
}
|
|
691
|
+
function fuseSymbolIEC() {
|
|
692
|
+
return group({}, [
|
|
693
|
+
el("rect", { x: -5, y: -11, width: 10, height: 22, class: "lt-sld-fill" }),
|
|
694
|
+
lineEl(0, -11, 0, 11),
|
|
695
|
+
lineEl(0, -18, 0, -11),
|
|
696
|
+
lineEl(0, 11, 0, 18)
|
|
697
|
+
]);
|
|
698
|
+
}
|
|
699
|
+
function renderSymbol(type, detail, standard) {
|
|
700
|
+
if (isIecFamily(standard)) {
|
|
701
|
+
switch (type) {
|
|
702
|
+
case "transformer":
|
|
703
|
+
case "transformer_dy":
|
|
704
|
+
case "transformer_yd":
|
|
705
|
+
case "transformer_yy":
|
|
706
|
+
case "transformer_dd":
|
|
707
|
+
return transformerSymbolIEC(type);
|
|
708
|
+
case "breaker":
|
|
709
|
+
return breakerSymbolIEC();
|
|
710
|
+
case "fuse":
|
|
711
|
+
return fuseSymbolIEC();
|
|
712
|
+
}
|
|
713
|
+
}
|
|
646
714
|
switch (type) {
|
|
647
715
|
case "utility":
|
|
648
716
|
return utilitySymbol();
|
|
@@ -1149,8 +1217,21 @@ function buildCss(t) {
|
|
|
1149
1217
|
.lt-sld-symbol-text { font: 11px sans-serif; fill: ${t.text}; dominant-baseline: middle; }
|
|
1150
1218
|
.lt-sld-wdg { font: bold 10px sans-serif; fill: ${t.stroke}; dominant-baseline: middle; }
|
|
1151
1219
|
.lt-sld-bus-label { font: bold 11px sans-serif; fill: ${t.accent}; }
|
|
1220
|
+
.lt-sld-standard-badge { font: bold 10px sans-serif; fill: ${t.textMuted}; letter-spacing: 0.3px; }
|
|
1152
1221
|
`.trim();
|
|
1153
1222
|
}
|
|
1223
|
+
function standardBadge(standard) {
|
|
1224
|
+
switch (standard) {
|
|
1225
|
+
case "iec":
|
|
1226
|
+
return "Standard: IEC 60617";
|
|
1227
|
+
case "abnt":
|
|
1228
|
+
return "Norma: ABNT NBR 5410 (IEC 60364)";
|
|
1229
|
+
case "as-nzs":
|
|
1230
|
+
return "Standard: AS/NZS 3000 (IEC 60364)";
|
|
1231
|
+
default:
|
|
1232
|
+
return void 0;
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1154
1235
|
function renderLabels(ln) {
|
|
1155
1236
|
const pieces = [];
|
|
1156
1237
|
const { node } = ln;
|
|
@@ -1258,6 +1339,15 @@ function renderSLD(ast, config) {
|
|
|
1258
1339
|
text({ x: 20, y: 22, class: "lt-sld-title" }, ast.title)
|
|
1259
1340
|
);
|
|
1260
1341
|
}
|
|
1342
|
+
const badge = standardBadge(ast.standard);
|
|
1343
|
+
if (badge) {
|
|
1344
|
+
children.push(
|
|
1345
|
+
text(
|
|
1346
|
+
{ x: width - 14, y: 22, class: "lt-sld-standard-badge", "text-anchor": "end" },
|
|
1347
|
+
badge
|
|
1348
|
+
)
|
|
1349
|
+
);
|
|
1350
|
+
}
|
|
1261
1351
|
const inner = [];
|
|
1262
1352
|
layout.bands.forEach((b, i) => {
|
|
1263
1353
|
inner.push(
|
|
@@ -1323,7 +1413,8 @@ function renderSLD(ast, config) {
|
|
|
1323
1413
|
group(attrs, [
|
|
1324
1414
|
renderSymbol(
|
|
1325
1415
|
ln.nodeType,
|
|
1326
|
-
ln.nodeType === "hub" ? ln.node.label ?? ln.node.id : ln.node.deviceNumber
|
|
1416
|
+
ln.nodeType === "hub" ? ln.node.label ?? ln.node.id : ln.node.deviceNumber,
|
|
1417
|
+
ast.standard
|
|
1327
1418
|
)
|
|
1328
1419
|
])
|
|
1329
1420
|
);
|
|
@@ -1344,6 +1435,42 @@ function renderSLD(ast, config) {
|
|
|
1344
1435
|
);
|
|
1345
1436
|
}
|
|
1346
1437
|
|
|
1438
|
+
// src/diagrams/sld/lint.ts
|
|
1439
|
+
function lintSLD(text2) {
|
|
1440
|
+
let ast;
|
|
1441
|
+
try {
|
|
1442
|
+
ast = parseSLDDSL(text2);
|
|
1443
|
+
} catch {
|
|
1444
|
+
return [];
|
|
1445
|
+
}
|
|
1446
|
+
return lintSLDAst(ast);
|
|
1447
|
+
}
|
|
1448
|
+
var ANSI_ONLY = {
|
|
1449
|
+
recloser: "recloser",
|
|
1450
|
+
sectionalizer: "sectionalizer",
|
|
1451
|
+
watthour_meter: "watt-hour meter",
|
|
1452
|
+
demand_meter: "demand meter"
|
|
1453
|
+
};
|
|
1454
|
+
function lintSLDAst(ast) {
|
|
1455
|
+
const out = [];
|
|
1456
|
+
if (!isIecFamily(ast.standard)) return out;
|
|
1457
|
+
const stdName = ast.standard === "abnt" ? "ABNT NBR 5410" : ast.standard === "as-nzs" ? "AS/NZS 3000" : "IEC 60617";
|
|
1458
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1459
|
+
for (const node of ast.nodes) {
|
|
1460
|
+
const friendly = ANSI_ONLY[node.nodeType];
|
|
1461
|
+
if (!friendly || seen.has(node.nodeType)) continue;
|
|
1462
|
+
seen.add(node.nodeType);
|
|
1463
|
+
out.push({
|
|
1464
|
+
severity: "warning",
|
|
1465
|
+
code: "SLD_SYMBOL_NOT_IN_STANDARD",
|
|
1466
|
+
message: `device "${node.nodeType}" (${friendly}) has no symbol in ${stdName}; rendered with the ANSI/IEEE form`,
|
|
1467
|
+
hint: `${friendly} is a North-American utility convention. Confirm an equivalent device exists in ${stdName}, or model it with an IEC-native device.`,
|
|
1468
|
+
fatal: false
|
|
1469
|
+
});
|
|
1470
|
+
}
|
|
1471
|
+
return out;
|
|
1472
|
+
}
|
|
1473
|
+
|
|
1347
1474
|
// src/diagrams/sld/index.ts
|
|
1348
1475
|
var sld = {
|
|
1349
1476
|
type: "sld",
|
|
@@ -1352,12 +1479,13 @@ var sld = {
|
|
|
1352
1479
|
return first.startsWith("sld");
|
|
1353
1480
|
},
|
|
1354
1481
|
parse: parseSLDDSL,
|
|
1482
|
+
lint: lintSLD,
|
|
1355
1483
|
render(text2, config) {
|
|
1356
1484
|
const ast = parseSLDDSL(text2);
|
|
1357
1485
|
return renderSLD(ast, config);
|
|
1358
1486
|
}
|
|
1359
1487
|
};
|
|
1360
1488
|
|
|
1361
|
-
export { layoutSLD, parseSLDDSL, renderSLD, sld };
|
|
1362
|
-
//# sourceMappingURL=chunk-
|
|
1363
|
-
//# sourceMappingURL=chunk-
|
|
1489
|
+
export { geometryFor, layoutSLD, lintSLD, lintSLDAst, parseSLDDSL, renderSLD, renderSymbol, sld };
|
|
1490
|
+
//# sourceMappingURL=chunk-LGABFD3L.js.map
|
|
1491
|
+
//# sourceMappingURL=chunk-LGABFD3L.js.map
|