@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,578 @@
1
+ import { Element } from "../element.js";
2
+ import { Point } from "../geometry/point.js";
3
+ import { GAP, Segment, SegmentCircle, SegmentPoly, SegmentText } from "../segment.js";
4
+ import { Line } from "./line.js";
5
+ import { resheight } from "./twoterm.js";
6
+ const gap = GAP;
7
+ export class OrthoLines extends Element {
8
+ constructor(userParams = {}) {
9
+ super(userParams);
10
+ Object.assign(this.defaults, { dy: 0.6, to: [1, 1] });
11
+ }
12
+ toXY(xy) {
13
+ this.userParams.to = xy;
14
+ return this;
15
+ }
16
+ delta(dx = 0, dy = 0) {
17
+ this.userParams.delta = [dx, dy];
18
+ return this;
19
+ }
20
+ _place(dwgxy, dwgtheta, dwgparams) {
21
+ this.dwgParams = { ...dwgparams };
22
+ if (!this._positioned) {
23
+ this._position();
24
+ }
25
+ this.elmParams.theta = 0;
26
+ const xy = this.params.at !== undefined
27
+ ? Point.fromXY(this.params.at)
28
+ : Point.fromXY(dwgxy);
29
+ const to = this.params.to !== undefined
30
+ ? Point.fromXY(this.params.to)
31
+ : Point.fromXY(dwgxy);
32
+ const deltaP = this.params.delta;
33
+ const n = this.params.n ?? 1;
34
+ const ndy = this.params.dy ?? 0.6;
35
+ const xstart = this.params.xstart;
36
+ const arrow = this.params.arrow;
37
+ let dx, dy;
38
+ if (deltaP !== undefined) {
39
+ [dx, dy] = deltaP;
40
+ }
41
+ else {
42
+ dx = to.x !== undefined
43
+ ? to.x - xy.x
44
+ : this.params.to[0] - (this.params.at !== undefined ? this.params.at[0] : dwgxy[0]);
45
+ dy = to.x !== undefined
46
+ ? to.y - xy.y
47
+ : this.params.to[1] - (this.params.at !== undefined ? this.params.at[1] : dwgxy[1]);
48
+ }
49
+ if (Math.abs(dy) < 0.05) {
50
+ for (let i = 0; i < n; i++) {
51
+ const y = -i * ndy;
52
+ this.segments.push(new Segment([[0, y], [dx, y]], { arrow }));
53
+ }
54
+ }
55
+ else {
56
+ let x0;
57
+ if (xstart !== undefined) {
58
+ if (dy > 0) {
59
+ x0 = dx * xstart;
60
+ }
61
+ else {
62
+ x0 = dx * xstart - ndy - ndy * (n - 1) * xstart;
63
+ }
64
+ }
65
+ else if (dx > 0) {
66
+ x0 = dx / 2 - (ndy * (n - 1) / 2);
67
+ }
68
+ else {
69
+ x0 = dx / 2 + (ndy * (n - 1) / 2);
70
+ }
71
+ for (let i = 0; i < n; i++) {
72
+ const y = -i * ndy;
73
+ let x;
74
+ if (dy > 0) {
75
+ x = dx > 0 ? x0 + ndy * i : x0 - ndy * i;
76
+ }
77
+ else {
78
+ x = dx > 0 ? x0 + (n - i) * ndy : x0 - (n - i) * ndy;
79
+ }
80
+ this.segments.push(new Segment([[0, y], [x, y], [x, y + dy], [dx, y + dy]], { arrow }));
81
+ }
82
+ }
83
+ return super._place(dwgxy, dwgtheta, dwgparams);
84
+ }
85
+ }
86
+ export class RightLines extends Element {
87
+ constructor(userParams = {}) {
88
+ super(userParams);
89
+ Object.assign(this.defaults, { dy: 0.6, to: [3, -2], theta: 0, n: 1 });
90
+ }
91
+ toXY(xy) {
92
+ this.userParams.to = xy;
93
+ return this;
94
+ }
95
+ delta(dx = 0, dy = 0) {
96
+ this.userParams.delta = [dx, dy];
97
+ return this;
98
+ }
99
+ _place(dwgxy, dwgtheta, dwgparams) {
100
+ this.dwgParams = { ...dwgparams };
101
+ if (!this._positioned) {
102
+ this._position();
103
+ }
104
+ const xyAt = this.params.at !== undefined
105
+ ? Point.fromXY(this.params.at)
106
+ : Point.fromXY(dwgxy);
107
+ const deltaP = this.params.delta;
108
+ const toParam = this.params.to;
109
+ const n = this.params.n ?? 1;
110
+ const ndy = this.params.dy ?? 0.6;
111
+ const arrow = this.params.arrow;
112
+ let dx, dy;
113
+ if (deltaP !== undefined) {
114
+ [dx, dy] = deltaP;
115
+ }
116
+ else {
117
+ dx = toParam[0] - xyAt.x;
118
+ dy = toParam[1] - xyAt.y;
119
+ }
120
+ let x = 0;
121
+ for (let i = 0; i < n; i++) {
122
+ const y = -i * ndy;
123
+ if (dy > 0) {
124
+ x = dx < 0 ? dx - i * ndy : dx + i * ndy;
125
+ }
126
+ else {
127
+ x = dx > 0 ? dx + (n - i - 1) * ndy : dx - (n - i - 1) * ndy;
128
+ }
129
+ this.segments.push(new Segment([[0, y], [x, y], [x, dy]], { arrow }));
130
+ }
131
+ this.anchors.mid = [dx / 2, 0];
132
+ this.elmParams.lblloc = "mid";
133
+ this.elmParams.drop = [x, dy];
134
+ this.elmParams.droptheta = dy > 0 ? 90 : -90;
135
+ return super._place(dwgxy, dwgtheta, dwgparams);
136
+ }
137
+ }
138
+ export class Header extends Element {
139
+ constructor(userParams = {}) {
140
+ super(userParams);
141
+ Object.assign(this.defaults, {
142
+ pinspacing: 0.6,
143
+ style: "round",
144
+ numbering: "lr",
145
+ pinfontsizeleft: 9,
146
+ pinfontsizeright: 9,
147
+ edge: 0.3,
148
+ pinfill: "bg",
149
+ shownumber: false,
150
+ pinalignleft: "bottom",
151
+ pinalignright: "bottom",
152
+ pinrad: 0.1,
153
+ });
154
+ const rows = userParams.rows ?? 4;
155
+ const cols = userParams.cols ?? 1;
156
+ const pinsleft = userParams.pinsleft ?? [];
157
+ const pinsright = userParams.pinsright ?? [];
158
+ this.elmParams.d = "right";
159
+ const spacing = this.params.pinspacing ?? 0.6;
160
+ const edgepad = this.params.edge ?? 0.3;
161
+ const pinrad = this.params.pinrad ?? 0.1;
162
+ const sty = this.params.style ?? "round";
163
+ const numbering = this.params.numbering ?? "lr";
164
+ const shownumber = this.params.shownumber ?? false;
165
+ const pinfill = this.params.pinfill ?? "bg";
166
+ const pinfontsizeleft = this.params.pinfontsizeleft ?? 9;
167
+ const pinfontsizeright = this.params.pinfontsizeright ?? 9;
168
+ const pinalignleft = this.params.pinalignleft ?? "bottom";
169
+ const w = (cols - 1) * spacing + edgepad * 2;
170
+ const h = (rows - 1) * spacing + edgepad * 2;
171
+ this.segments.push(new SegmentPoly([[0, 0], [0, h], [w, h], [w, 0]]));
172
+ for (let row = 0; row < rows; row++) {
173
+ for (let col = 0; col < cols; col++) {
174
+ const px = col * spacing + edgepad;
175
+ const py = h - row * spacing - edgepad;
176
+ const xy = [px, py];
177
+ if (sty === "square") {
178
+ this.segments.push(new SegmentPoly([
179
+ [px - pinrad, py - pinrad],
180
+ [px + pinrad, py - pinrad],
181
+ [px + pinrad, py + pinrad],
182
+ [px - pinrad, py + pinrad],
183
+ ], { fill: "bg", zorder: 4 }));
184
+ }
185
+ else if (sty === "screw") {
186
+ this.segments.push(new SegmentCircle(xy, pinrad * 1.75, { fill: pinfill, zorder: 4 }));
187
+ this.segments.push(new Segment([
188
+ [px + pinrad, py + pinrad],
189
+ [px - pinrad, py - pinrad],
190
+ ], { zorder: 5 }));
191
+ }
192
+ else {
193
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill: pinfill, zorder: 4 }));
194
+ }
195
+ let pnumber;
196
+ if (numbering === "lr" || numbering === true) {
197
+ pnumber = String(row * cols + col + 1);
198
+ }
199
+ else if (numbering === "ud") {
200
+ pnumber = String(row + col * rows + 1);
201
+ }
202
+ else {
203
+ pnumber = col % 2 ? String(rows * col + (rows - row)) : String(row + 1);
204
+ }
205
+ this.anchors[`pin${pnumber}`] = xy;
206
+ if (shownumber) {
207
+ const numxy = [col % 2 ? w + 0.05 : -0.05, py];
208
+ const ha = col % 2 ? "left" : "right";
209
+ this.segments.push(new SegmentText(numxy, pnumber, { fontsize: pinfontsizeleft, align: [ha, "bottom"] }));
210
+ }
211
+ if (pinsleft.length > 0 && (cols === 1 || !(col % 2))) {
212
+ const lblxy = [-0.05, py];
213
+ this.segments.push(new SegmentText(lblxy, pinsleft[row] ?? "", {
214
+ fontsize: pinfontsizeleft,
215
+ align: ["right", pinalignleft],
216
+ }));
217
+ }
218
+ if (pinsright.length > 0 && (cols === 1 || col % 2)) {
219
+ const lblxy = [w + 0.05, py];
220
+ this.segments.push(new SegmentText(lblxy, pinsright[row] ?? "", {
221
+ fontsize: pinfontsizeright,
222
+ align: ["left", pinalignleft],
223
+ }));
224
+ }
225
+ }
226
+ }
227
+ }
228
+ }
229
+ export class Jumper extends Element {
230
+ constructor(userParams = {}) {
231
+ super(userParams);
232
+ Object.assign(this.defaults, { pinspacing: 0.6, pinrad: 0.1, theta: 0 });
233
+ const pinrad = this.params.pinrad ?? 0.1;
234
+ const pinspacing = this.params.pinspacing ?? 0.6;
235
+ const x = pinrad * 2.5;
236
+ this.segments.push(new SegmentPoly([
237
+ [-x, -x],
238
+ [pinspacing + x, -x],
239
+ [pinspacing + x, x],
240
+ [-x, x],
241
+ ]));
242
+ }
243
+ }
244
+ export class BusConnect extends Element {
245
+ constructor(userParams = {}) {
246
+ super(userParams);
247
+ Object.assign(this.defaults, { dy: 0.6, lwbus: 4, l: 3, slantx: 0.5 });
248
+ this.elmParams.theta = 0;
249
+ const n = userParams.n ?? 1;
250
+ const up = userParams.up ?? true;
251
+ const deltax = this.params.l ?? 3;
252
+ const deltay = this.params.dy ?? 0.6;
253
+ const lw = this.params.lwbus ?? 4;
254
+ const slantx = this.params.slantx ?? 0.5;
255
+ const slanty = up ? slantx : -slantx;
256
+ for (let i = 0; i < n; i++) {
257
+ const y = -i * deltay;
258
+ this.segments.push(new Segment([[0, y], [deltax - slantx, y], [deltax, y + slanty]]));
259
+ this.anchors[`pin${i + 1}`] = [0, y];
260
+ }
261
+ this.segments.push(new Segment([[deltax, slantx], [deltax, slanty - n * deltay]], { lw }));
262
+ this.elmParams.drop = [deltax, slantx];
263
+ this.anchors.start = [deltax, slantx];
264
+ this.anchors.end = [deltax, slanty - n * deltay];
265
+ }
266
+ }
267
+ export class BusLine extends Line {
268
+ constructor(userParams = {}) {
269
+ super(userParams);
270
+ Object.assign(this.defaults, { lw: 4 });
271
+ }
272
+ }
273
+ export class DE9 extends Element {
274
+ constructor(userParams = {}) {
275
+ super(userParams);
276
+ Object.assign(this.defaults, {
277
+ pinspacing: 0.6,
278
+ edge: 0.3,
279
+ pinfill: "bg",
280
+ pinrad: 0.1,
281
+ number: false,
282
+ theta: 0,
283
+ });
284
+ const spacing = this.params.pinspacing ?? 0.6;
285
+ const edgepad = this.params.edge ?? 0.3;
286
+ const fill = this.params.pinfill ?? "bg";
287
+ const pinrad = this.params.pinrad ?? 0.1;
288
+ const showNum = this.params.number ?? false;
289
+ const w = spacing + edgepad * 2;
290
+ const h1 = 4 * spacing + edgepad * 2;
291
+ const h2 = h1 + 0.5;
292
+ this.segments.push(new SegmentPoly([[0, 0], [0, h1], [w, h2], [w, -0.5]], { cornerradius: 0.25 }));
293
+ for (let i = 0; i < 4; i++) {
294
+ const xy = [edgepad, h1 - (i + 0.5) * spacing - edgepad];
295
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
296
+ this.anchors[`pin${9 - i}`] = xy;
297
+ if (showNum) {
298
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(9 - i), {
299
+ fontsize: 9,
300
+ align: ["center", "bottom"],
301
+ }));
302
+ }
303
+ }
304
+ for (let i = 0; i < 5; i++) {
305
+ const xy = [edgepad + spacing, h2 - (i + 0.75) * spacing - edgepad];
306
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
307
+ this.anchors[`pin${5 - i}`] = xy;
308
+ if (showNum) {
309
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(5 - i), {
310
+ fontsize: 9,
311
+ align: ["center", "bottom"],
312
+ }));
313
+ }
314
+ }
315
+ }
316
+ }
317
+ export class DB9 extends DE9 {
318
+ }
319
+ export class DB25 extends Element {
320
+ constructor(userParams = {}) {
321
+ super(userParams);
322
+ Object.assign(this.defaults, {
323
+ pinspacing: 0.6,
324
+ edge: 0.3,
325
+ pinfill: "bg",
326
+ number: false,
327
+ pinrad: 0.1,
328
+ theta: 0,
329
+ });
330
+ const spacing = this.params.pinspacing ?? 0.6;
331
+ const edgepad = this.params.edge ?? 0.3;
332
+ const fill = this.params.pinfill ?? "bg";
333
+ const pinrad = this.params.pinrad ?? 0.1;
334
+ const showNum = this.params.number ?? false;
335
+ const w = spacing + edgepad * 2;
336
+ const h1 = 12 * spacing + edgepad * 2;
337
+ const h2 = h1 + 0.5;
338
+ this.segments.push(new SegmentPoly([[0, 0], [0, h1], [w, h2], [w, -0.5]], { cornerradius: 0.25 }));
339
+ for (let i = 0; i < 12; i++) {
340
+ const xy = [edgepad, h1 - (i + 0.5) * spacing - edgepad];
341
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
342
+ this.anchors[`pin${25 - i}`] = xy;
343
+ if (showNum) {
344
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(25 - i), {
345
+ fontsize: 9,
346
+ align: ["center", "bottom"],
347
+ }));
348
+ }
349
+ }
350
+ for (let i = 0; i < 13; i++) {
351
+ const xy = [edgepad + spacing, h2 - (i + 0.75) * spacing - edgepad];
352
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
353
+ this.anchors[`pin${13 - i}`] = xy;
354
+ if (showNum) {
355
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(13 - i), {
356
+ fontsize: 9,
357
+ align: ["center", "bottom"],
358
+ }));
359
+ }
360
+ }
361
+ }
362
+ }
363
+ export class DA15 extends Element {
364
+ constructor(userParams = {}) {
365
+ super(userParams);
366
+ Object.assign(this.defaults, {
367
+ pinspacing: 0.6,
368
+ edge: 0.3,
369
+ pinfill: "bg",
370
+ pinrad: 0.1,
371
+ number: false,
372
+ theta: 0,
373
+ });
374
+ const spacing = this.params.pinspacing ?? 0.6;
375
+ const edgepad = this.params.edge ?? 0.3;
376
+ const fill = this.params.pinfill ?? "bg";
377
+ const pinrad = this.params.pinrad ?? 0.1;
378
+ const showNum = this.params.number ?? false;
379
+ const w = spacing + edgepad * 2;
380
+ const h1 = 7 * spacing + edgepad * 2;
381
+ const h2 = h1 + 0.5;
382
+ this.segments.push(new SegmentPoly([[0, 0], [0, h1], [w, h2], [w, -0.5]], { cornerradius: 0.25 }));
383
+ for (let i = 0; i < 7; i++) {
384
+ const xy = [edgepad, h1 - (i + 0.5) * spacing - edgepad];
385
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
386
+ this.anchors[`pin${15 - i}`] = xy;
387
+ if (showNum) {
388
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(15 - i), {
389
+ fontsize: 9,
390
+ align: ["center", "bottom"],
391
+ }));
392
+ }
393
+ }
394
+ for (let i = 0; i < 8; i++) {
395
+ const xy = [edgepad + spacing, h2 - (i + 0.75) * spacing - edgepad];
396
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
397
+ this.anchors[`pin${8 - i}`] = xy;
398
+ if (showNum) {
399
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(8 - i), {
400
+ fontsize: 9,
401
+ align: ["center", "bottom"],
402
+ }));
403
+ }
404
+ }
405
+ }
406
+ }
407
+ export class DC37 extends Element {
408
+ constructor(userParams = {}) {
409
+ super(userParams);
410
+ Object.assign(this.defaults, {
411
+ pinspacing: 0.6,
412
+ edge: 0.3,
413
+ pinfill: "bg",
414
+ pinrad: 0.1,
415
+ number: false,
416
+ theta: 0,
417
+ });
418
+ const spacing = this.params.pinspacing ?? 0.6;
419
+ const edgepad = this.params.edge ?? 0.3;
420
+ const fill = this.params.pinfill ?? "bg";
421
+ const pinrad = this.params.pinrad ?? 0.1;
422
+ const showNum = this.params.number ?? false;
423
+ const w = spacing + edgepad * 2;
424
+ const h1 = 18 * spacing + edgepad * 2;
425
+ const h2 = h1 + 0.5;
426
+ this.segments.push(new SegmentPoly([[0, 0], [0, h1], [w, h2], [w, -0.5]], { cornerradius: 0.25 }));
427
+ for (let i = 0; i < 18; i++) {
428
+ const xy = [edgepad, h1 - (i + 0.5) * spacing - edgepad];
429
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
430
+ this.anchors[`pin${37 - i}`] = xy;
431
+ if (showNum) {
432
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(37 - i), {
433
+ fontsize: 9,
434
+ align: ["center", "bottom"],
435
+ }));
436
+ }
437
+ }
438
+ for (let i = 0; i < 19; i++) {
439
+ const xy = [edgepad + spacing, h2 - (i + 0.75) * spacing - edgepad];
440
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
441
+ this.anchors[`pin${19 - i}`] = xy;
442
+ if (showNum) {
443
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(19 - i), {
444
+ fontsize: 9,
445
+ align: ["center", "bottom"],
446
+ }));
447
+ }
448
+ }
449
+ }
450
+ }
451
+ export class DD50 extends Element {
452
+ constructor(userParams = {}) {
453
+ super(userParams);
454
+ Object.assign(this.defaults, {
455
+ pinspacing: 0.6,
456
+ edge: 0.3,
457
+ pinfill: "bg",
458
+ pinrad: 0.1,
459
+ number: false,
460
+ theta: 0,
461
+ });
462
+ const spacing = this.params.pinspacing ?? 0.6;
463
+ const edgepad = this.params.edge ?? 0.3;
464
+ const fill = this.params.pinfill ?? "bg";
465
+ const pinrad = this.params.pinrad ?? 0.1;
466
+ const showNum = this.params.number ?? false;
467
+ const w = spacing * 2 + edgepad * 2;
468
+ const h1 = 16 * spacing + edgepad * 2;
469
+ const h2 = h1 + 0.5;
470
+ this.segments.push(new SegmentPoly([[0, 0], [0, h1], [w, h2], [w, -0.5]], { cornerradius: 0.25 }));
471
+ for (let i = 0; i < 17; i++) {
472
+ const xy = [edgepad, h2 - (i + 0.75) * spacing - edgepad];
473
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
474
+ this.anchors[`pin${50 - i}`] = xy;
475
+ if (showNum) {
476
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(50 - i), {
477
+ fontsize: 9,
478
+ align: ["center", "bottom"],
479
+ }));
480
+ }
481
+ }
482
+ for (let i = 0; i < 16; i++) {
483
+ const xy = [edgepad + spacing, h1 - (i + 0.5) * spacing - edgepad];
484
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
485
+ this.anchors[`pin${33 - i}`] = xy;
486
+ if (showNum) {
487
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(33 - i), {
488
+ fontsize: 9,
489
+ align: ["center", "bottom"],
490
+ }));
491
+ }
492
+ }
493
+ for (let i = 0; i < 17; i++) {
494
+ const xy = [edgepad + spacing * 2, h2 - (i + 0.75) * spacing - edgepad];
495
+ this.segments.push(new SegmentCircle(xy, pinrad, { fill, zorder: 4 }));
496
+ this.anchors[`pin${17 - i}`] = xy;
497
+ if (showNum) {
498
+ this.segments.push(new SegmentText([xy[0], xy[1] + pinrad], String(17 - i), {
499
+ fontsize: 9,
500
+ align: ["center", "bottom"],
501
+ }));
502
+ }
503
+ }
504
+ }
505
+ }
506
+ export class CoaxConnect extends Element {
507
+ constructor(userParams = {}) {
508
+ super(userParams);
509
+ Object.assign(this.defaults, { radius: 0.4, radiusinner: 0.12, fillinner: "bg" });
510
+ const r1 = this.params.radius ?? 0.4;
511
+ const r2 = this.params.radiusinner ?? 0.12;
512
+ const fillInner = this.params.fillinner ?? "bg";
513
+ this.segments.push(new SegmentCircle([0, 0], r1));
514
+ this.segments.push(new SegmentCircle([0, 0], r2, { fill: fillInner, zorder: 4 }));
515
+ this.anchors.center = [0, 0];
516
+ this.anchors.N = [0, r1];
517
+ this.anchors.S = [0, -r1];
518
+ this.anchors.E = [r1, 0];
519
+ this.anchors.W = [-r1, 0];
520
+ }
521
+ }
522
+ export class Plug extends Element {
523
+ constructor(userParams = {}) {
524
+ super(userParams);
525
+ Object.assign(this.defaults, { pluggap: 0.18 });
526
+ const pluggap = this.params.pluggap ?? 0.18;
527
+ this.segments.push(new Segment([
528
+ [0, 0],
529
+ [1, 0],
530
+ gap,
531
+ [1 - resheight, resheight],
532
+ [1, 0],
533
+ [1 - resheight, -resheight],
534
+ ]));
535
+ this.elmParams.drop = [1 + pluggap, 0];
536
+ }
537
+ }
538
+ export class Jack extends Element {
539
+ constructor(userParams = {}) {
540
+ super(userParams);
541
+ this.segments.push(new Segment([
542
+ [0, 0],
543
+ [-resheight, resheight],
544
+ gap,
545
+ [-resheight, -resheight],
546
+ [0, 0],
547
+ [1, 0],
548
+ ]));
549
+ this.elmParams.drop = [1, 0];
550
+ }
551
+ }
552
+ export class ConnectorTerminal extends Element {
553
+ constructor(userParams = {}) {
554
+ super(userParams);
555
+ Object.assign(this.defaults, {
556
+ r: 0.18,
557
+ open: true,
558
+ fill: "bg",
559
+ drop: [0, 0],
560
+ theta: 0,
561
+ zorder: 4,
562
+ });
563
+ const radius = this.params.r ?? 0.18;
564
+ this.anchors.start = [0, 0];
565
+ this.anchors.center = [0, 0];
566
+ this.anchors.end = [0, 0];
567
+ const isOpen = this.params.open ?? true;
568
+ this.elmParams.fill = isOpen ? "bg" : true;
569
+ this.segments.push(new SegmentCircle([0, 0], radius));
570
+ const kx = 1.0;
571
+ const ky = 2.0;
572
+ this.segments.push(new Segment([
573
+ [-kx * radius, -ky * radius],
574
+ [kx * radius, ky * radius],
575
+ ]));
576
+ }
577
+ }
578
+ //# sourceMappingURL=connectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectors.js","sourceRoot":"","sources":["../../src/elements/connectors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Crystal oscillator — aligned with Python `elements/twoterm.py` · `Crystal`.
3
+ */
4
+ import { Element2Term } from "../element2term.js";
5
+ export declare class Crystal extends Element2Term {
6
+ constructor(userParams?: Record<string, unknown>);
7
+ }
8
+ //# sourceMappingURL=crystal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crystal.d.ts","sourceRoot":"","sources":["../../src/elements/crystal.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,qBAAa,OAAQ,SAAQ,YAAY;gBAC3B,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAwBrD"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Crystal oscillator — aligned with Python `elements/twoterm.py` · `Crystal`.
3
+ */
4
+ import { Element2Term } from "../element2term.js";
5
+ import { GAP, Segment } from "../segment.js";
6
+ import { resheight } from "./twoterm.js";
7
+ export class Crystal extends Element2Term {
8
+ constructor(userParams = {}) {
9
+ super(userParams);
10
+ const xgap = 0.2;
11
+ const rh = resheight;
12
+ this.segments.push(new Segment([
13
+ [0, 0],
14
+ GAP,
15
+ [0, rh],
16
+ [0, -rh],
17
+ GAP,
18
+ [xgap / 2, rh],
19
+ [xgap / 2, -rh],
20
+ [xgap * 1.5, -rh],
21
+ [xgap * 1.5, rh],
22
+ [xgap / 2, rh],
23
+ GAP,
24
+ [xgap * 2, rh],
25
+ [xgap * 2, -rh],
26
+ GAP,
27
+ [xgap * 2, 0],
28
+ ]));
29
+ }
30
+ }
31
+ //# sourceMappingURL=crystal.js.map