schematex 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/README.md +89 -7
  2. package/dist/ai/ai-sdk.cjs +32 -26
  3. package/dist/ai/ai-sdk.cjs.map +1 -1
  4. package/dist/ai/ai-sdk.d.cts +4 -3
  5. package/dist/ai/ai-sdk.d.ts +4 -3
  6. package/dist/ai/ai-sdk.js +28 -22
  7. package/dist/ai/ai-sdk.js.map +1 -1
  8. package/dist/ai/index.cjs +37 -25
  9. package/dist/ai/index.d.cts +20 -153
  10. package/dist/ai/index.d.ts +20 -153
  11. package/dist/ai/index.js +17 -17
  12. package/dist/{api-C5UcmT7n.d.cts → api-XWHHAhQI.d.ts} +12 -2
  13. package/dist/{api-C5UcmT7n.d.ts → api-qVDutqXH.d.cts} +12 -2
  14. package/dist/browser.cjs +37 -19
  15. package/dist/browser.cjs.map +1 -1
  16. package/dist/browser.d.cts +12 -3
  17. package/dist/browser.d.ts +12 -3
  18. package/dist/browser.js +27 -19
  19. package/dist/browser.js.map +1 -1
  20. package/dist/{chunk-3YUUC6RN.cjs → chunk-25ZON47K.cjs} +4105 -267
  21. package/dist/chunk-25ZON47K.cjs.map +1 -0
  22. package/dist/{chunk-N7W5KZK7.cjs → chunk-2L4YXZAZ.cjs} +4 -4
  23. package/dist/{chunk-N7W5KZK7.cjs.map → chunk-2L4YXZAZ.cjs.map} +1 -1
  24. package/dist/{chunk-ZYRCPSBU.js → chunk-3IE7KZY4.js} +4 -4
  25. package/dist/{chunk-ZYRCPSBU.js.map → chunk-3IE7KZY4.js.map} +1 -1
  26. package/dist/{chunk-ZX74KJPM.js → chunk-3VB5AT4R.js} +3 -3
  27. package/dist/{chunk-ZX74KJPM.js.map → chunk-3VB5AT4R.js.map} +1 -1
  28. package/dist/{chunk-S2KJRHDZ.cjs → chunk-4UFR2LB6.cjs} +13 -13
  29. package/dist/{chunk-S2KJRHDZ.cjs.map → chunk-4UFR2LB6.cjs.map} +1 -1
  30. package/dist/{chunk-QTNPMIO2.cjs → chunk-6JI6FWLZ.cjs} +341 -35
  31. package/dist/chunk-6JI6FWLZ.cjs.map +1 -0
  32. package/dist/{chunk-GTDQAN2Z.js → chunk-7AFW2J6J.js} +4075 -247
  33. package/dist/chunk-7AFW2J6J.js.map +1 -0
  34. package/dist/{chunk-UFTYX73U.js → chunk-7F76AWOI.js} +339 -35
  35. package/dist/chunk-7F76AWOI.js.map +1 -0
  36. package/dist/{chunk-BW4KGTV7.cjs → chunk-C5C5EF3W.cjs} +4 -4
  37. package/dist/{chunk-BW4KGTV7.cjs.map → chunk-C5C5EF3W.cjs.map} +1 -1
  38. package/dist/{chunk-VJGMEGMR.js → chunk-DOK7LKLO.js} +125 -13
  39. package/dist/chunk-DOK7LKLO.js.map +1 -0
  40. package/dist/{chunk-3M6WB62Y.cjs → chunk-ECD5XHBM.cjs} +139 -7
  41. package/dist/chunk-ECD5XHBM.cjs.map +1 -0
  42. package/dist/{chunk-L3CTXXVZ.js → chunk-FBS3PACU.js} +3 -3
  43. package/dist/{chunk-L3CTXXVZ.js.map → chunk-FBS3PACU.js.map} +1 -1
  44. package/dist/{chunk-QUKVGHN4.cjs → chunk-FKJBXGWP.cjs} +4 -4
  45. package/dist/{chunk-QUKVGHN4.cjs.map → chunk-FKJBXGWP.cjs.map} +1 -1
  46. package/dist/{chunk-SZK376QB.js → chunk-H4MT5TJP.js} +3 -3
  47. package/dist/{chunk-SZK376QB.js.map → chunk-H4MT5TJP.js.map} +1 -1
  48. package/dist/{chunk-3M6T7KB4.js → chunk-HAZALB7U.js} +3 -3
  49. package/dist/{chunk-3M6T7KB4.js.map → chunk-HAZALB7U.js.map} +1 -1
  50. package/dist/{chunk-VFZOPRQP.cjs → chunk-HWVBHU3O.cjs} +5 -5
  51. package/dist/{chunk-VFZOPRQP.cjs.map → chunk-HWVBHU3O.cjs.map} +1 -1
  52. package/dist/{chunk-D7EHZFK4.cjs → chunk-L7POWM5B.cjs} +138 -2
  53. package/dist/chunk-L7POWM5B.cjs.map +1 -0
  54. package/dist/{chunk-6OSUNBZY.js → chunk-LGABFD3L.js} +135 -7
  55. package/dist/chunk-LGABFD3L.js.map +1 -0
  56. package/dist/{chunk-2VNMKOUO.js → chunk-LRI4RH2N.js} +135 -3
  57. package/dist/chunk-LRI4RH2N.js.map +1 -0
  58. package/dist/{chunk-VDSYMSUY.js → chunk-MVIEIKOI.js} +3 -3
  59. package/dist/{chunk-VDSYMSUY.js.map → chunk-MVIEIKOI.js.map} +1 -1
  60. package/dist/{chunk-ZL5RB4UV.js → chunk-N5B242WY.js} +3 -3
  61. package/dist/{chunk-ZL5RB4UV.js.map → chunk-N5B242WY.js.map} +1 -1
  62. package/dist/{chunk-IM4RCUHA.js → chunk-P63S7P6N.js} +1309 -69
  63. package/dist/chunk-P63S7P6N.js.map +1 -0
  64. package/dist/{chunk-YLEVMOK2.cjs → chunk-R66QG3XT.cjs} +5 -4
  65. package/dist/{chunk-YLEVMOK2.cjs.map → chunk-R66QG3XT.cjs.map} +1 -1
  66. package/dist/{chunk-I55HO32M.js → chunk-RJMCWT7Z.js} +3 -3
  67. package/dist/{chunk-I55HO32M.js.map → chunk-RJMCWT7Z.js.map} +1 -1
  68. package/dist/{chunk-TZTCIAYW.cjs → chunk-S3RMAXH5.cjs} +137 -25
  69. package/dist/chunk-S3RMAXH5.cjs.map +1 -0
  70. package/dist/{chunk-IBRW3UOA.js → chunk-TWLKXV2O.js} +3 -3
  71. package/dist/{chunk-IBRW3UOA.js.map → chunk-TWLKXV2O.js.map} +1 -1
  72. package/dist/{chunk-HUPDIRBX.js → chunk-UWA5MWCI.js} +949 -918
  73. package/dist/chunk-UWA5MWCI.js.map +1 -0
  74. package/dist/{chunk-RYVV5UVI.cjs → chunk-V4GILQR6.cjs} +4 -4
  75. package/dist/{chunk-RYVV5UVI.cjs.map → chunk-V4GILQR6.cjs.map} +1 -1
  76. package/dist/{chunk-XRCY75UV.cjs → chunk-V4RO5KYY.cjs} +951 -918
  77. package/dist/chunk-V4RO5KYY.cjs.map +1 -0
  78. package/dist/{chunk-VZ5LDNHK.cjs → chunk-VTSH4YPT.cjs} +12 -12
  79. package/dist/{chunk-VZ5LDNHK.cjs.map → chunk-VTSH4YPT.cjs.map} +1 -1
  80. package/dist/{chunk-UUBNQV2T.cjs → chunk-WQDIZH2Z.cjs} +12 -12
  81. package/dist/{chunk-UUBNQV2T.cjs.map → chunk-WQDIZH2Z.cjs.map} +1 -1
  82. package/dist/{chunk-EGSUMHCS.cjs → chunk-YB4XJY5L.cjs} +12 -12
  83. package/dist/{chunk-EGSUMHCS.cjs.map → chunk-YB4XJY5L.cjs.map} +1 -1
  84. package/dist/{chunk-JHDR56XO.js → chunk-YS6CGUNH.js} +3 -3
  85. package/dist/{chunk-JHDR56XO.js.map → chunk-YS6CGUNH.js.map} +1 -1
  86. package/dist/{chunk-NWPCY65Z.cjs → chunk-YVDUEUFV.cjs} +1311 -68
  87. package/dist/chunk-YVDUEUFV.cjs.map +1 -0
  88. package/dist/{types-BOAsqHoU.d.ts → diagnostics-DRxhodP6.d.cts} +74 -2
  89. package/dist/{types-BOAsqHoU.d.cts → diagnostics-DRxhodP6.d.ts} +74 -2
  90. package/dist/diagrams/blockdiagram/index.d.cts +1 -1
  91. package/dist/diagrams/blockdiagram/index.d.ts +1 -1
  92. package/dist/diagrams/circuit/index.cjs +8 -8
  93. package/dist/diagrams/circuit/index.d.cts +1 -1
  94. package/dist/diagrams/circuit/index.d.ts +1 -1
  95. package/dist/diagrams/circuit/index.js +2 -2
  96. package/dist/diagrams/ecomap/index.cjs +7 -7
  97. package/dist/diagrams/ecomap/index.d.cts +1 -1
  98. package/dist/diagrams/ecomap/index.d.ts +1 -1
  99. package/dist/diagrams/ecomap/index.js +2 -2
  100. package/dist/diagrams/entity/index.cjs +6 -6
  101. package/dist/diagrams/entity/index.d.cts +1 -1
  102. package/dist/diagrams/entity/index.d.ts +1 -1
  103. package/dist/diagrams/entity/index.js +2 -2
  104. package/dist/diagrams/fishbone/index.cjs +8 -8
  105. package/dist/diagrams/fishbone/index.d.cts +1 -1
  106. package/dist/diagrams/fishbone/index.d.ts +1 -1
  107. package/dist/diagrams/fishbone/index.js +2 -2
  108. package/dist/diagrams/flowchart/index.cjs +8 -8
  109. package/dist/diagrams/flowchart/index.d.cts +2 -2
  110. package/dist/diagrams/flowchart/index.d.ts +2 -2
  111. package/dist/diagrams/flowchart/index.js +2 -2
  112. package/dist/diagrams/genogram/index.cjs +9 -9
  113. package/dist/diagrams/genogram/index.d.cts +1 -1
  114. package/dist/diagrams/genogram/index.d.ts +1 -1
  115. package/dist/diagrams/genogram/index.js +2 -2
  116. package/dist/diagrams/ladder/index.cjs +6 -6
  117. package/dist/diagrams/ladder/index.d.cts +1 -1
  118. package/dist/diagrams/ladder/index.d.ts +1 -1
  119. package/dist/diagrams/ladder/index.js +2 -2
  120. package/dist/diagrams/logic/index.cjs +6 -6
  121. package/dist/diagrams/logic/index.d.cts +1 -1
  122. package/dist/diagrams/logic/index.d.ts +1 -1
  123. package/dist/diagrams/logic/index.js +2 -2
  124. package/dist/diagrams/orgchart/index.cjs +7 -7
  125. package/dist/diagrams/orgchart/index.d.cts +1 -1
  126. package/dist/diagrams/orgchart/index.d.ts +1 -1
  127. package/dist/diagrams/orgchart/index.js +2 -2
  128. package/dist/diagrams/pedigree/index.cjs +7 -7
  129. package/dist/diagrams/pedigree/index.d.cts +1 -1
  130. package/dist/diagrams/pedigree/index.d.ts +1 -1
  131. package/dist/diagrams/pedigree/index.js +2 -2
  132. package/dist/diagrams/phylo/index.cjs +7 -7
  133. package/dist/diagrams/phylo/index.d.cts +1 -1
  134. package/dist/diagrams/phylo/index.d.ts +1 -1
  135. package/dist/diagrams/phylo/index.js +2 -2
  136. package/dist/diagrams/sld/index.cjs +14 -6
  137. package/dist/diagrams/sld/index.d.cts +14 -2
  138. package/dist/diagrams/sld/index.d.ts +14 -2
  139. package/dist/diagrams/sld/index.js +2 -2
  140. package/dist/diagrams/sociogram/index.cjs +6 -6
  141. package/dist/diagrams/sociogram/index.d.cts +1 -1
  142. package/dist/diagrams/sociogram/index.d.ts +1 -1
  143. package/dist/diagrams/sociogram/index.js +2 -2
  144. package/dist/diagrams/timing/index.d.cts +1 -1
  145. package/dist/diagrams/timing/index.d.ts +1 -1
  146. package/dist/diagrams/venn/index.cjs +9 -9
  147. package/dist/diagrams/venn/index.d.cts +1 -1
  148. package/dist/diagrams/venn/index.d.ts +1 -1
  149. package/dist/diagrams/venn/index.js +2 -2
  150. package/dist/{index-CJai_TEZ.d.ts → index-BRIkOPnd.d.cts} +60 -2
  151. package/dist/{index-C9A0h-CB.d.cts → index-C7SN-FB3.d.ts} +60 -2
  152. package/dist/index.cjs +351 -51
  153. package/dist/index.cjs.map +1 -1
  154. package/dist/index.d.cts +38 -4
  155. package/dist/index.d.ts +38 -4
  156. package/dist/index.js +283 -16
  157. package/dist/index.js.map +1 -1
  158. package/dist/react.cjs +21 -23
  159. package/dist/react.cjs.map +1 -1
  160. package/dist/react.d.cts +3 -2
  161. package/dist/react.d.ts +3 -2
  162. package/dist/react.js +21 -23
  163. package/dist/react.js.map +1 -1
  164. package/dist/tools-BVeUNdsU.d.ts +161 -0
  165. package/dist/tools-DdhP1kWY.d.cts +161 -0
  166. package/package.json +2 -2
  167. package/dist/chunk-2VNMKOUO.js.map +0 -1
  168. package/dist/chunk-3M6WB62Y.cjs.map +0 -1
  169. package/dist/chunk-3YUUC6RN.cjs.map +0 -1
  170. package/dist/chunk-6OSUNBZY.js.map +0 -1
  171. package/dist/chunk-D7EHZFK4.cjs.map +0 -1
  172. package/dist/chunk-GTDQAN2Z.js.map +0 -1
  173. package/dist/chunk-HUPDIRBX.js.map +0 -1
  174. package/dist/chunk-IM4RCUHA.js.map +0 -1
  175. package/dist/chunk-NWPCY65Z.cjs.map +0 -1
  176. package/dist/chunk-QTNPMIO2.cjs.map +0 -1
  177. package/dist/chunk-TZTCIAYW.cjs.map +0 -1
  178. package/dist/chunk-UFTYX73U.js.map +0 -1
  179. package/dist/chunk-VJGMEGMR.js.map +0 -1
  180. package/dist/chunk-XRCY75UV.cjs.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chunkSBB6C4OP_cjs = require('./chunk-SBB6C4OP.cjs');
