schematex 0.3.2 → 0.3.4

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 (202) hide show
  1. package/README.md +20 -1
  2. package/dist/ai/ai-sdk.cjs +25 -25
  3. package/dist/ai/ai-sdk.d.cts +1 -1
  4. package/dist/ai/ai-sdk.d.ts +1 -1
  5. package/dist/ai/ai-sdk.js +20 -20
  6. package/dist/ai/index.cjs +28 -28
  7. package/dist/ai/index.d.cts +1 -1
  8. package/dist/ai/index.d.ts +1 -1
  9. package/dist/ai/index.js +20 -20
  10. package/dist/browser.cjs +22 -22
  11. package/dist/browser.js +20 -20
  12. package/dist/{chunk-UK7JF5QB.cjs → chunk-3MJKJX27.cjs} +37 -38
  13. package/dist/chunk-3MJKJX27.cjs.map +1 -0
  14. package/dist/{chunk-HIQPEAL7.js → chunk-3RAVPXLN.js} +4 -4
  15. package/dist/{chunk-HIQPEAL7.js.map → chunk-3RAVPXLN.js.map} +1 -1
  16. package/dist/{chunk-LFZZ4NCP.cjs → chunk-3WNW5Y7P.cjs} +48 -8
  17. package/dist/chunk-3WNW5Y7P.cjs.map +1 -0
  18. package/dist/{chunk-XUEROLSB.cjs → chunk-4THC4VUA.cjs} +17 -17
  19. package/dist/chunk-4THC4VUA.cjs.map +1 -0
  20. package/dist/{chunk-K5QG53GT.cjs → chunk-5COUZTVA.cjs} +27 -27
  21. package/dist/{chunk-K5QG53GT.cjs.map → chunk-5COUZTVA.cjs.map} +1 -1
  22. package/dist/{chunk-F6OROIHS.js → chunk-5CTERELC.js} +4 -4
  23. package/dist/{chunk-F6OROIHS.js.map → chunk-5CTERELC.js.map} +1 -1
  24. package/dist/{chunk-ZNLEUL7T.js → chunk-5SKT7RYR.js} +5 -5
  25. package/dist/chunk-5SKT7RYR.js.map +1 -0
  26. package/dist/{chunk-75BMFCP5.cjs → chunk-5UCXMYE7.cjs} +44 -44
  27. package/dist/{chunk-75BMFCP5.cjs.map → chunk-5UCXMYE7.cjs.map} +1 -1
  28. package/dist/{chunk-GYTWJ6VB.cjs → chunk-6ULC3UHJ.cjs} +68 -49
  29. package/dist/chunk-6ULC3UHJ.cjs.map +1 -0
  30. package/dist/{chunk-3YXXZ4LT.cjs → chunk-6WORZSL3.cjs} +34 -34
  31. package/dist/{chunk-3YXXZ4LT.cjs.map → chunk-6WORZSL3.cjs.map} +1 -1
  32. package/dist/{chunk-6BKUD5EJ.js → chunk-6XGSEG3K.js} +4 -5
  33. package/dist/chunk-6XGSEG3K.js.map +1 -0
  34. package/dist/{chunk-OK5RYX55.cjs → chunk-CQP5YHVK.cjs} +26 -27
  35. package/dist/chunk-CQP5YHVK.cjs.map +1 -0
  36. package/dist/{chunk-2UJAVPA4.cjs → chunk-CS67UBP3.cjs} +27 -27
  37. package/dist/{chunk-2UJAVPA4.cjs.map → chunk-CS67UBP3.cjs.map} +1 -1
  38. package/dist/{chunk-YTEEZV6J.cjs → chunk-DBMZEZLF.cjs} +425 -425
  39. package/dist/chunk-DBMZEZLF.cjs.map +1 -0
  40. package/dist/{chunk-NFT6VW73.js → chunk-DHKKDIVT.js} +4 -4
  41. package/dist/chunk-DHKKDIVT.js.map +1 -0
  42. package/dist/{chunk-H4CJTKEH.js → chunk-DNZV4V4R.js} +5 -5
  43. package/dist/{chunk-H4CJTKEH.js.map → chunk-DNZV4V4R.js.map} +1 -1
  44. package/dist/{chunk-ZTSO3S4P.js → chunk-FO7BLCEW.js} +3 -3
  45. package/dist/{chunk-ZTSO3S4P.js.map → chunk-FO7BLCEW.js.map} +1 -1
  46. package/dist/{chunk-EYHD7LV3.cjs → chunk-H5JYZ5YS.cjs} +130 -130
  47. package/dist/chunk-H5JYZ5YS.cjs.map +1 -0
  48. package/dist/{chunk-RNGYXGHS.js → chunk-HKJRHXGZ.js} +22 -22
  49. package/dist/chunk-HKJRHXGZ.js.map +1 -0
  50. package/dist/{chunk-X4F6VVEJ.js → chunk-I6VEXSUK.js} +3 -4
  51. package/dist/chunk-I6VEXSUK.js.map +1 -0
  52. package/dist/{chunk-MKKFIPKU.cjs → chunk-IFR34VTL.cjs} +47 -47
  53. package/dist/chunk-IFR34VTL.cjs.map +1 -0
  54. package/dist/{chunk-BJ65PKDU.js → chunk-IURM4ZWE.js} +4 -4
  55. package/dist/chunk-IURM4ZWE.js.map +1 -0
  56. package/dist/{chunk-M5ZC3LFJ.js → chunk-IZMAZOQI.js} +4 -4
  57. package/dist/chunk-IZMAZOQI.js.map +1 -0
  58. package/dist/{chunk-RODV6PC4.cjs → chunk-J3Y2QDJR.cjs} +7 -7
  59. package/dist/{chunk-RODV6PC4.cjs.map → chunk-J3Y2QDJR.cjs.map} +1 -1
  60. package/dist/{chunk-BUN3CRMP.cjs → chunk-K6RAUXRQ.cjs} +65 -66
  61. package/dist/chunk-K6RAUXRQ.cjs.map +1 -0
  62. package/dist/{chunk-IT2TVXC7.js → chunk-LPKVIRYT.js} +4 -5
  63. package/dist/chunk-LPKVIRYT.js.map +1 -0
  64. package/dist/{chunk-W7GIQTJV.cjs → chunk-MIKCKV27.cjs} +22 -22
  65. package/dist/chunk-MIKCKV27.cjs.map +1 -0
  66. package/dist/{chunk-KUXOHLGC.cjs → chunk-O5POCPXZ.cjs} +52 -53
  67. package/dist/chunk-O5POCPXZ.cjs.map +1 -0
  68. package/dist/{chunk-BJWMPPEA.js → chunk-PWI4NFYR.js} +4 -4
  69. package/dist/chunk-PWI4NFYR.js.map +1 -0
  70. package/dist/{chunk-WHJXRLFD.js → chunk-SYYBKDL7.js} +48 -8
  71. package/dist/chunk-SYYBKDL7.js.map +1 -0
  72. package/dist/{chunk-L2KUGWFR.cjs → chunk-T47A6XUK.cjs} +47 -47
  73. package/dist/chunk-T47A6XUK.cjs.map +1 -0
  74. package/dist/{chunk-SFSZUOFT.js → chunk-TWAC2IIS.js} +4 -4
  75. package/dist/chunk-TWAC2IIS.js.map +1 -0
  76. package/dist/{chunk-XI6JOG76.cjs → chunk-V4OVUBLA.cjs} +46 -46
  77. package/dist/chunk-V4OVUBLA.cjs.map +1 -0
  78. package/dist/{chunk-2J2QWNGI.js → chunk-VRE5VWDQ.js} +27 -8
  79. package/dist/chunk-VRE5VWDQ.js.map +1 -0
  80. package/dist/{chunk-SE23X5OE.js → chunk-WHNIK4LK.js} +4 -5
  81. package/dist/chunk-WHNIK4LK.js.map +1 -0
  82. package/dist/{chunk-C3IVD7DI.cjs → chunk-WIFGBWET.cjs} +25 -26
  83. package/dist/chunk-WIFGBWET.cjs.map +1 -0
  84. package/dist/{chunk-7MVDN5UC.cjs → chunk-XSNNGYXZ.cjs} +36 -36
  85. package/dist/chunk-XSNNGYXZ.cjs.map +1 -0
  86. package/dist/{chunk-7BEJHG43.js → chunk-YWDODCW2.js} +4 -4
  87. package/dist/{chunk-7BEJHG43.js.map → chunk-YWDODCW2.js.map} +1 -1
  88. package/dist/{chunk-M3R6RCXY.js → chunk-ZKDL6Y3O.js} +4 -4
  89. package/dist/chunk-ZKDL6Y3O.js.map +1 -0
  90. package/dist/{chunk-56LXBM45.js → chunk-ZQZNWAHH.js} +4 -5
  91. package/dist/chunk-ZQZNWAHH.js.map +1 -0
  92. package/dist/diagrams/blockdiagram/index.cjs +6 -6
  93. package/dist/diagrams/blockdiagram/index.d.cts +1 -1
  94. package/dist/diagrams/blockdiagram/index.d.ts +1 -1
  95. package/dist/diagrams/blockdiagram/index.js +2 -2
  96. package/dist/diagrams/circuit/index.cjs +8 -8
  97. package/dist/diagrams/circuit/index.d.cts +1 -1
  98. package/dist/diagrams/circuit/index.d.ts +1 -1
  99. package/dist/diagrams/circuit/index.js +2 -2
  100. package/dist/diagrams/ecomap/index.cjs +8 -8
  101. package/dist/diagrams/ecomap/index.d.cts +1 -1
  102. package/dist/diagrams/ecomap/index.d.ts +1 -1
  103. package/dist/diagrams/ecomap/index.js +3 -3
  104. package/dist/diagrams/entity/index.cjs +6 -6
  105. package/dist/diagrams/entity/index.d.cts +1 -1
  106. package/dist/diagrams/entity/index.d.ts +1 -1
  107. package/dist/diagrams/entity/index.js +2 -2
  108. package/dist/diagrams/fishbone/index.cjs +8 -8
  109. package/dist/diagrams/fishbone/index.d.cts +1 -1
  110. package/dist/diagrams/fishbone/index.d.ts +1 -1
  111. package/dist/diagrams/fishbone/index.js +2 -2
  112. package/dist/diagrams/flowchart/index.cjs +8 -8
  113. package/dist/diagrams/flowchart/index.d.cts +2 -2
  114. package/dist/diagrams/flowchart/index.d.ts +2 -2
  115. package/dist/diagrams/flowchart/index.js +2 -2
  116. package/dist/diagrams/genogram/index.cjs +10 -10
  117. package/dist/diagrams/genogram/index.d.cts +1 -1
  118. package/dist/diagrams/genogram/index.d.ts +1 -1
  119. package/dist/diagrams/genogram/index.js +3 -3
  120. package/dist/diagrams/ladder/index.cjs +6 -6
  121. package/dist/diagrams/ladder/index.d.cts +1 -1
  122. package/dist/diagrams/ladder/index.d.ts +1 -1
  123. package/dist/diagrams/ladder/index.js +2 -2
  124. package/dist/diagrams/logic/index.cjs +6 -6
  125. package/dist/diagrams/logic/index.d.cts +1 -1
  126. package/dist/diagrams/logic/index.d.ts +1 -1
  127. package/dist/diagrams/logic/index.js +2 -2
  128. package/dist/diagrams/orgchart/index.cjs +7 -7
  129. package/dist/diagrams/orgchart/index.d.cts +1 -1
  130. package/dist/diagrams/orgchart/index.d.ts +1 -1
  131. package/dist/diagrams/orgchart/index.js +2 -2
  132. package/dist/diagrams/pedigree/index.cjs +8 -8
  133. package/dist/diagrams/pedigree/index.d.cts +1 -1
  134. package/dist/diagrams/pedigree/index.d.ts +1 -1
  135. package/dist/diagrams/pedigree/index.js +3 -3
  136. package/dist/diagrams/phylo/index.cjs +7 -7
  137. package/dist/diagrams/phylo/index.d.cts +1 -1
  138. package/dist/diagrams/phylo/index.d.ts +1 -1
  139. package/dist/diagrams/phylo/index.js +2 -2
  140. package/dist/diagrams/sld/index.cjs +6 -6
  141. package/dist/diagrams/sld/index.d.cts +1 -1
  142. package/dist/diagrams/sld/index.d.ts +1 -1
  143. package/dist/diagrams/sld/index.js +2 -2
  144. package/dist/diagrams/sociogram/index.cjs +7 -7
  145. package/dist/diagrams/sociogram/index.d.cts +1 -1
  146. package/dist/diagrams/sociogram/index.d.ts +1 -1
  147. package/dist/diagrams/sociogram/index.js +3 -3
  148. package/dist/diagrams/timing/index.cjs +5 -5
  149. package/dist/diagrams/timing/index.d.cts +1 -1
  150. package/dist/diagrams/timing/index.d.ts +1 -1
  151. package/dist/diagrams/timing/index.js +2 -2
  152. package/dist/diagrams/venn/index.cjs +9 -9
  153. package/dist/diagrams/venn/index.d.cts +1 -1
  154. package/dist/diagrams/venn/index.d.ts +1 -1
  155. package/dist/diagrams/venn/index.js +2 -2
  156. package/dist/export.cjs +1 -1
  157. package/dist/export.cjs.map +1 -1
  158. package/dist/export.d.cts +1 -1
  159. package/dist/export.d.ts +1 -1
  160. package/dist/export.js +1 -1
  161. package/dist/export.js.map +1 -1
  162. package/dist/{index-dWDwG6BW.d.ts → index-D3u6vcA4.d.ts} +1 -1
  163. package/dist/{index-BrLxEzSQ.d.cts → index-bdfj6FpQ.d.cts} +1 -1
  164. package/dist/index.cjs +41 -41
  165. package/dist/index.d.cts +2 -2
  166. package/dist/index.d.ts +2 -2
  167. package/dist/index.js +19 -19
  168. package/dist/react.cjs +20 -20
  169. package/dist/react.js +19 -19
  170. package/dist/{types-BtiUg7Gx.d.cts → types-DnU2UlWz.d.cts} +2 -0
  171. package/dist/{types-BtiUg7Gx.d.ts → types-DnU2UlWz.d.ts} +2 -0
  172. package/package.json +1 -1
  173. package/dist/chunk-2J2QWNGI.js.map +0 -1
  174. package/dist/chunk-56LXBM45.js.map +0 -1
  175. package/dist/chunk-6BKUD5EJ.js.map +0 -1
  176. package/dist/chunk-7MVDN5UC.cjs.map +0 -1
  177. package/dist/chunk-BJ65PKDU.js.map +0 -1
  178. package/dist/chunk-BJWMPPEA.js.map +0 -1
  179. package/dist/chunk-BUN3CRMP.cjs.map +0 -1
  180. package/dist/chunk-C3IVD7DI.cjs.map +0 -1
  181. package/dist/chunk-EYHD7LV3.cjs.map +0 -1
  182. package/dist/chunk-GYTWJ6VB.cjs.map +0 -1
  183. package/dist/chunk-IT2TVXC7.js.map +0 -1
  184. package/dist/chunk-KUXOHLGC.cjs.map +0 -1
  185. package/dist/chunk-L2KUGWFR.cjs.map +0 -1
  186. package/dist/chunk-LFZZ4NCP.cjs.map +0 -1
  187. package/dist/chunk-M3R6RCXY.js.map +0 -1
  188. package/dist/chunk-M5ZC3LFJ.js.map +0 -1
  189. package/dist/chunk-MKKFIPKU.cjs.map +0 -1
  190. package/dist/chunk-NFT6VW73.js.map +0 -1
  191. package/dist/chunk-OK5RYX55.cjs.map +0 -1
  192. package/dist/chunk-RNGYXGHS.js.map +0 -1
  193. package/dist/chunk-SE23X5OE.js.map +0 -1
  194. package/dist/chunk-SFSZUOFT.js.map +0 -1
  195. package/dist/chunk-UK7JF5QB.cjs.map +0 -1
  196. package/dist/chunk-W7GIQTJV.cjs.map +0 -1
  197. package/dist/chunk-WHJXRLFD.js.map +0 -1
  198. package/dist/chunk-X4F6VVEJ.js.map +0 -1
  199. package/dist/chunk-XI6JOG76.cjs.map +0 -1
  200. package/dist/chunk-XUEROLSB.cjs.map +0 -1
  201. package/dist/chunk-YTEEZV6J.cjs.map +0 -1
  202. package/dist/chunk-ZNLEUL7T.js.map +0 -1
