@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,469 @@
1
+ import { Element } from "../element.js";
2
+ import { Element2Term } from "../element2term.js";
3
+ import { ElementImage } from "../elements/image.js";
4
+ import { validateColor } from "../style.js";
5
+ import { Segment, SegmentArc, SegmentCircle, SegmentPath, SegmentPoly, SegmentText, } from "../segment.js";
6
+ export const INCH = 3.5;
7
+ export const MILLIMETER = INCH / 25.4;
8
+ export const PINSPACING = 0.1 * INCH;
9
+ const HOUSING_COLOR = "#333";
10
+ const BORDER_COLOR = "#777";
11
+ const LEAD_COLOR = "#A0A0A0";
12
+ const PX_PER_IN = 96;
13
+ export function parseSizeToUnits(value) {
14
+ const px = parseSizeToPx(value);
15
+ return (px / PX_PER_IN) * INCH;
16
+ }
17
+ function parseSizeToPx(value) {
18
+ const m = value.match(/^([0-9.]+)\s*(px|pt|in|mm|cm|pc|em|ex|%)?$/i);
19
+ if (!m)
20
+ return 0;
21
+ const num = parseFloat(m[1]);
22
+ const unit = (m[2] ?? "px").toLowerCase();
23
+ switch (unit) {
24
+ case "px":
25
+ return num;
26
+ case "pt":
27
+ return num * (96 / 72);
28
+ case "in":
29
+ return num * 96;
30
+ case "mm":
31
+ return num * (96 / 25.4);
32
+ case "cm":
33
+ return num * (96 / 2.54);
34
+ case "pc":
35
+ return num * 16;
36
+ default:
37
+ return num;
38
+ }
39
+ }
40
+ const RESISTOR_BAND_COLORS = {
41
+ 0: "black",
42
+ 1: "brown",
43
+ 2: "red",
44
+ 3: "orange",
45
+ 4: "yellow",
46
+ 5: "green",
47
+ 6: "blue",
48
+ 7: "violet",
49
+ 8: "gray",
50
+ 9: "white",
51
+ [-1]: "gold",
52
+ [-2]: "silver",
53
+ [-3]: "pink",
54
+ };
55
+ const TOLERANCE_COLORS = {
56
+ "1": "brown",
57
+ "2": "red",
58
+ "0.05": "orange",
59
+ "0.02": "yellow",
60
+ "0.5": "green",
61
+ "0.25": "blue",
62
+ "0.1": "violet",
63
+ "0.01": "gray",
64
+ "5": "gold",
65
+ "10": "silver",
66
+ };
67
+ export function resistorColors(value, tolerance) {
68
+ let mult = Math.floor(Math.log10(value)) - 1;
69
+ let base = value / 10 ** mult;
70
+ if (base < 10) {
71
+ mult -= 1;
72
+ base = value / 10 ** mult;
73
+ }
74
+ const band1 = Math.floor(base / 10);
75
+ const band2 = Math.floor(base % 10);
76
+ const ct = tolerance !== undefined
77
+ ? TOLERANCE_COLORS[String(tolerance)]
78
+ : undefined;
79
+ return [
80
+ RESISTOR_BAND_COLORS[band1],
81
+ RESISTOR_BAND_COLORS[band2],
82
+ RESISTOR_BAND_COLORS[mult],
83
+ ct,
84
+ ];
85
+ }
86
+ export class ElementPictorial extends Element2Term {
87
+ constructor(opts = {}) {
88
+ super(opts);
89
+ Object.assign(this.defaults, { leadcolor: LEAD_COLOR, lw: 3 });
90
+ }
91
+ }
92
+ export class Resistor extends ElementPictorial {
93
+ constructor(value = 1000, tolerance, opts = {}) {
94
+ super(opts);
95
+ Object.assign(this.defaults, { fill: "blanchedalmond" });
96
+ const w = PINSPACING;
97
+ const h = PINSPACING / 2;
98
+ const h2 = h * 0.9;
99
+ this.segments.push(new Segment([[0, 0], [NaN, NaN], [h * 3 + w, 0]]));
100
+ this.segments.push(new SegmentPath([
101
+ "M", [0, 0],
102
+ "Q", [0, h], [h, h],
103
+ "Q", [h * 1.25, h], [h * 1.5, h2],
104
+ "L", [h * 1.5 + w, h2],
105
+ "Q", [h * 1.75 + w, h], [h * 2 + w, h],
106
+ "Q", [h * 3 + w, h], [h * 3 + w, 0],
107
+ "Q", [h * 3 + w, -h], [h * 2 + w, -h],
108
+ "Q", [h * 1.75 + w, -h], [h * 1.5 + w, -h2],
109
+ "L", [h * 1.5, -h2],
110
+ "Q", [h * 1.25, -h], [h, -h],
111
+ "Q", [0, -h], [0, 0],
112
+ "Z",
113
+ ], { color: "black", lw: 1 }));
114
+ const stripe1 = 0.16;
115
+ const stripe2 = 0.32;
116
+ const stripe3 = 0.48;
117
+ const stripe4 = 0.68;
118
+ const stripew = 0.08;
119
+ const [c1, c2, c3, ct] = resistorColors(value, tolerance);
120
+ this.segments.push(new SegmentPoly([[stripe1, h2], [stripe1, -h2], [stripe1 + stripew, -h2], [stripe1 + stripew, h2]], { fill: c1, lw: 0.1, zorder: 2 }));
121
+ this.segments.push(new SegmentPoly([[stripe2, h2], [stripe2, -h2], [stripe2 + stripew, -h2], [stripe2 + stripew, h2]], { fill: c2, lw: 0.1, zorder: 2 }));
122
+ this.segments.push(new SegmentPoly([[stripe3, h2], [stripe3, -h2], [stripe3 + stripew, -h2], [stripe3 + stripew, h2]], { fill: c3, lw: 0.1, zorder: 2 }));
123
+ if (ct) {
124
+ this.segments.push(new SegmentPoly([[stripe4, h2], [stripe4, -h2], [stripe4 + stripew, -h2], [stripe4 + stripew, h2]], { fill: ct, lw: 0.1, zorder: 2 }));
125
+ }
126
+ }
127
+ }
128
+ export class Diode extends ElementPictorial {
129
+ constructor(opts = {}) {
130
+ super(opts);
131
+ Object.assign(this.defaults, { fill: HOUSING_COLOR, stripe_color: "silver" });
132
+ const h = PINSPACING / 2;
133
+ const w = PINSPACING * 2.5;
134
+ const stripex = w * 0.78;
135
+ const stripew = 0.08;
136
+ const stripeColor = (this.params.stripe_color ?? "silver");
137
+ validateColor(stripeColor);
138
+ this.segments.push(new Segment([[0, 0], [NaN, NaN], [w, 0]]));
139
+ this.segments.push(new SegmentPoly([[0, h], [w, h], [w, -h], [0, -h]], { closed: true, lw: 1, color: "black", zorder: 2 }));
140
+ this.segments.push(new SegmentPoly([[stripex, h], [stripex + stripew, h], [stripex + stripew, -h], [stripex, -h]], { closed: true, lw: 1, color: "none", fill: stripeColor, zorder: 2 }));
141
+ }
142
+ }
143
+ export class LED extends Element {
144
+ constructor(opts = {}) {
145
+ super(opts);
146
+ Object.assign(this.defaults, {
147
+ lead_length: PINSPACING * 5,
148
+ fill: "#dd4433",
149
+ theta: 0,
150
+ });
151
+ const width = 0.197 * INCH;
152
+ const height = 0.338 * INCH;
153
+ const leadH = (this.params.lead_length ?? PINSPACING * 5);
154
+ const ref = PINSPACING * 5;
155
+ this.segments.push(new Segment([[0, 0], [0, leadH]], { color: LEAD_COLOR, lw: 4 }));
156
+ this.segments.push(new Segment([
157
+ [PINSPACING, 0],
158
+ [PINSPACING, leadH - ref * 0.3],
159
+ [PINSPACING * 0.6, leadH - ref * 0.2],
160
+ [PINSPACING * 0.6, leadH],
161
+ ], { color: LEAD_COLOR, lw: 4 }));
162
+ const topR = width * 0.8;
163
+ const left = PINSPACING / 2 - width / 2;
164
+ const center = PINSPACING / 2;
165
+ const top = leadH + height;
166
+ this.segments.push(new SegmentPath([
167
+ "M", [left, leadH],
168
+ "Q", [center, leadH - ref * 0.2], [left + width, leadH],
169
+ "L", [left + width, top - topR],
170
+ "C", [left + width, top], [left, top], [left, top - topR],
171
+ "Z",
172
+ ], { color: "none" }));
173
+ const baseH = 0.039 * INCH;
174
+ this.segments.push(new SegmentPath([
175
+ "M", [left, leadH + baseH / 2],
176
+ "Q", [center * 0.5, leadH - ref * 0.16 + baseH], [left + width * 0.7, leadH - ref * 0.03],
177
+ "L", [left + width, leadH + baseH / 2],
178
+ ], { color: "#FFFFFF55", lw: 2 }));
179
+ const reflectionx = left + 0.03 * INCH;
180
+ this.segments.push(new SegmentPath([
181
+ "M", [reflectionx, leadH + baseH * 2],
182
+ "L", [reflectionx, top - topR],
183
+ "Q", [reflectionx, top - topR + 0.04 * INCH],
184
+ [reflectionx + 0.04 * INCH, top - topR + 0.07 * INCH],
185
+ ], { color: "#FFFFFF55", lw: 3 }));
186
+ }
187
+ }
188
+ export class LEDOrange extends LED {
189
+ constructor(opts = {}) {
190
+ super(opts);
191
+ Object.assign(this.defaults, { fill: "#efa207" });
192
+ }
193
+ }
194
+ export class LEDYellow extends LED {
195
+ constructor(opts = {}) {
196
+ super(opts);
197
+ Object.assign(this.defaults, { fill: "#f1de0f" });
198
+ }
199
+ }
200
+ export class LEDGreen extends LED {
201
+ constructor(opts = {}) {
202
+ super(opts);
203
+ Object.assign(this.defaults, { fill: "#4be317" });
204
+ }
205
+ }
206
+ export class LEDBlue extends LED {
207
+ constructor(opts = {}) {
208
+ super(opts);
209
+ Object.assign(this.defaults, { fill: "#3892bc" });
210
+ }
211
+ }
212
+ export class LEDWhite extends LED {
213
+ constructor(opts = {}) {
214
+ super(opts);
215
+ Object.assign(this.defaults, { fill: "#e5e5e5" });
216
+ }
217
+ }
218
+ export class CapacitorElectrolytic extends Element {
219
+ constructor(opts = {}) {
220
+ super(opts);
221
+ Object.assign(this.defaults, {
222
+ fill: "#303b91",
223
+ lead_length: 0.2 * INCH,
224
+ cap_color: "#CCC",
225
+ stripe_color: "#dff1f6",
226
+ theta: 0,
227
+ });
228
+ const width = PINSPACING * 1.7;
229
+ const height = 0.3 * INCH;
230
+ const leadH = (this.params.lead_length ?? 0.2 * INCH);
231
+ this.segments.push(new Segment([[0, 0], [0, leadH]], { color: LEAD_COLOR, lw: 4 }));
232
+ this.segments.push(new Segment([[PINSPACING, 0], [PINSPACING, leadH]], { color: LEAD_COLOR, lw: 4 }));
233
+ const ref = PINSPACING * 2;
234
+ const topR = ref * 0.3;
235
+ const left = PINSPACING / 2 - width / 2;
236
+ const center = PINSPACING / 2;
237
+ const top = leadH + height;
238
+ this.segments.push(new SegmentPath([
239
+ "M", [left, leadH],
240
+ "Q", [center, leadH - ref * 0.3], [left + width, leadH],
241
+ "L", [left + width, top - topR],
242
+ "Q", [center, top], [left, top - topR],
243
+ "Z",
244
+ ], { color: "none" }));
245
+ const capColor = (this.params.cap_color ?? "#CCC");
246
+ this.segments.push(new SegmentArc([center, top - topR - 0.01 * INCH], width - 0.03 * INCH, topR * 0.9, { theta1: 0, theta2: 360, fill: capColor, color: "none", lw: 0.5, zorder: 2 }));
247
+ const baseH = (0.039 * INCH) / 2;
248
+ this.segments.push(new SegmentPath([
249
+ "M", [left, leadH + baseH],
250
+ "Q", [center, leadH - ref * 0.1], [left + width, leadH + baseH],
251
+ ], { color: "#FFFFFF99", fill: "none", lw: 1.5 }));
252
+ const stripeColor = (this.params.stripe_color ?? "#dff1f6");
253
+ const stripex = left + 0.03 * INCH;
254
+ this.segments.push(new SegmentPath([
255
+ "M", [stripex, leadH + baseH],
256
+ "L", [stripex, top - topR * 2],
257
+ ], { color: stripeColor, fill: "none", lw: 3 }));
258
+ }
259
+ }
260
+ export class CapacitorMylar extends Element {
261
+ constructor(opts = {}) {
262
+ super(opts);
263
+ Object.assign(this.defaults, {
264
+ fill: "#8c2510",
265
+ lead_length: 0.4 * INCH,
266
+ theta: 0,
267
+ });
268
+ const width = PINSPACING * 1.75;
269
+ const height = width * 0.75;
270
+ const center = PINSPACING / 2;
271
+ const left = center - width / 2;
272
+ const leadH = (this.params.lead_length ?? 0.4 * INCH);
273
+ this.segments.push(new Segment([[0, 0], [0, leadH]], { color: LEAD_COLOR, lw: 4 }));
274
+ this.segments.push(new Segment([[PINSPACING, 0], [PINSPACING, leadH]], { color: LEAD_COLOR, lw: 4 }));
275
+ const bulge = 0.02 * INCH;
276
+ this.segments.push(new SegmentPath([
277
+ "M", [left, leadH],
278
+ "Q", [left - bulge, leadH + height / 2], [left, leadH + height],
279
+ "Q", [center, leadH + height + bulge], [left + width, leadH + height],
280
+ "Q", [left + width + bulge, leadH + height / 2], [left + width, leadH],
281
+ "Q", [center, leadH + bulge / 2], [left, leadH],
282
+ "Z",
283
+ ], { color: "none" }));
284
+ const highlighty = leadH + height - 0.025 * INCH;
285
+ this.segments.push(new Segment([[-0.01 * INCH, highlighty], [PINSPACING * 0.8, highlighty]], { color: "#FFFFFF44", lw: 3 }));
286
+ }
287
+ }
288
+ export class CapacitorCeramic extends Element {
289
+ constructor(opts = {}) {
290
+ super(opts);
291
+ Object.assign(this.defaults, {
292
+ fill: "#e2800b",
293
+ radius: 0.1 * INCH,
294
+ lead_length: 0.4 * INCH,
295
+ theta: 0,
296
+ });
297
+ const rad = (this.params.radius ?? 0.1 * INCH);
298
+ const leadH = (this.params.lead_length ?? 0.4 * INCH);
299
+ const center = [PINSPACING / 2, leadH + rad - 0.05 * INCH];
300
+ this.segments.push(new Segment([[0, 0], [0, leadH]], { color: LEAD_COLOR, lw: 4 }));
301
+ this.segments.push(new Segment([[PINSPACING, 0], [PINSPACING, leadH]], { color: LEAD_COLOR, lw: 4 }));
302
+ this.segments.push(new SegmentCircle(center, rad, { color: "none", zorder: 2 }));
303
+ this.segments.push(new SegmentArc(center, rad * 2 * 0.7, rad * 2 * 0.7, { theta1: 100, theta2: 200, color: "#FFFFFF44", zorder: 2 }));
304
+ }
305
+ }
306
+ export class TO92 extends Element {
307
+ constructor(opts = {}) {
308
+ super(opts);
309
+ Object.assign(this.defaults, { theta: 0 });
310
+ const width = 0.175 * INCH;
311
+ const height = 0.170 * INCH * 0.9;
312
+ const topheight = PINSPACING * 1.2;
313
+ const caseY = PINSPACING * 1.3;
314
+ const caseX = PINSPACING - width / 2;
315
+ const center = PINSPACING;
316
+ this.segments.push(new Segment([[0, 0], [0, PINSPACING * 0.8], [PINSPACING / 2, caseY]], { color: LEAD_COLOR, lw: 4 }));
317
+ this.segments.push(new Segment([[center, 0], [center, caseY]], { color: LEAD_COLOR, lw: 4 }));
318
+ this.segments.push(new Segment([[PINSPACING * 2, 0], [PINSPACING * 2, PINSPACING * 0.8], [(3 * PINSPACING) / 2, caseY]], { color: LEAD_COLOR, lw: 4 }));
319
+ this.segments.push(new SegmentPoly([
320
+ [caseX, caseY],
321
+ [caseX + width, caseY],
322
+ [caseX + width, caseY + height],
323
+ [caseX, caseY + height],
324
+ ], { fill: HOUSING_COLOR, lw: 1, color: BORDER_COLOR, zorder: 2 }));
325
+ this.segments.push(new SegmentArc([center, caseY + height], width, topheight, { theta1: 0, theta2: 180, fill: HOUSING_COLOR, lw: 1, color: BORDER_COLOR, zorder: 2 }));
326
+ this.anchors.pin1 = [0, 0];
327
+ this.anchors.pin2 = [PINSPACING, 0];
328
+ this.anchors.pin3 = [PINSPACING * 2, 0];
329
+ this.anchors.case_center = [center, caseY + height / 2];
330
+ this.elmParams.lblloc = "case_center";
331
+ this.elmParams.lblalign = ["center", "center"];
332
+ }
333
+ }
334
+ export class DIP extends Element {
335
+ constructor(npins = 8, wide = false, opts = {}) {
336
+ super(opts);
337
+ Object.assign(this.defaults, { theta: 0 });
338
+ let pins = npins;
339
+ if (pins % 2 !== 0)
340
+ pins += 1;
341
+ const width = wide ? 6 * PINSPACING : 3 * PINSPACING;
342
+ const pady = PINSPACING * 0.25;
343
+ const padx = PINSPACING * 0.25;
344
+ const height = (pins / 2 - 1) * PINSPACING;
345
+ const center = width / 2;
346
+ const notchR = PINSPACING * 0.75;
347
+ const bodyLeft = padx;
348
+ const bodyRight = width - padx;
349
+ const leadw = 5;
350
+ for (let n = 0; n < pins / 2; n++) {
351
+ this.segments.push(new Segment([[0, -n * PINSPACING], [bodyLeft, -n * PINSPACING]], { color: LEAD_COLOR, lw: leadw, zorder: 1 }));
352
+ this.segments.push(new Segment([[bodyRight, -n * PINSPACING], [bodyRight + padx, -n * PINSPACING]], { color: LEAD_COLOR, lw: leadw, zorder: 1 }));
353
+ this.anchors[`pin${n + 1}`] = [0, -n * PINSPACING];
354
+ this.anchors[`pin${pins - n}`] = [bodyRight + padx, -n * PINSPACING];
355
+ }
356
+ this.segments.push(new SegmentPoly([[padx, pady], [bodyRight, pady], [bodyRight, -pady - height], [padx, -pady - height]], { fill: HOUSING_COLOR, lw: 1, color: "#444" }));
357
+ this.segments.push(new SegmentArc([center, pady], notchR, notchR, { theta1: 180, theta2: 0, lw: 1, color: "#777", fill: "#555" }));
358
+ this.elmParams.lblloc = "center";
359
+ this.elmParams.lblrotate = true;
360
+ this.elmParams.lblofst = 0;
361
+ }
362
+ }
363
+ export class Breadboard extends Element {
364
+ constructor(opts = {}) {
365
+ super(opts);
366
+ Object.assign(this.defaults, {
367
+ color: "#DDD",
368
+ fill: "#F8F8F5",
369
+ shadow_color: "#E5E5E5",
370
+ text_color: "#666",
371
+ });
372
+ const innerRadius = 0.02;
373
+ const outerRadius = 0.1;
374
+ const shadowColor = (this.params.shadow_color ?? "#E5E5E5");
375
+ const textColor = (this.params.text_color ?? "#666");
376
+ validateColor(shadowColor);
377
+ validateColor(textColor);
378
+ const hole = (x, y) => {
379
+ this.segments.push(new SegmentPoly([[x - outerRadius, y + outerRadius], [x + outerRadius, y + outerRadius], [x + outerRadius, y - outerRadius]], { fill: true, color: shadowColor, lw: 2 }));
380
+ this.segments.push(new SegmentPoly([
381
+ [x - innerRadius, y - innerRadius],
382
+ [x - innerRadius, y + innerRadius],
383
+ [x + innerRadius, y + innerRadius],
384
+ [x + innerRadius, y - innerRadius],
385
+ ], { fill: true, color: HOUSING_COLOR, lw: 2 }));
386
+ };
387
+ const nrows = 30;
388
+ const ncols = 5;
389
+ const stripW = 0.37 * INCH;
390
+ const edgepad = (stripW - PINSPACING) / 2;
391
+ const width = 2.1 * INCH;
392
+ const height = 3.3 * INCH;
393
+ const top = 1.5 * edgepad;
394
+ const left = -edgepad;
395
+ const right = left + width;
396
+ this.segments.push(new SegmentPoly([[left, top], [right, top], [right, top - height], [left, top - height]], { lw: 2 }));
397
+ let x = 0;
398
+ const y = 0;
399
+ for (let _col = 0; _col < 2; _col++) {
400
+ for (let row = 0; row < nrows; row++) {
401
+ if (row % 6 === 0)
402
+ continue;
403
+ const xy1 = [x, y - row * PINSPACING];
404
+ const xy2 = [x + PINSPACING, y - row * PINSPACING];
405
+ hole(...xy1);
406
+ hole(...xy2);
407
+ this.anchors[`L1_${row}`] = xy1;
408
+ this.anchors[`L2_${row}`] = xy2;
409
+ }
410
+ }
411
+ x = right - edgepad;
412
+ for (let _col = 0; _col < 2; _col++) {
413
+ for (let row = 0; row < nrows; row++) {
414
+ if (row % 6 === 0)
415
+ continue;
416
+ const xy1 = [x, y - row * PINSPACING];
417
+ const xy2 = [x - PINSPACING, y - row * PINSPACING];
418
+ hole(...xy1);
419
+ hole(...xy2);
420
+ this.anchors[`R1_${row}`] = xy2;
421
+ this.anchors[`R2_${row}`] = xy1;
422
+ }
423
+ }
424
+ x = stripW;
425
+ for (let col = 0; col < ncols; col++) {
426
+ const colname = String.fromCharCode(65 + col);
427
+ this.segments.push(new SegmentText([x + col * PINSPACING, y + PINSPACING], colname, { fontsize: 8, rotation: 0, align: ["center", "center"], color: textColor, zorder: 1 }));
428
+ for (let row = 0; row < nrows; row++) {
429
+ const xy = [x + col * PINSPACING, y - row * PINSPACING];
430
+ hole(...xy);
431
+ this.anchors[`${colname}${row + 1}`] = xy;
432
+ }
433
+ }
434
+ for (let col = 0; col < ncols; col++) {
435
+ const colname = String.fromCharCode(70 + col);
436
+ this.segments.push(new SegmentText([x + PINSPACING * 7 + col * PINSPACING, y + PINSPACING], colname, { fontsize: 8, rotation: 0, align: ["center", "center"], color: textColor, zorder: 1 }));
437
+ for (let row = 0; row < nrows; row++) {
438
+ const xy = [x + PINSPACING * 7 + col * PINSPACING, y - row * PINSPACING];
439
+ hole(...xy);
440
+ this.anchors[`${colname}${row + 1}`] = xy;
441
+ }
442
+ }
443
+ for (let row = 0; row < nrows; row++) {
444
+ this.segments.push(new SegmentText([x - PINSPACING, y - row * PINSPACING - 0.04], String(row + 1), { fontsize: 8, rotation: 0, align: ["center", "bottom"], color: textColor, zorder: 1 }));
445
+ this.segments.push(new SegmentText([x + PINSPACING * 12, y - row * PINSPACING - 0.04], String(row + 1), { fontsize: 8, rotation: 0, align: ["center", "bottom"], color: textColor, zorder: 1 }));
446
+ }
447
+ this.segments.push(new Segment([[left + edgepad * 0.4, top - PINSPACING * 2], [left + edgepad * 0.4, top - height + PINSPACING]], { color: "red", lw: 0.5 }));
448
+ this.segments.push(new Segment([[left + stripW - edgepad * 0.4, top - PINSPACING * 2], [left + stripW - edgepad * 0.4, top - height + PINSPACING]], { color: "blue", lw: 0.5 }));
449
+ this.segments.push(new Segment([[right - edgepad * 0.4, top - PINSPACING * 2], [right - edgepad * 0.4, top - height + PINSPACING]], { color: "blue", lw: 0.5 }));
450
+ this.segments.push(new Segment([[right - stripW + edgepad * 0.4, top - PINSPACING * 2], [right - stripW + edgepad * 0.4, top - height + PINSPACING]], { color: "red", lw: 0.5 }));
451
+ }
452
+ }
453
+ export class FritzingPart extends ElementImage {
454
+ info;
455
+ constructor(image, width, height, anchors, info, opts = {}) {
456
+ super(image, width, height, { imgfmt: "svg", ...opts });
457
+ this.info = info;
458
+ if (anchors) {
459
+ for (const [name, pos] of Object.entries(anchors)) {
460
+ this.anchors[name] = pos;
461
+ }
462
+ }
463
+ }
464
+ }
465
+ export function fritzParts(_fname) {
466
+ throw new Error("fritzParts requires a .fzpz zip parser. " +
467
+ "Use a library like 'jszip' and pass the extracted SVG/anchors to FritzingPart directly.");
468
+ }
469
+ //# sourceMappingURL=pictorial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pictorial.js","sourceRoot":"","sources":["../../src/subsystems/pictorial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Aligned with Python `backends/svg.py` / `svgunits.py`. */
2
+ export declare const PT_PER_IN = 72;
3
+ export declare const LINE_WIDTH = 2;
4
+ export declare const PX_PER_PT: number;
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/svg/constants.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,SAAS,QAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Aligned with Python `backends/svg.py` / `svgunits.py`. */
2
+ export const PT_PER_IN = 72;
3
+ export const LINE_WIDTH = 2;
4
+ export const PX_PER_PT = 96 / 72;
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/svg/constants.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC"}