4
4
  var chunk3KRL2EGN_cjs = require('./chunk-3KRL2EGN.cjs');
5
- var chunkD7EHZFK4_cjs = require('./chunk-D7EHZFK4.cjs');
5
+ var chunkL7POWM5B_cjs = require('./chunk-L7POWM5B.cjs');
6
6
  var chunkNAGUZFXX_cjs = require('./chunk-NAGUZFXX.cjs');
7
7
  var chunk3WNW5Y7P_cjs = require('./chunk-3WNW5Y7P.cjs');
8
8
 
@@ -169,6 +169,7 @@ function parseSLDDSL(text2) {
169
169
  const rawLines = text2.split("\n").map((l) => l.replace(/\r$/, ""));
170
170
  const lines = joinBrackets(rawLines);
171
171
  let title2;
172
+ let standard;
172
173
  const nodes = [];
173
174
  const nodeMap = /* @__PURE__ */ new Map();
174
175
  const connections = [];
@@ -179,6 +180,23 @@ function parseSLDDSL(text2) {
179
180
  if (/^sld\b/i.test(line2)) {
180
181
  const t = chunkNAGUZFXX_cjs.matchQuotedTitle(line2);
181
182
  if (t !== void 0) title2 = t;
183
+ const bracket = line2.match(/\[([^\]]*)\]/);
184
+ if (bracket) {
185
+ for (const [k, v] of splitAttrs(bracket[1])) {
186
+ if (k.toLowerCase() === "standard") {
187
+ const s = v.trim().toLowerCase();
188
+ if (s === "ansi" || s === "iec" || s === "abnt" || s === "as-nzs") {
189
+ standard = s;
190
+ } else {
191
+ throw new SLDParseError(
192
+ `Unknown standard "${v}". Valid: ansi, iec, abnt, as-nzs`,
193
+ i + 1,
194
+ line2
195
+ );
196
+ }
197
+ }
198
+ }
199
+ }
182
200
  continue;
183
201
  }
184
202
  const connMatch = line2.match(
@@ -243,7 +261,12 @@ function parseSLDDSL(text2) {
243
261
  if (nodes.length === 0) {
244
262
  throw new SLDParseError("SLD diagram has no nodes");
245
263
  }
246
- return { type: "sld", title: title2, nodes, connections };
264
+ return { type: "sld", title: title2, standard, nodes, connections };
265
+ }
266
+
267
+ // src/core/types.ts
268
+ function isIecFamily(standard) {
269
+ return standard === "iec" || standard === "abnt" || standard === "as-nzs";
247
270
  }
248
271
 
249
272
  // src/diagrams/sld/symbols.ts
@@ -644,7 +667,52 @@ function meterSymbol(label) {
644
667
  lineEl(0, 12, 0, 14)
645
668
  ]);
646
669
  }