@@ -1,6 +1,6 @@
1
- export { layoutSociogram, parseSociogram, renderSociogram, sociogram } from '../../chunk-56LXBM45.js';
2
- import '../../chunk-ZTSO3S4P.js';
1
+ export { layoutSociogram, parseSociogram, renderSociogram, sociogram } from '../../chunk-ZQZNWAHH.js';
2
+ import '../../chunk-FO7BLCEW.js';
3
3
  import '../../chunk-2VNMKOUO.js';
4
- import '../../chunk-WHJXRLFD.js';
4
+ import '../../chunk-SYYBKDL7.js';
5
5
  //# sourceMappingURL=index.js.map
6
6
  //# sourceMappingURL=index.js.map
@@ -1,21 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var chunkK5QG53GT_cjs = require('../../chunk-K5QG53GT.cjs');
4
- require('../../chunk-LFZZ4NCP.cjs');
3
+ var chunk5COUZTVA_cjs = require('../../chunk-5COUZTVA.cjs');
4
+ require('../../chunk-3WNW5Y7P.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "parseTiming", {
9
9
  enumerable: true,
10
- get: function () { return chunkK5QG53GT_cjs.parseTiming; }
10
+ get: function () { return chunk5COUZTVA_cjs.parseTiming; }
11
11
  });
