@skillpet/circuit 0.5.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 (332) hide show
  1. package/README.md +131 -0
  2. package/dist/circuit.bundle.js +31103 -0
  3. package/dist/circuit.bundle.js.map +7 -0
  4. package/dist/circuit.bundle.min.js +273 -0
  5. package/dist/circuit.bundle.min.js.map +7 -0
  6. package/dist/circuit.esm.js +31069 -0
  7. package/dist/circuit.esm.js.map +7 -0
  8. package/dist/config.d.ts +26 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +23 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/container.d.ts +32 -0
  13. package/dist/container.d.ts.map +1 -0
  14. package/dist/container.js +101 -0
  15. package/dist/container.js.map +1 -0
  16. package/dist/drawing-gradient.d.ts +13 -0
  17. package/dist/drawing-gradient.d.ts.map +1 -0
  18. package/dist/drawing-gradient.js +39 -0
  19. package/dist/drawing-gradient.js.map +1 -0
  20. package/dist/drawing-stack.d.ts +16 -0
  21. package/dist/drawing-stack.d.ts.map +1 -0
  22. package/dist/drawing-stack.js +32 -0
  23. package/dist/drawing-stack.js.map +1 -0
  24. package/dist/drawing-transition.d.ts +34 -0
  25. package/dist/drawing-transition.d.ts.map +1 -0
  26. package/dist/drawing-transition.js +181 -0
  27. package/dist/drawing-transition.js.map +1 -0
  28. package/dist/drawing.d.ts +117 -0
  29. package/dist/drawing.d.ts.map +1 -0
  30. package/dist/drawing.js +337 -0
  31. package/dist/drawing.js.map +1 -0
  32. package/dist/element-label.d.ts +54 -0
  33. package/dist/element-label.d.ts.map +1 -0
  34. package/dist/element-label.js +377 -0
  35. package/dist/element-label.js.map +1 -0
  36. package/dist/element-style.d.ts +34 -0
  37. package/dist/element-style.d.ts.map +1 -0
  38. package/dist/element-style.js +51 -0
  39. package/dist/element-style.js.map +1 -0
  40. package/dist/element.d.ts +114 -0
  41. package/dist/element.d.ts.map +1 -0
  42. package/dist/element.js +514 -0
  43. package/dist/element.js.map +1 -0
  44. package/dist/element2term.d.ts +25 -0
  45. package/dist/element2term.d.ts.map +1 -0
  46. package/dist/element2term.js +245 -0
  47. package/dist/element2term.js.map +1 -0
  48. package/dist/elements/cables.d.ts +22 -0
  49. package/dist/elements/cables.d.ts.map +1 -0
  50. package/dist/elements/cables.js +100 -0
  51. package/dist/elements/cables.js.map +1 -0
  52. package/dist/elements/capacitor.d.ts +23 -0
  53. package/dist/elements/capacitor.d.ts.map +1 -0
  54. package/dist/elements/capacitor.js +93 -0
  55. package/dist/elements/capacitor.js.map +1 -0
  56. package/dist/elements/compound.d.ts +41 -0
  57. package/dist/elements/compound.d.ts.map +1 -0
  58. package/dist/elements/compound.js +266 -0
  59. package/dist/elements/compound.js.map +1 -0
  60. package/dist/elements/connectors.d.ts +81 -0
  61. package/dist/elements/connectors.d.ts.map +1 -0
  62. package/dist/elements/connectors.js +578 -0
  63. package/dist/elements/connectors.js.map +1 -0
  64. package/dist/elements/crystal.d.ts +8 -0
  65. package/dist/elements/crystal.d.ts.map +1 -0
  66. package/dist/elements/crystal.js +31 -0
  67. package/dist/elements/crystal.js.map +1 -0
  68. package/dist/elements/diode-more.d.ts +36 -0
  69. package/dist/elements/diode-more.d.ts.map +1 -0
  70. package/dist/elements/diode-more.js +233 -0
  71. package/dist/elements/diode-more.js.map +1 -0
  72. package/dist/elements/diode.d.ts +14 -0
  73. package/dist/elements/diode.d.ts.map +1 -0
  74. package/dist/elements/diode.js +58 -0
  75. package/dist/elements/diode.js.map +1 -0
  76. package/dist/elements/element-compound.d.ts +16 -0
  77. package/dist/elements/element-compound.d.ts.map +1 -0
  78. package/dist/elements/element-compound.js +68 -0
  79. package/dist/elements/element-compound.js.map +1 -0
  80. package/dist/elements/element-drawing.d.ts +10 -0
  81. package/dist/elements/element-drawing.d.ts.map +1 -0
  82. package/dist/elements/element-drawing.js +16 -0
  83. package/dist/elements/element-drawing.js.map +1 -0
  84. package/dist/elements/ground.d.ts +6 -0
  85. package/dist/elements/ground.d.ts.map +1 -0
  86. package/dist/elements/ground.js +30 -0
  87. package/dist/elements/ground.js.map +1 -0
  88. package/dist/elements/ic.d.ts +169 -0
  89. package/dist/elements/ic.d.ts.map +1 -0
  90. package/dist/elements/ic.js +816 -0
  91. package/dist/elements/ic.js.map +1 -0
  92. package/dist/elements/image.d.ts +9 -0
  93. package/dist/elements/image.d.ts.map +1 -0
  94. package/dist/elements/image.js +27 -0
  95. package/dist/elements/image.js.map +1 -0
  96. package/dist/elements/inductor.d.ts +15 -0
  97. package/dist/elements/inductor.d.ts.map +1 -0
  98. package/dist/elements/inductor.js +111 -0
  99. package/dist/elements/inductor.js.map +1 -0
  100. package/dist/elements/line.d.ts +8 -0
  101. package/dist/elements/line.d.ts.map +1 -0
  102. package/dist/elements/line.js +14 -0
  103. package/dist/elements/line.js.map +1 -0
  104. package/dist/elements/lines-arc-labels.d.ts +223 -0
  105. package/dist/elements/lines-arc-labels.d.ts.map +1 -0
  106. package/dist/elements/lines-arc-labels.js +822 -0
  107. package/dist/elements/lines-arc-labels.js.map +1 -0
  108. package/dist/elements/lines-elements.d.ts +89 -0
  109. package/dist/elements/lines-elements.d.ts.map +1 -0
  110. package/dist/elements/lines-elements.js +271 -0
  111. package/dist/elements/lines-elements.js.map +1 -0
  112. package/dist/elements/misc-elements.d.ts +25 -0
  113. package/dist/elements/misc-elements.d.ts.map +1 -0
  114. package/dist/elements/misc-elements.js +160 -0
  115. package/dist/elements/misc-elements.js.map +1 -0
  116. package/dist/elements/oneterm.d.ts +29 -0
  117. package/dist/elements/oneterm.d.ts.map +1 -0
  118. package/dist/elements/oneterm.js +163 -0
  119. package/dist/elements/oneterm.js.map +1 -0
  120. package/dist/elements/opamp.d.ts +11 -0
  121. package/dist/elements/opamp.d.ts.map +1 -0
  122. package/dist/elements/opamp.js +72 -0
  123. package/dist/elements/opamp.js.map +1 -0
  124. package/dist/elements/outlets.d.ts +39 -0
  125. package/dist/elements/outlets.d.ts.map +1 -0
  126. package/dist/elements/outlets.js +285 -0
  127. package/dist/elements/outlets.js.map +1 -0
  128. package/dist/elements/resistor-more.d.ts +42 -0
  129. package/dist/elements/resistor-more.d.ts.map +1 -0
  130. package/dist/elements/resistor-more.js +171 -0
  131. package/dist/elements/resistor-more.js.map +1 -0
  132. package/dist/elements/resistor.d.ts +6 -0
  133. package/dist/elements/resistor.d.ts.map +1 -0
  134. package/dist/elements/resistor.js +22 -0
  135. package/dist/elements/resistor.js.map +1 -0
  136. package/dist/elements/source-v.d.ts +3 -0
  137. package/dist/elements/source-v.d.ts.map +1 -0
  138. package/dist/elements/source-v.js +3 -0
  139. package/dist/elements/source-v.js.map +1 -0
  140. package/dist/elements/sources.d.ts +111 -0
  141. package/dist/elements/sources.d.ts.map +1 -0
  142. package/dist/elements/sources.js +519 -0
  143. package/dist/elements/sources.js.map +1 -0
  144. package/dist/elements/switches.d.ts +66 -0
  145. package/dist/elements/switches.d.ts.map +1 -0
  146. package/dist/elements/switches.js +328 -0
  147. package/dist/elements/switches.js.map +1 -0
  148. package/dist/elements/transformer.d.ts +17 -0
  149. package/dist/elements/transformer.d.ts.map +1 -0
  150. package/dist/elements/transformer.js +184 -0
  151. package/dist/elements/transformer.js.map +1 -0
  152. package/dist/elements/transistors.d.ts +197 -0
  153. package/dist/elements/transistors.d.ts.map +1 -0
  154. package/dist/elements/transistors.js +1009 -0
  155. package/dist/elements/transistors.js.map +1 -0
  156. package/dist/elements/tubes.d.ts +70 -0
  157. package/dist/elements/tubes.d.ts.map +1 -0
  158. package/dist/elements/tubes.js +386 -0
  159. package/dist/elements/tubes.js.map +1 -0
  160. package/dist/elements/twoports.d.ts +47 -0
  161. package/dist/elements/twoports.d.ts.map +1 -0
  162. package/dist/elements/twoports.js +231 -0
  163. package/dist/elements/twoports.js.map +1 -0
  164. package/dist/elements/twoterm-extras.d.ts +50 -0
  165. package/dist/elements/twoterm-extras.d.ts.map +1 -0
  166. package/dist/elements/twoterm-extras.js +243 -0
  167. package/dist/elements/twoterm-extras.js.map +1 -0
  168. package/dist/elements/twoterm.d.ts +4 -0
  169. package/dist/elements/twoterm.d.ts.map +1 -0
  170. package/dist/elements/twoterm.js +4 -0
  171. package/dist/elements/twoterm.js.map +1 -0
  172. package/dist/geometry/point.d.ts +28 -0
  173. package/dist/geometry/point.d.ts.map +1 -0
  174. package/dist/geometry/point.js +99 -0
  175. package/dist/geometry/point.js.map +1 -0
  176. package/dist/geometry/roundcorners.d.ts +7 -0
  177. package/dist/geometry/roundcorners.d.ts.map +1 -0
  178. package/dist/geometry/roundcorners.js +64 -0
  179. package/dist/geometry/roundcorners.js.map +1 -0
  180. package/dist/geometry/transform.d.ts +14 -0
  181. package/dist/geometry/transform.d.ts.map +1 -0
  182. package/dist/geometry/transform.js +33 -0
  183. package/dist/geometry/transform.js.map +1 -0
  184. package/dist/geometry/util.d.ts +12 -0
  185. package/dist/geometry/util.d.ts.map +1 -0
  186. package/dist/geometry/util.js +36 -0
  187. package/dist/geometry/util.js.map +1 -0
  188. package/dist/index.cjs +31456 -0
  189. package/dist/index.cjs.map +7 -0
  190. package/dist/index.d.ts +77 -0
  191. package/dist/index.d.ts.map +1 -0
  192. package/dist/index.js +68 -0
  193. package/dist/index.js.map +1 -0
  194. package/dist/json/anchor-ref.d.ts +5 -0
  195. package/dist/json/anchor-ref.d.ts.map +1 -0
  196. package/dist/json/anchor-ref.js +35 -0
  197. package/dist/json/anchor-ref.js.map +1 -0
  198. package/dist/json/mount.d.ts +60 -0
  199. package/dist/json/mount.d.ts.map +1 -0
  200. package/dist/json/mount.js +369 -0
  201. package/dist/json/mount.js.map +1 -0
  202. package/dist/json/registry.d.ts +7 -0
  203. package/dist/json/registry.d.ts.map +1 -0
  204. package/dist/json/registry.js +323 -0
  205. package/dist/json/registry.js.map +1 -0
  206. package/dist/json/render.d.ts +59 -0
  207. package/dist/json/render.d.ts.map +1 -0
  208. package/dist/json/render.js +113 -0
  209. package/dist/json/render.js.map +1 -0
  210. package/dist/json/theme.d.ts +18 -0
  211. package/dist/json/theme.d.ts.map +1 -0
  212. package/dist/json/theme.js +57 -0
  213. package/dist/json/theme.js.map +1 -0
  214. package/dist/json/types.d.ts +42 -0
  215. package/dist/json/types.d.ts.map +1 -0
  216. package/dist/json/types.js +2 -0
  217. package/dist/json/types.js.map +1 -0
  218. package/dist/json/validate.d.ts +11 -0
  219. package/dist/json/validate.d.ts.map +1 -0
  220. package/dist/json/validate.js +77 -0
  221. package/dist/json/validate.js.map +1 -0
  222. package/dist/label-hint.d.ts +11 -0
  223. package/dist/label-hint.d.ts.map +1 -0
  224. package/dist/label-hint.js +2 -0
  225. package/dist/label-hint.js.map +1 -0
  226. package/dist/logic/and.d.ts +13 -0
  227. package/dist/logic/and.d.ts.map +1 -0
  228. package/dist/logic/and.js +63 -0
  229. package/dist/logic/and.js.map +1 -0
  230. package/dist/logic/bitfield.d.ts +32 -0
  231. package/dist/logic/bitfield.d.ts.map +1 -0
  232. package/dist/logic/bitfield.js +271 -0
  233. package/dist/logic/bitfield.js.map +1 -0
  234. package/dist/logic/buffer.d.ts +11 -0
  235. package/dist/logic/buffer.d.ts.map +1 -0
  236. package/dist/logic/buffer.js +46 -0
  237. package/dist/logic/buffer.js.map +1 -0
  238. package/dist/logic/extras.d.ts +36 -0
  239. package/dist/logic/extras.d.ts.map +1 -0
  240. package/dist/logic/extras.js +211 -0
  241. package/dist/logic/extras.js.map +1 -0
  242. package/dist/logic/kmap.d.ts +16 -0
  243. package/dist/logic/kmap.d.ts.map +1 -0
  244. package/dist/logic/kmap.js +163 -0
  245. package/dist/logic/kmap.js.map +1 -0
  246. package/dist/logic/or.d.ts +18 -0
  247. package/dist/logic/or.d.ts.map +1 -0
  248. package/dist/logic/or.js +117 -0
  249. package/dist/logic/or.js.map +1 -0
  250. package/dist/logic/timing.d.ts +44 -0
  251. package/dist/logic/timing.d.ts.map +1 -0
  252. package/dist/logic/timing.js +791 -0
  253. package/dist/logic/timing.js.map +1 -0
  254. package/dist/logic/tristate.d.ts +11 -0
  255. package/dist/logic/tristate.d.ts.map +1 -0
  256. package/dist/logic/tristate.js +48 -0
  257. package/dist/logic/tristate.js.map +1 -0
  258. package/dist/math-render.d.ts +9 -0
  259. package/dist/math-render.d.ts.map +1 -0
  260. package/dist/math-render.js +53 -0
  261. package/dist/math-render.js.map +1 -0
  262. package/dist/package-api.d.ts +20 -0
  263. package/dist/package-api.d.ts.map +1 -0
  264. package/dist/package-api.js +75 -0
  265. package/dist/package-api.js.map +1 -0
  266. package/dist/params.d.ts +6 -0
  267. package/dist/params.d.ts.map +1 -0
  268. package/dist/params.js +35 -0
  269. package/dist/params.js.map +1 -0
  270. package/dist/react/index.d.ts +22 -0
  271. package/dist/react/index.d.ts.map +1 -0
  272. package/dist/react/index.js +52 -0
  273. package/dist/react/index.js.map +1 -0
  274. package/dist/schemdraw-ts.bundle.js +30448 -0
  275. package/dist/schemdraw-ts.bundle.js.map +7 -0
  276. package/dist/segment.d.ts +267 -0
  277. package/dist/segment.d.ts.map +1 -0
  278. package/dist/segment.js +844 -0
  279. package/dist/segment.js.map +1 -0
  280. package/dist/style.d.ts +18 -0
  281. package/dist/style.d.ts.map +1 -0
  282. package/dist/style.js +230 -0
  283. package/dist/style.js.map +1 -0
  284. package/dist/subsystems/dsp.d.ts +65 -0
  285. package/dist/subsystems/dsp.d.ts.map +1 -0
  286. package/dist/subsystems/dsp.js +267 -0
  287. package/dist/subsystems/dsp.js.map +1 -0
  288. package/dist/subsystems/flow.d.ts +92 -0
  289. package/dist/subsystems/flow.d.ts.map +1 -0
  290. package/dist/subsystems/flow.js +315 -0
  291. package/dist/subsystems/flow.js.map +1 -0
  292. package/dist/subsystems/index.d.ts +22 -0
  293. package/dist/subsystems/index.d.ts.map +1 -0
  294. package/dist/subsystems/index.js +22 -0
  295. package/dist/subsystems/index.js.map +1 -0
  296. package/dist/subsystems/parsing.d.ts +41 -0
  297. package/dist/subsystems/parsing.d.ts.map +1 -0
  298. package/dist/subsystems/parsing.js +456 -0
  299. package/dist/subsystems/parsing.js.map +1 -0
  300. package/dist/subsystems/pictorial.d.ts +73 -0
  301. package/dist/subsystems/pictorial.d.ts.map +1 -0
  302. package/dist/subsystems/pictorial.js +469 -0
  303. package/dist/subsystems/pictorial.js.map +1 -0
  304. package/dist/svg/constants.d.ts +5 -0
  305. package/dist/svg/constants.d.ts.map +1 -0
  306. package/dist/svg/constants.js +5 -0
  307. package/dist/svg/constants.js.map +1 -0
  308. package/dist/svg/figure.d.ts +157 -0
  309. package/dist/svg/figure.d.ts.map +1 -0
  310. package/dist/svg/figure.js +634 -0
  311. package/dist/svg/figure.js.map +1 -0
  312. package/dist/svg/fmt.d.ts +2 -0
  313. package/dist/svg/fmt.d.ts.map +1 -0
  314. package/dist/svg/fmt.js +7 -0
  315. package/dist/svg/fmt.js.map +1 -0
  316. package/dist/svg/svg-style.d.ts +15 -0
  317. package/dist/svg/svg-style.d.ts.map +1 -0
  318. package/dist/svg/svg-style.js +46 -0
  319. package/dist/svg/svg-style.js.map +1 -0
  320. package/dist/types.d.ts +39 -0
  321. package/dist/types.d.ts.map +1 -0
  322. package/dist/types.js +21 -0
  323. package/dist/types.js.map +1 -0
  324. package/dist/version.d.ts +3 -0
  325. package/dist/version.d.ts.map +1 -0
  326. package/dist/version.js +3 -0
  327. package/dist/version.js.map +1 -0
  328. package/dist/vue/index.d.ts +43 -0
  329. package/dist/vue/index.d.ts.map +1 -0
  330. package/dist/vue/index.js +55 -0
  331. package/dist/vue/index.js.map +1 -0
  332. package/package.json +71 -0