647
- function renderSymbol(type, detail) {
670
+ function transformerSymbolIEC(type) {
671
+ const pieces = [
672
+ chunk3WNW5Y7P_cjs.el("circle", { cx: 0, cy: -7, r: 11, class: "lt-sld-stroke" }),
673
+ chunk3WNW5Y7P_cjs.el("circle", { cx: 0, cy: 7, r: 11, class: "lt-sld-stroke" }),
674
+ lineEl(0, -24, 0, -18),
675
+ lineEl(0, 18, 0, 24)
676
+ ];
677
+ const { primary, secondary } = windingGlyphs(type);
678
+ if (primary) pieces.push(chunk3WNW5Y7P_cjs.text({ x: 20, y: -10, class: "lt-sld-wdg", "text-anchor": "start" }, primary));
679
+ if (secondary) pieces.push(chunk3WNW5Y7P_cjs.text({ x: 20, y: 14, class: "lt-sld-wdg", "text-anchor": "start" }, secondary));
680
+ return chunk3WNW5Y7P_cjs.group({}, pieces);
681
+ }
682
+ function breakerSymbolIEC() {
683
+ return chunk3WNW5Y7P_cjs.group({}, [
684
+ lineEl(0, -18, 0, -10),
685
+ lineEl(0, 10, 0, 18),
686
+ // open contact arm pivoting from the bottom terminal
687
+ chunk3WNW5Y7P_cjs.line({ x1: -6, y1: 10, x2: 6, y2: -8, class: "lt-sld-stroke-thick" }),
688
+ // × at the fixed contact
689
+ chunk3WNW5Y7P_cjs.line({ x1: -4, y1: -13, x2: 4, y2: -7, class: "lt-sld-stroke" }),
690
+ chunk3WNW5Y7P_cjs.line({ x1: 4, y1: -13, x2: -4, y2: -7, class: "lt-sld-stroke" })
691
+ ]);
692
+ }
693
+ function fuseSymbolIEC() {
694
+ return chunk3WNW5Y7P_cjs.group({}, [
695
+ chunk3WNW5Y7P_cjs.el("rect", { x: -5, y: -11, width: 10, height: 22, class: "lt-sld-fill" }),
696
+ lineEl(0, -11, 0, 11),
697
+ lineEl(0, -18, 0, -11),
698
+ lineEl(0, 11, 0, 18)
699
+ ]);
700
+ }
701
+ function renderSymbol(type, detail, standard) {
702
+ if (isIecFamily(standard)) {
703
+ switch (type) {
704
+ case "transformer":
705
+ case "transformer_dy":
706
+ case "transformer_yd":
707
+ case "transformer_yy":
708
+ case "transformer_dd":
709
+ return transformerSymbolIEC(type);
710
+ case "breaker":
711
+ return breakerSymbolIEC();
712
+ case "fuse":
713
+ return fuseSymbolIEC();
714
+ }
715
+ }
648
716
  switch (type) {
649
717
  case "utility":
650
718
  return utilitySymbol();
@@ -1151,8 +1219,21 @@ function buildCss(t) {
1151
1219
  .lt-sld-symbol-text { font: 11px sans-serif; fill: ${t.text}; dominant-baseline: middle; }
1152
1220
  .lt-sld-wdg { font: bold 10px sans-serif; fill: ${t.stroke}; dominant-baseline: middle; }
1153
1221
  .lt-sld-bus-label { font: bold 11px sans-serif; fill: ${t.accent}; }
1222
+ .lt-sld-standard-badge { font: bold 10px sans-serif; fill: ${t.textMuted}; letter-spacing: 0.3px; }
1154
1223
  `.trim();
1155
1224
  }
1225
+ function standardBadge(standard) {
1226
+ switch (standard) {
1227
+ case "iec":
1228
+ return "Standard: IEC 60617";
1229
+ case "abnt":
1230
+ return "Norma: ABNT NBR 5410 (IEC 60364)";
1231
+ case "as-nzs":
1232
+ return "Standard: AS/NZS 3000 (IEC 60364)";
1233
+ default:
1234
+ return void 0;
1235
+ }
1236
+ }
1156
1237
  function renderLabels(ln) {
1157
1238
  const pieces = [];
1158
1239
  const { node } = ln;
@@ -1226,7 +1307,7 @@ function renderLabels(ln) {
1226
1307
  }
1227
1308
  function renderSLD(ast, config) {
1228
1309
  const layout = layoutSLD(ast);
1229
- const t = chunkD7EHZFK4_cjs.resolveIndustrialTheme(config?.theme ?? "default");
1310
+ const t = chunkL7POWM5B_cjs.resolveIndustrialTheme(config?.theme ?? "default");
1230
1311
  const titleOffset = ast.title ? 34 : 12;
1231
1312
  const width = Math.ceil(layout.width);
1232
1313
  const height = Math.ceil(layout.height + titleOffset);
@@ -1260,6 +1341,15 @@ function renderSLD(ast, config) {
1260
1341
  chunk3WNW5Y7P_cjs.text({ x: 20, y: 22, class: "lt-sld-title" }, ast.title)
1261
1342
  );
1262
1343
  }
1344
+ const badge = standardBadge(ast.standard);
1345
+ if (badge) {
1346
+ children.push(
1347
+ chunk3WNW5Y7P_cjs.text(
1348
+ { x: width - 14, y: 22, class: "lt-sld-standard-badge", "text-anchor": "end" },
1349
+ badge
1350
+ )
1351
+ );
1352
+ }
1263
1353
  const inner = [];
1264
1354
  layout.bands.forEach((b, i) => {
1265
1355
  inner.push(
@@ -1325,7 +1415,8 @@ function renderSLD(ast, config) {
1325
1415
  chunk3WNW5Y7P_cjs.group(attrs, [
1326
1416
  renderSymbol(
1327
1417
  ln.nodeType,
1328
- ln.nodeType === "hub" ? ln.node.label ?? ln.node.id : ln.node.deviceNumber
1418
+ ln.nodeType === "hub" ? ln.node.label ?? ln.node.id : ln.node.deviceNumber,
1419
+ ast.standard
1329
1420
  )
1330
1421
  ])
1331
1422
  );
@@ -1346,6 +1437,42 @@ function renderSLD(ast, config) {
1346
1437
  );
1347
1438
  }
1348
1439
 
1440
+ // src/diagrams/sld/lint.ts
1441
+ function lintSLD(text2) {
1442
+ let ast;
1443
+ try {
1444
+ ast = parseSLDDSL(text2);
1445
+ } catch {
1446
+ return [];
1447
+ }
1448
+ return lintSLDAst(ast);
1449
+ }
1450
+ var ANSI_ONLY = {
1451
+ recloser: "recloser",
1452
+ sectionalizer: "sectionalizer",
1453
+ watthour_meter: "watt-hour meter",
1454
+ demand_meter: "demand meter"
1455
+ };
1456
+ function lintSLDAst(ast) {
1457
+ const out = [];
1458
+ if (!isIecFamily(ast.standard)) return out;
1459
+ const stdName = ast.standard === "abnt" ? "ABNT NBR 5410" : ast.standard === "as-nzs" ? "AS/NZS 3000" : "IEC 60617";
1460
+ const seen = /* @__PURE__ */ new Set();
1461
+ for (const node of ast.nodes) {
1462
+ const friendly = ANSI_ONLY[node.nodeType];
1463
+ if (!friendly || seen.has(node.nodeType)) continue;
1464
+ seen.add(node.nodeType);
1465
+ out.push({
1466
+ severity: "warning",
1467
+ code: "SLD_SYMBOL_NOT_IN_STANDARD",
1468
+ message: `device "${node.nodeType}" (${friendly}) has no symbol in ${stdName}; rendered with the ANSI/IEEE form`,
1469
+ hint: `${friendly} is a North-American utility convention. Confirm an equivalent device exists in ${stdName}, or model it with an IEC-native device.`,
1470
+ fatal: false
1471
+ });
1472
+ }
1473
+ return out;
1474
+ }
1475
+
1349
1476
  // src/diagrams/sld/index.ts
1350
1477
  var sld = {
1351
1478
  type: "sld",
@@ -1354,15 +1481,20 @@ var sld = {
1354
1481
  return first.startsWith("sld");
1355
1482
  },
1356
1483
  parse: parseSLDDSL,
1484
+ lint: lintSLD,
1357
1485
  render(text2, config) {
1358
1486
  const ast = parseSLDDSL(text2);
1359
1487
  return renderSLD(ast, config);
1360
1488
  }
1361
1489
  };
1362
1490
 
1491
+ exports.geometryFor = geometryFor;
1363
1492
  exports.layoutSLD = layoutSLD;
1493
+ exports.lintSLD = lintSLD;
1494
+ exports.lintSLDAst = lintSLDAst;
1364
1495
  exports.parseSLDDSL = parseSLDDSL;
1365
1496
  exports.renderSLD = renderSLD;
1497
+ exports.renderSymbol = renderSymbol;
1366
1498
  exports.sld = sld;
1367
- //# sourceMappingURL=chunk-3M6WB62Y.cjs.map
1368
- //# sourceMappingURL=chunk-3M6WB62Y.cjs.map
1499
+ //# sourceMappingURL=chunk-ECD5XHBM.cjs.map
1500
+ //# sourceMappingURL=chunk-ECD5XHBM.cjs.map