schematex 0.9.18 → 0.9.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +13 -0
  2. package/dist/ai/ai-sdk.cjs +9 -9
  3. package/dist/ai/ai-sdk.d.cts +3 -3
  4. package/dist/ai/ai-sdk.d.ts +3 -3
  5. package/dist/ai/ai-sdk.js +4 -4
  6. package/dist/ai/index.cjs +18 -18
  7. package/dist/ai/index.d.cts +4 -4
  8. package/dist/ai/index.d.ts +4 -4
  9. package/dist/ai/index.js +5 -5
  10. package/dist/{api-DAUFeETp.d.cts → api-DH9a1V6Q.d.cts} +1 -1
  11. package/dist/{api-C9ufsgIb.d.ts → api-DsAwn8ne.d.ts} +1 -1
  12. package/dist/browser.cjs +10 -10
  13. package/dist/browser.d.cts +3 -3
  14. package/dist/browser.d.ts +3 -3
  15. package/dist/browser.js +4 -4
  16. package/dist/{chunk-FA6Y4QRS.js → chunk-5IPT6OFE.js} +356 -47
  17. package/dist/chunk-5IPT6OFE.js.map +1 -0
  18. package/dist/{chunk-LZHLFNM3.js → chunk-BP52JB7C.js} +4 -4
  19. package/dist/{chunk-LZHLFNM3.js.map → chunk-BP52JB7C.js.map} +1 -1
  20. package/dist/{chunk-VLK5T7B7.cjs → chunk-GJTD3RQE.cjs} +6 -6
  21. package/dist/{chunk-VLK5T7B7.cjs.map → chunk-GJTD3RQE.cjs.map} +1 -1
  22. package/dist/{chunk-DSKPJYQO.js → chunk-JBNLZQP2.js} +47 -5
  23. package/dist/chunk-JBNLZQP2.js.map +1 -0
  24. package/dist/{chunk-AG4WA4NF.cjs → chunk-JXPBZEFM.cjs} +355 -47
  25. package/dist/chunk-JXPBZEFM.cjs.map +1 -0
  26. package/dist/{chunk-6GVFKOSH.js → chunk-OZD4CYAK.js} +2 -2
  27. package/dist/{chunk-6GVFKOSH.js.map → chunk-OZD4CYAK.js.map} +1 -1
  28. package/dist/{chunk-JWILBXGR.cjs → chunk-PZ5MNDVY.cjs} +49 -7
  29. package/dist/chunk-PZ5MNDVY.cjs.map +1 -0
  30. package/dist/{chunk-AWUUGDN4.cjs → chunk-RVPYIBBH.cjs} +2 -2
  31. package/dist/{chunk-AWUUGDN4.cjs.map → chunk-RVPYIBBH.cjs.map} +1 -1
  32. package/dist/{diagnostics-DSxLohjY.d.cts → diagnostics-CKacYRIE.d.cts} +1 -1
  33. package/dist/{diagnostics-DSxLohjY.d.ts → diagnostics-CKacYRIE.d.ts} +1 -1
  34. package/dist/diagrams/blockdiagram/index.d.cts +1 -1
  35. package/dist/diagrams/blockdiagram/index.d.ts +1 -1
  36. package/dist/diagrams/circuit/index.cjs +8 -8
  37. package/dist/diagrams/circuit/index.d.cts +3 -1
  38. package/dist/diagrams/circuit/index.d.ts +3 -1
  39. package/dist/diagrams/circuit/index.js +1 -1
  40. package/dist/diagrams/ecomap/index.d.cts +1 -1
  41. package/dist/diagrams/ecomap/index.d.ts +1 -1
  42. package/dist/diagrams/entity/index.d.cts +1 -1
  43. package/dist/diagrams/entity/index.d.ts +1 -1
  44. package/dist/diagrams/fishbone/index.d.cts +1 -1
  45. package/dist/diagrams/fishbone/index.d.ts +1 -1
  46. package/dist/diagrams/flowchart/index.d.cts +2 -2
  47. package/dist/diagrams/flowchart/index.d.ts +2 -2
  48. package/dist/diagrams/genogram/index.d.cts +1 -1
  49. package/dist/diagrams/genogram/index.d.ts +1 -1
  50. package/dist/diagrams/ladder/index.d.cts +1 -1
  51. package/dist/diagrams/ladder/index.d.ts +1 -1
  52. package/dist/diagrams/logic/index.d.cts +1 -1
  53. package/dist/diagrams/logic/index.d.ts +1 -1
  54. package/dist/diagrams/orgchart/index.d.cts +1 -1
  55. package/dist/diagrams/orgchart/index.d.ts +1 -1
  56. package/dist/diagrams/pedigree/index.d.cts +1 -1
  57. package/dist/diagrams/pedigree/index.d.ts +1 -1
  58. package/dist/diagrams/phylo/index.d.cts +1 -1
  59. package/dist/diagrams/phylo/index.d.ts +1 -1
  60. package/dist/diagrams/siteplan/index.d.cts +1 -1
  61. package/dist/diagrams/siteplan/index.d.ts +1 -1
  62. package/dist/diagrams/sld/index.cjs +7 -7
  63. package/dist/diagrams/sld/index.d.cts +1 -1
  64. package/dist/diagrams/sld/index.d.ts +1 -1
  65. package/dist/diagrams/sld/index.js +1 -1
  66. package/dist/diagrams/sociogram/index.d.cts +1 -1
  67. package/dist/diagrams/sociogram/index.d.ts +1 -1
  68. package/dist/diagrams/timing/index.d.cts +1 -1
  69. package/dist/diagrams/timing/index.d.ts +1 -1
  70. package/dist/diagrams/venn/index.d.cts +1 -1
  71. package/dist/diagrams/venn/index.d.ts +1 -1
  72. package/dist/{index-CZa2pU0T.d.ts → index-BmJxw0lf.d.ts} +1 -1
  73. package/dist/{index-CDDfbChc.d.cts → index-Dth_Wjwf.d.cts} +1 -1
  74. package/dist/index.cjs +45 -48
  75. package/dist/index.cjs.map +1 -1
  76. package/dist/index.d.cts +4 -4
  77. package/dist/index.d.ts +4 -4
  78. package/dist/index.js +8 -11
  79. package/dist/index.js.map +1 -1
  80. package/dist/react.cjs +4 -4
  81. package/dist/react.d.cts +2 -2
  82. package/dist/react.d.ts +2 -2
  83. package/dist/react.js +3 -3
  84. package/dist/{tools-Bvw6dwIR.d.cts → tools-Bl6w3h3P.d.cts} +2 -2
  85. package/dist/{tools-DtuvE-K4.d.ts → tools-CBYFRF2a.d.ts} +2 -2
  86. package/package.json +1 -1
  87. package/dist/chunk-AG4WA4NF.cjs.map +0 -1
  88. package/dist/chunk-DSKPJYQO.js.map +0 -1
  89. package/dist/chunk-FA6Y4QRS.js.map +0 -1
  90. package/dist/chunk-JWILBXGR.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkVLK5T7B7_cjs = require('./chunk-VLK5T7B7.cjs');
3
+ var chunkGJTD3RQE_cjs = require('./chunk-GJTD3RQE.cjs');
4
4
  var chunkUHRNFBWY_cjs = require('./chunk-UHRNFBWY.cjs');
5
5
  var chunkIBZKIMT5_cjs = require('./chunk-IBZKIMT5.cjs');
6
- var chunkAG4WA4NF_cjs = require('./chunk-AG4WA4NF.cjs');
6
+ var chunkJXPBZEFM_cjs = require('./chunk-JXPBZEFM.cjs');
7
7
  var chunkT55OQILI_cjs = require('./chunk-T55OQILI.cjs');
8
8
  var chunkUS4QZ7J7_cjs = require('./chunk-US4QZ7J7.cjs');
9
- var chunkAWUUGDN4_cjs = require('./chunk-AWUUGDN4.cjs');
9
+ var chunkRVPYIBBH_cjs = require('./chunk-RVPYIBBH.cjs');
10
10
  var chunk4MANMKQ4_cjs = require('./chunk-4MANMKQ4.cjs');
11
11
  var chunkAQENURKO_cjs = require('./chunk-AQENURKO.cjs');
12
12
  var chunk3JN4762U_cjs = require('./chunk-3JN4762U.cjs');
@@ -34,12 +34,9 @@ function svgDoc(viewBox, css, inner) {
34
34
  }
35
35
  var CIRCUIT_CSS = ".schematex-circuit-body{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linejoin:round;stroke-linecap:round}.schematex-circuit-fill{stroke:#0f172a;stroke-width:1.5;fill:#0f172a}.schematex-circuit-wire{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linecap:square}";