12
12
  Object.defineProperty(exports, "renderTiming", {
13
13
  enumerable: true,
14
- get: function () { return chunkK5QG53GT_cjs.renderTiming; }
14
+ get: function () { return chunk5COUZTVA_cjs.renderTiming; }
15
15
  });
16
16
  Object.defineProperty(exports, "timing", {
17
17
  enumerable: true,
18
- get: function () { return chunkK5QG53GT_cjs.timing; }
18
+ get: function () { return chunk5COUZTVA_cjs.timing; }
19
19
  });
20
20
  //# sourceMappingURL=index.cjs.map
21
21
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- import { T as TimingAST, D as DiagramPlugin } from '../../types-BtiUg7Gx.cjs';
1
+ import { T as TimingAST, D as DiagramPlugin } from '../../types-DnU2UlWz.cjs';
2
2
 
3
3
  declare function parseTiming(text: string): TimingAST;
4
4
 
@@ -1,4 +1,4 @@
1
- import { T as TimingAST, D as DiagramPlugin } from '../../types-BtiUg7Gx.js';
1
+ import { T as TimingAST, D as DiagramPlugin } from '../../types-DnU2UlWz.js';
2
2
 
3
3
  declare function parseTiming(text: string): TimingAST;
4
4
 
@@ -1,4 +1,4 @@
1
- export { parseTiming, renderTiming, timing } from '../../chunk-HIQPEAL7.js';
2
- import '../../chunk-WHJXRLFD.js';
1
+ export { parseTiming, renderTiming, timing } from '../../chunk-3RAVPXLN.js';
2
+ import '../../chunk-SYYBKDL7.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,38 +1,38 @@
1
1
  'use strict';
2
2
 
3
- var chunkW7GIQTJV_cjs = require('../../chunk-W7GIQTJV.cjs');
3
+ var chunkMIKCKV27_cjs = require('../../chunk-MIKCKV27.cjs');
4
4
  require('../../chunk-D7EHZFK4.cjs');
5
- require('../../chunk-LFZZ4NCP.cjs');
5
+ require('../../chunk-3WNW5Y7P.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "VennParseError", {
10
10
  enumerable: true,
11
- get: function () { return chunkW7GIQTJV_cjs.VennParseError; }
11
+ get: function () { return chunkMIKCKV27_cjs.VennParseError; }
12
12
  });
13
13
  Object.defineProperty(exports, "layoutVenn", {
14
14
  enumerable: true,
15
- get: function () { return chunkW7GIQTJV_cjs.layoutVenn; }
15
+ get: function () { return chunkMIKCKV27_cjs.layoutVenn; }
16
16
  });
17
17
  Object.defineProperty(exports, "parseVennDSL", {
18
18
  enumerable: true,
19
- get: function () { return chunkW7GIQTJV_cjs.parseVennDSL; }
19
+ get: function () { return chunkMIKCKV27_cjs.parseVennDSL; }
20
20
  });
21
21
  Object.defineProperty(exports, "renderVenn", {
22
22
  enumerable: true,
23
- get: function () { return chunkW7GIQTJV_cjs.renderVenn; }
23
+ get: function () { return chunkMIKCKV27_cjs.renderVenn; }
24
24
  });
25
25
  Object.defineProperty(exports, "renderVennAST", {
26
26
  enumerable: true,
27
- get: function () { return chunkW7GIQTJV_cjs.renderVennAST; }
27
+ get: function () { return chunkMIKCKV27_cjs.renderVennAST; }
28
28
  });
29
29
  Object.defineProperty(exports, "renderVennLayout", {
30
30
  enumerable: true,
31
- get: function () { return chunkW7GIQTJV_cjs.renderVennLayout; }
31
+ get: function () { return chunkMIKCKV27_cjs.renderVennLayout; }
32
32
  });
33
33
  Object.defineProperty(exports, "venn", {
34
34
  enumerable: true,
35
- get: function () { return chunkW7GIQTJV_cjs.venn; }
35
+ get: function () { return chunkMIKCKV27_cjs.venn; }
36
36
  });
37
37
  //# sourceMappingURL=index.cjs.map
38
38
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- import { V as VennAST, l as VennLayoutResult, D as DiagramPlugin } from '../../types-BtiUg7Gx.cjs';
1
+ import { V as VennAST, l as VennLayoutResult, D as DiagramPlugin } from '../../types-DnU2UlWz.cjs';
2
2
 
