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.
- package/README.md +13 -0
- package/dist/ai/ai-sdk.cjs +9 -9
- package/dist/ai/ai-sdk.d.cts +3 -3
- package/dist/ai/ai-sdk.d.ts +3 -3
- package/dist/ai/ai-sdk.js +4 -4
- package/dist/ai/index.cjs +18 -18
- package/dist/ai/index.d.cts +4 -4
- package/dist/ai/index.d.ts +4 -4
- package/dist/ai/index.js +5 -5
- package/dist/{api-DAUFeETp.d.cts → api-DH9a1V6Q.d.cts} +1 -1
- package/dist/{api-C9ufsgIb.d.ts → api-DsAwn8ne.d.ts} +1 -1
- package/dist/browser.cjs +10 -10
- package/dist/browser.d.cts +3 -3
- package/dist/browser.d.ts +3 -3
- package/dist/browser.js +4 -4
- package/dist/{chunk-FA6Y4QRS.js → chunk-5IPT6OFE.js} +356 -47
- package/dist/chunk-5IPT6OFE.js.map +1 -0
- package/dist/{chunk-LZHLFNM3.js → chunk-BP52JB7C.js} +4 -4
- package/dist/{chunk-LZHLFNM3.js.map → chunk-BP52JB7C.js.map} +1 -1
- package/dist/{chunk-VLK5T7B7.cjs → chunk-GJTD3RQE.cjs} +6 -6
- package/dist/{chunk-VLK5T7B7.cjs.map → chunk-GJTD3RQE.cjs.map} +1 -1
- package/dist/{chunk-DSKPJYQO.js → chunk-JBNLZQP2.js} +47 -5
- package/dist/chunk-JBNLZQP2.js.map +1 -0
- package/dist/{chunk-AG4WA4NF.cjs → chunk-JXPBZEFM.cjs} +355 -47
- package/dist/chunk-JXPBZEFM.cjs.map +1 -0
- package/dist/{chunk-6GVFKOSH.js → chunk-OZD4CYAK.js} +2 -2
- package/dist/{chunk-6GVFKOSH.js.map → chunk-OZD4CYAK.js.map} +1 -1
- package/dist/{chunk-JWILBXGR.cjs → chunk-PZ5MNDVY.cjs} +49 -7
- package/dist/chunk-PZ5MNDVY.cjs.map +1 -0
- package/dist/{chunk-AWUUGDN4.cjs → chunk-RVPYIBBH.cjs} +2 -2
- package/dist/{chunk-AWUUGDN4.cjs.map → chunk-RVPYIBBH.cjs.map} +1 -1
- package/dist/{diagnostics-DSxLohjY.d.cts → diagnostics-CKacYRIE.d.cts} +1 -1
- package/dist/{diagnostics-DSxLohjY.d.ts → diagnostics-CKacYRIE.d.ts} +1 -1
- 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 +3 -1
- package/dist/diagrams/circuit/index.d.ts +3 -1
- package/dist/diagrams/circuit/index.js +1 -1
- package/dist/diagrams/ecomap/index.d.cts +1 -1
- package/dist/diagrams/ecomap/index.d.ts +1 -1
- package/dist/diagrams/entity/index.d.cts +1 -1
- package/dist/diagrams/entity/index.d.ts +1 -1
- package/dist/diagrams/fishbone/index.d.cts +1 -1
- package/dist/diagrams/fishbone/index.d.ts +1 -1
- package/dist/diagrams/flowchart/index.d.cts +2 -2
- package/dist/diagrams/flowchart/index.d.ts +2 -2
- package/dist/diagrams/genogram/index.d.cts +1 -1
- package/dist/diagrams/genogram/index.d.ts +1 -1
- package/dist/diagrams/ladder/index.d.cts +1 -1
- package/dist/diagrams/ladder/index.d.ts +1 -1
- package/dist/diagrams/logic/index.d.cts +1 -1
- package/dist/diagrams/logic/index.d.ts +1 -1
- package/dist/diagrams/orgchart/index.d.cts +1 -1
- package/dist/diagrams/orgchart/index.d.ts +1 -1
- package/dist/diagrams/pedigree/index.d.cts +1 -1
- package/dist/diagrams/pedigree/index.d.ts +1 -1
- package/dist/diagrams/phylo/index.d.cts +1 -1
- package/dist/diagrams/phylo/index.d.ts +1 -1
- package/dist/diagrams/siteplan/index.d.cts +1 -1
- package/dist/diagrams/siteplan/index.d.ts +1 -1
- package/dist/diagrams/sld/index.cjs +7 -7
- package/dist/diagrams/sld/index.d.cts +1 -1
- package/dist/diagrams/sld/index.d.ts +1 -1
- package/dist/diagrams/sld/index.js +1 -1
- package/dist/diagrams/sociogram/index.d.cts +1 -1
- package/dist/diagrams/sociogram/index.d.ts +1 -1
- package/dist/diagrams/timing/index.d.cts +1 -1
- package/dist/diagrams/timing/index.d.ts +1 -1
- package/dist/diagrams/venn/index.d.cts +1 -1
- package/dist/diagrams/venn/index.d.ts +1 -1
- package/dist/{index-CZa2pU0T.d.ts → index-BmJxw0lf.d.ts} +1 -1
- package/dist/{index-CDDfbChc.d.cts → index-Dth_Wjwf.d.cts} +1 -1
- package/dist/index.cjs +45 -48
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +8 -11
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +4 -4
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +3 -3
- package/dist/{tools-Bvw6dwIR.d.cts → tools-Bl6w3h3P.d.cts} +2 -2
- package/dist/{tools-DtuvE-K4.d.ts → tools-CBYFRF2a.d.ts} +2 -2
- package/package.json +1 -1
- package/dist/chunk-AG4WA4NF.cjs.map +0 -1
- package/dist/chunk-DSKPJYQO.js.map +0 -1
- package/dist/chunk-FA6Y4QRS.js.map +0 -1
- 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
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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 =
|
|
92
|
+
inner = chunkRVPYIBBH_cjs.renderSymbol(type);
|
|
96
93
|
} catch {
|
|
97
94
|
continue;
|
|
98
95
|
}
|
|
99
|
-
const g =
|
|
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(
|
|
112
|
+
for (const [id, g] of Object.entries(chunkGJTD3RQE_cjs.GEOMETRY)) {
|
|
116
113
|
let inner;
|
|
117
114
|
try {
|
|
118
|
-
inner =
|
|
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 } =
|
|
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 =
|
|
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(
|
|
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
|
|
313
|
+
get: function () { return chunkGJTD3RQE_cjs.bowtie; }
|
|
317
314
|
});
|
|
318
315
|
Object.defineProperty(exports, "causalloop", {
|
|
319
316
|
enumerable: true,
|
|
320
|
-
get: function () { return
|
|
317
|
+
get: function () { return chunkGJTD3RQE_cjs.causalloop; }
|
|
321
318
|
});
|
|
322
319
|
Object.defineProperty(exports, "comparison", {
|
|
323
320
|
enumerable: true,
|
|
324
|
-
get: function () { return
|
|
321
|
+
get: function () { return chunkGJTD3RQE_cjs.comparison; }
|
|
325
322
|
});
|
|
326
323
|
Object.defineProperty(exports, "decisiontree", {
|
|
327
324
|
enumerable: true,
|
|
328
|
-
get: function () { return
|
|
325
|
+
get: function () { return chunkGJTD3RQE_cjs.decisiontree; }
|
|
329
326
|
});
|
|
330
327
|
Object.defineProperty(exports, "epc", {
|
|
331
328
|
enumerable: true,
|
|
332
|
-
get: function () { return
|
|
329
|
+
get: function () { return chunkGJTD3RQE_cjs.epc; }
|
|
333
330
|
});
|
|
334
331
|
Object.defineProperty(exports, "eventtree", {
|
|
335
332
|
enumerable: true,
|
|
336
|
-
get: function () { return
|
|
333
|
+
get: function () { return chunkGJTD3RQE_cjs.eventtree; }
|
|
337
334
|
});
|
|
338
335
|
Object.defineProperty(exports, "faulttree", {
|
|
339
336
|
enumerable: true,
|
|
340
|
-
get: function () { return
|
|
337
|
+
get: function () { return chunkGJTD3RQE_cjs.faulttree; }
|
|
341
338
|
});
|
|
342
339
|
Object.defineProperty(exports, "floorplan", {
|
|
343
340
|
enumerable: true,
|
|
344
|
-
get: function () { return
|
|
341
|
+
get: function () { return chunkGJTD3RQE_cjs.floorplan; }
|
|
345
342
|
});
|
|
346
343
|
Object.defineProperty(exports, "fmea", {
|
|
347
344
|
enumerable: true,
|
|
348
|
-
get: function () { return
|
|
345
|
+
get: function () { return chunkGJTD3RQE_cjs.fmea; }
|
|
349
346
|
});
|
|
350
347
|
Object.defineProperty(exports, "gitgraph", {
|
|
351
348
|
enumerable: true,
|
|
352
|
-
get: function () { return
|
|
349
|
+
get: function () { return chunkGJTD3RQE_cjs.gitgraph; }
|
|
353
350
|
});
|
|
354
351
|
Object.defineProperty(exports, "idef0", {
|
|
355
352
|
enumerable: true,
|
|
356
|
-
get: function () { return
|
|
353
|
+
get: function () { return chunkGJTD3RQE_cjs.idef0; }
|
|
357
354
|
});
|
|
358
355
|
Object.defineProperty(exports, "markov", {
|
|
359
356
|
enumerable: true,
|
|
360
|
-
get: function () { return
|
|
357
|
+
get: function () { return chunkGJTD3RQE_cjs.markov; }
|
|
361
358
|
});
|
|
362
359
|
Object.defineProperty(exports, "network", {
|
|
363
360
|
enumerable: true,
|
|
364
|
-
get: function () { return
|
|
361
|
+
get: function () { return chunkGJTD3RQE_cjs.network; }
|
|
365
362
|
});
|
|
366
363
|
Object.defineProperty(exports, "parse", {
|
|
367
364
|
enumerable: true,
|
|
368
|
-
get: function () { return
|
|
365
|
+
get: function () { return chunkGJTD3RQE_cjs.parse; }
|
|
369
366
|
});
|
|
370
367
|
Object.defineProperty(exports, "parseResult", {
|
|
371
368
|
enumerable: true,
|
|
372
|
-
get: function () { return
|
|
369
|
+
get: function () { return chunkGJTD3RQE_cjs.parseResult; }
|
|
373
370
|
});
|
|
374
371
|
Object.defineProperty(exports, "pert", {
|
|
375
372
|
enumerable: true,
|
|
376
|
-
get: function () { return
|
|
373
|
+
get: function () { return chunkGJTD3RQE_cjs.pert; }
|
|
377
374
|
});
|
|
378
375
|
Object.defineProperty(exports, "petri", {
|
|
379
376
|
enumerable: true,
|
|
380
|
-
get: function () { return
|
|
377
|
+
get: function () { return chunkGJTD3RQE_cjs.petri; }
|
|
381
378
|
});
|
|
382
379
|
Object.defineProperty(exports, "pid", {
|
|
383
380
|
enumerable: true,
|
|
384
|
-
get: function () { return
|
|
381
|
+
get: function () { return chunkGJTD3RQE_cjs.pid; }
|
|
385
382
|
});
|
|
386
383
|
Object.defineProperty(exports, "playbook", {
|
|
387
384
|
enumerable: true,
|
|
388
|
-
get: function () { return
|
|
385
|
+
get: function () { return chunkGJTD3RQE_cjs.playbook; }
|
|
389
386
|
});
|
|
390
387
|
Object.defineProperty(exports, "prisma", {
|
|
391
388
|
enumerable: true,
|
|
392
|
-
get: function () { return
|
|
389
|
+
get: function () { return chunkGJTD3RQE_cjs.prisma; }
|
|
393
390
|
});
|
|
394
391
|
Object.defineProperty(exports, "rbd", {
|
|
395
392
|
enumerable: true,
|
|
396
|
-
get: function () { return
|
|
393
|
+
get: function () { return chunkGJTD3RQE_cjs.rbd; }
|
|
397
394
|
});
|
|
398
395
|
Object.defineProperty(exports, "render", {
|
|
399
396
|
enumerable: true,
|
|
400
|
-
get: function () { return
|
|
397
|
+
get: function () { return chunkGJTD3RQE_cjs.render; }
|
|
401
398
|
});
|
|
402
399
|
Object.defineProperty(exports, "renderPreview", {
|
|
403
400
|
enumerable: true,
|
|
404
|
-
get: function () { return
|
|
401
|
+
get: function () { return chunkGJTD3RQE_cjs.renderPreview; }
|
|
405
402
|
});
|
|
406
403
|
Object.defineProperty(exports, "renderResult", {
|
|
407
404
|
enumerable: true,
|
|
408
|
-
get: function () { return
|
|
405
|
+
get: function () { return chunkGJTD3RQE_cjs.renderResult; }
|
|
409
406
|
});
|
|
410
407
|
Object.defineProperty(exports, "sequence", {
|
|
411
408
|
enumerable: true,
|
|
412
|
-
get: function () { return
|
|
409
|
+
get: function () { return chunkGJTD3RQE_cjs.sequence; }
|
|
413
410
|
});
|
|
414
411
|
Object.defineProperty(exports, "state", {
|
|
415
412
|
enumerable: true,
|
|
416
|
-
get: function () { return
|
|
413
|
+
get: function () { return chunkGJTD3RQE_cjs.state; }
|
|
417
414
|
});
|
|
418
415
|
Object.defineProperty(exports, "threatmodel", {
|
|
419
416
|
enumerable: true,
|
|
420
|
-
get: function () { return
|
|
417
|
+
get: function () { return chunkGJTD3RQE_cjs.threatmodel; }
|
|
421
418
|
});
|
|
422
419
|
Object.defineProperty(exports, "timeline", {
|
|
423
420
|
enumerable: true,
|
|
424
|
-
get: function () { return
|
|
421
|
+
get: function () { return chunkGJTD3RQE_cjs.timeline; }
|
|
425
422
|
});
|
|
426
423
|
Object.defineProperty(exports, "umlclass", {
|
|
427
424
|
enumerable: true,
|
|
428
|
-
get: function () { return
|
|
425
|
+
get: function () { return chunkGJTD3RQE_cjs.umlclass; }
|
|
429
426
|
});
|
|
430
427
|
Object.defineProperty(exports, "usecase", {
|
|
431
428
|
enumerable: true,
|
|
432
|
-
get: function () { return
|
|
429
|
+
get: function () { return chunkGJTD3RQE_cjs.usecase; }
|
|
433
430
|
});
|
|
434
431
|
Object.defineProperty(exports, "welding", {
|
|
435
432
|
enumerable: true,
|
|
436
|
-
get: function () { return
|
|
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
|
|
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
|
|
457
|
+
get: function () { return chunkRVPYIBBH_cjs.sld; }
|
|
461
458
|
});
|
|
462
459
|
Object.defineProperty(exports, "entity", {
|
|
463
460
|
enumerable: true,
|
package/dist/index.cjs.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;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,MAAA,GAAgE;AAAA,IACpE,GAAIA,yBAAA;AAAA,IACJ,GAAIC;AAAA,GACN;AACA,EAAA,MAAM,MAA4B,EAAC;AACnC,EAAA,KAAA,MAAW,CAAC,EAAA,EAAI,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC9C,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, 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":"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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 } 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-
|
|
2
|
-
import { D as DiagramPlugin, a as DiagramType } from './diagnostics-
|
|
3
|
-
export { S as SchematexDiagnostic, b as SchematexParseResult, c as SchematexRenderResult, d as SchematexResultStatus } from './diagnostics-
|
|
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-
|
|
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-
|
|
2
|
-
import { D as DiagramPlugin, a as DiagramType } from './diagnostics-
|
|
3
|
-
export { S as SchematexDiagnostic, b as SchematexParseResult, c as SchematexRenderResult, d as SchematexResultStatus } from './diagnostics-
|
|
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-
|
|
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-
|
|
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-
|
|
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 {
|
|
6
|
-
export { circuit } from './chunk-
|
|
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-
|
|
10
|
-
export { sld } from './chunk-
|
|
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
|
|
41
|
-
...SYMBOLS,
|
|
42
|
-
...EXTRA_SYMBOLS
|
|
43
|
-
};
|
|
40
|
+
const symbols = SYMBOLS;
|
|
44
41
|
const out = [];
|
|
45
|
-
for (const [id, def] of Object.entries(
|
|
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
|
|
3
|
+
var chunkGJTD3RQE_cjs = require('./chunk-GJTD3RQE.cjs');
|
|
4
4
|
require('./chunk-UHRNFBWY.cjs');
|
|
5
5
|
require('./chunk-IBZKIMT5.cjs');
|
|
6
|
-
require('./chunk-
|
|
6
|
+
require('./chunk-JXPBZEFM.cjs');
|
|
7
7
|
require('./chunk-T55OQILI.cjs');
|
|
8
8
|
require('./chunk-US4QZ7J7.cjs');
|
|
9
|
-
require('./chunk-
|
|
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 =
|
|
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-
|
|
3
|
-
import './diagnostics-
|
|
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-
|
|
3
|
-
import './diagnostics-
|
|
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 */
|