@@ -0,0 +1,456 @@
1
+ /**
2
+ * Logic expression parsing and tree layout — TS port of Python `schemdraw.parsing`.
3
+ *
4
+ * Exports:
5
+ * - `DrawTree`, `buchheim` — Buchheim-Reingold-Tilford tree layout
6
+ * - `LogicTree` — intermediate tree for logic gates
7
+ * - `logicparse` — parse a logic string into a Drawing of logic gates
8
+ */
9
+ import { Drawing } from "../drawing.js";
10
+ import { And, nand } from "../logic/and.js";
11
+ import { Or, nor, xor, xnor } from "../logic/or.js";
12
+ import { Buf, Not } from "../logic/buffer.js";
13
+ import { RightLines } from "../elements/connectors.js";
14
+ // ---------------------------------------------------------------------------
15
+ // LogicTree
16
+ // ---------------------------------------------------------------------------
17
+ export class LogicTree {
18
+ node;
19
+ children;
20
+ constructor(node, ...children) {
21
+ this.node = node;
22
+ this.children = children;
23
+ }
24
+ [Symbol.iterator]() {
25
+ return this.children[Symbol.iterator]();
26
+ }
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // Buchheim-Reingold-Tilford tree layout
30
+ // Source: Bill Mill https://llimllib.github.io/pymag-trees/
31
+ // ---------------------------------------------------------------------------
32
+ export class DrawTree {
33
+ x = -1;
34
+ y;
35
+ node;
36
+ children;
37
+ parent;
38
+ thread = null;
39
+ mod = 0;
40
+ ancestor = this;
41
+ change = 0;
42
+ shift = 0;
43
+ number;
44
+ _lmostSibling = null;
45
+ constructor(tree, parent = null, depth = 0, number = 1) {
46
+ this.y = depth;
47
+ this.node = tree.node;
48
+ this.parent = parent;
49
+ this.number = number;
50
+ this.children = tree.children.map((c, i) => new DrawTree(c, this, depth + 1, i + 1));
51
+ this.ancestor = this;
52
+ }
53
+ left() {
54
+ return this.thread ?? (this.children.length > 0 ? this.children[0] : null);
55
+ }
56
+ right() {
57
+ return this.thread ?? (this.children.length > 0 ? this.children[this.children.length - 1] : null);
58
+ }
59
+ lbrother() {
60
+ let n = null;
61
+ if (this.parent) {
62
+ for (const node of this.parent.children) {
63
+ if (node === this)
64
+ return n;
65
+ n = node;
66
+ }
67
+ }
68
+ return n;
69
+ }
70
+ get lmostSibling() {
71
+ if (!this._lmostSibling && this.parent && this !== this.parent.children[0]) {
72
+ this._lmostSibling = this.parent.children[0];
73
+ }
74
+ return this._lmostSibling;
75
+ }
76
+ }
77
+ function thirdWalk(tree, n) {
78
+ tree.x += n;
79
+ for (const c of tree.children)
80
+ thirdWalk(c, n);
81
+ }
82
+ function executeShifts(v) {
83
+ let shift = 0;
84
+ let change = 0;
85
+ for (let i = v.children.length - 1; i >= 0; i--) {
86
+ const w = v.children[i];
87
+ w.x += shift;
88
+ w.mod += shift;
89
+ change += w.change;
90
+ shift += w.shift + change;
91
+ }
92
+ }
93
+ function ancestor(vil, v, defaultAncestor) {
94
+ if (v.parent && v.parent.children.includes(vil.ancestor)) {
95
+ return vil.ancestor;
96
+ }
97
+ return defaultAncestor;
98
+ }
99
+ function moveSubtree(wl, wr, shift) {
100
+ const subtrees = wr.number - wl.number;
101
+ wr.change -= shift / subtrees;
102
+ wr.shift += shift;
103
+ wl.change += shift / subtrees;
104
+ wr.x += shift;
105
+ wr.mod += shift;
106
+ }
107
+ function apportion(v, defaultAncestor, distance) {
108
+ const w = v.lbrother();
109
+ if (w !== null) {
110
+ let vir = v;
111
+ let vor = v;
112
+ let vil = w;
113
+ let vol = v.lmostSibling;
114
+ let sir = v.mod;
115
+ let sor = v.mod;
116
+ let sil = vil.mod;
117
+ let sol = vol.mod;
118
+ while (vil.right() && vir.left()) {
119
+ vil = vil.right();
120
+ vir = vir.left();
121
+ vol = vol.left();
122
+ vor = vor.right();
123
+ vor.ancestor = v;
124
+ const shift = (vil.x + sil) - (vir.x + sir) + distance;
125
+ if (shift > 0) {
126
+ moveSubtree(ancestor(vil, v, defaultAncestor), v, shift);
127
+ sir += shift;
128
+ sor += shift;
129
+ }
130
+ sil += vil.mod;
131
+ sir += vir.mod;
132
+ sol += vol.mod;
133
+ sor += vor.mod;
134
+ }
135
+ if (vil.right() && !vor.right()) {
136
+ vor.thread = vil.right();
137
+ vor.mod += sil - sor;
138
+ }
139
+ else {
140
+ if (vir.left() && !vol.left()) {
141
+ vol.thread = vir.left();
142
+ vol.mod += sir - sol;
143
+ }
144
+ defaultAncestor = v;
145
+ }
146
+ }
147
+ return defaultAncestor;
148
+ }
149
+ function firstwalk(v, distance = 1) {
150
+ if (v.children.length === 0) {
151
+ if (v.lmostSibling) {
152
+ v.x = v.lbrother().x + distance;
153
+ }
154
+ else {
155
+ v.x = 0;
156
+ }
157
+ }
158
+ else {
159
+ let defaultAncestor = v.children[0];
160
+ for (const w of v.children) {
161
+ firstwalk(w);
162
+ defaultAncestor = apportion(w, defaultAncestor, distance);
163
+ }
164
+ executeShifts(v);
165
+ const midpoint = (v.children[0].x + v.children[v.children.length - 1].x) / 2;
166
+ const w = v.lbrother();
167
+ if (w) {
168
+ v.x = w.x + distance;
169
+ v.mod = v.x - midpoint;
170
+ }
171
+ else {
172
+ v.x = midpoint;
173
+ }
174
+ }
175
+ return v;
176
+ }
177
+ function secondWalk(v, m = 0, depth = 0, min = null) {
178
+ v.x += m;
179
+ v.y = depth;
180
+ if (min === null || v.x < min)
181
+ min = v.x;
182
+ for (const w of v.children) {
183
+ min = secondWalk(w, m + v.mod, depth + 1, min);
184
+ }
185
+ return min;
186
+ }
187
+ export function buchheim(tree) {
188
+ const dt = firstwalk(new DrawTree(tree));
189
+ const min = secondWalk(dt);
190
+ if (min < 0)
191
+ thirdWalk(dt, -min);
192
+ return dt;
193
+ }
194
+ // ---------------------------------------------------------------------------
195
+ // Tokeniser / recursive-descent parser (replaces pyparsing)
196
+ // ---------------------------------------------------------------------------
197
+ const KEYWORDS = new Set(["and", "or", "not", "nand", "nor", "xor", "xnor", "true", "false"]);
198
+ var TT;
199
+ (function (TT) {
200
+ TT[TT["IDENT"] = 0] = "IDENT";
201
+ TT[TT["KEYWORD"] = 1] = "KEYWORD";
202
+ TT[TT["LPAREN"] = 2] = "LPAREN";
203
+ TT[TT["RPAREN"] = 3] = "RPAREN";
204
+ TT[TT["SYMBOL"] = 4] = "SYMBOL";
205
+ TT[TT["EOF"] = 5] = "EOF";
206
+ })(TT || (TT = {}));
207
+ function tokenize(src) {
208
+ const tokens = [];
209
+ let i = 0;
210
+ while (i < src.length) {
211
+ const ch = src[i];
212
+ if (/\s/.test(ch)) {
213
+ i++;
214
+ continue;
215
+ }
216
+ if (ch === "(") {
217
+ tokens.push({ tt: TT.LPAREN, val: "(" });
218
+ i++;
219
+ continue;
220
+ }
221
+ if (ch === ")") {
222
+ tokens.push({ tt: TT.RPAREN, val: ")" });
223
+ i++;
224
+ continue;
225
+ }
226
+ if ("&|+~¬∧∨⊕⊻".includes(ch)) {
227
+ tokens.push({ tt: TT.SYMBOL, val: ch });
228
+ i++;
229
+ continue;
230
+ }
231
+ if (/[$_a-zA-Z]/.test(ch)) {
232
+ let word = "";
233
+ while (i < src.length && /[$_a-zA-Z0-9]/.test(src[i])) {
234
+ word += src[i];
235
+ i++;
236
+ }
237
+ if (KEYWORDS.has(word)) {
238
+ tokens.push({ tt: TT.KEYWORD, val: word });
239
+ }
240
+ else {
241
+ tokens.push({ tt: TT.IDENT, val: word });
242
+ }
243
+ continue;
244
+ }
245
+ throw new Error(`logicparse: unexpected character '${ch}'`);
246
+ }
247
+ tokens.push({ tt: TT.EOF, val: "" });
248
+ return tokens;
249
+ }
250
+ /**
251
+ * Recursive-descent parser matching the pyparsing grammar's precedence:
252
+ * expr = xorExpr ( xorOp xorExpr )*
253
+ * xorExpr = orExpr ( orOp orExpr )*
254
+ * orExpr = andExpr ( andOp andExpr )*
255
+ * andExpr = notOp andExpr | atom
256
+ * atom = IDENT | 'true' | 'false' | '(' expr ')'
257
+ *
258
+ * Python pyparsing infixNotation precedence (tightest→loosest): not, and, or, xor.
259
+ */
260
+ class Parser {
261
+ tokens;
262
+ pos = 0;
263
+ constructor(tokens) {
264
+ this.tokens = tokens;
265
+ }
266
+ peek() { return this.tokens[this.pos]; }
267
+ advance() { return this.tokens[this.pos++]; }
268
+ expect(tt, val) {
269
+ const t = this.advance();
270
+ if (t.tt !== tt || (val !== undefined && t.val !== val)) {
271
+ throw new Error(`logicparse: expected ${val ?? TT[tt]}, got '${t.val}'`);
272
+ }
273
+ return t;
274
+ }
275
+ parse() {
276
+ const node = this.xorExpr();
277
+ if (this.peek().tt !== TT.EOF) {
278
+ throw new Error(`logicparse: unexpected token '${this.peek().val}'`);
279
+ }
280
+ return node;
281
+ }
282
+ isNotOp(t) {
283
+ return (t.tt === TT.KEYWORD && t.val === "not") ||
284
+ (t.tt === TT.SYMBOL && (t.val === "~" || t.val === "¬"));
285
+ }
286
+ isAndOp(t) {
287
+ return (t.tt === TT.KEYWORD && (t.val === "and" || t.val === "nand")) ||
288
+ (t.tt === TT.SYMBOL && (t.val === "&" || t.val === "∧"));
289
+ }
290
+ isOrOp(t) {
291
+ return (t.tt === TT.KEYWORD && (t.val === "or" || t.val === "nor")) ||
292
+ (t.tt === TT.SYMBOL && (t.val === "|" || t.val === "∨" || t.val === "+"));
293
+ }
294
+ isXorOp(t) {
295
+ return (t.tt === TT.KEYWORD && (t.val === "xor" || t.val === "xnor")) ||
296
+ (t.tt === TT.SYMBOL && (t.val === "⊕" || t.val === "⊻"));
297
+ }
298
+ xorExpr() {
299
+ let left = this.orExpr();
300
+ while (this.isXorOp(this.peek())) {
301
+ const op = this.advance();
302
+ const right = this.orExpr();
303
+ left = { kind: "binary", op: op.val, left, right };
304
+ }
305
+ return left;
306
+ }
307
+ orExpr() {
308
+ let left = this.andExpr();
309
+ while (this.isOrOp(this.peek())) {
310
+ const op = this.advance();
311
+ const right = this.andExpr();
312
+ left = { kind: "binary", op: op.val, left, right };
313
+ }
314
+ return left;
315
+ }
316
+ andExpr() {
317
+ let left = this.unary();
318
+ while (this.isAndOp(this.peek())) {
319
+ const op = this.advance();
320
+ const right = this.unary();
321
+ left = { kind: "binary", op: op.val, left, right };
322
+ }
323
+ return left;
324
+ }
325
+ unary() {
326
+ if (this.isNotOp(this.peek())) {
327
+ this.advance();
328
+ const operand = this.unary();
329
+ return { kind: "unary", operand };
330
+ }
331
+ return this.atom();
332
+ }
333
+ atom() {
334
+ const t = this.peek();
335
+ if (t.tt === TT.LPAREN) {
336
+ this.advance();
337
+ const inner = this.xorExpr();
338
+ this.expect(TT.RPAREN, ")");
339
+ return inner;
340
+ }
341
+ if (t.tt === TT.IDENT || (t.tt === TT.KEYWORD && (t.val === "true" || t.val === "false"))) {
342
+ this.advance();
343
+ return { kind: "ident", name: t.val };
344
+ }
345
+ throw new Error(`logicparse: unexpected token '${t.val}'`);
346
+ }
347
+ }
348
+ function collectBinary(node, op) {
349
+ if (node.kind === "binary" && node.op === op) {
350
+ return [...collectBinary(node.left, op), ...collectBinary(node.right, op)];
351
+ }
352
+ return [node];
353
+ }
354
+ function normalizeOp(op) {
355
+ return { "&": "and", "∧": "and", "|": "or", "∨": "or", "+": "or", "⊕": "xor", "⊻": "xor" }[op] ?? op;
356
+ }
357
+ const INVERT_MAP = {
358
+ and: "nand", or: "nor", not: "buf",
359
+ nand: "and", nor: "or", buf: "not",
360
+ xor: "xnor", xnor: "xor",
361
+ };
362
+ function toLogicTree(node) {
363
+ if (node.kind === "ident") {
364
+ return new LogicTree(node.name);
365
+ }
366
+ if (node.kind === "unary") {
367
+ if (node.operand.kind === "ident") {
368
+ return new LogicTree("not", toLogicTree(node.operand));
369
+ }
370
+ const inner = node.operand;
371
+ if (inner.kind === "binary") {
372
+ const func = normalizeOp(inner.op);
373
+ const inverted = INVERT_MAP[func];
374
+ if (inverted) {
375
+ const inputs = collectBinary(inner, inner.op);
376
+ return new LogicTree(inverted, ...inputs.map(toLogicTree));
377
+ }
378
+ }
379
+ if (inner.kind === "unary") {
380
+ return toLogicTree(inner.operand);
381
+ }
382
+ return new LogicTree("not", toLogicTree(inner));
383
+ }
384
+ const func = normalizeOp(node.op);
385
+ const inputs = collectBinary(node, node.op);
386
+ return new LogicTree(func, ...inputs.map(toLogicTree));
387
+ }
388
+ const GATE_MAP = {
389
+ and: And,
390
+ or: Or,
391
+ not: Not,
392
+ buf: Buf,
393
+ };
394
+ function gateFactory(name, params) {
395
+ const ctor = GATE_MAP[name];
396
+ if (ctor)
397
+ return new ctor(params);
398
+ switch (name) {
399
+ case "nand": return nand(params);
400
+ case "nor": return nor(params);
401
+ case "xor": return xor(params);
402
+ case "xnor": return xnor(params);
403
+ default: return new And(params);
404
+ }
405
+ }
406
+ function isGateNode(name) {
407
+ return name in GATE_MAP || ["nand", "nor", "xor", "xnor"].includes(name);
408
+ }
409
+ function drawLogic(tree, gateH = 0.7, gateW = 2, outlabel) {
410
+ const drawing = new Drawing();
411
+ drawing.unit = gateW;
412
+ const dtree = buchheim(tree);
413
+ function drawit(root, depth = 0, outlabel) {
414
+ const isUnary = root.node === "not" || root.node === "buf";
415
+ const params = {
416
+ d: "r",
417
+ at: [root.y * -gateW, -root.x * gateH],
418
+ anchor: "end",
419
+ l: gateW,
420
+ ...(isUnary ? {} : { inputs: root.children.length }),
421
+ };
422
+ const g = gateFactory(root.node, params);
423
+ if (outlabel)
424
+ g.label(outlabel, { loc: "end" });
425
+ for (let i = 0; i < root.children.length; i++) {
426
+ const child = root.children[i];
427
+ const anchorName = isUnary ? "start" : `in${i + 1}`;
428
+ if (!isGateNode(child.node)) {
429
+ g.label(child.node, { loc: anchorName });
430
+ }
431
+ }
432
+ drawing.add(g);
433
+ for (let i = 0; i < root.children.length; i++) {
434
+ const child = root.children[i];
435
+ const anchorName = isUnary ? "start" : `in${i + 1}`;
436
+ if (isGateNode(child.node)) {
437
+ const childElm = drawit(child, depth + 1);
438
+ drawing.add(new RightLines({ at: [g, anchorName], to: childElm.anchors.end }));
439
+ }
440
+ }
441
+ return g;
442
+ }
443
+ drawit(dtree, 0, outlabel);
444
+ return drawing;
445
+ }
446
+ // ---------------------------------------------------------------------------
447
+ // Public API
448
+ // ---------------------------------------------------------------------------
449
+ export function logicparse(expr, opts = {}) {
450
+ const { gateW = 2, gateH = 0.75, outlabel } = opts;
451
+ const tokens = tokenize(expr);
452
+ const parsed = new Parser(tokens).parse();
453
+ const tree = toLogicTree(parsed);
454
+ return drawLogic(tree, gateH, gateW, outlabel);
455
+ }
456
+ //# sourceMappingURL=parsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../src/subsystems/parsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { Element } from "../element.js";
2
+ import { Element2Term } from "../element2term.js";
3
+ import { ElementImage } from "../elements/image.js";
4
+ export declare const INCH = 3.5;
5
+ export declare const MILLIMETER: number;
6
+ export declare const PINSPACING: number;
7
+ export declare function parseSizeToUnits(value: string): number;
8
+ export declare function resistorColors(value: number, tolerance?: number): [string, string, string, string | undefined];
9
+ export declare class ElementPictorial extends Element2Term {
10
+ constructor(opts?: Record<string, unknown>);
11
+ }
12
+ export declare class Resistor extends ElementPictorial {
13
+ constructor(value?: number, tolerance?: number, opts?: Record<string, unknown>);
14
+ }
15
+ export declare class Diode extends ElementPictorial {
16
+ constructor(opts?: Record<string, unknown>);
17
+ }
18
+ export declare class LED extends Element {
19
+ constructor(opts?: Record<string, unknown>);
20
+ }
21
+ export declare class LEDOrange extends LED {
22
+ constructor(opts?: Record<string, unknown>);
23
+ }
24
+ export declare class LEDYellow extends LED {
25
+ constructor(opts?: Record<string, unknown>);
26
+ }
27
+ export declare class LEDGreen extends LED {
28
+ constructor(opts?: Record<string, unknown>);
29
+ }
30
+ export declare class LEDBlue extends LED {
31
+ constructor(opts?: Record<string, unknown>);
32
+ }
33
+ export declare class LEDWhite extends LED {
34
+ constructor(opts?: Record<string, unknown>);
35
+ }
36
+ export declare class CapacitorElectrolytic extends Element {
37
+ constructor(opts?: Record<string, unknown>);
38
+ }
39
+ export declare class CapacitorMylar extends Element {
40
+ constructor(opts?: Record<string, unknown>);
41
+ }
42
+ export declare class CapacitorCeramic extends Element {
43
+ constructor(opts?: Record<string, unknown>);
44
+ }
45
+ export declare class TO92 extends Element {
46
+ constructor(opts?: Record<string, unknown>);
47
+ }
48
+ export declare class DIP extends Element {
49
+ constructor(npins?: number, wide?: boolean, opts?: Record<string, unknown>);
50
+ }
51
+ export declare class Breadboard extends Element {
52
+ constructor(opts?: Record<string, unknown>);
53
+ }
54
+ export interface FritzingInfo {
55
+ author?: string;
56
+ version?: string;
57
+ title?: string;
58
+ url?: string;
59
+ label?: string;
60
+ date?: string;
61
+ description?: string;
62
+ }
63
+ export interface FritzingPartOptions {
64
+ partname?: string;
65
+ partidx?: number;
66
+ scale?: number;
67
+ }
68
+ export declare class FritzingPart extends ElementImage {
69
+ info?: FritzingInfo;
70
+ constructor(image: string, width: number, height: number, anchors?: Record<string, [number, number]>, info?: FritzingInfo, opts?: Record<string, unknown>);
71
+ }
72
+ export declare function fritzParts(_fname: string): string[];
73
+ //# sourceMappingURL=pictorial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pictorial.d.ts","sourceRoot":"","sources":["../../src/subsystems/pictorial.ts"],"names":[],"mappings":"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"}