3
3
  /**
4
4
  * Venn / Euler DSL parser (hand-written recursive descent).
@@ -1,4 +1,4 @@
1
- import { V as VennAST, l as VennLayoutResult, D as DiagramPlugin } from '../../types-BtiUg7Gx.js';
1
+ import { V as VennAST, l as VennLayoutResult, D as DiagramPlugin } from '../../types-DnU2UlWz.js';
2
2
 
3
3
  /**
4
4
  * Venn / Euler DSL parser (hand-written recursive descent).
@@ -1,5 +1,5 @@
1
- export { VennParseError, layoutVenn, parseVennDSL, renderVenn, renderVennAST, renderVennLayout, venn } from '../../chunk-BJ65PKDU.js';
1
+ export { VennParseError, layoutVenn, parseVennDSL, renderVenn, renderVennAST, renderVennLayout, venn } from '../../chunk-IURM4ZWE.js';
2
2
  import '../../chunk-2VNMKOUO.js';
3
- import '../../chunk-WHJXRLFD.js';
3
+ import '../../chunk-SYYBKDL7.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
package/dist/export.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  // src/export.ts
4
4
  function svgToPngBlob(svgString, options = {}) {
5
- const { scale = 2, background = "white" } = options;
5
+ const { scale = 2, background = null } = options;
6
6
  return new Promise((resolve, reject) => {
7
7
  const blob = new Blob([svgString], { type: "image/svg+xml;charset=utf-8" });
8
8
  const url = URL.createObjectURL(blob);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/export.ts"],"names":[],"mappings":"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","file":"export.cjs","sourcesContent":["/**\n * Browser export utilities for Schematex SVG output.\n *\n * All APIs require a browser DOM + Canvas environment.\n * For Node.js PNG generation, use sharp or puppeteer externally.\n *\n * @example\n * ```ts\n * import { render } from 'schematex';\n * import { svgToPngBlob, downloadBlob } from 'schematex/export';\n *\n * const svg = render('genogram\\n alice [female]');\n * const png = await svgToPngBlob(svg, { scale: 2 });\n * downloadBlob(png, 'diagram.png');\n * ```\n */\n\nexport interface PngExportOptions {\n /** Pixel ratio multiplier. Default: 2 (retina/2×). */\n scale?: number;\n /** Background fill color. Default: 'white'. Pass null for transparent. */\n background?: string | null;\n}\n\n/**\n * Convert an SVG string to a PNG Blob using Canvas.\n * Resolves at @2× by default for crisp retina output.\n */\nexport function svgToPngBlob(\n svgString: string,\n options: PngExportOptions = {}\n): Promise<Blob> {\n const { scale = 2, background = \"white\" } = options;\n\n return new Promise((resolve, reject) => {\n const blob = new Blob([svgString], { type: \"image/svg+xml;charset=utf-8\" });\n const url = URL.createObjectURL(blob);\n const img = new Image();\n\n img.onload = () => {\n const w = img.naturalWidth || img.width || 800;\n const h = img.naturalHeight || img.height || 600;\n const canvas = document.createElement(\"canvas\");\n canvas.width = w * scale;\n canvas.height = h * scale;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n URL.revokeObjectURL(url);\n reject(new Error(\"Could not get 2D canvas context\"));\n return;\n }\n ctx.scale(scale, scale);\n if (background) {\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, w, h);\n }\n ctx.drawImage(img, 0, 0);\n URL.revokeObjectURL(url);\n canvas.toBlob(\n (pngBlob) => {\n if (pngBlob) resolve(pngBlob);\n else reject(new Error(\"canvas.toBlob returned null\"));\n },\n \"image/png\"\n );\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(url);\n reject(new Error(\"Failed to load SVG as image\"));\n };\n\n img.src = url;\n });\n}\n\n/**\n * Trigger a browser file download from a Blob.\n */\nexport function downloadBlob(blob: Blob, filename: string): void {\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\n/**\n * Open SVG in a print-ready popup and trigger the browser's print dialog\n * (allows Save as PDF via the OS print driver).\n */\nexport function printSvgAsPdf(svgString: string, title = \"Schematex Diagram\"): void {\n const html = `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>${title}</title>\n<style>\n * { margin: 0; padding: 0; box-sizing: border-box; }\n body { display: flex; justify-content: center; align-items: flex-start; }\n svg { max-width: 100%; height: auto; display: block; }\n @media print {\n body { display: block; }\n svg { width: 100%; page-break-inside: avoid; }\n }\n</style>\n</head>\n<body>${svgString}</body>\n</html>`;\n\n const win = window.open(\"\", \"_blank\", \"width=900,height=700\");\n if (!win) {\n // Popup blocked — fallback: open SVG directly\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\n window.open(URL.createObjectURL(blob), \"_blank\");\n return;\n }\n win.document.write(html);\n win.document.close();\n win.onload = () => win.print();\n}\n"]}
1
+ {"version":3,"sources":["../src/export.ts"],"names":[],"mappings":"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","file":"export.cjs","sourcesContent":["/**\n * Browser export utilities for Schematex SVG output.\n *\n * All APIs require a browser DOM + Canvas environment.\n * For Node.js PNG generation, use sharp or puppeteer externally.\n *\n * @example\n * ```ts\n * import { render } from 'schematex';\n * import { svgToPngBlob, downloadBlob } from 'schematex/export';\n *\n * const svg = render('genogram\\n alice [female]');\n * const png = await svgToPngBlob(svg, { scale: 2 });\n * downloadBlob(png, 'diagram.png');\n * ```\n */\n\nexport interface PngExportOptions {\n /** Pixel ratio multiplier. Default: 2 (retina/2×). */\n scale?: number;\n /** Background fill color. Default: null (transparent). Pass a color string (e.g. 'white') to fill. */\n background?: string | null;\n}\n\n/**\n * Convert an SVG string to a PNG Blob using Canvas.\n * Resolves at @2× by default for crisp retina output.\n */\nexport function svgToPngBlob(\n svgString: string,\n options: PngExportOptions = {}\n): Promise<Blob> {\n const { scale = 2, background = null } = options;\n\n return new Promise((resolve, reject) => {\n const blob = new Blob([svgString], { type: \"image/svg+xml;charset=utf-8\" });\n const url = URL.createObjectURL(blob);\n const img = new Image();\n\n img.onload = () => {\n const w = img.naturalWidth || img.width || 800;\n const h = img.naturalHeight || img.height || 600;\n const canvas = document.createElement(\"canvas\");\n canvas.width = w * scale;\n canvas.height = h * scale;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n URL.revokeObjectURL(url);\n reject(new Error(\"Could not get 2D canvas context\"));\n return;\n }\n ctx.scale(scale, scale);\n if (background) {\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, w, h);\n }\n ctx.drawImage(img, 0, 0);\n URL.revokeObjectURL(url);\n canvas.toBlob(\n (pngBlob) => {\n if (pngBlob) resolve(pngBlob);\n else reject(new Error(\"canvas.toBlob returned null\"));\n },\n \"image/png\"\n );\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(url);\n reject(new Error(\"Failed to load SVG as image\"));\n };\n\n img.src = url;\n });\n}\n\n/**\n * Trigger a browser file download from a Blob.\n */\nexport function downloadBlob(blob: Blob, filename: string): void {\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\n/**\n * Open SVG in a print-ready popup and trigger the browser's print dialog\n * (allows Save as PDF via the OS print driver).\n */\nexport function printSvgAsPdf(svgString: string, title = \"Schematex Diagram\"): void {\n const html = `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>${title}</title>\n<style>\n * { margin: 0; padding: 0; box-sizing: border-box; }\n body { display: flex; justify-content: center; align-items: flex-start; }\n svg { max-width: 100%; height: auto; display: block; }\n @media print {\n body { display: block; }\n svg { width: 100%; page-break-inside: avoid; }\n }\n</style>\n</head>\n<body>${svgString}</body>\n</html>`;\n\n const win = window.open(\"\", \"_blank\", \"width=900,height=700\");\n if (!win) {\n // Popup blocked — fallback: open SVG directly\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\n window.open(URL.createObjectURL(blob), \"_blank\");\n return;\n }\n win.document.write(html);\n win.document.close();\n win.onload = () => win.print();\n}\n"]}
package/dist/export.d.cts CHANGED
@@ -17,7 +17,7 @@
17
17
  interface PngExportOptions {
18
18
  /** Pixel ratio multiplier. Default: 2 (retina/2×). */
19
19
  scale?: number;
20
- /** Background fill color. Default: 'white'. Pass null for transparent. */
20
+ /** Background fill color. Default: null (transparent). Pass a color string (e.g. 'white') to fill. */
21
21
  background?: string | null;
22
22
  }
23
23
  /**
package/dist/export.d.ts CHANGED
@@ -17,7 +17,7 @@
17
17
  interface PngExportOptions {
18
18
  /** Pixel ratio multiplier. Default: 2 (retina/2×). */
19
19
  scale?: number;
20
- /** Background fill color. Default: 'white'. Pass null for transparent. */
20
+ /** Background fill color. Default: null (transparent). Pass a color string (e.g. 'white') to fill. */
21
21
  background?: string | null;