36
36
  function circuitCatalog() {
37
- const merged = {
38
- ...chunkAG4WA4NF_cjs.SYMBOLS,
39
- ...chunkAG4WA4NF_cjs.EXTRA_SYMBOLS
40
- };
37
+ const symbols = chunkJXPBZEFM_cjs.SYMBOLS;
41
38
  const out = [];
42
- for (const [id, def] of Object.entries(merged)) {
39
+ for (const [id, def] of Object.entries(symbols)) {
43
40
  if (!def) continue;
44
41
  const L = def.length || 40;
45
42
  const inner = def.svg();
@@ -92,11 +89,11 @@ function sldCatalog() {
92
89
  for (const type of SLD_TYPES) {
93
90
  let inner;
94
91
  try {
95
- inner = chunkAWUUGDN4_cjs.renderSymbol(type);
92
+ inner = chunkRVPYIBBH_cjs.renderSymbol(type);
96
93
  } catch {
97
94
  continue;
98
95
  }
99
- const g = chunkAWUUGDN4_cjs.geometryFor(type);
96
+ const g = chunkRVPYIBBH_cjs.geometryFor(type);
100
97
  const w = Math.max(g.halfWidth, 18) + 12;
101
98
  const top = Math.min(g.topY, -22) - 8;
102
99
  const bot = Math.max(g.bottomY, 22) + 8;
@@ -112,10 +109,10 @@ var PID_CSS = ".lt-pid-equip{fill:#ffffff;stroke:#1d1d1d;stroke-width:1.6}.lt-pi
112
109
  function pidCatalog() {
113
110
  const out = [];
114
111
  const pad = 12;
115
- for (const [id, g] of Object.entries(chunkVLK5T7B7_cjs.GEOMETRY)) {
112
+ for (const [id, g] of Object.entries(chunkGJTD3RQE_cjs.GEOMETRY)) {
116
113
  let inner;
117
114
  try {
118
- inner = chunkVLK5T7B7_cjs.renderEquip(id, "");
115
+ inner = chunkGJTD3RQE_cjs.renderEquip(id, "");
119
116
  } catch {
120
117
  continue;
121
118
  }
@@ -225,11 +222,11 @@ var NETWORK_KINDS = [
225
222
  function networkCatalog() {
226
223
  const out = [];
227
224
  for (const kind of NETWORK_KINDS) {
228
- const { w, h } = chunkVLK5T7B7_cjs.iconSize(kind);
225
+ const { w, h } = chunkGJTD3RQE_cjs.iconSize(kind);
229
226
  const device = { id: kind, kind, label: humanize(kind), groups: [] };
230
227
  let inner;
231
228
  try {
232
- inner = chunkVLK5T7B7_cjs.drawDeviceIcon(device, { x: 0, y: 0, w, h });
229
+ inner = chunkGJTD3RQE_cjs.drawDeviceIcon(device, { x: 0, y: 0, w, h });
233
230
  } catch {
234
231
  continue;
235
232
  }
@@ -246,7 +243,7 @@ function floorplanCatalog() {
246
243
  const scale = 40;
247
244
  const px = (m) => Math.round(m * scale * 100) / 100;
248
245
  const out = [];
249
- for (const [id, def] of Object.entries(chunkVLK5T7B7_cjs.FLOORPLAN_SYMBOLS)) {
246
+ for (const [id, def] of Object.entries(chunkGJTD3RQE_cjs.FLOORPLAN_SYMBOLS)) {
250
247
  const [mt, mr, mb, ml] = def.envelope ?? [0, 0, 0, 0];
251
248
  const pad = 5;
252
249
  const x0 = -px(ml) - pad;
@@ -313,127 +310,127 @@ function getSymbolCatalog(type) {
313
310
 
314
311
  Object.defineProperty(exports, "bowtie", {
315
312
  enumerable: true,
316
- get: function () { return chunkVLK5T7B7_cjs.bowtie; }
313
+ get: function () { return chunkGJTD3RQE_cjs.bowtie; }
317
314
  });
318
315
  Object.defineProperty(exports, "causalloop", {
319
316
  enumerable: true,
320
- get: function () { return chunkVLK5T7B7_cjs.causalloop; }
317
+ get: function () { return chunkGJTD3RQE_cjs.causalloop; }
321
318
  });
322
319
  Object.defineProperty(exports, "comparison", {
323
320
  enumerable: true,
324
- get: function () { return chunkVLK5T7B7_cjs.comparison; }
321
+ get: function () { return chunkGJTD3RQE_cjs.comparison; }
325
322
  });
326
323
  Object.defineProperty(exports, "decisiontree", {
327
324
  enumerable: true,
328
- get: function () { return chunkVLK5T7B7_cjs.decisiontree; }
325
+ get: function () { return chunkGJTD3RQE_cjs.decisiontree; }
329
326
  });
330
327
  Object.defineProperty(exports, "epc", {
331
328
  enumerable: true,
332
- get: function () { return chunkVLK5T7B7_cjs.epc; }
329
+ get: function () { return chunkGJTD3RQE_cjs.epc; }
333
330
  });
334
331
  Object.defineProperty(exports, "eventtree", {
335
332
  enumerable: true,
336
- get: function () { return chunkVLK5T7B7_cjs.eventtree; }
333
+ get: function () { return chunkGJTD3RQE_cjs.eventtree; }
337
334
  });
338
335
  Object.defineProperty(exports, "faulttree", {
339
336
  enumerable: true,
340
- get: function () { return chunkVLK5T7B7_cjs.faulttree; }
337
+ get: function () { return chunkGJTD3RQE_cjs.faulttree; }
341
338
  });
342
339
  Object.defineProperty(exports, "floorplan", {
343
340
  enumerable: true,
344
- get: function () { return chunkVLK5T7B7_cjs.floorplan; }
341
+ get: function () { return chunkGJTD3RQE_cjs.floorplan; }
345
342
  });
346
343
  Object.defineProperty(exports, "fmea", {
347
344
  enumerable: true,
348
- get: function () { return chunkVLK5T7B7_cjs.fmea; }
345
+ get: function () { return chunkGJTD3RQE_cjs.fmea; }
349
346
  });
350
347
  Object.defineProperty(exports, "gitgraph", {
351
348
  enumerable: true,
352
- get: function () { return chunkVLK5T7B7_cjs.gitgraph; }
349
+ get: function () { return chunkGJTD3RQE_cjs.gitgraph; }
353
350
  });
354
351
  Object.defineProperty(exports, "idef0", {
355
352
  enumerable: true,
356
- get: function () { return chunkVLK5T7B7_cjs.idef0; }
353
+ get: function () { return chunkGJTD3RQE_cjs.idef0; }
357
354
  });
358
355
  Object.defineProperty(exports, "markov", {
359
356
  enumerable: true,
360
- get: function () { return chunkVLK5T7B7_cjs.markov; }
357
+ get: function () { return chunkGJTD3RQE_cjs.markov; }
361
358
  });
362
359
  Object.defineProperty(exports, "network", {
363
360
  enumerable: true,
364
- get: function () { return chunkVLK5T7B7_cjs.network; }
361
+ get: function () { return chunkGJTD3RQE_cjs.network; }
365
362
  });
366
363
  Object.defineProperty(exports, "parse", {
367
364
  enumerable: true,
368
- get: function () { return chunkVLK5T7B7_cjs.parse; }
365
+ get: function () { return chunkGJTD3RQE_cjs.parse; }
369
366
  });
370
367
  Object.defineProperty(exports, "parseResult", {
371
368
  enumerable: true,
372
- get: function () { return chunkVLK5T7B7_cjs.parseResult; }
369
+ get: function () { return chunkGJTD3RQE_cjs.parseResult; }
373
370
  });
374
371
  Object.defineProperty(exports, "pert", {
375
372
  enumerable: true,
376
- get: function () { return chunkVLK5T7B7_cjs.pert; }
373
+ get: function () { return chunkGJTD3RQE_cjs.pert; }
377
374
  });
378
375
  Object.defineProperty(exports, "petri", {
379
376
  enumerable: true,
380
- get: function () { return chunkVLK5T7B7_cjs.petri; }
377
+ get: function () { return chunkGJTD3RQE_cjs.petri; }
381
378
  });
382
379
  Object.defineProperty(exports, "pid", {
383
380
  enumerable: true,
384
- get: function () { return chunkVLK5T7B7_cjs.pid; }
381
+ get: function () { return chunkGJTD3RQE_cjs.pid; }
385
382
  });
386
383
  Object.defineProperty(exports, "playbook", {
387
384
  enumerable: true,
388
- get: function () { return chunkVLK5T7B7_cjs.playbook; }
385
+ get: function () { return chunkGJTD3RQE_cjs.playbook; }
389
386
  });
390
387
  Object.defineProperty(exports, "prisma", {
391
388
  enumerable: true,
392
- get: function () { return chunkVLK5T7B7_cjs.prisma; }
389
+ get: function () { return chunkGJTD3RQE_cjs.prisma; }
393
390
  });
394
391
  Object.defineProperty(exports, "rbd", {
395
392
  enumerable: true,
396
- get: function () { return chunkVLK5T7B7_cjs.rbd; }
393
+ get: function () { return chunkGJTD3RQE_cjs.rbd; }
397
394
  });
398
395
  Object.defineProperty(exports, "render", {
399
396
  enumerable: true,
400
- get: function () { return chunkVLK5T7B7_cjs.render; }
397
+ get: function () { return chunkGJTD3RQE_cjs.render; }
401
398
  });
402
399
  Object.defineProperty(exports, "renderPreview", {
403
400
  enumerable: true,
404
- get: function () { return chunkVLK5T7B7_cjs.renderPreview; }
401
+ get: function () { return chunkGJTD3RQE_cjs.renderPreview; }
405
402
  });
406
403
  Object.defineProperty(exports, "renderResult", {
407
404
  enumerable: true,
408
- get: function () { return chunkVLK5T7B7_cjs.renderResult; }
405
+ get: function () { return chunkGJTD3RQE_cjs.renderResult; }
409
406
  });
410
407
  Object.defineProperty(exports, "sequence", {
411
408
  enumerable: true,
412
- get: function () { return chunkVLK5T7B7_cjs.sequence; }
409
+ get: function () { return chunkGJTD3RQE_cjs.sequence; }
413
410
  });
414
411
  Object.defineProperty(exports, "state", {
415
412
  enumerable: true,
416
- get: function () { return chunkVLK5T7B7_cjs.state; }
413
+ get: function () { return chunkGJTD3RQE_cjs.state; }
417
414
  });
418
415
  Object.defineProperty(exports, "threatmodel", {
419
416
  enumerable: true,
420
- get: function () { return chunkVLK5T7B7_cjs.threatmodel; }
417
+ get: function () { return chunkGJTD3RQE_cjs.threatmodel; }
421
418
  });
422
419
  Object.defineProperty(exports, "timeline", {
423
420
  enumerable: true,
424
- get: function () { return chunkVLK5T7B7_cjs.timeline; }
421
+ get: function () { return chunkGJTD3RQE_cjs.timeline; }
425
422
  });
426
423
  Object.defineProperty(exports, "umlclass", {
427
424
  enumerable: true,
428
- get: function () { return chunkVLK5T7B7_cjs.umlclass; }
425
+ get: function () { return chunkGJTD3RQE_cjs.umlclass; }
429
426
  });
430
427
  Object.defineProperty(exports, "usecase", {
431
428
  enumerable: true,
432
- get: function () { return chunkVLK5T7B7_cjs.usecase; }
429
+ get: function () { return chunkGJTD3RQE_cjs.usecase; }
433
430
  });
434
431
  Object.defineProperty(exports, "welding", {
435
432
  enumerable: true,
436
- get: function () { return chunkVLK5T7B7_cjs.welding; }
433
+ get: function () { return chunkGJTD3RQE_cjs.welding; }
437
434
  });
438
435
  Object.defineProperty(exports, "orgchart", {
439
436
  enumerable: true,
@@ -445,7 +442,7 @@ Object.defineProperty(exports, "siteplan", {
445
442
  });
446
443
  Object.defineProperty(exports, "circuit", {
447
444
  enumerable: true,
448
- get: function () { return chunkAG4WA4NF_cjs.circuit; }
445
+ get: function () { return chunkJXPBZEFM_cjs.circuit; }
449
446
  });
450
447
  Object.defineProperty(exports, "blockdiagram", {
451
448
  enumerable: true,
@@ -457,7 +454,7 @@ Object.defineProperty(exports, "ladder", {
457
454
  });
458
455
  Object.defineProperty(exports, "sld", {
459
456
  enumerable: true,
460
- get: function () { return chunkAWUUGDN4_cjs.sld; }
457
+ get: function () { return chunkRVPYIBBH_cjs.sld; }
461
458
  });
462
459
  Object.defineProperty(exports, "entity", {
463
460
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/symbols-catalog.ts"],"names":["SYMBOLS","EXTRA_SYMBOLS","renderSymbol","geometryFor","GEOMETRY","renderEquip","iconNames","renderIcon","getGateGeometry","iconSize","drawDeviceIcon","FLOORPLAN_SYMBOLS"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Domain symbol catalogs — the real symbols an engine uses *inside* a diagram\n * (circuit components, SLD apparatus, P&ID equipment, flowchart node icons),\n * each rendered standalone for the /icons showcase. This is distinct from the\n * per-type representative glyph (assets/icons/*.svg).\n *\n * Each entry's `svg` is a complete, self-styled <svg> so consumers can drop it\n * straight into the page.\n */\nimport type { DiagramType, SLDNodeType, LogicGateType } from \"./core/types\";\nimport { SYMBOLS, EXTRA_SYMBOLS } from \"./diagrams/circuit/symbols\";\nimport { renderSymbol as sldRenderSymbol, geometryFor } from \"./diagrams/sld/symbols\";\nimport { renderEquip, GEOMETRY as PID_GEOMETRY } from \"./diagrams/pid/symbols\";\nimport { iconNames, renderIcon } from \"./diagrams/flowchart/icons\";\nimport { getGateGeometry } from \"./diagrams/logic/symbols\";\nimport { drawDeviceIcon, iconSize } from \"./diagrams/network/symbols\";\nimport { FLOORPLAN_SYMBOLS } from \"./diagrams/floorplan/catalog\";\n\nexport interface SymbolCatalogEntry {\n id: string;\n label: string;\n svg: string;\n}\n\nexport interface SymbolCatalog {\n type: DiagramType;\n /** Human label for the catalog section, e.g. \"Circuit components\". */\n label: string;\n /** Short description of what the symbols are. */\n note: string;\n entries: SymbolCatalogEntry[];\n}\n\nfunction humanize(id: string): string {\n return id\n .replace(/[_-]+/g, \" \")\n .replace(/\\b\\w/g, (c) => c.toUpperCase());\n}\n\nfunction svgDoc(viewBox: string, css: string, inner: string): string {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${viewBox}\" class=\"lt-symbol\">` +\n `<style>${css}</style>${inner}</svg>`;\n}\n\n// ── Circuit (IEEE 315) ─────────────────────────────────────────────\nconst CIRCUIT_CSS =\n \".schematex-circuit-body{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linejoin:round;stroke-linecap:round}\" +\n \".schematex-circuit-fill{stroke:#0f172a;stroke-width:1.5;fill:#0f172a}\" +\n \".schematex-circuit-wire{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linecap:square}\";\n\nfunction circuitCatalog(): SymbolCatalogEntry[] {\n const merged: Record<string, { length: number; svg: () => string }> = {\n ...(SYMBOLS as Record<string, { length: number; svg: () => string }>),\n ...(EXTRA_SYMBOLS as Record<string, { length: number; svg: () => string }>),\n };\n const out: SymbolCatalogEntry[] = [];\n for (const [id, def] of Object.entries(merged)) {\n if (!def) continue;\n const L = def.length || 40;\n const inner = def.svg();\n out.push({ id, label: humanize(id), svg: svgDoc(`-10 -24 ${L + 20} 48`, CIRCUIT_CSS, inner) });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── SLD (IEEE 315 / IEC 60617) ─────────────────────────────────────\nconst SLD_CSS =\n \".lt-sld-stroke{stroke:#0f172a;stroke-width:1.8;fill:none}\" +\n \".lt-sld-stroke-thick{stroke:#0f172a;stroke-width:2.4;fill:none;stroke-linecap:round}\" +\n \".lt-sld-fill{fill:#ffffff;stroke:#0f172a;stroke-width:2}\" +\n \".lt-sld-fill-dark{fill:#0f172a;stroke:#0f172a;stroke-width:1}\" +\n \".lt-sld-dot{fill:#0f172a;stroke:none}\" +\n \".lt-sld-wire{stroke:#0f172a;stroke-width:2;fill:none}\" +\n \".lt-sld-bus{stroke:#0f172a;stroke-width:6;stroke-linecap:square}\" +\n \".lt-sld-symbol-text{font:11px sans-serif;fill:#0f172a;dominant-baseline:middle}\" +\n \".lt-sld-wdg{font:bold 10px sans-serif;fill:#0f172a;dominant-baseline:middle}\";\n\nconst SLD_TYPES: SLDNodeType[] = [\n \"utility\", \"generator\", \"solar\", \"wind\", \"ups\", \"transformer\", \"transformer_dy\",\n \"transformer_yd\", \"transformer_yy\", \"transformer_dd\", \"autotransformer\",\n \"transformer_3winding\", \"breaker\", \"breaker_vacuum\", \"recloser\", \"switch\",\n \"switch_load\", \"ground_switch\", \"sectionalizer\", \"fuse\", \"fuse_cl\", \"motor\",\n \"load\", \"capacitor_bank\", \"harmonic_filter\", \"vfd\", \"ats\", \"ct\", \"pt\", \"relay\",\n \"surge_arrester\", \"watthour_meter\", \"demand_meter\", \"ground_fault\", \"bus\",\n \"bus_tie\", \"hub\",\n];\n\nfunction sldCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const type of SLD_TYPES) {\n let inner: string;\n try {\n inner = sldRenderSymbol(type);\n } catch {\n continue;\n }\n const g = geometryFor(type);\n const w = Math.max(g.halfWidth, 18) + 12;\n const top = Math.min(g.topY, -22) - 8;\n const bot = Math.max(g.bottomY, 22) + 8;\n out.push({\n id: type,\n label: humanize(type),\n svg: svgDoc(`${-w} ${top} ${2 * w} ${bot - top}`, SLD_CSS, inner),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── P&ID (ISA-5.1) equipment ───────────────────────────────────────\nconst PID_CSS =\n \".lt-pid-equip{fill:#ffffff;stroke:#1d1d1d;stroke-width:1.6}\" +\n \".lt-pid-equip-tag{font:600 11px system-ui,sans-serif;fill:#1d1d1d}\" +\n \".lt-pid-process{stroke:#1d1d1d;stroke-width:2.6;fill:none}\" +\n \".lt-pid-process-min{stroke:#1d1d1d;stroke-width:1.5;fill:none}\";\n\nfunction pidCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n const pad = 12;\n for (const [id, g] of Object.entries(PID_GEOMETRY)) {\n let inner: string;\n try {\n inner = renderEquip(id as Parameters<typeof renderEquip>[0], \"\");\n } catch {\n continue;\n }\n out.push({\n id,\n label: humanize(id),\n svg: svgDoc(\n `${-g.width / 2 - pad} ${-g.height / 2 - pad} ${g.width + 2 * pad} ${g.height + 2 * pad}`,\n PID_CSS,\n inner,\n ),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Flowchart node icons ───────────────────────────────────────────\nconst FC_ICON_CSS =\n \".sx-fc-icon{stroke:#0f172a;fill:none}.sx-fc-icon-fill{fill:#0f172a}\";\n\nfunction flowchartIconCatalog(): SymbolCatalogEntry[] {\n return iconNames()\n .map((name) => ({\n id: name,\n label: humanize(name),\n svg: svgDoc(\"-13 -13 26 26\", FC_ICON_CSS, renderIcon(name)),\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Logic gates (IEEE 91) ──────────────────────────────────────────\nconst LOGIC_CSS =\n \".schematex-logic-gate-body{fill:none;stroke:#0f172a;stroke-width:1.75;stroke-linejoin:round}\" +\n \".schematex-logic-bubble{fill:#ffffff;stroke:#0f172a;stroke-width:1.5}\" +\n \".schematex-logic-wire{stroke:#0f172a;stroke-width:1.5;fill:none;stroke-linecap:square}\" +\n \".schematex-logic-gate-iec-label{font:bold 13px sans-serif;fill:#0f172a}\";\n\nconst LOGIC_TYPES: LogicGateType[] = [\n \"AND\", \"OR\", \"NOT\", \"NAND\", \"NOR\", \"XOR\", \"XNOR\", \"BUF\", \"TRISTATE_BUF\",\n \"OPEN_DRAIN\", \"SCHMITT\", \"DFF\", \"JKFF\", \"SRFF\", \"TFF\", \"LATCH_D\", \"LATCH_SR\",\n \"MUX\", \"DEMUX\", \"DECODER\", \"ENCODER\", \"COUNTER\", \"SHIFT_REG\",\n];\nconst SINGLE_INPUT = new Set<LogicGateType>([\"NOT\", \"BUF\", \"SCHMITT\", \"TRISTATE_BUF\", \"TRISTATE_INV\", \"OPEN_DRAIN\", \"DFF\", \"TFF\"]);\n\nfunction logicCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const type of LOGIC_TYPES) {\n let g;\n try {\n g = getGateGeometry(type, SINGLE_INPUT.has(type) ? 1 : 2);\n } catch {\n continue;\n }\n const parts = [`<path d=\"${g.ansiPath}\" class=\"schematex-logic-gate-body\"/>`];\n for (const p of g.inputPins) parts.push(`<line x1=\"${p.x - 10}\" y1=\"${p.y}\" x2=\"${p.x}\" y2=\"${p.y}\" class=\"schematex-logic-wire\"/>`);\n for (const p of g.outputPins) {\n const bub = p.bubble || g.outputBubble;\n const ox = bub ? p.x + 6 : p.x;\n if (bub) parts.push(`<circle cx=\"${p.x + 3}\" cy=\"${p.y}\" r=\"3\" class=\"schematex-logic-bubble\"/>`);\n parts.push(`<line x1=\"${ox}\" y1=\"${p.y}\" x2=\"${ox + 10}\" y2=\"${p.y}\" class=\"schematex-logic-wire\"/>`);\n }\n out.push({\n id: type,\n label: humanize(type),\n svg: svgDoc(`-14 -6 ${g.width + 28} ${g.height + 12}`, LOGIC_CSS, parts.join(\"\")),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Network devices (Cisco-convention icons) ───────────────────────\nconst NETWORK_CSS =\n \".sx-net-body{fill:#ffffff;stroke:#0f172a;stroke-width:2}\" +\n \".sx-net-detail{fill:none;stroke:#0f172a;stroke-width:1}\" +\n \".sx-net-glyph{fill:#2563eb;stroke:none}\" +\n \".sx-net-glyph-line{fill:none;stroke:#2563eb;stroke-width:1.4}\" +\n \".sx-net-icontext{font:700 8px sans-serif;fill:#2563eb}\" +\n \".sx-net-cloud-body{fill:#f1f5f9;stroke:#0f172a;stroke-width:2}\" +\n \".sx-net-cloudtext{font:600 13px sans-serif;fill:#0f172a}\" +\n \".sx-net-bus{stroke:#0f172a;stroke-width:4;stroke-linecap:round}\";\n\nconst NETWORK_KINDS = [\n \"router\", \"switch\", \"l3switch\", \"poeswitch\", \"firewall\", \"loadbalancer\", \"ap\",\n \"wlc\", \"gateway\", \"modem\", \"ids\", \"proxy\", \"vpngw\", \"server\", \"serverfarm\",\n \"pc\", \"laptop\", \"mobile\", \"ipphone\", \"printer\", \"storage\", \"camera\", \"nvr\",\n \"dvr\", \"encoder\", \"monitor\", \"internet\", \"cloud\",\n] as const;\n\nfunction networkCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const kind of NETWORK_KINDS) {\n const { w, h } = iconSize(kind as Parameters<typeof iconSize>[0]);\n const device = { id: kind, kind, label: humanize(kind), groups: [] } as Parameters<typeof drawDeviceIcon>[0];\n let inner: string;\n try {\n inner = drawDeviceIcon(device, { x: 0, y: 0, w, h });\n } catch {\n continue;\n }\n out.push({\n id: kind,\n label: humanize(kind),\n svg: svgDoc(`-6 -6 ${w + 12} ${h + 12}`, NETWORK_CSS, inner),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Floor plan furniture & fixtures (AGS plan view) ────────────────\nconst FLOORPLAN_CSS =\n \".sx-fp-furn{fill:#ffffff;stroke:#475569;stroke-width:1.2}\" +\n \".sx-fp-furn-nofill{fill:none;stroke:#475569;stroke-width:1.2}\" +\n \".sx-fp-furn-line{fill:none;stroke:#475569;stroke-width:1}\" +\n \".sx-fp-furn-dash{fill:none;stroke:#475569;stroke-width:1;stroke-dasharray:4 3}\" +\n \".sx-fp-furn-dot{fill:#475569;stroke:none}\" +\n \".sx-fp-furn-solid{fill:#334155;stroke:none}\" +\n \".sx-fp-board-inner{fill:#ffffff;stroke:none}\" +\n \".sx-fp-chair{fill:#f1f5f9;stroke:#475569;stroke-width:1}\" +\n \".sx-fp-rug{fill:none;stroke:#94a3b8;stroke-width:1.2;stroke-dasharray:5 4}\" +\n \".sx-fp-hatch{fill:none;stroke:#cbd5e1;stroke-width:1}\" +\n \".sx-fp-furn-text{font-weight:600;font-family:sans-serif;fill:#475569}\";\n\nfunction floorplanCatalog(): SymbolCatalogEntry[] {\n const scale = 40; // px per meter for the standalone sheet\n const px = (m: number): number => Math.round(m * scale * 100) / 100;\n const out: SymbolCatalogEntry[] = [];\n for (const [id, def] of Object.entries(FLOORPLAN_SYMBOLS)) {\n const [mt, mr, mb, ml] = def.envelope ?? [0, 0, 0, 0];\n const pad = 5;\n const x0 = -px(ml) - pad;\n const y0 = -px(mt) - pad;\n const w = px(def.w + ml + mr) + 2 * pad;\n const h = px(def.h + mt + mb) + 2 * pad;\n out.push({\n id,\n label: humanize(id),\n svg: svgDoc(`${x0} ${y0} ${w} ${h}`, FLOORPLAN_CSS, def.draw({ w: def.w, h: def.h, px })),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\nconst CATALOGS: Partial<Record<DiagramType, () => SymbolCatalog>> = {\n circuit: () => ({\n type: \"circuit\",\n label: \"Circuit components\",\n note: \"IEEE 315 / ANSI Y32.2 schematic symbols the netlist/positional engine draws.\",\n entries: circuitCatalog(),\n }),\n sld: () => ({\n type: \"sld\",\n label: \"Single-line apparatus\",\n note: \"IEEE 315 power-apparatus symbols — sources, transformers, switching, protection, loads.\",\n entries: sldCatalog(),\n }),\n pid: () => ({\n type: \"pid\",\n label: \"P&ID equipment\",\n note: \"ANSI/ISA-5.1 process equipment — tanks, columns, exchangers, pumps, and more.\",\n entries: pidCatalog(),\n }),\n logic: () => ({\n type: \"logic\",\n label: \"Logic gates\",\n note: \"IEEE 91 ANSI gate bodies — combinational gates, flip-flops, latches, MUX/decoder, counters.\",\n entries: logicCatalog(),\n }),\n network: () => ({\n type: \"network\",\n label: \"Network devices\",\n note: \"Cisco-convention topology icons — routers, switches, firewalls, servers, cameras, clouds.\",\n entries: networkCatalog(),\n }),\n flowchart: () => ({\n type: \"flowchart\",\n label: \"Node icons\",\n note: \"Inline node icons (servers, databases, cloud, gear…) usable on any flowchart node.\",\n entries: flowchartIconCatalog(),\n }),\n floorplan: () => ({\n type: \"floorplan\",\n label: \"Floor plan furniture & fixtures\",\n note: \"AGS plan-view symbols — auto-seated tables, beds, kitchen/bath fixtures, classroom and event/banquet furniture.\",\n entries: floorplanCatalog(),\n }),\n};\n\n/** Diagram types that ship a renderable domain symbol catalog. */\nexport const SYMBOL_CATALOG_TYPES = Object.keys(CATALOGS) as DiagramType[];\n\nexport function getSymbolCatalog(type: string): SymbolCatalog | null {\n const factory = CATALOGS[type as DiagramType];\n return factory ? factory() : null;\n}\n"]}
1
+ {"version":3,"sources":["../src/symbols-catalog.ts"],"names":["SYMBOLS","renderSymbol","geometryFor","GEOMETRY","renderEquip","iconNames","renderIcon","getGateGeometry","iconSize","drawDeviceIcon","FLOORPLAN_SYMBOLS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAS,SAAS,EAAA,EAAoB;AACpC,EAAA,OAAO,EAAA,CACJ,OAAA,CAAQ,QAAA,EAAU,GAAG,CAAA,CACrB,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,EAAa,CAAA;AAC5C;AAEA,SAAS,MAAA,CAAO,OAAA,EAAiB,GAAA,EAAa,KAAA,EAAuB;AACnE,EAAA,OAAO,CAAA,iDAAA,EAAoD,OAAO,CAAA,2BAAA,EACtD,GAAG,WAAW,KAAK,CAAA,MAAA,CAAA;AACjC;AAGA,IAAM,WAAA,GACJ,8QAAA;AAIF,SAAS,cAAA,GAAuC;AAC9C,EAAA,MAAM,OAAA,GAAUA,yBAAA;AAChB,EAAA,MAAM,MAA4B,EAAC;AACnC,EAAA,KAAA,MAAW,CAAC,EAAA,EAAI,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC/C,IAAA,IAAI,CAAC,GAAA,EAAK;AACV,IAAA,MAAM,CAAA,GAAI,IAAI,MAAA,IAAU,EAAA;AACxB,IAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,EAAI;AACtB,IAAA,GAAA,CAAI,KAAK,EAAE,EAAA,EAAI,KAAA,EAAO,QAAA,CAAS,EAAE,CAAA,EAAG,GAAA,EAAK,MAAA,CAAO,CAAA,QAAA,EAAW,IAAI,EAAE,CAAA,GAAA,CAAA,EAAO,WAAA,EAAa,KAAK,GAAG,CAAA;AAAA,EAC/F;AACA,EAAA,OAAO,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,KAAA,CAAM,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAC1D;AAGA,IAAM,OAAA,GACJ,yjBAAA;AAUF,IAAM,SAAA,GAA2B;AAAA,EAC/B,SAAA;AAAA,EAAW,WAAA;AAAA,EAAa,OAAA;AAAA,EAAS,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,aAAA;AAAA,EAAe,gBAAA;AAAA,EAC/D,gBAAA;AAAA,EAAkB,gBAAA;AAAA,EAAkB,gBAAA;AAAA,EAAkB,iBAAA;AAAA,EACtD,sBAAA;AAAA,EAAwB,SAAA;AAAA,EAAW,gBAAA;AAAA,EAAkB,UAAA;AAAA,EAAY,QAAA;AAAA,EACjE,aAAA;AAAA,EAAe,eAAA;AAAA,EAAiB,eAAA;AAAA,EAAiB,MAAA;AAAA,EAAQ,SAAA;AAAA,EAAW,OAAA;AAAA,EACpE,MAAA;AAAA,EAAQ,gBAAA;AAAA,EAAkB,iBAAA;AAAA,EAAmB,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,OAAA;AAAA,EACvE,gBAAA;AAAA,EAAkB,gBAAA;AAAA,EAAkB,cAAA;AAAA,EAAgB,cAAA;AAAA,EAAgB,KAAA;AAAA,EACpE,SAAA;AAAA,EAAW;AACb,CAAA;AAEA,SAAS,UAAA,GAAmC;AAC1C,EAAA,MAAM,MAA4B,EAAC;AACnC,EAAA,KAAA,MAAW,QAAQ,SAAA,EAAW;AAC5B,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI;AACF,MAAA,KAAA,GAAQC,+BAAgB,IAAI,CAAA;AAAA,IAC9B,CAAA,CAAA,MAAQ;AACN,MAAA;AAAA,IACF;AACA,IAAA,MAAM,CAAA,GAAIC,8BAAY,IAAI,CAAA;AAC1B,IAAA,MAAM,IAAI,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,SAAA,EAAW,EAAE,CAAA,GAAI,EAAA;AACtC,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,IAAA,EAAM,GAAG,CAAA,GAAI,CAAA;AACpC,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,OAAA,EAAS,EAAE,CAAA,GAAI,CAAA;AACtC,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,EAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAO,SAAS,IAAI,CAAA;AAAA,MACpB,GAAA,EAAK,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,CAAA,GAAI,CAAC,CAAA,CAAA,EAAI,GAAA,GAAM,GAAG,CAAA,CAAA,EAAI,SAAS,KAAK;AAAA,KACjE,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,KAAA,CAAM,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAC1D;AAGA,IAAM,OAAA,GACJ,uPAAA;AAKF,SAAS,UAAA,GAAmC;AAC1C,EAAA,MAAM,MAA4B,EAAC;AACnC,EAAA,MAAM,GAAA,GAAM,EAAA;AACZ,EAAA,KAAA,MAAW,CAAC,EAAA,EAAI,CAAC,KAAK,MAAA,CAAO,OAAA,CAAQC,0BAAY,CAAA,EAAG;AAClD,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI;AACF,MAAA,KAAA,GAAQC,6BAAA,CAAY,IAAyC,EAAE,CAAA;AAAA,IACjE,CAAA,CAAA,MAAQ;AACN,MAAA;AAAA,IACF;AACA,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,EAAA;AAAA,MACA,KAAA,EAAO,SAAS,EAAE,CAAA;AAAA,MAClB,GAAA,EAAK,MAAA;AAAA,QACH,CAAA,EAAG,CAAC,CAAA,CAAE,KAAA,GAAQ,IAAI,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,MAAA,GAAS,IAAI,GAAG,CAAA,CAAA,EAAI,EAAE,KAAA,GAAQ,CAAA,GAAI,GAAG,CAAA,CAAA,EAAI,CAAA,CAAE,MAAA,GAAS,CAAA,GAAI,GAAG,CAAA,CAAA;AAAA,QACvF,OAAA;AAAA,QACA;AAAA;AACF,KACD,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,KAAA,CAAM,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAC1D;AAGA,IAAM,WAAA,GACJ,qEAAA;AAEF,SAAS,oBAAA,GAA6C;AACpD,EAAA,OAAOC,2BAAA,EAAU,CACd,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,IACd,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO,SAAS,IAAI,CAAA;AAAA,IACpB,KAAK,MAAA,CAAO,eAAA,EAAiB,WAAA,EAAaC,4BAAA,CAAW,IAAI,CAAC;AAAA,GAC5D,CAAE,CAAA,CACD,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,KAAA,CAAM,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAClD;AAGA,IAAM,SAAA,GACJ,gUAAA;AAKF,IAAM,WAAA,GAA+B;AAAA,EACnC,KAAA;AAAA,EAAO,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,cAAA;AAAA,EACzD,YAAA;AAAA,EAAc,SAAA;AAAA,EAAW,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,SAAA;AAAA,EAAW,UAAA;AAAA,EAClE,KAAA;AAAA,EAAO,OAAA;AAAA,EAAS,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW;AACnD,CAAA;AACA,IAAM,YAAA,mBAAe,IAAI,GAAA,CAAmB,CAAC,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,cAAA,EAAgB,cAAA,EAAgB,YAAA,EAAc,KAAA,EAAO,KAAK,CAAC,CAAA;AAEjI,SAAS,YAAA,GAAqC;AAC5C,EAAA,MAAM,MAA4B,EAAC;AACnC,EAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,IAAA,IAAI,CAAA;AACJ,IAAA,IAAI;AACF,MAAA,CAAA,GAAIC,kCAAgB,IAAA,EAAM,YAAA,CAAa,IAAI,IAAI,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,IAC1D,CAAA,CAAA,MAAQ;AACN,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,SAAA,EAAY,CAAA,CAAE,QAAQ,CAAA,qCAAA,CAAuC,CAAA;AAC5E,IAAA,KAAA,MAAW,KAAK,CAAA,CAAE,SAAA,QAAiB,IAAA,CAAK,CAAA,UAAA,EAAa,EAAE,CAAA,GAAI,EAAE,CAAA,MAAA,EAAS,CAAA,CAAE,CAAC,CAAA,MAAA,EAAS,CAAA,CAAE,CAAC,CAAA,MAAA,EAAS,CAAA,CAAE,CAAC,CAAA,gCAAA,CAAkC,CAAA;AACnI,IAAA,KAAA,MAAW,CAAA,IAAK,EAAE,UAAA,EAAY;AAC5B,MAAA,MAAM,GAAA,GAAM,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,YAAA;AAC1B,MAAA,MAAM,EAAA,GAAK,GAAA,GAAM,CAAA,CAAE,CAAA,GAAI,IAAI,CAAA,CAAE,CAAA;AAC7B,MAAA,IAAI,GAAA,EAAK,KAAA,CAAM,IAAA,CAAK,CAAA,YAAA,EAAe,CAAA,CAAE,IAAI,CAAC,CAAA,MAAA,EAAS,CAAA,CAAE,CAAC,CAAA,wCAAA,CAA0C,CAAA;AAChG,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,UAAA,EAAa,EAAE,CAAA,MAAA,EAAS,CAAA,CAAE,CAAC,CAAA,MAAA,EAAS,EAAA,GAAK,EAAE,CAAA,MAAA,EAAS,CAAA,CAAE,CAAC,CAAA,gCAAA,CAAkC,CAAA;AAAA,IACtG;AACA,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,EAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAO,SAAS,IAAI,CAAA;AAAA,MACpB,GAAA,EAAK,MAAA,CAAO,CAAA,OAAA,EAAU,CAAA,CAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,CAAA,CAAE,MAAA,GAAS,EAAE,CAAA,CAAA,EAAI,SAAA,EAAW,KAAA,CAAM,IAAA,CAAK,EAAE,CAAC;AAAA,KACjF,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,KAAA,CAAM,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAC1D;AAGA,IAAM,WAAA,GACJ,gcAAA;AASF,IAAM,aAAA,GAAgB;AAAA,EACpB,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU,UAAA;AAAA,EAAY,WAAA;AAAA,EAAa,UAAA;AAAA,EAAY,cAAA;AAAA,EAAgB,IAAA;AAAA,EACzE,KAAA;AAAA,EAAO,SAAA;AAAA,EAAW,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,OAAA;AAAA,EAAS,OAAA;AAAA,EAAS,QAAA;AAAA,EAAU,YAAA;AAAA,EAC9D,IAAA;AAAA,EAAM,QAAA;AAAA,EAAU,QAAA;AAAA,EAAU,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,QAAA;AAAA,EAAU,KAAA;AAAA,EACrE,KAAA;AAAA,EAAO,SAAA;AAAA,EAAW,SAAA;AAAA,EAAW,UAAA;AAAA,EAAY;AAC3C,CAAA;AAEA,SAAS,cAAA,GAAuC;AAC9C,EAAA,MAAM,MAA4B,EAAC;AACnC,EAAA,KAAA,MAAW,QAAQ,aAAA,EAAe;AAChC,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAE,GAAIC,2BAAS,IAAsC,CAAA;AAChE,IAAA,MAAM,MAAA,GAAS,EAAE,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,QAAA,CAAS,IAAI,CAAA,EAAG,MAAA,EAAQ,EAAC,EAAE;AACnE,IAAA,IAAI,KAAA;AACJ,IAAA,IAAI;AACF,MAAA,KAAA,GAAQC,gCAAA,CAAe,QAAQ,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AAAA,IACrD,CAAA,CAAA,MAAQ;AACN,MAAA;AAAA,IACF;AACA,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,EAAA,EAAI,IAAA;AAAA,MACJ,KAAA,EAAO,SAAS,IAAI,CAAA;AAAA,MACpB,GAAA,EAAK,MAAA,CAAO,CAAA,MAAA,EAAS,CAAA,GAAI,EAAE,IAAI,CAAA,GAAI,EAAE,CAAA,CAAA,EAAI,WAAA,EAAa,KAAK;AAAA,KAC5D,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,KAAA,CAAM,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAC1D;AAGA,IAAM,aAAA,GACJ,2nBAAA;AAYF,SAAS,gBAAA,GAAyC;AAChD,EAAA,MAAM,KAAA,GAAQ,EAAA;AACd,EAAA,MAAM,EAAA,GAAK,CAAC,CAAA,KAAsB,IAAA,CAAK,MAAM,CAAA,GAAI,KAAA,GAAQ,GAAG,CAAA,GAAI,GAAA;AAChE,EAAA,MAAM,MAA4B,EAAC;AACnC,EAAA,KAAA,MAAW,CAAC,EAAA,EAAI,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQC,mCAAiB,CAAA,EAAG;AACzD,IAAA,MAAM,CAAC,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,GAAI,GAAA,CAAI,QAAA,IAAY,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACpD,IAAA,MAAM,GAAA,GAAM,CAAA;AACZ,IAAA,MAAM,EAAA,GAAK,CAAC,EAAA,CAAG,EAAE,CAAA,GAAI,GAAA;AACrB,IAAA,MAAM,EAAA,GAAK,CAAC,EAAA,CAAG,EAAE,CAAA,GAAI,GAAA;AACrB,IAAA,MAAM,IAAI,EAAA,CAAG,GAAA,CAAI,IAAI,EAAA,GAAK,EAAE,IAAI,CAAA,GAAI,GAAA;AACpC,IAAA,MAAM,IAAI,EAAA,CAAG,GAAA,CAAI,IAAI,EAAA,GAAK,EAAE,IAAI,CAAA,GAAI,GAAA;AACpC,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,EAAA;AAAA,MACA,KAAA,EAAO,SAAS,EAAE,CAAA;AAAA,MAClB,GAAA,EAAK,OAAO,CAAA,EAAG,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,eAAe,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG,GAAA,CAAI,CAAA,EAAG,GAAG,GAAA,CAAI,CAAA,EAAG,EAAA,EAAI,CAAC;AAAA,KACzF,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,KAAA,CAAM,aAAA,CAAc,CAAA,CAAE,KAAK,CAAC,CAAA;AAC1D;AAEA,IAAM,QAAA,GAA8D;AAAA,EAClE,SAAS,OAAO;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM,8EAAA;AAAA,IACN,SAAS,cAAA;AAAe,GAC1B,CAAA;AAAA,EACA,KAAK,OAAO;AAAA,IACV,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,8FAAA;AAAA,IACN,SAAS,UAAA;AAAW,GACtB,CAAA;AAAA,EACA,KAAK,OAAO;AAAA,IACV,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,gBAAA;AAAA,IACP,IAAA,EAAM,oFAAA;AAAA,IACN,SAAS,UAAA;AAAW,GACtB,CAAA;AAAA,EACA,OAAO,OAAO;AAAA,IACZ,IAAA,EAAM,OAAA;AAAA,IACN,KAAA,EAAO,aAAA;AAAA,IACP,IAAA,EAAM,kGAAA;AAAA,IACN,SAAS,YAAA;AAAa,GACxB,CAAA;AAAA,EACA,SAAS,OAAO;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,iBAAA;AAAA,IACP,IAAA,EAAM,gGAAA;AAAA,IACN,SAAS,cAAA;AAAe,GAC1B,CAAA;AAAA,EACA,WAAW,OAAO;AAAA,IAChB,IAAA,EAAM,WAAA;AAAA,IACN,KAAA,EAAO,YAAA;AAAA,IACP,IAAA,EAAM,yFAAA;AAAA,IACN,SAAS,oBAAA;AAAqB,GAChC,CAAA;AAAA,EACA,WAAW,OAAO;AAAA,IAChB,IAAA,EAAM,WAAA;AAAA,IACN,KAAA,EAAO,iCAAA;AAAA,IACP,IAAA,EAAM,sHAAA;AAAA,IACN,SAAS,gBAAA;AAAiB,GAC5B;AACF,CAAA;AAGO,IAAM,oBAAA,GAAuB,MAAA,CAAO,IAAA,CAAK,QAAQ;AAEjD,SAAS,iBAAiB,IAAA,EAAoC;AACnE,EAAA,MAAM,OAAA,GAAU,SAAS,IAAmB,CAAA;AAC5C,EAAA,OAAO,OAAA,GAAU,SAAQ,GAAI,IAAA;AAC/B","file":"index.cjs","sourcesContent":["/**\n * Domain symbol catalogs — the real symbols an engine uses *inside* a diagram\n * (circuit components, SLD apparatus, P&ID equipment, flowchart node icons),\n * each rendered standalone for the /icons showcase. This is distinct from the\n * per-type representative glyph (assets/icons/*.svg).\n *\n * Each entry's `svg` is a complete, self-styled <svg> so consumers can drop it\n * straight into the page.\n */\nimport type { DiagramType, SLDNodeType, LogicGateType } from \"./core/types\";\nimport { SYMBOLS } from \"./diagrams/circuit/symbols\";\nimport { renderSymbol as sldRenderSymbol, geometryFor } from \"./diagrams/sld/symbols\";\nimport { renderEquip, GEOMETRY as PID_GEOMETRY } from \"./diagrams/pid/symbols\";\nimport { iconNames, renderIcon } from \"./diagrams/flowchart/icons\";\nimport { getGateGeometry } from \"./diagrams/logic/symbols\";\nimport { drawDeviceIcon, iconSize } from \"./diagrams/network/symbols\";\nimport { FLOORPLAN_SYMBOLS } from \"./diagrams/floorplan/catalog\";\n\nexport interface SymbolCatalogEntry {\n id: string;\n label: string;\n svg: string;\n}\n\nexport interface SymbolCatalog {\n type: DiagramType;\n /** Human label for the catalog section, e.g. \"Circuit components\". */\n label: string;\n /** Short description of what the symbols are. */\n note: string;\n entries: SymbolCatalogEntry[];\n}\n\nfunction humanize(id: string): string {\n return id\n .replace(/[_-]+/g, \" \")\n .replace(/\\b\\w/g, (c) => c.toUpperCase());\n}\n\nfunction svgDoc(viewBox: string, css: string, inner: string): string {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${viewBox}\" class=\"lt-symbol\">` +\n `<style>${css}</style>${inner}</svg>`;\n}\n\n// ── Circuit (IEEE 315) ─────────────────────────────────────────────\nconst CIRCUIT_CSS =\n \".schematex-circuit-body{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linejoin:round;stroke-linecap:round}\" +\n \".schematex-circuit-fill{stroke:#0f172a;stroke-width:1.5;fill:#0f172a}\" +\n \".schematex-circuit-wire{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linecap:square}\";\n\nfunction circuitCatalog(): SymbolCatalogEntry[] {\n const symbols = SYMBOLS as Record<string, { length: number; svg: () => string }>;\n const out: SymbolCatalogEntry[] = [];\n for (const [id, def] of Object.entries(symbols)) {\n if (!def) continue;\n const L = def.length || 40;\n const inner = def.svg();\n out.push({ id, label: humanize(id), svg: svgDoc(`-10 -24 ${L + 20} 48`, CIRCUIT_CSS, inner) });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── SLD (IEEE 315 / IEC 60617) ─────────────────────────────────────\nconst SLD_CSS =\n \".lt-sld-stroke{stroke:#0f172a;stroke-width:1.8;fill:none}\" +\n \".lt-sld-stroke-thick{stroke:#0f172a;stroke-width:2.4;fill:none;stroke-linecap:round}\" +\n \".lt-sld-fill{fill:#ffffff;stroke:#0f172a;stroke-width:2}\" +\n \".lt-sld-fill-dark{fill:#0f172a;stroke:#0f172a;stroke-width:1}\" +\n \".lt-sld-dot{fill:#0f172a;stroke:none}\" +\n \".lt-sld-wire{stroke:#0f172a;stroke-width:2;fill:none}\" +\n \".lt-sld-bus{stroke:#0f172a;stroke-width:6;stroke-linecap:square}\" +\n \".lt-sld-symbol-text{font:11px sans-serif;fill:#0f172a;dominant-baseline:middle}\" +\n \".lt-sld-wdg{font:bold 10px sans-serif;fill:#0f172a;dominant-baseline:middle}\";\n\nconst SLD_TYPES: SLDNodeType[] = [\n \"utility\", \"generator\", \"solar\", \"wind\", \"ups\", \"transformer\", \"transformer_dy\",\n \"transformer_yd\", \"transformer_yy\", \"transformer_dd\", \"autotransformer\",\n \"transformer_3winding\", \"breaker\", \"breaker_vacuum\", \"recloser\", \"switch\",\n \"switch_load\", \"ground_switch\", \"sectionalizer\", \"fuse\", \"fuse_cl\", \"motor\",\n \"load\", \"capacitor_bank\", \"harmonic_filter\", \"vfd\", \"ats\", \"ct\", \"pt\", \"relay\",\n \"surge_arrester\", \"watthour_meter\", \"demand_meter\", \"ground_fault\", \"bus\",\n \"bus_tie\", \"hub\",\n];\n\nfunction sldCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const type of SLD_TYPES) {\n let inner: string;\n try {\n inner = sldRenderSymbol(type);\n } catch {\n continue;\n }\n const g = geometryFor(type);\n const w = Math.max(g.halfWidth, 18) + 12;\n const top = Math.min(g.topY, -22) - 8;\n const bot = Math.max(g.bottomY, 22) + 8;\n out.push({\n id: type,\n label: humanize(type),\n svg: svgDoc(`${-w} ${top} ${2 * w} ${bot - top}`, SLD_CSS, inner),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── P&ID (ISA-5.1) equipment ───────────────────────────────────────\nconst PID_CSS =\n \".lt-pid-equip{fill:#ffffff;stroke:#1d1d1d;stroke-width:1.6}\" +\n \".lt-pid-equip-tag{font:600 11px system-ui,sans-serif;fill:#1d1d1d}\" +\n \".lt-pid-process{stroke:#1d1d1d;stroke-width:2.6;fill:none}\" +\n \".lt-pid-process-min{stroke:#1d1d1d;stroke-width:1.5;fill:none}\";\n\nfunction pidCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n const pad = 12;\n for (const [id, g] of Object.entries(PID_GEOMETRY)) {\n let inner: string;\n try {\n inner = renderEquip(id as Parameters<typeof renderEquip>[0], \"\");\n } catch {\n continue;\n }\n out.push({\n id,\n label: humanize(id),\n svg: svgDoc(\n `${-g.width / 2 - pad} ${-g.height / 2 - pad} ${g.width + 2 * pad} ${g.height + 2 * pad}`,\n PID_CSS,\n inner,\n ),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Flowchart node icons ───────────────────────────────────────────\nconst FC_ICON_CSS =\n \".sx-fc-icon{stroke:#0f172a;fill:none}.sx-fc-icon-fill{fill:#0f172a}\";\n\nfunction flowchartIconCatalog(): SymbolCatalogEntry[] {\n return iconNames()\n .map((name) => ({\n id: name,\n label: humanize(name),\n svg: svgDoc(\"-13 -13 26 26\", FC_ICON_CSS, renderIcon(name)),\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Logic gates (IEEE 91) ──────────────────────────────────────────\nconst LOGIC_CSS =\n \".schematex-logic-gate-body{fill:none;stroke:#0f172a;stroke-width:1.75;stroke-linejoin:round}\" +\n \".schematex-logic-bubble{fill:#ffffff;stroke:#0f172a;stroke-width:1.5}\" +\n \".schematex-logic-wire{stroke:#0f172a;stroke-width:1.5;fill:none;stroke-linecap:square}\" +\n \".schematex-logic-gate-iec-label{font:bold 13px sans-serif;fill:#0f172a}\";\n\nconst LOGIC_TYPES: LogicGateType[] = [\n \"AND\", \"OR\", \"NOT\", \"NAND\", \"NOR\", \"XOR\", \"XNOR\", \"BUF\", \"TRISTATE_BUF\",\n \"OPEN_DRAIN\", \"SCHMITT\", \"DFF\", \"JKFF\", \"SRFF\", \"TFF\", \"LATCH_D\", \"LATCH_SR\",\n \"MUX\", \"DEMUX\", \"DECODER\", \"ENCODER\", \"COUNTER\", \"SHIFT_REG\",\n];\nconst SINGLE_INPUT = new Set<LogicGateType>([\"NOT\", \"BUF\", \"SCHMITT\", \"TRISTATE_BUF\", \"TRISTATE_INV\", \"OPEN_DRAIN\", \"DFF\", \"TFF\"]);\n\nfunction logicCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const type of LOGIC_TYPES) {\n let g;\n try {\n g = getGateGeometry(type, SINGLE_INPUT.has(type) ? 1 : 2);\n } catch {\n continue;\n }\n const parts = [`<path d=\"${g.ansiPath}\" class=\"schematex-logic-gate-body\"/>`];\n for (const p of g.inputPins) parts.push(`<line x1=\"${p.x - 10}\" y1=\"${p.y}\" x2=\"${p.x}\" y2=\"${p.y}\" class=\"schematex-logic-wire\"/>`);\n for (const p of g.outputPins) {\n const bub = p.bubble || g.outputBubble;\n const ox = bub ? p.x + 6 : p.x;\n if (bub) parts.push(`<circle cx=\"${p.x + 3}\" cy=\"${p.y}\" r=\"3\" class=\"schematex-logic-bubble\"/>`);\n parts.push(`<line x1=\"${ox}\" y1=\"${p.y}\" x2=\"${ox + 10}\" y2=\"${p.y}\" class=\"schematex-logic-wire\"/>`);\n }\n out.push({\n id: type,\n label: humanize(type),\n svg: svgDoc(`-14 -6 ${g.width + 28} ${g.height + 12}`, LOGIC_CSS, parts.join(\"\")),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Network devices (Cisco-convention icons) ───────────────────────\nconst NETWORK_CSS =\n \".sx-net-body{fill:#ffffff;stroke:#0f172a;stroke-width:2}\" +\n \".sx-net-detail{fill:none;stroke:#0f172a;stroke-width:1}\" +\n \".sx-net-glyph{fill:#2563eb;stroke:none}\" +\n \".sx-net-glyph-line{fill:none;stroke:#2563eb;stroke-width:1.4}\" +\n \".sx-net-icontext{font:700 8px sans-serif;fill:#2563eb}\" +\n \".sx-net-cloud-body{fill:#f1f5f9;stroke:#0f172a;stroke-width:2}\" +\n \".sx-net-cloudtext{font:600 13px sans-serif;fill:#0f172a}\" +\n \".sx-net-bus{stroke:#0f172a;stroke-width:4;stroke-linecap:round}\";\n\nconst NETWORK_KINDS = [\n \"router\", \"switch\", \"l3switch\", \"poeswitch\", \"firewall\", \"loadbalancer\", \"ap\",\n \"wlc\", \"gateway\", \"modem\", \"ids\", \"proxy\", \"vpngw\", \"server\", \"serverfarm\",\n \"pc\", \"laptop\", \"mobile\", \"ipphone\", \"printer\", \"storage\", \"camera\", \"nvr\",\n \"dvr\", \"encoder\", \"monitor\", \"internet\", \"cloud\",\n] as const;\n\nfunction networkCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const kind of NETWORK_KINDS) {\n const { w, h } = iconSize(kind as Parameters<typeof iconSize>[0]);\n const device = { id: kind, kind, label: humanize(kind), groups: [] } as Parameters<typeof drawDeviceIcon>[0];\n let inner: string;\n try {\n inner = drawDeviceIcon(device, { x: 0, y: 0, w, h });\n } catch {\n continue;\n }\n out.push({\n id: kind,\n label: humanize(kind),\n svg: svgDoc(`-6 -6 ${w + 12} ${h + 12}`, NETWORK_CSS, inner),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Floor plan furniture & fixtures (AGS plan view) ────────────────\nconst FLOORPLAN_CSS =\n \".sx-fp-furn{fill:#ffffff;stroke:#475569;stroke-width:1.2}\" +\n \".sx-fp-furn-nofill{fill:none;stroke:#475569;stroke-width:1.2}\" +\n \".sx-fp-furn-line{fill:none;stroke:#475569;stroke-width:1}\" +\n \".sx-fp-furn-dash{fill:none;stroke:#475569;stroke-width:1;stroke-dasharray:4 3}\" +\n \".sx-fp-furn-dot{fill:#475569;stroke:none}\" +\n \".sx-fp-furn-solid{fill:#334155;stroke:none}\" +\n \".sx-fp-board-inner{fill:#ffffff;stroke:none}\" +\n \".sx-fp-chair{fill:#f1f5f9;stroke:#475569;stroke-width:1}\" +\n \".sx-fp-rug{fill:none;stroke:#94a3b8;stroke-width:1.2;stroke-dasharray:5 4}\" +\n \".sx-fp-hatch{fill:none;stroke:#cbd5e1;stroke-width:1}\" +\n \".sx-fp-furn-text{font-weight:600;font-family:sans-serif;fill:#475569}\";\n\nfunction floorplanCatalog(): SymbolCatalogEntry[] {\n const scale = 40; // px per meter for the standalone sheet\n const px = (m: number): number => Math.round(m * scale * 100) / 100;\n const out: SymbolCatalogEntry[] = [];\n for (const [id, def] of Object.entries(FLOORPLAN_SYMBOLS)) {\n const [mt, mr, mb, ml] = def.envelope ?? [0, 0, 0, 0];\n const pad = 5;\n const x0 = -px(ml) - pad;\n const y0 = -px(mt) - pad;\n const w = px(def.w + ml + mr) + 2 * pad;\n const h = px(def.h + mt + mb) + 2 * pad;\n out.push({\n id,\n label: humanize(id),\n svg: svgDoc(`${x0} ${y0} ${w} ${h}`, FLOORPLAN_CSS, def.draw({ w: def.w, h: def.h, px })),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\nconst CATALOGS: Partial<Record<DiagramType, () => SymbolCatalog>> = {\n circuit: () => ({\n type: \"circuit\",\n label: \"Circuit components\",\n note: \"IEEE 315 / ANSI Y32.2 schematic symbols the netlist/positional engine draws.\",\n entries: circuitCatalog(),\n }),\n sld: () => ({\n type: \"sld\",\n label: \"Single-line apparatus\",\n note: \"IEEE 315 power-apparatus symbols — sources, transformers, switching, protection, loads.\",\n entries: sldCatalog(),\n }),\n pid: () => ({\n type: \"pid\",\n label: \"P&ID equipment\",\n note: \"ANSI/ISA-5.1 process equipment — tanks, columns, exchangers, pumps, and more.\",\n entries: pidCatalog(),\n }),\n logic: () => ({\n type: \"logic\",\n label: \"Logic gates\",\n note: \"IEEE 91 ANSI gate bodies — combinational gates, flip-flops, latches, MUX/decoder, counters.\",\n entries: logicCatalog(),\n }),\n network: () => ({\n type: \"network\",\n label: \"Network devices\",\n note: \"Cisco-convention topology icons — routers, switches, firewalls, servers, cameras, clouds.\",\n entries: networkCatalog(),\n }),\n flowchart: () => ({\n type: \"flowchart\",\n label: \"Node icons\",\n note: \"Inline node icons (servers, databases, cloud, gear…) usable on any flowchart node.\",\n entries: flowchartIconCatalog(),\n }),\n floorplan: () => ({\n type: \"floorplan\",\n label: \"Floor plan furniture & fixtures\",\n note: \"AGS plan-view symbols — auto-seated tables, beds, kitchen/bath fixtures, classroom and event/banquet furniture.\",\n entries: floorplanCatalog(),\n }),\n};\n\n/** Diagram types that ship a renderable domain symbol catalog. */\nexport const SYMBOL_CATALOG_TYPES = Object.keys(CATALOGS) as DiagramType[];\n\nexport function getSymbolCatalog(type: string): SymbolCatalog | null {\n const factory = CATALOGS[type as DiagramType];\n return factory ? factory() : null;\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- export { S as SchematexConfig, p as parse, a as parseResult, r as render, b as renderPreview, c as renderResult } from './api-DAUFeETp.cjs';
2
- import { D as DiagramPlugin, a as DiagramType } from './diagnostics-DSxLohjY.cjs';
3
- export { S as SchematexDiagnostic, b as SchematexParseResult, c as SchematexRenderResult, d as SchematexResultStatus } from './diagnostics-DSxLohjY.cjs';
1
+ export { S as SchematexConfig, p as parse, a as parseResult, r as render, b as renderPreview, c as renderResult } from './api-DH9a1V6Q.cjs';
2
+ import { D as DiagramPlugin, a as DiagramType } from './diagnostics-CKacYRIE.cjs';
3
+ export { S as SchematexDiagnostic, b as SchematexParseResult, c as SchematexRenderResult, d as SchematexResultStatus } from './diagnostics-CKacYRIE.cjs';
4
4
  export { genogram } from './diagrams/genogram/index.cjs';
5
5
  export { ecomap } from './diagrams/ecomap/index.cjs';
6
6
  export { pedigree } from './diagrams/pedigree/index.cjs';
@@ -15,7 +15,7 @@ export { sld } from './diagrams/sld/index.cjs';
15
15
  export { entity } from './diagrams/entity/index.cjs';
16
16
  export { fishbone } from './diagrams/fishbone/index.cjs';
17
17
  export { venn } from './diagrams/venn/index.cjs';
18
- export { B as BASE_THEMES, a as BIOLOGY_TOKENS, b as BaseTheme, c as BiologyTokens, N as NETWORK_TOKENS, d as NetworkTokens, P as PERSON_TOKENS, e as PETRI_TOKENS, f as PersonTokens, g as PetriTokens, R as ResolvedTheme, T as ThemeName, h as TimelineTokens, V as VENN_TOKENS, i as VennTokens, j as flowchart, r as resolveBaseTheme, k as resolveBiologyTheme, l as resolveFishboneTheme, m as resolveGenogramTheme, n as resolveNetworkTheme, o as resolvePersonTheme, p as resolvePetriTheme, q as resolveTimelineTheme, s as resolveVennTheme } from './index-CDDfbChc.cjs';
18
+ export { B as BASE_THEMES, a as BIOLOGY_TOKENS, b as BaseTheme, c as BiologyTokens, N as NETWORK_TOKENS, d as NetworkTokens, P as PERSON_TOKENS, e as PETRI_TOKENS, f as PersonTokens, g as PetriTokens, R as ResolvedTheme, T as ThemeName, h as TimelineTokens, V as VENN_TOKENS, i as VennTokens, j as flowchart, r as resolveBaseTheme, k as resolveBiologyTheme, l as resolveFishboneTheme, m as resolveGenogramTheme, n as resolveNetworkTheme, o as resolvePersonTheme, p as resolvePetriTheme, q as resolveTimelineTheme, s as resolveVennTheme } from './index-Dth_Wjwf.cjs';
19
19
  export { orgchart } from './diagrams/orgchart/index.cjs';
20
20
  export { siteplan } from './diagrams/siteplan/index.cjs';
21
21
 
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { S as SchematexConfig, p as parse, a as parseResult, r as render, b as renderPreview, c as renderResult } from './api-C9ufsgIb.js';
2
- import { D as DiagramPlugin, a as DiagramType } from './diagnostics-DSxLohjY.js';
3
- export { S as SchematexDiagnostic, b as SchematexParseResult, c as SchematexRenderResult, d as SchematexResultStatus } from './diagnostics-DSxLohjY.js';
1
+ export { S as SchematexConfig, p as parse, a as parseResult, r as render, b as renderPreview, c as renderResult } from './api-DsAwn8ne.js';
2
+ import { D as DiagramPlugin, a as DiagramType } from './diagnostics-CKacYRIE.js';
3
+ export { S as SchematexDiagnostic, b as SchematexParseResult, c as SchematexRenderResult, d as SchematexResultStatus } from './diagnostics-CKacYRIE.js';
4
4
  export { genogram } from './diagrams/genogram/index.js';
5
5
  export { ecomap } from './diagrams/ecomap/index.js';
6
6
  export { pedigree } from './diagrams/pedigree/index.js';
@@ -15,7 +15,7 @@ export { sld } from './diagrams/sld/index.js';
15
15
  export { entity } from './diagrams/entity/index.js';
16
16
  export { fishbone } from './diagrams/fishbone/index.js';
17
17
  export { venn } from './diagrams/venn/index.js';
18
- export { B as BASE_THEMES, a as BIOLOGY_TOKENS, b as BaseTheme, c as BiologyTokens, N as NETWORK_TOKENS, d as NetworkTokens, P as PERSON_TOKENS, e as PETRI_TOKENS, f as PersonTokens, g as PetriTokens, R as ResolvedTheme, T as ThemeName, h as TimelineTokens, V as VENN_TOKENS, i as VennTokens, j as flowchart, r as resolveBaseTheme, k as resolveBiologyTheme, l as resolveFishboneTheme, m as resolveGenogramTheme, n as resolveNetworkTheme, o as resolvePersonTheme, p as resolvePetriTheme, q as resolveTimelineTheme, s as resolveVennTheme } from './index-CZa2pU0T.js';
18
+ export { B as BASE_THEMES, a as BIOLOGY_TOKENS, b as BaseTheme, c as BiologyTokens, N as NETWORK_TOKENS, d as NetworkTokens, P as PERSON_TOKENS, e as PETRI_TOKENS, f as PersonTokens, g as PetriTokens, R as ResolvedTheme, T as ThemeName, h as TimelineTokens, V as VENN_TOKENS, i as VennTokens, j as flowchart, r as resolveBaseTheme, k as resolveBiologyTheme, l as resolveFishboneTheme, m as resolveGenogramTheme, n as resolveNetworkTheme, o as resolvePersonTheme, p as resolvePetriTheme, q as resolveTimelineTheme, s as resolveVennTheme } from './index-BmJxw0lf.js';
19
19
  export { orgchart } from './diagrams/orgchart/index.js';
20
20
  export { siteplan } from './diagrams/siteplan/index.js';
21
21
 
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
- import { FLOORPLAN_SYMBOLS, iconSize, drawDeviceIcon, GEOMETRY, renderEquip } from './chunk-LZHLFNM3.js';
2
- export { bowtie, causalloop, comparison, decisiontree, epc, eventtree, faulttree, floorplan, fmea, gitgraph, idef0, markov, network, parse, parseResult, pert, petri, pid, playbook, prisma, rbd, render, renderPreview, renderResult, sequence, state, threatmodel, timeline, umlclass, usecase, welding } from './chunk-LZHLFNM3.js';
1
+ import { FLOORPLAN_SYMBOLS, iconSize, drawDeviceIcon, GEOMETRY, renderEquip } from './chunk-BP52JB7C.js';
2
+ export { bowtie, causalloop, comparison, decisiontree, epc, eventtree, faulttree, floorplan, fmea, gitgraph, idef0, markov, network, parse, parseResult, pert, petri, pid, playbook, prisma, rbd, render, renderPreview, renderResult, sequence, state, threatmodel, timeline, umlclass, usecase, welding } from './chunk-BP52JB7C.js';
3
3
  export { orgchart } from './chunk-EB7T5SEO.js';
4
4
  export { siteplan } from './chunk-PGMKMIGM.js';
5
- import { EXTRA_SYMBOLS, SYMBOLS } from './chunk-FA6Y4QRS.js';
6
- export { circuit } from './chunk-FA6Y4QRS.js';
5
+ import { SYMBOLS } from './chunk-5IPT6OFE.js';
6
+ export { circuit } from './chunk-5IPT6OFE.js';
7
7
  export { blockdiagram } from './chunk-P4U565XH.js';
8
8
  export { ladder } from './chunk-I7UYVCKH.js';
9
- import { renderSymbol, geometryFor } from './chunk-6GVFKOSH.js';
10
- export { sld } from './chunk-6GVFKOSH.js';
9
+ import { renderSymbol, geometryFor } from './chunk-OZD4CYAK.js';
10
+ export { sld } from './chunk-OZD4CYAK.js';
11
11
  export { entity } from './chunk-2IRYXK4M.js';
12
12
  export { fishbone } from './chunk-2ZHP4TXP.js';
13
13
  export { venn } from './chunk-KUSW5I2P.js';
@@ -37,12 +37,9 @@ function svgDoc(viewBox, css, inner) {
37
37
  }
38
38
  var CIRCUIT_CSS = ".schematex-circuit-body{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linejoin:round;stroke-linecap:round}.schematex-circuit-fill{stroke:#0f172a;stroke-width:1.5;fill:#0f172a}.schematex-circuit-wire{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linecap:square}";
39
39
  function circuitCatalog() {
40
- const merged = {
41
- ...SYMBOLS,
42
- ...EXTRA_SYMBOLS
43
- };
40
+ const symbols = SYMBOLS;
44
41
  const out = [];
45
- for (const [id, def] of Object.entries(merged)) {
42
+ for (const [id, def] of Object.entries(symbols)) {
46
43
  if (!def) continue;
47
44
  const L = def.length || 40;
48
45
  const inner = def.svg();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/symbols-catalog.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Domain symbol catalogs — the real symbols an engine uses *inside* a diagram\n * (circuit components, SLD apparatus, P&ID equipment, flowchart node icons),\n * each rendered standalone for the /icons showcase. This is distinct from the\n * per-type representative glyph (assets/icons/*.svg).\n *\n * Each entry's `svg` is a complete, self-styled <svg> so consumers can drop it\n * straight into the page.\n */\nimport type { DiagramType, SLDNodeType, LogicGateType } from \"./core/types\";\nimport { SYMBOLS, EXTRA_SYMBOLS } from \"./diagrams/circuit/symbols\";\nimport { renderSymbol as sldRenderSymbol, geometryFor } from \"./diagrams/sld/symbols\";\nimport { renderEquip, GEOMETRY as PID_GEOMETRY } from \"./diagrams/pid/symbols\";\nimport { iconNames, renderIcon } from \"./diagrams/flowchart/icons\";\nimport { getGateGeometry } from \"./diagrams/logic/symbols\";\nimport { drawDeviceIcon, iconSize } from \"./diagrams/network/symbols\";\nimport { FLOORPLAN_SYMBOLS } from \"./diagrams/floorplan/catalog\";\n\nexport interface SymbolCatalogEntry {\n id: string;\n label: string;\n svg: string;\n}\n\nexport interface SymbolCatalog {\n type: DiagramType;\n /** Human label for the catalog section, e.g. \"Circuit components\". */\n label: string;\n /** Short description of what the symbols are. */\n note: string;\n entries: SymbolCatalogEntry[];\n}\n\nfunction humanize(id: string): string {\n return id\n .replace(/[_-]+/g, \" \")\n .replace(/\\b\\w/g, (c) => c.toUpperCase());\n}\n\nfunction svgDoc(viewBox: string, css: string, inner: string): string {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${viewBox}\" class=\"lt-symbol\">` +\n `<style>${css}</style>${inner}</svg>`;\n}\n\n// ── Circuit (IEEE 315) ─────────────────────────────────────────────\nconst CIRCUIT_CSS =\n \".schematex-circuit-body{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linejoin:round;stroke-linecap:round}\" +\n \".schematex-circuit-fill{stroke:#0f172a;stroke-width:1.5;fill:#0f172a}\" +\n \".schematex-circuit-wire{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linecap:square}\";\n\nfunction circuitCatalog(): SymbolCatalogEntry[] {\n const merged: Record<string, { length: number; svg: () => string }> = {\n ...(SYMBOLS as Record<string, { length: number; svg: () => string }>),\n ...(EXTRA_SYMBOLS as Record<string, { length: number; svg: () => string }>),\n };\n const out: SymbolCatalogEntry[] = [];\n for (const [id, def] of Object.entries(merged)) {\n if (!def) continue;\n const L = def.length || 40;\n const inner = def.svg();\n out.push({ id, label: humanize(id), svg: svgDoc(`-10 -24 ${L + 20} 48`, CIRCUIT_CSS, inner) });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── SLD (IEEE 315 / IEC 60617) ─────────────────────────────────────\nconst SLD_CSS =\n \".lt-sld-stroke{stroke:#0f172a;stroke-width:1.8;fill:none}\" +\n \".lt-sld-stroke-thick{stroke:#0f172a;stroke-width:2.4;fill:none;stroke-linecap:round}\" +\n \".lt-sld-fill{fill:#ffffff;stroke:#0f172a;stroke-width:2}\" +\n \".lt-sld-fill-dark{fill:#0f172a;stroke:#0f172a;stroke-width:1}\" +\n \".lt-sld-dot{fill:#0f172a;stroke:none}\" +\n \".lt-sld-wire{stroke:#0f172a;stroke-width:2;fill:none}\" +\n \".lt-sld-bus{stroke:#0f172a;stroke-width:6;stroke-linecap:square}\" +\n \".lt-sld-symbol-text{font:11px sans-serif;fill:#0f172a;dominant-baseline:middle}\" +\n \".lt-sld-wdg{font:bold 10px sans-serif;fill:#0f172a;dominant-baseline:middle}\";\n\nconst SLD_TYPES: SLDNodeType[] = [\n \"utility\", \"generator\", \"solar\", \"wind\", \"ups\", \"transformer\", \"transformer_dy\",\n \"transformer_yd\", \"transformer_yy\", \"transformer_dd\", \"autotransformer\",\n \"transformer_3winding\", \"breaker\", \"breaker_vacuum\", \"recloser\", \"switch\",\n \"switch_load\", \"ground_switch\", \"sectionalizer\", \"fuse\", \"fuse_cl\", \"motor\",\n \"load\", \"capacitor_bank\", \"harmonic_filter\", \"vfd\", \"ats\", \"ct\", \"pt\", \"relay\",\n \"surge_arrester\", \"watthour_meter\", \"demand_meter\", \"ground_fault\", \"bus\",\n \"bus_tie\", \"hub\",\n];\n\nfunction sldCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const type of SLD_TYPES) {\n let inner: string;\n try {\n inner = sldRenderSymbol(type);\n } catch {\n continue;\n }\n const g = geometryFor(type);\n const w = Math.max(g.halfWidth, 18) + 12;\n const top = Math.min(g.topY, -22) - 8;\n const bot = Math.max(g.bottomY, 22) + 8;\n out.push({\n id: type,\n label: humanize(type),\n svg: svgDoc(`${-w} ${top} ${2 * w} ${bot - top}`, SLD_CSS, inner),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── P&ID (ISA-5.1) equipment ───────────────────────────────────────\nconst PID_CSS =\n \".lt-pid-equip{fill:#ffffff;stroke:#1d1d1d;stroke-width:1.6}\" +\n \".lt-pid-equip-tag{font:600 11px system-ui,sans-serif;fill:#1d1d1d}\" +\n \".lt-pid-process{stroke:#1d1d1d;stroke-width:2.6;fill:none}\" +\n \".lt-pid-process-min{stroke:#1d1d1d;stroke-width:1.5;fill:none}\";\n\nfunction pidCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n const pad = 12;\n for (const [id, g] of Object.entries(PID_GEOMETRY)) {\n let inner: string;\n try {\n inner = renderEquip(id as Parameters<typeof renderEquip>[0], \"\");\n } catch {\n continue;\n }\n out.push({\n id,\n label: humanize(id),\n svg: svgDoc(\n `${-g.width / 2 - pad} ${-g.height / 2 - pad} ${g.width + 2 * pad} ${g.height + 2 * pad}`,\n PID_CSS,\n inner,\n ),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Flowchart node icons ───────────────────────────────────────────\nconst FC_ICON_CSS =\n \".sx-fc-icon{stroke:#0f172a;fill:none}.sx-fc-icon-fill{fill:#0f172a}\";\n\nfunction flowchartIconCatalog(): SymbolCatalogEntry[] {\n return iconNames()\n .map((name) => ({\n id: name,\n label: humanize(name),\n svg: svgDoc(\"-13 -13 26 26\", FC_ICON_CSS, renderIcon(name)),\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Logic gates (IEEE 91) ──────────────────────────────────────────\nconst LOGIC_CSS =\n \".schematex-logic-gate-body{fill:none;stroke:#0f172a;stroke-width:1.75;stroke-linejoin:round}\" +\n \".schematex-logic-bubble{fill:#ffffff;stroke:#0f172a;stroke-width:1.5}\" +\n \".schematex-logic-wire{stroke:#0f172a;stroke-width:1.5;fill:none;stroke-linecap:square}\" +\n \".schematex-logic-gate-iec-label{font:bold 13px sans-serif;fill:#0f172a}\";\n\nconst LOGIC_TYPES: LogicGateType[] = [\n \"AND\", \"OR\", \"NOT\", \"NAND\", \"NOR\", \"XOR\", \"XNOR\", \"BUF\", \"TRISTATE_BUF\",\n \"OPEN_DRAIN\", \"SCHMITT\", \"DFF\", \"JKFF\", \"SRFF\", \"TFF\", \"LATCH_D\", \"LATCH_SR\",\n \"MUX\", \"DEMUX\", \"DECODER\", \"ENCODER\", \"COUNTER\", \"SHIFT_REG\",\n];\nconst SINGLE_INPUT = new Set<LogicGateType>([\"NOT\", \"BUF\", \"SCHMITT\", \"TRISTATE_BUF\", \"TRISTATE_INV\", \"OPEN_DRAIN\", \"DFF\", \"TFF\"]);\n\nfunction logicCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const type of LOGIC_TYPES) {\n let g;\n try {\n g = getGateGeometry(type, SINGLE_INPUT.has(type) ? 1 : 2);\n } catch {\n continue;\n }\n const parts = [`<path d=\"${g.ansiPath}\" class=\"schematex-logic-gate-body\"/>`];\n for (const p of g.inputPins) parts.push(`<line x1=\"${p.x - 10}\" y1=\"${p.y}\" x2=\"${p.x}\" y2=\"${p.y}\" class=\"schematex-logic-wire\"/>`);\n for (const p of g.outputPins) {\n const bub = p.bubble || g.outputBubble;\n const ox = bub ? p.x + 6 : p.x;\n if (bub) parts.push(`<circle cx=\"${p.x + 3}\" cy=\"${p.y}\" r=\"3\" class=\"schematex-logic-bubble\"/>`);\n parts.push(`<line x1=\"${ox}\" y1=\"${p.y}\" x2=\"${ox + 10}\" y2=\"${p.y}\" class=\"schematex-logic-wire\"/>`);\n }\n out.push({\n id: type,\n label: humanize(type),\n svg: svgDoc(`-14 -6 ${g.width + 28} ${g.height + 12}`, LOGIC_CSS, parts.join(\"\")),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Network devices (Cisco-convention icons) ───────────────────────\nconst NETWORK_CSS =\n \".sx-net-body{fill:#ffffff;stroke:#0f172a;stroke-width:2}\" +\n \".sx-net-detail{fill:none;stroke:#0f172a;stroke-width:1}\" +\n \".sx-net-glyph{fill:#2563eb;stroke:none}\" +\n \".sx-net-glyph-line{fill:none;stroke:#2563eb;stroke-width:1.4}\" +\n \".sx-net-icontext{font:700 8px sans-serif;fill:#2563eb}\" +\n \".sx-net-cloud-body{fill:#f1f5f9;stroke:#0f172a;stroke-width:2}\" +\n \".sx-net-cloudtext{font:600 13px sans-serif;fill:#0f172a}\" +\n \".sx-net-bus{stroke:#0f172a;stroke-width:4;stroke-linecap:round}\";\n\nconst NETWORK_KINDS = [\n \"router\", \"switch\", \"l3switch\", \"poeswitch\", \"firewall\", \"loadbalancer\", \"ap\",\n \"wlc\", \"gateway\", \"modem\", \"ids\", \"proxy\", \"vpngw\", \"server\", \"serverfarm\",\n \"pc\", \"laptop\", \"mobile\", \"ipphone\", \"printer\", \"storage\", \"camera\", \"nvr\",\n \"dvr\", \"encoder\", \"monitor\", \"internet\", \"cloud\",\n] as const;\n\nfunction networkCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const kind of NETWORK_KINDS) {\n const { w, h } = iconSize(kind as Parameters<typeof iconSize>[0]);\n const device = { id: kind, kind, label: humanize(kind), groups: [] } as Parameters<typeof drawDeviceIcon>[0];\n let inner: string;\n try {\n inner = drawDeviceIcon(device, { x: 0, y: 0, w, h });\n } catch {\n continue;\n }\n out.push({\n id: kind,\n label: humanize(kind),\n svg: svgDoc(`-6 -6 ${w + 12} ${h + 12}`, NETWORK_CSS, inner),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Floor plan furniture & fixtures (AGS plan view) ────────────────\nconst FLOORPLAN_CSS =\n \".sx-fp-furn{fill:#ffffff;stroke:#475569;stroke-width:1.2}\" +\n \".sx-fp-furn-nofill{fill:none;stroke:#475569;stroke-width:1.2}\" +\n \".sx-fp-furn-line{fill:none;stroke:#475569;stroke-width:1}\" +\n \".sx-fp-furn-dash{fill:none;stroke:#475569;stroke-width:1;stroke-dasharray:4 3}\" +\n \".sx-fp-furn-dot{fill:#475569;stroke:none}\" +\n \".sx-fp-furn-solid{fill:#334155;stroke:none}\" +\n \".sx-fp-board-inner{fill:#ffffff;stroke:none}\" +\n \".sx-fp-chair{fill:#f1f5f9;stroke:#475569;stroke-width:1}\" +\n \".sx-fp-rug{fill:none;stroke:#94a3b8;stroke-width:1.2;stroke-dasharray:5 4}\" +\n \".sx-fp-hatch{fill:none;stroke:#cbd5e1;stroke-width:1}\" +\n \".sx-fp-furn-text{font-weight:600;font-family:sans-serif;fill:#475569}\";\n\nfunction floorplanCatalog(): SymbolCatalogEntry[] {\n const scale = 40; // px per meter for the standalone sheet\n const px = (m: number): number => Math.round(m * scale * 100) / 100;\n const out: SymbolCatalogEntry[] = [];\n for (const [id, def] of Object.entries(FLOORPLAN_SYMBOLS)) {\n const [mt, mr, mb, ml] = def.envelope ?? [0, 0, 0, 0];\n const pad = 5;\n const x0 = -px(ml) - pad;\n const y0 = -px(mt) - pad;\n const w = px(def.w + ml + mr) + 2 * pad;\n const h = px(def.h + mt + mb) + 2 * pad;\n out.push({\n id,\n label: humanize(id),\n svg: svgDoc(`${x0} ${y0} ${w} ${h}`, FLOORPLAN_CSS, def.draw({ w: def.w, h: def.h, px })),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\nconst CATALOGS: Partial<Record<DiagramType, () => SymbolCatalog>> = {\n circuit: () => ({\n type: \"circuit\",\n label: \"Circuit components\",\n note: \"IEEE 315 / ANSI Y32.2 schematic symbols the netlist/positional engine draws.\",\n entries: circuitCatalog(),\n }),\n sld: () => ({\n type: \"sld\",\n label: \"Single-line apparatus\",\n note: \"IEEE 315 power-apparatus symbols — sources, transformers, switching, protection, loads.\",\n entries: sldCatalog(),\n }),\n pid: () => ({\n type: \"pid\",\n label: \"P&ID equipment\",\n note: \"ANSI/ISA-5.1 process equipment — tanks, columns, exchangers, pumps, and more.\",\n entries: pidCatalog(),\n }),\n logic: () => ({\n type: \"logic\",\n label: \"Logic gates\",\n note: \"IEEE 91 ANSI gate bodies — combinational gates, flip-flops, latches, MUX/decoder, counters.\",\n entries: logicCatalog(),\n }),\n network: () => ({\n type: \"network\",\n label: \"Network devices\",\n note: \"Cisco-convention topology icons — routers, switches, firewalls, servers, cameras, clouds.\",\n entries: networkCatalog(),\n }),\n flowchart: () => ({\n type: \"flowchart\",\n label: \"Node icons\",\n note: \"Inline node icons (servers, databases, cloud, gear…) usable on any flowchart node.\",\n entries: flowchartIconCatalog(),\n }),\n floorplan: () => ({\n type: \"floorplan\",\n label: \"Floor plan furniture & fixtures\",\n note: \"AGS plan-view symbols — auto-seated tables, beds, kitchen/bath fixtures, classroom and event/banquet furniture.\",\n entries: floorplanCatalog(),\n }),\n};\n\n/** Diagram types that ship a renderable domain symbol catalog. */\nexport const SYMBOL_CATALOG_TYPES = Object.keys(CATALOGS) as DiagramType[];\n\nexport function getSymbolCatalog(type: string): SymbolCatalog | null {\n const factory = CATALOGS[type as DiagramType];\n return factory ? factory() : null;\n}\n"]}
1
+ {"version":3,"sources":["../src/symbols-catalog.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Domain symbol catalogs — the real symbols an engine uses *inside* a diagram\n * (circuit components, SLD apparatus, P&ID equipment, flowchart node icons),\n * each rendered standalone for the /icons showcase. This is distinct from the\n * per-type representative glyph (assets/icons/*.svg).\n *\n * Each entry's `svg` is a complete, self-styled <svg> so consumers can drop it\n * straight into the page.\n */\nimport type { DiagramType, SLDNodeType, LogicGateType } from \"./core/types\";\nimport { SYMBOLS } from \"./diagrams/circuit/symbols\";\nimport { renderSymbol as sldRenderSymbol, geometryFor } from \"./diagrams/sld/symbols\";\nimport { renderEquip, GEOMETRY as PID_GEOMETRY } from \"./diagrams/pid/symbols\";\nimport { iconNames, renderIcon } from \"./diagrams/flowchart/icons\";\nimport { getGateGeometry } from \"./diagrams/logic/symbols\";\nimport { drawDeviceIcon, iconSize } from \"./diagrams/network/symbols\";\nimport { FLOORPLAN_SYMBOLS } from \"./diagrams/floorplan/catalog\";\n\nexport interface SymbolCatalogEntry {\n id: string;\n label: string;\n svg: string;\n}\n\nexport interface SymbolCatalog {\n type: DiagramType;\n /** Human label for the catalog section, e.g. \"Circuit components\". */\n label: string;\n /** Short description of what the symbols are. */\n note: string;\n entries: SymbolCatalogEntry[];\n}\n\nfunction humanize(id: string): string {\n return id\n .replace(/[_-]+/g, \" \")\n .replace(/\\b\\w/g, (c) => c.toUpperCase());\n}\n\nfunction svgDoc(viewBox: string, css: string, inner: string): string {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${viewBox}\" class=\"lt-symbol\">` +\n `<style>${css}</style>${inner}</svg>`;\n}\n\n// ── Circuit (IEEE 315) ─────────────────────────────────────────────\nconst CIRCUIT_CSS =\n \".schematex-circuit-body{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linejoin:round;stroke-linecap:round}\" +\n \".schematex-circuit-fill{stroke:#0f172a;stroke-width:1.5;fill:#0f172a}\" +\n \".schematex-circuit-wire{stroke:#0f172a;stroke-width:1.75;fill:none;stroke-linecap:square}\";\n\nfunction circuitCatalog(): SymbolCatalogEntry[] {\n const symbols = SYMBOLS as Record<string, { length: number; svg: () => string }>;\n const out: SymbolCatalogEntry[] = [];\n for (const [id, def] of Object.entries(symbols)) {\n if (!def) continue;\n const L = def.length || 40;\n const inner = def.svg();\n out.push({ id, label: humanize(id), svg: svgDoc(`-10 -24 ${L + 20} 48`, CIRCUIT_CSS, inner) });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── SLD (IEEE 315 / IEC 60617) ─────────────────────────────────────\nconst SLD_CSS =\n \".lt-sld-stroke{stroke:#0f172a;stroke-width:1.8;fill:none}\" +\n \".lt-sld-stroke-thick{stroke:#0f172a;stroke-width:2.4;fill:none;stroke-linecap:round}\" +\n \".lt-sld-fill{fill:#ffffff;stroke:#0f172a;stroke-width:2}\" +\n \".lt-sld-fill-dark{fill:#0f172a;stroke:#0f172a;stroke-width:1}\" +\n \".lt-sld-dot{fill:#0f172a;stroke:none}\" +\n \".lt-sld-wire{stroke:#0f172a;stroke-width:2;fill:none}\" +\n \".lt-sld-bus{stroke:#0f172a;stroke-width:6;stroke-linecap:square}\" +\n \".lt-sld-symbol-text{font:11px sans-serif;fill:#0f172a;dominant-baseline:middle}\" +\n \".lt-sld-wdg{font:bold 10px sans-serif;fill:#0f172a;dominant-baseline:middle}\";\n\nconst SLD_TYPES: SLDNodeType[] = [\n \"utility\", \"generator\", \"solar\", \"wind\", \"ups\", \"transformer\", \"transformer_dy\",\n \"transformer_yd\", \"transformer_yy\", \"transformer_dd\", \"autotransformer\",\n \"transformer_3winding\", \"breaker\", \"breaker_vacuum\", \"recloser\", \"switch\",\n \"switch_load\", \"ground_switch\", \"sectionalizer\", \"fuse\", \"fuse_cl\", \"motor\",\n \"load\", \"capacitor_bank\", \"harmonic_filter\", \"vfd\", \"ats\", \"ct\", \"pt\", \"relay\",\n \"surge_arrester\", \"watthour_meter\", \"demand_meter\", \"ground_fault\", \"bus\",\n \"bus_tie\", \"hub\",\n];\n\nfunction sldCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const type of SLD_TYPES) {\n let inner: string;\n try {\n inner = sldRenderSymbol(type);\n } catch {\n continue;\n }\n const g = geometryFor(type);\n const w = Math.max(g.halfWidth, 18) + 12;\n const top = Math.min(g.topY, -22) - 8;\n const bot = Math.max(g.bottomY, 22) + 8;\n out.push({\n id: type,\n label: humanize(type),\n svg: svgDoc(`${-w} ${top} ${2 * w} ${bot - top}`, SLD_CSS, inner),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── P&ID (ISA-5.1) equipment ───────────────────────────────────────\nconst PID_CSS =\n \".lt-pid-equip{fill:#ffffff;stroke:#1d1d1d;stroke-width:1.6}\" +\n \".lt-pid-equip-tag{font:600 11px system-ui,sans-serif;fill:#1d1d1d}\" +\n \".lt-pid-process{stroke:#1d1d1d;stroke-width:2.6;fill:none}\" +\n \".lt-pid-process-min{stroke:#1d1d1d;stroke-width:1.5;fill:none}\";\n\nfunction pidCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n const pad = 12;\n for (const [id, g] of Object.entries(PID_GEOMETRY)) {\n let inner: string;\n try {\n inner = renderEquip(id as Parameters<typeof renderEquip>[0], \"\");\n } catch {\n continue;\n }\n out.push({\n id,\n label: humanize(id),\n svg: svgDoc(\n `${-g.width / 2 - pad} ${-g.height / 2 - pad} ${g.width + 2 * pad} ${g.height + 2 * pad}`,\n PID_CSS,\n inner,\n ),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Flowchart node icons ───────────────────────────────────────────\nconst FC_ICON_CSS =\n \".sx-fc-icon{stroke:#0f172a;fill:none}.sx-fc-icon-fill{fill:#0f172a}\";\n\nfunction flowchartIconCatalog(): SymbolCatalogEntry[] {\n return iconNames()\n .map((name) => ({\n id: name,\n label: humanize(name),\n svg: svgDoc(\"-13 -13 26 26\", FC_ICON_CSS, renderIcon(name)),\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Logic gates (IEEE 91) ──────────────────────────────────────────\nconst LOGIC_CSS =\n \".schematex-logic-gate-body{fill:none;stroke:#0f172a;stroke-width:1.75;stroke-linejoin:round}\" +\n \".schematex-logic-bubble{fill:#ffffff;stroke:#0f172a;stroke-width:1.5}\" +\n \".schematex-logic-wire{stroke:#0f172a;stroke-width:1.5;fill:none;stroke-linecap:square}\" +\n \".schematex-logic-gate-iec-label{font:bold 13px sans-serif;fill:#0f172a}\";\n\nconst LOGIC_TYPES: LogicGateType[] = [\n \"AND\", \"OR\", \"NOT\", \"NAND\", \"NOR\", \"XOR\", \"XNOR\", \"BUF\", \"TRISTATE_BUF\",\n \"OPEN_DRAIN\", \"SCHMITT\", \"DFF\", \"JKFF\", \"SRFF\", \"TFF\", \"LATCH_D\", \"LATCH_SR\",\n \"MUX\", \"DEMUX\", \"DECODER\", \"ENCODER\", \"COUNTER\", \"SHIFT_REG\",\n];\nconst SINGLE_INPUT = new Set<LogicGateType>([\"NOT\", \"BUF\", \"SCHMITT\", \"TRISTATE_BUF\", \"TRISTATE_INV\", \"OPEN_DRAIN\", \"DFF\", \"TFF\"]);\n\nfunction logicCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const type of LOGIC_TYPES) {\n let g;\n try {\n g = getGateGeometry(type, SINGLE_INPUT.has(type) ? 1 : 2);\n } catch {\n continue;\n }\n const parts = [`<path d=\"${g.ansiPath}\" class=\"schematex-logic-gate-body\"/>`];\n for (const p of g.inputPins) parts.push(`<line x1=\"${p.x - 10}\" y1=\"${p.y}\" x2=\"${p.x}\" y2=\"${p.y}\" class=\"schematex-logic-wire\"/>`);\n for (const p of g.outputPins) {\n const bub = p.bubble || g.outputBubble;\n const ox = bub ? p.x + 6 : p.x;\n if (bub) parts.push(`<circle cx=\"${p.x + 3}\" cy=\"${p.y}\" r=\"3\" class=\"schematex-logic-bubble\"/>`);\n parts.push(`<line x1=\"${ox}\" y1=\"${p.y}\" x2=\"${ox + 10}\" y2=\"${p.y}\" class=\"schematex-logic-wire\"/>`);\n }\n out.push({\n id: type,\n label: humanize(type),\n svg: svgDoc(`-14 -6 ${g.width + 28} ${g.height + 12}`, LOGIC_CSS, parts.join(\"\")),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Network devices (Cisco-convention icons) ───────────────────────\nconst NETWORK_CSS =\n \".sx-net-body{fill:#ffffff;stroke:#0f172a;stroke-width:2}\" +\n \".sx-net-detail{fill:none;stroke:#0f172a;stroke-width:1}\" +\n \".sx-net-glyph{fill:#2563eb;stroke:none}\" +\n \".sx-net-glyph-line{fill:none;stroke:#2563eb;stroke-width:1.4}\" +\n \".sx-net-icontext{font:700 8px sans-serif;fill:#2563eb}\" +\n \".sx-net-cloud-body{fill:#f1f5f9;stroke:#0f172a;stroke-width:2}\" +\n \".sx-net-cloudtext{font:600 13px sans-serif;fill:#0f172a}\" +\n \".sx-net-bus{stroke:#0f172a;stroke-width:4;stroke-linecap:round}\";\n\nconst NETWORK_KINDS = [\n \"router\", \"switch\", \"l3switch\", \"poeswitch\", \"firewall\", \"loadbalancer\", \"ap\",\n \"wlc\", \"gateway\", \"modem\", \"ids\", \"proxy\", \"vpngw\", \"server\", \"serverfarm\",\n \"pc\", \"laptop\", \"mobile\", \"ipphone\", \"printer\", \"storage\", \"camera\", \"nvr\",\n \"dvr\", \"encoder\", \"monitor\", \"internet\", \"cloud\",\n] as const;\n\nfunction networkCatalog(): SymbolCatalogEntry[] {\n const out: SymbolCatalogEntry[] = [];\n for (const kind of NETWORK_KINDS) {\n const { w, h } = iconSize(kind as Parameters<typeof iconSize>[0]);\n const device = { id: kind, kind, label: humanize(kind), groups: [] } as Parameters<typeof drawDeviceIcon>[0];\n let inner: string;\n try {\n inner = drawDeviceIcon(device, { x: 0, y: 0, w, h });\n } catch {\n continue;\n }\n out.push({\n id: kind,\n label: humanize(kind),\n svg: svgDoc(`-6 -6 ${w + 12} ${h + 12}`, NETWORK_CSS, inner),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\n// ── Floor plan furniture & fixtures (AGS plan view) ────────────────\nconst FLOORPLAN_CSS =\n \".sx-fp-furn{fill:#ffffff;stroke:#475569;stroke-width:1.2}\" +\n \".sx-fp-furn-nofill{fill:none;stroke:#475569;stroke-width:1.2}\" +\n \".sx-fp-furn-line{fill:none;stroke:#475569;stroke-width:1}\" +\n \".sx-fp-furn-dash{fill:none;stroke:#475569;stroke-width:1;stroke-dasharray:4 3}\" +\n \".sx-fp-furn-dot{fill:#475569;stroke:none}\" +\n \".sx-fp-furn-solid{fill:#334155;stroke:none}\" +\n \".sx-fp-board-inner{fill:#ffffff;stroke:none}\" +\n \".sx-fp-chair{fill:#f1f5f9;stroke:#475569;stroke-width:1}\" +\n \".sx-fp-rug{fill:none;stroke:#94a3b8;stroke-width:1.2;stroke-dasharray:5 4}\" +\n \".sx-fp-hatch{fill:none;stroke:#cbd5e1;stroke-width:1}\" +\n \".sx-fp-furn-text{font-weight:600;font-family:sans-serif;fill:#475569}\";\n\nfunction floorplanCatalog(): SymbolCatalogEntry[] {\n const scale = 40; // px per meter for the standalone sheet\n const px = (m: number): number => Math.round(m * scale * 100) / 100;\n const out: SymbolCatalogEntry[] = [];\n for (const [id, def] of Object.entries(FLOORPLAN_SYMBOLS)) {\n const [mt, mr, mb, ml] = def.envelope ?? [0, 0, 0, 0];\n const pad = 5;\n const x0 = -px(ml) - pad;\n const y0 = -px(mt) - pad;\n const w = px(def.w + ml + mr) + 2 * pad;\n const h = px(def.h + mt + mb) + 2 * pad;\n out.push({\n id,\n label: humanize(id),\n svg: svgDoc(`${x0} ${y0} ${w} ${h}`, FLOORPLAN_CSS, def.draw({ w: def.w, h: def.h, px })),\n });\n }\n return out.sort((a, b) => a.label.localeCompare(b.label));\n}\n\nconst CATALOGS: Partial<Record<DiagramType, () => SymbolCatalog>> = {\n circuit: () => ({\n type: \"circuit\",\n label: \"Circuit components\",\n note: \"IEEE 315 / ANSI Y32.2 schematic symbols the netlist/positional engine draws.\",\n entries: circuitCatalog(),\n }),\n sld: () => ({\n type: \"sld\",\n label: \"Single-line apparatus\",\n note: \"IEEE 315 power-apparatus symbols — sources, transformers, switching, protection, loads.\",\n entries: sldCatalog(),\n }),\n pid: () => ({\n type: \"pid\",\n label: \"P&ID equipment\",\n note: \"ANSI/ISA-5.1 process equipment — tanks, columns, exchangers, pumps, and more.\",\n entries: pidCatalog(),\n }),\n logic: () => ({\n type: \"logic\",\n label: \"Logic gates\",\n note: \"IEEE 91 ANSI gate bodies — combinational gates, flip-flops, latches, MUX/decoder, counters.\",\n entries: logicCatalog(),\n }),\n network: () => ({\n type: \"network\",\n label: \"Network devices\",\n note: \"Cisco-convention topology icons — routers, switches, firewalls, servers, cameras, clouds.\",\n entries: networkCatalog(),\n }),\n flowchart: () => ({\n type: \"flowchart\",\n label: \"Node icons\",\n note: \"Inline node icons (servers, databases, cloud, gear…) usable on any flowchart node.\",\n entries: flowchartIconCatalog(),\n }),\n floorplan: () => ({\n type: \"floorplan\",\n label: \"Floor plan furniture & fixtures\",\n note: \"AGS plan-view symbols — auto-seated tables, beds, kitchen/bath fixtures, classroom and event/banquet furniture.\",\n entries: floorplanCatalog(),\n }),\n};\n\n/** Diagram types that ship a renderable domain symbol catalog. */\nexport const SYMBOL_CATALOG_TYPES = Object.keys(CATALOGS) as DiagramType[];\n\nexport function getSymbolCatalog(type: string): SymbolCatalog | null {\n const factory = CATALOGS[type as DiagramType];\n return factory ? factory() : null;\n}\n"]}
package/dist/react.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkVLK5T7B7_cjs = require('./chunk-VLK5T7B7.cjs');
3
+ var chunkGJTD3RQE_cjs = require('./chunk-GJTD3RQE.cjs');
4
4
  require('./chunk-UHRNFBWY.cjs');
5
5
  require('./chunk-IBZKIMT5.cjs');
6
- require('./chunk-AG4WA4NF.cjs');
6
+ require('./chunk-JXPBZEFM.cjs');
7
7
  require('./chunk-T55OQILI.cjs');
8
8
  require('./chunk-US4QZ7J7.cjs');
9
- require('./chunk-AWUUGDN4.cjs');
9
+ require('./chunk-RVPYIBBH.cjs');
10
10
  require('./chunk-4MANMKQ4.cjs');
11
11
  require('./chunk-AQENURKO.cjs');
12
12
  require('./chunk-3JN4762U.cjs');
@@ -38,7 +38,7 @@ function SchematexDiagram({
38
38
  onError
39
39
  }) {
40
40
  const svg = react.useMemo(() => {
41
- const result = chunkVLK5T7B7_cjs.renderResult(dsl, { type, theme, fontFamily, padding });
41
+ const result = chunkGJTD3RQE_cjs.renderResult(dsl, { type, theme, fontFamily, padding });
42
42
  if (!result.ok) {
43
43
  onError?.(new Error(result.diagnostics[0]?.message ?? "Schematex render failed"));
44
44
  }
package/dist/react.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { S as SchematexConfig } from './api-DAUFeETp.cjs';
3
- import './diagnostics-DSxLohjY.cjs';
2
+ import { S as SchematexConfig } from './api-DH9a1V6Q.cjs';
3
+ import './diagnostics-CKacYRIE.cjs';
4
4
 
5
5
  interface SchematexDiagramProps {
6
6
  /** DSL text to render */
package/dist/react.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { S as SchematexConfig } from './api-C9ufsgIb.js';
3
- import './diagnostics-DSxLohjY.js';
2
+ import { S as SchematexConfig } from './api-DsAwn8ne.js';
3
+ import './diagnostics-CKacYRIE.js';
4
4
 
5
5
  interface SchematexDiagramProps {
6
6
  /** DSL text to render */