22
22
  }
23
23
  /**
package/dist/export.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/export.ts
2
2
  function svgToPngBlob(svgString, options = {}) {
3
- const { scale = 2, background = "white" } = options;
3
+ const { scale = 2, background = null } = options;
4
4
  return new Promise((resolve, reject) => {
5
5
  const blob = new Blob([svgString], { type: "image/svg+xml;charset=utf-8" });
6
6
  const url = URL.createObjectURL(blob);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/export.ts"],"names":[],"mappings":"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","file":"export.js","sourcesContent":["/**\n * Browser export utilities for Schematex SVG output.\n *\n * All APIs require a browser DOM + Canvas environment.\n * For Node.js PNG generation, use sharp or puppeteer externally.\n *\n * @example\n * ```ts\n * import { render } from 'schematex';\n * import { svgToPngBlob, downloadBlob } from 'schematex/export';\n *\n * const svg = render('genogram\\n alice [female]');\n * const png = await svgToPngBlob(svg, { scale: 2 });\n * downloadBlob(png, 'diagram.png');\n * ```\n */\n\nexport interface PngExportOptions {\n /** Pixel ratio multiplier. Default: 2 (retina/2×). */\n scale?: number;\n /** Background fill color. Default: 'white'. Pass null for transparent. */\n background?: string | null;\n}\n\n/**\n * Convert an SVG string to a PNG Blob using Canvas.\n * Resolves at @2× by default for crisp retina output.\n */\nexport function svgToPngBlob(\n svgString: string,\n options: PngExportOptions = {}\n): Promise<Blob> {\n const { scale = 2, background = \"white\" } = options;\n\n return new Promise((resolve, reject) => {\n const blob = new Blob([svgString], { type: \"image/svg+xml;charset=utf-8\" });\n const url = URL.createObjectURL(blob);\n const img = new Image();\n\n img.onload = () => {\n const w = img.naturalWidth || img.width || 800;\n const h = img.naturalHeight || img.height || 600;\n const canvas = document.createElement(\"canvas\");\n canvas.width = w * scale;\n canvas.height = h * scale;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n URL.revokeObjectURL(url);\n reject(new Error(\"Could not get 2D canvas context\"));\n return;\n }\n ctx.scale(scale, scale);\n if (background) {\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, w, h);\n }\n ctx.drawImage(img, 0, 0);\n URL.revokeObjectURL(url);\n canvas.toBlob(\n (pngBlob) => {\n if (pngBlob) resolve(pngBlob);\n else reject(new Error(\"canvas.toBlob returned null\"));\n },\n \"image/png\"\n );\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(url);\n reject(new Error(\"Failed to load SVG as image\"));\n };\n\n img.src = url;\n });\n}\n\n/**\n * Trigger a browser file download from a Blob.\n */\nexport function downloadBlob(blob: Blob, filename: string): void {\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\n/**\n * Open SVG in a print-ready popup and trigger the browser's print dialog\n * (allows Save as PDF via the OS print driver).\n */\nexport function printSvgAsPdf(svgString: string, title = \"Schematex Diagram\"): void {\n const html = `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>${title}</title>\n<style>\n * { margin: 0; padding: 0; box-sizing: border-box; }\n body { display: flex; justify-content: center; align-items: flex-start; }\n svg { max-width: 100%; height: auto; display: block; }\n @media print {\n body { display: block; }\n svg { width: 100%; page-break-inside: avoid; }\n }\n</style>\n</head>\n<body>${svgString}</body>\n</html>`;\n\n const win = window.open(\"\", \"_blank\", \"width=900,height=700\");\n if (!win) {\n // Popup blocked — fallback: open SVG directly\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\n window.open(URL.createObjectURL(blob), \"_blank\");\n return;\n }\n win.document.write(html);\n win.document.close();\n win.onload = () => win.print();\n}\n"]}
1
+ {"version":3,"sources":["../src/export.ts"],"names":[],"mappings":"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","file":"export.js","sourcesContent":["/**\n * Browser export utilities for Schematex SVG output.\n *\n * All APIs require a browser DOM + Canvas environment.\n * For Node.js PNG generation, use sharp or puppeteer externally.\n *\n * @example\n * ```ts\n * import { render } from 'schematex';\n * import { svgToPngBlob, downloadBlob } from 'schematex/export';\n *\n * const svg = render('genogram\\n alice [female]');\n * const png = await svgToPngBlob(svg, { scale: 2 });\n * downloadBlob(png, 'diagram.png');\n * ```\n */\n\nexport interface PngExportOptions {\n /** Pixel ratio multiplier. Default: 2 (retina/2×). */\n scale?: number;\n /** Background fill color. Default: null (transparent). Pass a color string (e.g. 'white') to fill. */\n background?: string | null;\n}\n\n/**\n * Convert an SVG string to a PNG Blob using Canvas.\n * Resolves at @2× by default for crisp retina output.\n */\nexport function svgToPngBlob(\n svgString: string,\n options: PngExportOptions = {}\n): Promise<Blob> {\n const { scale = 2, background = null } = options;\n\n return new Promise((resolve, reject) => {\n const blob = new Blob([svgString], { type: \"image/svg+xml;charset=utf-8\" });\n const url = URL.createObjectURL(blob);\n const img = new Image();\n\n img.onload = () => {\n const w = img.naturalWidth || img.width || 800;\n const h = img.naturalHeight || img.height || 600;\n const canvas = document.createElement(\"canvas\");\n canvas.width = w * scale;\n canvas.height = h * scale;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n URL.revokeObjectURL(url);\n reject(new Error(\"Could not get 2D canvas context\"));\n return;\n }\n ctx.scale(scale, scale);\n if (background) {\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, w, h);\n }\n ctx.drawImage(img, 0, 0);\n URL.revokeObjectURL(url);\n canvas.toBlob(\n (pngBlob) => {\n if (pngBlob) resolve(pngBlob);\n else reject(new Error(\"canvas.toBlob returned null\"));\n },\n \"image/png\"\n );\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(url);\n reject(new Error(\"Failed to load SVG as image\"));\n };\n\n img.src = url;\n });\n}\n\n/**\n * Trigger a browser file download from a Blob.\n */\nexport function downloadBlob(blob: Blob, filename: string): void {\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\n/**\n * Open SVG in a print-ready popup and trigger the browser's print dialog\n * (allows Save as PDF via the OS print driver).\n */\nexport function printSvgAsPdf(svgString: string, title = \"Schematex Diagram\"): void {\n const html = `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>${title}</title>\n<style>\n * { margin: 0; padding: 0; box-sizing: border-box; }\n body { display: flex; justify-content: center; align-items: flex-start; }\n svg { max-width: 100%; height: auto; display: block; }\n @media print {\n body { display: block; }\n svg { width: 100%; page-break-inside: avoid; }\n }\n</style>\n</head>\n<body>${svgString}</body>\n</html>`;\n\n const win = window.open(\"\", \"_blank\", \"width=900,height=700\");\n if (!win) {\n // Popup blocked — fallback: open SVG directly\n const blob = new Blob([svgString], { type: \"image/svg+xml\" });\n window.open(URL.createObjectURL(blob), \"_blank\");\n return;\n }\n win.document.write(html);\n win.document.close();\n win.onload = () => win.print();\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { n as FlowchartAST, o as FlowchartLayoutResult, D as DiagramPlugin } from './types-BtiUg7Gx.js';
1
+ import { n as FlowchartAST, o as FlowchartLayoutResult, D as DiagramPlugin } from './types-DnU2UlWz.js';
2
2
 
3
3
  /**
4
4
  * Flowchart DSL parser.
@@ -1,4 +1,4 @@
1
- import { n as FlowchartAST, o as FlowchartLayoutResult, D as DiagramPlugin } from './types-BtiUg7Gx.cjs';
1
+ import { n as FlowchartAST, o as FlowchartLayoutResult, D as DiagramPlugin } from './types-DnU2UlWz.cjs';
2
2
 
3
3
  /**
4
4
  * Flowchart DSL parser.
package/dist/index.cjs CHANGED
@@ -1,115 +1,115 @@
1
1
  'use strict';
2
2
 
3
- var chunkYTEEZV6J_cjs = require('./chunk-YTEEZV6J.cjs');
4
- var chunkL2KUGWFR_cjs = require('./chunk-L2KUGWFR.cjs');
5
- var chunkXUEROLSB_cjs = require('./chunk-XUEROLSB.cjs');
6
- var chunk2UJAVPA4_cjs = require('./chunk-2UJAVPA4.cjs');
7
- var chunkMKKFIPKU_cjs = require('./chunk-MKKFIPKU.cjs');
8
- var chunkEYHD7LV3_cjs = require('./chunk-EYHD7LV3.cjs');
9
- var chunkXI6JOG76_cjs = require('./chunk-XI6JOG76.cjs');
10
- var chunk3YXXZ4LT_cjs = require('./chunk-3YXXZ4LT.cjs');
11
- var chunkW7GIQTJV_cjs = require('./chunk-W7GIQTJV.cjs');
12
- var chunkGYTWJ6VB_cjs = require('./chunk-GYTWJ6VB.cjs');
13
- var chunkBUN3CRMP_cjs = require('./chunk-BUN3CRMP.cjs');
14
- var chunkUK7JF5QB_cjs = require('./chunk-UK7JF5QB.cjs');
15
- var chunkKUXOHLGC_cjs = require('./chunk-KUXOHLGC.cjs');
16
- var chunkOK5RYX55_cjs = require('./chunk-OK5RYX55.cjs');
17
- var chunkC3IVD7DI_cjs = require('./chunk-C3IVD7DI.cjs');
18
- require('./chunk-75BMFCP5.cjs');
19
- var chunkK5QG53GT_cjs = require('./chunk-K5QG53GT.cjs');
20
- var chunk7MVDN5UC_cjs = require('./chunk-7MVDN5UC.cjs');
3
+ var chunkDBMZEZLF_cjs = require('./chunk-DBMZEZLF.cjs');
4
+ var chunkT47A6XUK_cjs = require('./chunk-T47A6XUK.cjs');
5
+ var chunk4THC4VUA_cjs = require('./chunk-4THC4VUA.cjs');
6
+ var chunkCS67UBP3_cjs = require('./chunk-CS67UBP3.cjs');
7
+ var chunkIFR34VTL_cjs = require('./chunk-IFR34VTL.cjs');
8
+ var chunkH5JYZ5YS_cjs = require('./chunk-H5JYZ5YS.cjs');
9
+ var chunkV4OVUBLA_cjs = require('./chunk-V4OVUBLA.cjs');
10
+ var chunk6WORZSL3_cjs = require('./chunk-6WORZSL3.cjs');
11
+ var chunkMIKCKV27_cjs = require('./chunk-MIKCKV27.cjs');
12
+ var chunk6ULC3UHJ_cjs = require('./chunk-6ULC3UHJ.cjs');
13
+ var chunkK6RAUXRQ_cjs = require('./chunk-K6RAUXRQ.cjs');
14
+ var chunk3MJKJX27_cjs = require('./chunk-3MJKJX27.cjs');
15
+ var chunkO5POCPXZ_cjs = require('./chunk-O5POCPXZ.cjs');
16
+ var chunkCQP5YHVK_cjs = require('./chunk-CQP5YHVK.cjs');
17
+ var chunkWIFGBWET_cjs = require('./chunk-WIFGBWET.cjs');
18
+ require('./chunk-5UCXMYE7.cjs');
19
+ var chunk5COUZTVA_cjs = require('./chunk-5COUZTVA.cjs');
20
+ var chunkXSNNGYXZ_cjs = require('./chunk-XSNNGYXZ.cjs');
21
21
  var chunkD7EHZFK4_cjs = require('./chunk-D7EHZFK4.cjs');
22
- require('./chunk-LFZZ4NCP.cjs');
22
+ require('./chunk-3WNW5Y7P.cjs');
23
23
 
24
24
 
25
25
 
26
26
  Object.defineProperty(exports, "decisiontree", {
27
27
  enumerable: true,
28
- get: function () { return chunkYTEEZV6J_cjs.decisiontree; }
28
+ get: function () { return chunkDBMZEZLF_cjs.decisiontree; }
29
29
  });
30
30
  Object.defineProperty(exports, "parse", {
31
31
  enumerable: true,
32
- get: function () { return chunkYTEEZV6J_cjs.parse; }
32
+ get: function () { return chunkDBMZEZLF_cjs.parse; }
33
33
  });
34
34
  Object.defineProperty(exports, "pid", {
35
35
  enumerable: true,
36
- get: function () { return chunkYTEEZV6J_cjs.pid; }
36
+ get: function () { return chunkDBMZEZLF_cjs.pid; }
37
37
  });
38
38
  Object.defineProperty(exports, "render", {
39
39
  enumerable: true,
40
- get: function () { return chunkYTEEZV6J_cjs.render; }
40
+ get: function () { return chunkDBMZEZLF_cjs.render; }
41
41
  });
42
42
  Object.defineProperty(exports, "state", {
43
43
  enumerable: true,
44
- get: function () { return chunkYTEEZV6J_cjs.state; }
44
+ get: function () { return chunkDBMZEZLF_cjs.state; }
45
45
  });
46
46
  Object.defineProperty(exports, "timeline", {
47
47
  enumerable: true,
48
- get: function () { return chunkYTEEZV6J_cjs.timeline; }
48
+ get: function () { return chunkDBMZEZLF_cjs.timeline; }
49
49
  });
50
50
  Object.defineProperty(exports, "orgchart", {
51
51
  enumerable: true,
52
- get: function () { return chunkL2KUGWFR_cjs.orgchart; }
52
+ get: function () { return chunkT47A6XUK_cjs.orgchart; }
53
53
  });
54
54
  Object.defineProperty(exports, "circuit", {
55
55
  enumerable: true,
56
- get: function () { return chunkXUEROLSB_cjs.circuit; }
56
+ get: function () { return chunk4THC4VUA_cjs.circuit; }
57
57
  });
58
58
  Object.defineProperty(exports, "blockdiagram", {
59
59
  enumerable: true,
60
- get: function () { return chunk2UJAVPA4_cjs.blockdiagram; }
60
+ get: function () { return chunkCS67UBP3_cjs.blockdiagram; }
61
61
  });
62
62
  Object.defineProperty(exports, "ladder", {
63
63
  enumerable: true,
64
- get: function () { return chunkMKKFIPKU_cjs.ladder; }
64
+ get: function () { return chunkIFR34VTL_cjs.ladder; }
65
65
  });
66
66
  Object.defineProperty(exports, "sld", {
67
67
  enumerable: true,
68
- get: function () { return chunkEYHD7LV3_cjs.sld; }
68
+ get: function () { return chunkH5JYZ5YS_cjs.sld; }
69
69
  });
70
70
  Object.defineProperty(exports, "entity", {
71
71
  enumerable: true,
72
- get: function () { return chunkXI6JOG76_cjs.entity; }
72
+ get: function () { return chunkV4OVUBLA_cjs.entity; }
73
73
  });
74
74
  Object.defineProperty(exports, "fishbone", {
75
75
  enumerable: true,
76
- get: function () { return chunk3YXXZ4LT_cjs.fishbone; }
76
+ get: function () { return chunk6WORZSL3_cjs.fishbone; }
77
77
  });
78
78
  Object.defineProperty(exports, "venn", {
79
79
  enumerable: true,
80
- get: function () { return chunkW7GIQTJV_cjs.venn; }
80
+ get: function () { return chunkMIKCKV27_cjs.venn; }
81
81
  });
82
82
  Object.defineProperty(exports, "flowchart", {
83
83
  enumerable: true,
84
- get: function () { return chunkGYTWJ6VB_cjs.flowchart; }
84
+ get: function () { return chunk6ULC3UHJ_cjs.flowchart; }
85
85
  });
86
86
  Object.defineProperty(exports, "genogram", {
87
87
  enumerable: true,
88
- get: function () { return chunkBUN3CRMP_cjs.genogram; }
88
+ get: function () { return chunkK6RAUXRQ_cjs.genogram; }
89
89
  });
90
90
  Object.defineProperty(exports, "ecomap", {
91
91
  enumerable: true,
92
- get: function () { return chunkUK7JF5QB_cjs.ecomap; }
92
+ get: function () { return chunk3MJKJX27_cjs.ecomap; }
93
93
  });
94
94
  Object.defineProperty(exports, "pedigree", {
95
95
  enumerable: true,
96
- get: function () { return chunkKUXOHLGC_cjs.pedigree; }
96
+ get: function () { return chunkO5POCPXZ_cjs.pedigree; }
97
97
  });
98
98
  Object.defineProperty(exports, "phylo", {
99
99
  enumerable: true,
100
- get: function () { return chunkOK5RYX55_cjs.phylo; }
100
+ get: function () { return chunkCQP5YHVK_cjs.phylo; }
101
101
  });
102
102
  Object.defineProperty(exports, "sociogram", {
103
103
  enumerable: true,
104
- get: function () { return chunkC3IVD7DI_cjs.sociogram; }
104
+ get: function () { return chunkWIFGBWET_cjs.sociogram; }
105
105
  });
106
106
  Object.defineProperty(exports, "timing", {
107
107
  enumerable: true,
108
- get: function () { return chunkK5QG53GT_cjs.timing; }
108
+ get: function () { return chunk5COUZTVA_cjs.timing; }
109
109
  });
110
110
  Object.defineProperty(exports, "logic", {
111
111
  enumerable: true,
112
- get: function () { return chunk7MVDN5UC_cjs.logic; }
112
+ get: function () { return chunkXSNNGYXZ_cjs.logic; }
113
113
  });
114
114
  Object.defineProperty(exports, "BASE_THEMES", {
115
115
  enumerable: true,
package/dist/index.d.cts CHANGED
@@ -13,9 +13,9 @@ export { sld } from './diagrams/sld/index.cjs';
13
13
  export { entity } from './diagrams/entity/index.cjs';
14
14
  export { fishbone } from './diagrams/fishbone/index.cjs';
15
15
  export { venn } from './diagrams/venn/index.cjs';
16
- export { B as BASE_THEMES, a as BIOLOGY_TOKENS, b as BaseTheme, c as BiologyTokens, P as PERSON_TOKENS, d as PersonTokens, R as ResolvedTheme, T as ThemeName, e as TimelineTokens, V as VENN_TOKENS, f as VennTokens, g as flowchart, r as resolveBaseTheme, h as resolveBiologyTheme, i as resolveFishboneTheme, j as resolveGenogramTheme, k as resolvePersonTheme, l as resolveTimelineTheme, m as resolveVennTheme } from './index-BrLxEzSQ.cjs';
16
+ export { B as BASE_THEMES, a as BIOLOGY_TOKENS, b as BaseTheme, c as BiologyTokens, P as PERSON_TOKENS, d as PersonTokens, R as ResolvedTheme, T as ThemeName, e as TimelineTokens, V as VENN_TOKENS, f as VennTokens, g as flowchart, r as resolveBaseTheme, h as resolveBiologyTheme, i as resolveFishboneTheme, j as resolveGenogramTheme, k as resolvePersonTheme, l as resolveTimelineTheme, m as resolveVennTheme } from './index-bdfj6FpQ.cjs';
17
17
  export { orgchart } from './diagrams/orgchart/index.cjs';
18
- import { D as DiagramPlugin } from './types-BtiUg7Gx.cjs';
18
+ import { D as DiagramPlugin } from './types-DnU2UlWz.cjs';
19
19
 
20
20
  declare const decisiontree: DiagramPlugin;
21
21
 
package/dist/index.d.ts CHANGED
@@ -13,9 +13,9 @@ export { sld } from './diagrams/sld/index.js';
13
13
  export { entity } from './diagrams/entity/index.js';
14
14
  export { fishbone } from './diagrams/fishbone/index.js';
15
15
  export { venn } from './diagrams/venn/index.js';
16
- export { B as BASE_THEMES, a as BIOLOGY_TOKENS, b as BaseTheme, c as BiologyTokens, P as PERSON_TOKENS, d as PersonTokens, R as ResolvedTheme, T as ThemeName, e as TimelineTokens, V as VENN_TOKENS, f as VennTokens, g as flowchart, r as resolveBaseTheme, h as resolveBiologyTheme, i as resolveFishboneTheme, j as resolveGenogramTheme, k as resolvePersonTheme, l as resolveTimelineTheme, m as resolveVennTheme } from './index-dWDwG6BW.js';
16
+ export { B as BASE_THEMES, a as BIOLOGY_TOKENS, b as BaseTheme, c as BiologyTokens, P as PERSON_TOKENS, d as PersonTokens, R as ResolvedTheme, T as ThemeName, e as TimelineTokens, V as VENN_TOKENS, f as VennTokens, g as flowchart, r as resolveBaseTheme, h as resolveBiologyTheme, i as resolveFishboneTheme, j as resolveGenogramTheme, k as resolvePersonTheme, l as resolveTimelineTheme, m as resolveVennTheme } from './index-D3u6vcA4.js';
17
17
  export { orgchart } from './diagrams/orgchart/index.js';
18
- import { D as DiagramPlugin } from './types-BtiUg7Gx.js';
18
+ import { D as DiagramPlugin } from './types-DnU2UlWz.js';
19
19
 
20
20
  declare const decisiontree: DiagramPlugin;
21
21
 
package/dist/index.js CHANGED
@@ -1,22 +1,22 @@
1
- export { decisiontree, parse, pid, render, state, timeline } from './chunk-RNGYXGHS.js';
2
- export { orgchart } from './chunk-SFSZUOFT.js';
3
- export { circuit } from './chunk-ZNLEUL7T.js';
4
- export { blockdiagram } from './chunk-F6OROIHS.js';
5
- export { ladder } from './chunk-M3R6RCXY.js';
6
- export { sld } from './chunk-BJWMPPEA.js';
7
- export { entity } from './chunk-NFT6VW73.js';
8
- export { fishbone } from './chunk-7BEJHG43.js';
9
- export { venn } from './chunk-BJ65PKDU.js';
10
- export { flowchart } from './chunk-2J2QWNGI.js';
11
- export { genogram } from './chunk-SE23X5OE.js';
12
- export { ecomap } from './chunk-IT2TVXC7.js';
13
- export { pedigree } from './chunk-6BKUD5EJ.js';
14
- export { phylo } from './chunk-X4F6VVEJ.js';
15
- export { sociogram } from './chunk-56LXBM45.js';
16
- import './chunk-ZTSO3S4P.js';
17
- export { timing } from './chunk-HIQPEAL7.js';
18
- export { logic } from './chunk-M5ZC3LFJ.js';
1
+ export { decisiontree, parse, pid, render, state, timeline } from './chunk-HKJRHXGZ.js';
2
+ export { orgchart } from './chunk-TWAC2IIS.js';
3
+ export { circuit } from './chunk-5SKT7RYR.js';
4
+ export { blockdiagram } from './chunk-5CTERELC.js';
5
+ export { ladder } from './chunk-ZKDL6Y3O.js';
6
+ export { sld } from './chunk-PWI4NFYR.js';
7
+ export { entity } from './chunk-DHKKDIVT.js';
8
+ export { fishbone } from './chunk-YWDODCW2.js';
9
+ export { venn } from './chunk-IURM4ZWE.js';
10
+ export { flowchart } from './chunk-VRE5VWDQ.js';
11
+ export { genogram } from './chunk-WHNIK4LK.js';
12
+ export { ecomap } from './chunk-LPKVIRYT.js';
13
+ export { pedigree } from './chunk-6XGSEG3K.js';
14
+ export { phylo } from './chunk-I6VEXSUK.js';
15
+ export { sociogram } from './chunk-ZQZNWAHH.js';
16
+ import './chunk-FO7BLCEW.js';
17
+ export { timing } from './chunk-3RAVPXLN.js';
18
+ export { logic } from './chunk-IZMAZOQI.js';
19
19
  export { BASE_THEMES, BIOLOGY_TOKENS, PERSON_TOKENS, VENN_TOKENS, resolveBaseTheme, resolveBiologyTheme, resolveFishboneTheme, resolveGenogramTheme, resolvePersonTheme, resolveTimelineTheme, resolveVennTheme } from './chunk-2VNMKOUO.js';
20
- import './chunk-WHJXRLFD.js';
20
+ import './chunk-SYYBKDL7.js';
21
21
  //# sourceMappingURL=index.js.map
22
22
  //# sourceMappingURL=index.js.map
package/dist/react.cjs CHANGED
@@ -1,25 +1,25 @@
1
1
  'use strict';
2
2
 
3
- var chunkYTEEZV6J_cjs = require('./chunk-YTEEZV6J.cjs');
4
- require('./chunk-L2KUGWFR.cjs');
5
- require('./chunk-XUEROLSB.cjs');
6
- require('./chunk-2UJAVPA4.cjs');
7
- require('./chunk-MKKFIPKU.cjs');
8
- require('./chunk-EYHD7LV3.cjs');
9
- require('./chunk-XI6JOG76.cjs');
10
- require('./chunk-3YXXZ4LT.cjs');
11
- require('./chunk-W7GIQTJV.cjs');
12
- require('./chunk-GYTWJ6VB.cjs');
13
- require('./chunk-BUN3CRMP.cjs');
14
- require('./chunk-UK7JF5QB.cjs');
15
- require('./chunk-KUXOHLGC.cjs');
16
- require('./chunk-OK5RYX55.cjs');
17
- require('./chunk-C3IVD7DI.cjs');
18
- require('./chunk-75BMFCP5.cjs');
19
- require('./chunk-K5QG53GT.cjs');
20
- require('./chunk-7MVDN5UC.cjs');
3
+ var chunkDBMZEZLF_cjs = require('./chunk-DBMZEZLF.cjs');
4
+ require('./chunk-T47A6XUK.cjs');
5
+ require('./chunk-4THC4VUA.cjs');
6
+ require('./chunk-CS67UBP3.cjs');
7
+ require('./chunk-IFR34VTL.cjs');
8
+ require('./chunk-H5JYZ5YS.cjs');
9
+ require('./chunk-V4OVUBLA.cjs');
10
+ require('./chunk-6WORZSL3.cjs');
11
+ require('./chunk-MIKCKV27.cjs');
12
+ require('./chunk-6ULC3UHJ.cjs');
13
+ require('./chunk-K6RAUXRQ.cjs');
14
+ require('./chunk-3MJKJX27.cjs');
15
+ require('./chunk-O5POCPXZ.cjs');
16
+ require('./chunk-CQP5YHVK.cjs');
17
+ require('./chunk-WIFGBWET.cjs');
18
+ require('./chunk-5UCXMYE7.cjs');
19
+ require('./chunk-5COUZTVA.cjs');
20
+ require('./chunk-XSNNGYXZ.cjs');
21
21
  require('./chunk-D7EHZFK4.cjs');
22
- require('./chunk-LFZZ4NCP.cjs');
22
+ require('./chunk-3WNW5Y7P.cjs');
23
23
  var react = require('react');
24
24
  var jsxRuntime = require('react/jsx-runtime');
25
25
 
@@ -35,7 +35,7 @@ function SchematexDiagram({
35
35
  }) {
36
36
  const svg = react.useMemo(() => {
37
37
  try {
38
- return chunkYTEEZV6J_cjs.render(dsl, { type, theme, fontFamily, padding });
38
+ return chunkDBMZEZLF_cjs.render(dsl, { type, theme, fontFamily, padding });
39
39
  } catch (err) {
40
40
  const e = err instanceof Error ? err : new Error(String(err));
41
41
  onError?.(e);
package/dist/react.js CHANGED
@@ -1,23 +1,23 @@
1
- import { render } from './chunk-RNGYXGHS.js';
2
- import './chunk-SFSZUOFT.js';
3
- import './chunk-ZNLEUL7T.js';
4
- import './chunk-F6OROIHS.js';
5
- import './chunk-M3R6RCXY.js';
6
- import './chunk-BJWMPPEA.js';
7
- import './chunk-NFT6VW73.js';
8
- import './chunk-7BEJHG43.js';
9
- import './chunk-BJ65PKDU.js';
10
- import './chunk-2J2QWNGI.js';
11
- import './chunk-SE23X5OE.js';
12
- import './chunk-IT2TVXC7.js';
13
- import './chunk-6BKUD5EJ.js';
14
- import './chunk-X4F6VVEJ.js';
15
- import './chunk-56LXBM45.js';
16
- import './chunk-ZTSO3S4P.js';
17
- import './chunk-HIQPEAL7.js';
18
- import './chunk-M5ZC3LFJ.js';
1
+ import { render } from './chunk-HKJRHXGZ.js';
2
+ import './chunk-TWAC2IIS.js';
3
+ import './chunk-5SKT7RYR.js';
4
+ import './chunk-5CTERELC.js';
5
+ import './chunk-ZKDL6Y3O.js';
6
+ import './chunk-PWI4NFYR.js';
7
+ import './chunk-DHKKDIVT.js';
8
+ import './chunk-YWDODCW2.js';
9
+ import './chunk-IURM4ZWE.js';
10
+ import './chunk-VRE5VWDQ.js';
11
+ import './chunk-WHNIK4LK.js';
12
+ import './chunk-LPKVIRYT.js';
13
+ import './chunk-6XGSEG3K.js';
14
+ import './chunk-I6VEXSUK.js';
15
+ import './chunk-ZQZNWAHH.js';
16
+ import './chunk-FO7BLCEW.js';
17
+ import './chunk-3RAVPXLN.js';
18
+ import './chunk-IZMAZOQI.js';
19
19
  import './chunk-2VNMKOUO.js';
20
- import './chunk-WHJXRLFD.js';
20
+ import './chunk-SYYBKDL7.js';
21
21
  import { useMemo } from 'react';
22
22
  import { jsx } from 'react/jsx-runtime';
23
23
 
@@ -799,6 +799,8 @@ interface FlowchartLayoutEdge {
799
799
  y: number;
800
800
  textAnchor?: "start" | "middle" | "end";
801
801
  };
802
+ /** Position in `ast.edges` (declaration order) — used by linkStyle index targeting */
803
+ index?: number;
802
804
  }
803
805
  interface FlowchartLayoutCluster {
804
806
  subgraph: FlowchartSubgraph;
@@ -799,6 +799,8 @@ interface FlowchartLayoutEdge {
799
799
  y: number;
800
800
  textAnchor?: "start" | "middle" | "end";
801
801
  };
802
+ /** Position in `ast.edges` (declaration order) — used by linkStyle index targeting */
803
+ index?: number;
802
804
  }
803
805
  interface FlowchartLayoutCluster {
804
806
  subgraph: FlowchartSubgraph;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "schematex",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "Every diagram a doctor, engineer, or lawyer would actually use. 22 industry-standard diagrams (genogram, pedigree, ladder logic, SLD, P&ID, UML state diagram, phylo, fishbone, entity structure, ...) from a text DSL. Free, fully open source, made for AI. Pure SVG, zero dependencies.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",