@vessel-dsp/core 0.5.0 → 0.6.1

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 (241) hide show
  1. package/README.md +10 -0
  2. package/dist/editor/commands.d.ts +48 -0
  3. package/dist/editor/commands.d.ts.map +1 -0
  4. package/{src/editor/commands.ts → dist/editor/commands.js} +44 -91
  5. package/dist/editor/commands.js.map +1 -0
  6. package/dist/editor/factory.d.ts +10 -0
  7. package/dist/editor/factory.d.ts.map +1 -0
  8. package/{src/editor/factory.ts → dist/editor/factory.js} +11 -27
  9. package/dist/editor/factory.js.map +1 -0
  10. package/dist/editor/history.d.ts +29 -0
  11. package/dist/editor/history.d.ts.map +1 -0
  12. package/{src/editor/history.ts → dist/editor/history.js} +12 -42
  13. package/dist/editor/history.js.map +1 -0
  14. package/{src/editor/index.ts → dist/editor/index.d.ts} +1 -3
  15. package/dist/editor/index.d.ts.map +1 -0
  16. package/dist/editor/index.js +5 -0
  17. package/dist/editor/index.js.map +1 -0
  18. package/dist/editor/layout.d.ts +8 -0
  19. package/dist/editor/layout.d.ts.map +1 -0
  20. package/{src/editor/layout.ts → dist/editor/layout.js} +36 -90
  21. package/dist/editor/layout.js.map +1 -0
  22. package/dist/formats/circuit-json/serializer.d.ts +86 -0
  23. package/dist/formats/circuit-json/serializer.d.ts.map +1 -0
  24. package/{src/formats/circuit-json/serializer.ts → dist/formats/circuit-json/serializer.js} +114 -414
  25. package/dist/formats/circuit-json/serializer.js.map +1 -0
  26. package/dist/formats/document.d.ts +64 -0
  27. package/dist/formats/document.d.ts.map +1 -0
  28. package/dist/formats/document.js +300 -0
  29. package/dist/formats/document.js.map +1 -0
  30. package/dist/formats/interchange/parser.d.ts +3 -0
  31. package/dist/formats/interchange/parser.d.ts.map +1 -0
  32. package/{src/formats/interchange/parser.ts → dist/formats/interchange/parser.js} +651 -299
  33. package/dist/formats/interchange/parser.js.map +1 -0
  34. package/dist/formats/interchange/serializer.d.ts +9 -0
  35. package/dist/formats/interchange/serializer.d.ts.map +1 -0
  36. package/{src/formats/interchange/serializer.ts → dist/formats/interchange/serializer.js} +151 -158
  37. package/dist/formats/interchange/serializer.js.map +1 -0
  38. package/dist/formats/ltspice/catalog.d.ts +19 -0
  39. package/dist/formats/ltspice/catalog.d.ts.map +1 -0
  40. package/{src/formats/ltspice/catalog.ts → dist/formats/ltspice/catalog.js} +18 -52
  41. package/dist/formats/ltspice/catalog.js.map +1 -0
  42. package/dist/formats/ltspice/encoding.d.ts +2 -0
  43. package/dist/formats/ltspice/encoding.d.ts.map +1 -0
  44. package/{src/formats/ltspice/encoding.ts → dist/formats/ltspice/encoding.js} +17 -41
  45. package/dist/formats/ltspice/encoding.js.map +1 -0
  46. package/dist/formats/ltspice/parser.d.ts +3 -0
  47. package/dist/formats/ltspice/parser.d.ts.map +1 -0
  48. package/{src/formats/ltspice/parser.ts → dist/formats/ltspice/parser.js} +39 -141
  49. package/dist/formats/ltspice/parser.js.map +1 -0
  50. package/dist/formats/ltspice/serializer.d.ts +7 -0
  51. package/dist/formats/ltspice/serializer.d.ts.map +1 -0
  52. package/{src/formats/ltspice/serializer.ts → dist/formats/ltspice/serializer.js} +18 -45
  53. package/dist/formats/ltspice/serializer.js.map +1 -0
  54. package/dist/formats/schx/catalog.d.ts +19 -0
  55. package/dist/formats/schx/catalog.d.ts.map +1 -0
  56. package/{src/formats/schx/catalog.ts → dist/formats/schx/catalog.js} +48 -101
  57. package/dist/formats/schx/catalog.js.map +1 -0
  58. package/dist/formats/schx/parser.d.ts +3 -0
  59. package/dist/formats/schx/parser.d.ts.map +1 -0
  60. package/{src/formats/schx/parser.ts → dist/formats/schx/parser.js} +31 -86
  61. package/dist/formats/schx/parser.js.map +1 -0
  62. package/dist/formats/schx/runtime-descriptors.d.ts +3 -0
  63. package/dist/formats/schx/runtime-descriptors.d.ts.map +1 -0
  64. package/{src/formats/schx/runtime-descriptors.ts → dist/formats/schx/runtime-descriptors.js} +36 -123
  65. package/dist/formats/schx/runtime-descriptors.js.map +1 -0
  66. package/dist/formats/schx/serializer.d.ts +5 -0
  67. package/dist/formats/schx/serializer.d.ts.map +1 -0
  68. package/{src/formats/schx/serializer.ts → dist/formats/schx/serializer.js} +17 -42
  69. package/dist/formats/schx/serializer.js.map +1 -0
  70. package/dist/formats/schx/transforms.d.ts +4 -0
  71. package/dist/formats/schx/transforms.d.ts.map +1 -0
  72. package/{src/formats/schx/transforms.ts → dist/formats/schx/transforms.js} +6 -10
  73. package/dist/formats/schx/transforms.js.map +1 -0
  74. package/dist/formats/spice/parser.d.ts +3 -0
  75. package/dist/formats/spice/parser.d.ts.map +1 -0
  76. package/{src/formats/spice/parser.ts → dist/formats/spice/parser.js} +50 -96
  77. package/dist/formats/spice/parser.js.map +1 -0
  78. package/dist/formats/spice/serializer.d.ts +3 -0
  79. package/dist/formats/spice/serializer.d.ts.map +1 -0
  80. package/{src/formats/spice/serializer.ts → dist/formats/spice/serializer.js} +8 -13
  81. package/dist/formats/spice/serializer.js.map +1 -0
  82. package/dist/index.d.ts +47 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +32 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/model/connectivity.d.ts +16 -0
  87. package/dist/model/connectivity.d.ts.map +1 -0
  88. package/{src/model/connectivity.ts → dist/model/connectivity.js} +28 -63
  89. package/dist/model/connectivity.js.map +1 -0
  90. package/dist/model/netlist.d.ts +24 -0
  91. package/dist/model/netlist.d.ts.map +1 -0
  92. package/{src/model/netlist.ts → dist/model/netlist.js} +42 -110
  93. package/dist/model/netlist.js.map +1 -0
  94. package/dist/model/properties.d.ts +9 -0
  95. package/dist/model/properties.d.ts.map +1 -0
  96. package/{src/model/properties.ts → dist/model/properties.js} +10 -18
  97. package/dist/model/properties.js.map +1 -0
  98. package/dist/model/quantity.d.ts +3 -0
  99. package/dist/model/quantity.d.ts.map +1 -0
  100. package/{src/model/quantity.ts → dist/model/quantity.js} +7 -30
  101. package/dist/model/quantity.js.map +1 -0
  102. package/dist/model/types.d.ts +431 -0
  103. package/dist/model/types.d.ts.map +1 -0
  104. package/dist/model/types.js +10 -0
  105. package/dist/model/types.js.map +1 -0
  106. package/dist/model/validation.d.ts +32 -0
  107. package/dist/model/validation.d.ts.map +1 -0
  108. package/{src/model/validation.ts → dist/model/validation.js} +420 -323
  109. package/dist/model/validation.js.map +1 -0
  110. package/dist/model/wires.d.ts +3 -0
  111. package/dist/model/wires.d.ts.map +1 -0
  112. package/{src/model/wires.ts → dist/model/wires.js} +10 -16
  113. package/dist/model/wires.js.map +1 -0
  114. package/dist/panel/extract.d.ts +5 -0
  115. package/dist/panel/extract.d.ts.map +1 -0
  116. package/{src/panel/extract.ts → dist/panel/extract.js} +146 -235
  117. package/dist/panel/extract.js.map +1 -0
  118. package/dist/panel/index.d.ts +6 -0
  119. package/dist/panel/index.d.ts.map +1 -0
  120. package/dist/panel/index.js +5 -0
  121. package/dist/panel/index.js.map +1 -0
  122. package/dist/panel/knobs.d.ts +7 -0
  123. package/dist/panel/knobs.d.ts.map +1 -0
  124. package/{src/panel/knobs.ts → dist/panel/knobs.js} +7 -18
  125. package/dist/panel/knobs.js.map +1 -0
  126. package/dist/panel/protocol.d.ts +9 -0
  127. package/dist/panel/protocol.d.ts.map +1 -0
  128. package/{src/panel/protocol.ts → dist/panel/protocol.js} +10 -26
  129. package/dist/panel/protocol.js.map +1 -0
  130. package/{src/panel/types.ts → dist/panel/types.d.ts} +50 -89
  131. package/dist/panel/types.d.ts.map +1 -0
  132. package/dist/panel/types.js +2 -0
  133. package/dist/panel/types.js.map +1 -0
  134. package/dist/preview/bounds.d.ts +12 -0
  135. package/dist/preview/bounds.d.ts.map +1 -0
  136. package/{src/preview/bounds.ts → dist/preview/bounds.js} +15 -29
  137. package/dist/preview/bounds.js.map +1 -0
  138. package/dist/preview/box-layout.d.ts +4 -0
  139. package/dist/preview/box-layout.d.ts.map +1 -0
  140. package/{src/preview/box-layout.ts → dist/preview/box-layout.js} +2 -6
  141. package/dist/preview/box-layout.js.map +1 -0
  142. package/dist/preview/colors.d.ts +3 -0
  143. package/dist/preview/colors.d.ts.map +1 -0
  144. package/{src/preview/colors.ts → dist/preview/colors.js} +3 -5
  145. package/dist/preview/colors.js.map +1 -0
  146. package/dist/preview/hanging.d.ts +8 -0
  147. package/dist/preview/hanging.d.ts.map +1 -0
  148. package/{src/preview/hanging.ts → dist/preview/hanging.js} +9 -28
  149. package/dist/preview/hanging.js.map +1 -0
  150. package/dist/preview/junctions.d.ts +3 -0
  151. package/dist/preview/junctions.d.ts.map +1 -0
  152. package/{src/preview/junctions.ts → dist/preview/junctions.js} +9 -24
  153. package/dist/preview/junctions.js.map +1 -0
  154. package/dist/preview/label-layout.d.ts +12 -0
  155. package/dist/preview/label-layout.d.ts.map +1 -0
  156. package/{src/preview/label-layout.ts → dist/preview/label-layout.js} +15 -36
  157. package/dist/preview/label-layout.js.map +1 -0
  158. package/dist/preview/ports.d.ts +17 -0
  159. package/dist/preview/ports.d.ts.map +1 -0
  160. package/{src/preview/ports.ts → dist/preview/ports.js} +10 -37
  161. package/dist/preview/ports.js.map +1 -0
  162. package/dist/preview/renderable-wires.d.ts +3 -0
  163. package/dist/preview/renderable-wires.d.ts.map +1 -0
  164. package/{src/preview/renderable-wires.ts → dist/preview/renderable-wires.js} +12 -29
  165. package/dist/preview/renderable-wires.js.map +1 -0
  166. package/dist/preview/routing.d.ts +4 -0
  167. package/dist/preview/routing.d.ts.map +1 -0
  168. package/dist/preview/routing.js +13 -0
  169. package/dist/preview/routing.js.map +1 -0
  170. package/dist/preview/snap.d.ts +9 -0
  171. package/dist/preview/snap.d.ts.map +1 -0
  172. package/{src/preview/snap.ts → dist/preview/snap.js} +9 -31
  173. package/dist/preview/snap.js.map +1 -0
  174. package/dist/preview/symbols/svg-content.d.ts +7 -0
  175. package/dist/preview/symbols/svg-content.d.ts.map +1 -0
  176. package/{src/preview/symbols/svg-content.ts → dist/preview/symbols/svg-content.js} +3 -6
  177. package/dist/preview/symbols/svg-content.js.map +1 -0
  178. package/dist/preview/symbols.d.ts +7 -0
  179. package/dist/preview/symbols.d.ts.map +1 -0
  180. package/{src/preview/symbols.ts → dist/preview/symbols.js} +18 -43
  181. package/dist/preview/symbols.js.map +1 -0
  182. package/dist/preview/wire-chains.d.ts +4 -0
  183. package/dist/preview/wire-chains.d.ts.map +1 -0
  184. package/{src/preview/wire-chains.ts → dist/preview/wire-chains.js} +37 -37
  185. package/dist/preview/wire-chains.js.map +1 -0
  186. package/package.json +3 -3
  187. package/src/formats/document.ts +0 -274
  188. package/src/index.ts +0 -205
  189. package/src/model/types.ts +0 -309
  190. package/src/panel/index.ts +0 -39
  191. package/src/preview/routing.ts +0 -15
  192. package/src/preview/symbols/analog-switch.svg +0 -17
  193. package/src/preview/symbols/battery.svg +0 -16
  194. package/src/preview/symbols/bbd.svg +0 -21
  195. package/src/preview/symbols/bjt-npn.svg +0 -16
  196. package/src/preview/symbols/bjt-pnp.svg +0 -17
  197. package/src/preview/symbols/capacitor-electrolytic.svg +0 -13
  198. package/src/preview/symbols/capacitor.svg +0 -12
  199. package/src/preview/symbols/current-source.svg +0 -14
  200. package/src/preview/symbols/delay-ic.svg +0 -22
  201. package/src/preview/symbols/diode-schottky.svg +0 -12
  202. package/src/preview/symbols/diode-zener.svg +0 -12
  203. package/src/preview/symbols/diode.svg +0 -13
  204. package/src/preview/symbols/flipflop.svg +0 -20
  205. package/src/preview/symbols/ground.svg +0 -12
  206. package/src/preview/symbols/ic-block.svg +0 -20
  207. package/src/preview/symbols/ic.svg +0 -19
  208. package/src/preview/symbols/inductor.svg +0 -11
  209. package/src/preview/symbols/jack-input.svg +0 -16
  210. package/src/preview/symbols/jack-output.svg +0 -16
  211. package/src/preview/symbols/jfet-junction-n.svg +0 -17
  212. package/src/preview/symbols/jfet-n.svg +0 -17
  213. package/src/preview/symbols/jfet-p.svg +0 -17
  214. package/src/preview/symbols/label.svg +0 -8
  215. package/src/preview/symbols/led.svg +0 -18
  216. package/src/preview/symbols/mosfet-n.svg +0 -21
  217. package/src/preview/symbols/mosfet-p.svg +0 -21
  218. package/src/preview/symbols/named-wire.svg +0 -11
  219. package/src/preview/symbols/opamp.svg +0 -21
  220. package/src/preview/symbols/optocoupler.svg +0 -30
  221. package/src/preview/symbols/ota.svg +0 -20
  222. package/src/preview/symbols/pentode.svg +0 -25
  223. package/src/preview/symbols/photoresistor.svg +0 -19
  224. package/src/preview/symbols/port.svg +0 -8
  225. package/src/preview/symbols/potentiometer.svg +0 -15
  226. package/src/preview/symbols/power-amp.svg +0 -20
  227. package/src/preview/symbols/rail.svg +0 -11
  228. package/src/preview/symbols/regulator.svg +0 -13
  229. package/src/preview/symbols/relay.svg +0 -20
  230. package/src/preview/symbols/resistor.svg +0 -11
  231. package/src/preview/symbols/switch-3pdt.svg +0 -32
  232. package/src/preview/symbols/switch-rotary.svg +0 -23
  233. package/src/preview/symbols/switch-spdt.svg +0 -16
  234. package/src/preview/symbols/switch-spst.svg +0 -14
  235. package/src/preview/symbols/switch-toggle.svg +0 -14
  236. package/src/preview/symbols/transformer.svg +0 -17
  237. package/src/preview/symbols/triode.svg +0 -17
  238. package/src/preview/symbols/tube-diode.svg +0 -13
  239. package/src/preview/symbols/unsupported.svg +0 -8
  240. package/src/preview/symbols/variable-resistor.svg +0 -13
  241. package/src/preview/symbols/voltage-source.svg +0 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/editor/history.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,9 @@
1
1
  export type { DocumentCommand } from './commands';
2
2
  export { applyDocumentCommand } from './commands';
3
-
4
3
  export type { CreateComponentArgs } from './factory';
5
4
  export { buildComponent } from './factory';
6
-
7
5
  export type { TidyLayoutOptions } from './layout';
8
6
  export { tidyDocumentLayout } from './layout';
9
-
10
7
  export type { EditorCommand, EditorState } from './history';
11
8
  export { applyEditorCommand, canRedo, canUndo, createEditorState, resetEditorState } from './history';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { applyDocumentCommand } from './commands.js';
2
+ export { buildComponent } from './factory.js';
3
+ export { tidyDocumentLayout } from './layout.js';
4
+ export { applyEditorCommand, canRedo, canUndo, createEditorState, resetEditorState } from './history.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CircuitDocument } from '../model/types';
2
+ export type TidyLayoutOptions = Readonly<{
3
+ spacing?: number;
4
+ margin?: number;
5
+ maxSearchRadius?: number;
6
+ }>;
7
+ export declare function tidyDocumentLayout(doc: CircuitDocument, options?: TidyLayoutOptions): CircuitDocument;
8
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/editor/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA0B,MAAM,gBAAgB,CAAC;AAE9E,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAgBH,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE,iBAAsB,GAChC,eAAe,CAyCjB"}
@@ -1,78 +1,37 @@
1
- import type { CircuitDocument, Component, Point, Wire } from '../model/types';
2
-
3
- export type TidyLayoutOptions = Readonly<{
4
- spacing?: number;
5
- margin?: number;
6
- maxSearchRadius?: number;
7
- }>;
8
-
9
- type LayoutBox = Readonly<{
10
- minX: number;
11
- minY: number;
12
- maxX: number;
13
- maxY: number;
14
- }>;
15
-
16
1
  const DISPLAY_HALF = 20;
17
2
  const LABEL_BASELINE_OFFSET = 32;
18
3
  const LABEL_DESCENDER = 6;
19
4
  const LABEL_CHAR_WIDTH = 6;
20
5
  const DEFAULT_SPACING = 64;
21
6
  const DEFAULT_MARGIN = 4;
22
-
23
- export function tidyDocumentLayout(
24
- doc: CircuitDocument,
25
- options: TidyLayoutOptions = {},
26
- ): CircuitDocument {
7
+ export function tidyDocumentLayout(doc, options = {}) {
27
8
  if (doc.components.length < 2) {
28
9
  return doc;
29
10
  }
30
-
31
11
  const spacing = positiveOrDefault(options.spacing, DEFAULT_SPACING);
32
12
  const margin = nonNegativeOrDefault(options.margin, DEFAULT_MARGIN);
33
- const maxSearchRadius = Math.max(
34
- 1,
35
- Math.ceil(options.maxSearchRadius ?? doc.components.length + 4),
36
- );
37
-
38
- const placed: LayoutBox[] = [];
39
- const originsById = new Map<string, Point>();
40
-
13
+ const maxSearchRadius = Math.max(1, Math.ceil(options.maxSearchRadius ?? doc.components.length + 4));
14
+ const placed = [];
15
+ const originsById = new Map();
41
16
  for (let index = 0; index < doc.components.length; index += 1) {
42
- const component = doc.components[index]!;
17
+ const component = doc.components[index];
43
18
  const origin = overlapsAny(boxForComponent(component, component.origin, margin), placed)
44
- ? freeOriginNear(
45
- component,
46
- [
47
- ...placed,
48
- ...doc.components.slice(index + 1).map((future) => boxForComponent(future, future.origin, margin)),
49
- ],
50
- spacing,
51
- margin,
52
- maxSearchRadius,
53
- )
19
+ ? freeOriginNear(component, [
20
+ ...placed,
21
+ ...doc.components.slice(index + 1).map((future) => boxForComponent(future, future.origin, margin)),
22
+ ], spacing, margin, maxSearchRadius)
54
23
  : component.origin;
55
-
56
24
  placed.push(boxForComponent(component, origin, margin));
57
25
  if (!pointEquals(origin, component.origin)) {
58
26
  originsById.set(component.id, origin);
59
27
  }
60
28
  }
61
-
62
29
  if (originsById.size === 0) {
63
30
  return doc;
64
31
  }
65
-
66
32
  return moveComponents(doc, originsById);
67
33
  }
68
-
69
- function freeOriginNear(
70
- component: Component,
71
- occupied: readonly LayoutBox[],
72
- spacing: number,
73
- margin: number,
74
- maxSearchRadius: number,
75
- ): Point {
34
+ function freeOriginNear(component, occupied, spacing, margin, maxSearchRadius) {
76
35
  for (let radius = 1; radius <= maxSearchRadius; radius += 1) {
77
36
  for (const offset of candidateOffsets(radius)) {
78
37
  const candidate = {
@@ -84,12 +43,10 @@ function freeOriginNear(
84
43
  }
85
44
  }
86
45
  }
87
-
88
46
  return { x: component.origin.x + (maxSearchRadius + 1) * spacing, y: component.origin.y };
89
47
  }
90
-
91
- function candidateOffsets(radius: number): readonly Point[] {
92
- const offsets: Point[] = [];
48
+ function candidateOffsets(radius) {
49
+ const offsets = [];
93
50
  for (let y = -radius; y <= radius; y += 1) {
94
51
  for (let x = -radius; x <= radius; x += 1) {
95
52
  if (Math.max(Math.abs(x), Math.abs(y)) === radius) {
@@ -99,29 +56,29 @@ function candidateOffsets(radius: number): readonly Point[] {
99
56
  }
100
57
  return offsets.sort(compareOffsets);
101
58
  }
102
-
103
- function compareOffsets(a: Point, b: Point): number {
59
+ function compareOffsets(a, b) {
104
60
  return distanceSq(a) - distanceSq(b) ||
105
61
  Math.abs(a.y) - Math.abs(b.y) ||
106
62
  directionRank(a) - directionRank(b) ||
107
63
  a.y - b.y ||
108
64
  a.x - b.x;
109
65
  }
110
-
111
- function directionRank(point: Point): number {
112
- if (point.y === 0 && point.x > 0) return 0;
113
- if (point.x === 0 && point.y > 0) return 1;
114
- if (point.y === 0 && point.x < 0) return 2;
115
- if (point.x === 0 && point.y < 0) return 3;
66
+ function directionRank(point) {
67
+ if (point.y === 0 && point.x > 0)
68
+ return 0;
69
+ if (point.x === 0 && point.y > 0)
70
+ return 1;
71
+ if (point.y === 0 && point.x < 0)
72
+ return 2;
73
+ if (point.x === 0 && point.y < 0)
74
+ return 3;
116
75
  return 4;
117
76
  }
118
-
119
- function distanceSq(point: Point): number {
77
+ function distanceSq(point) {
120
78
  return point.x * point.x + point.y * point.y;
121
79
  }
122
-
123
- function moveComponents(doc: CircuitDocument, originsById: ReadonlyMap<string, Point>): CircuitDocument {
124
- const terminalMoves = new Map<string, Point>();
80
+ function moveComponents(doc, originsById) {
81
+ const terminalMoves = new Map();
125
82
  const components = doc.components.map((component) => {
126
83
  const origin = originsById.get(component.id);
127
84
  if (origin === undefined) {
@@ -136,35 +93,30 @@ function moveComponents(doc: CircuitDocument, originsById: ReadonlyMap<string, P
136
93
  });
137
94
  return { ...component, origin, terminals };
138
95
  });
139
-
140
96
  const wires = doc.wires.map((wire) => remapWire(wire, terminalMoves));
141
97
  return { ...doc, components, wires };
142
98
  }
143
-
144
- function remapWire(wire: Wire, terminalMoves: ReadonlyMap<string, Point>): Wire {
99
+ function remapWire(wire, terminalMoves) {
145
100
  const a = terminalMoves.get(pointKey(wire.endpoints[0]));
146
101
  const b = terminalMoves.get(pointKey(wire.endpoints[1]));
147
102
  if (a === undefined && b === undefined) {
148
103
  return wire;
149
104
  }
150
- const endpoints: readonly [Point, Point] = [
105
+ const endpoints = [
151
106
  a ?? wire.endpoints[0],
152
107
  b ?? wire.endpoints[1],
153
108
  ];
154
109
  return { ...wire, endpoints };
155
110
  }
156
-
157
- function shiftPoint(point: Point, dx: number, dy: number): Point {
111
+ function shiftPoint(point, dx, dy) {
158
112
  return { x: point.x + dx, y: point.y + dy };
159
113
  }
160
-
161
- function boxForComponent(component: Component, origin: Point, margin: number): LayoutBox {
114
+ function boxForComponent(component, origin, margin) {
162
115
  const labelHalfWidth = Math.max(DISPLAY_HALF, component.name.length * LABEL_CHAR_WIDTH / 2);
163
116
  let minX = Math.min(origin.x - DISPLAY_HALF, origin.x - labelHalfWidth);
164
117
  let minY = origin.y - DISPLAY_HALF;
165
118
  let maxX = Math.max(origin.x + DISPLAY_HALF, origin.x + labelHalfWidth);
166
119
  let maxY = Math.max(origin.y + DISPLAY_HALF, origin.y + LABEL_BASELINE_OFFSET + LABEL_DESCENDER);
167
-
168
120
  for (const terminal of component.terminals) {
169
121
  const x = origin.x + terminal.position.x - component.origin.x;
170
122
  const y = origin.y + terminal.position.y - component.origin.y;
@@ -173,7 +125,6 @@ function boxForComponent(component: Component, origin: Point, margin: number): L
173
125
  maxX = Math.max(maxX, x);
174
126
  maxY = Math.max(maxY, y);
175
127
  }
176
-
177
128
  return {
178
129
  minX: minX - margin,
179
130
  minY: minY - margin,
@@ -181,27 +132,22 @@ function boxForComponent(component: Component, origin: Point, margin: number): L
181
132
  maxY: maxY + margin,
182
133
  };
183
134
  }
184
-
185
- function overlapsAny(box: LayoutBox, placed: readonly LayoutBox[]): boolean {
135
+ function overlapsAny(box, placed) {
186
136
  return placed.some((other) => boxesOverlap(box, other));
187
137
  }
188
-
189
- function boxesOverlap(a: LayoutBox, b: LayoutBox): boolean {
138
+ function boxesOverlap(a, b) {
190
139
  return a.minX < b.maxX && a.maxX > b.minX && a.minY < b.maxY && a.maxY > b.minY;
191
140
  }
192
-
193
- function positiveOrDefault(value: number | undefined, fallback: number): number {
141
+ function positiveOrDefault(value, fallback) {
194
142
  return value !== undefined && value > 0 ? value : fallback;
195
143
  }
196
-
197
- function nonNegativeOrDefault(value: number | undefined, fallback: number): number {
144
+ function nonNegativeOrDefault(value, fallback) {
198
145
  return value !== undefined && value >= 0 ? value : fallback;
199
146
  }
200
-
201
- function pointEquals(a: Point, b: Point): boolean {
147
+ function pointEquals(a, b) {
202
148
  return a.x === b.x && a.y === b.y;
203
149
  }
204
-
205
- function pointKey(point: Point): string {
150
+ function pointKey(point) {
206
151
  return `${point.x},${point.y}`;
207
152
  }
153
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/editor/layout.ts"],"names":[],"mappings":"AAeA,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,UAAU,kBAAkB,CAC9B,GAAoB,EACpB,UAA6B,EAAE;IAE/B,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAC5B,CAAC,EACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAClE,CAAC;IAEF,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;IAE7C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAE,CAAC;QACzC,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YACpF,CAAC,CAAC,cAAc,CACZ,SAAS,EACT;gBACI,GAAG,MAAM;gBACT,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACrG,EACD,OAAO,EACP,MAAM,EACN,eAAe,CAClB;YACD,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACf,CAAC;IAED,OAAO,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CACnB,SAAoB,EACpB,QAA8B,EAC9B,OAAe,EACf,MAAc,EACd,eAAuB;IAEvB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAC1D,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG;gBACd,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,OAAO;gBAC1C,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,OAAO;aAC7C,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACxE,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACpC,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,CAAQ,EAAE,CAAQ;IACtC,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,KAAY;IAC/B,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,KAAY;IAC5B,OAAO,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,GAAoB,EAAE,WAAuC;IACjF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACnD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACpD,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IACtE,OAAO,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,SAAS,CAAC,IAAU,EAAE,aAAyC;IACpE,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,SAAS,GAA4B;QACvC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KACzB,CAAC;IACF,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,KAAY,EAAE,EAAU,EAAE,EAAU;IACpD,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,SAAoB,EAAE,MAAa,EAAE,MAAc;IACxE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAC5F,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;IACxE,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC;IACnC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;IACxE,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,GAAG,qBAAqB,GAAG,eAAe,CAAC,CAAC;IAEjG,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACH,IAAI,EAAE,IAAI,GAAG,MAAM;QACnB,IAAI,EAAE,IAAI,GAAG,MAAM;QACnB,IAAI,EAAE,IAAI,GAAG,MAAM;QACnB,IAAI,EAAE,IAAI,GAAG,MAAM;KACtB,CAAC;AACN,CAAC;AAED,SAAS,WAAW,CAAC,GAAc,EAAE,MAA4B;IAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,CAAY,EAAE,CAAY;IAC5C,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACpF,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB,EAAE,QAAgB;IAClE,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyB,EAAE,QAAgB;IACrE,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChE,CAAC;AAED,SAAS,WAAW,CAAC,CAAQ,EAAE,CAAQ;IACnC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAY;IAC1B,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { type AnyCircuitElement, type AnyCircuitElementInput, type CircuitJson as OfficialCircuitJson } from 'circuit-json';
2
+ import type { CircuitDocument } from '../../model/types';
3
+ export type CircuitJsonExportTarget = 'tscircuit';
4
+ export type CircuitJsonExportOptions = Readonly<{
5
+ target?: CircuitJsonExportTarget;
6
+ }>;
7
+ export type CircuitJsonSourceNet = Readonly<{
8
+ type: 'source_net';
9
+ source_net_id: string;
10
+ name: string;
11
+ member_source_group_ids: string[];
12
+ is_power?: boolean;
13
+ is_ground?: boolean;
14
+ is_digital_signal?: boolean;
15
+ is_analog_signal?: boolean;
16
+ is_positive_voltage_source?: boolean;
17
+ }>;
18
+ export type CircuitJsonSourceComponent = Readonly<{
19
+ type: 'source_component';
20
+ source_component_id: string;
21
+ name: string;
22
+ ftype?: string;
23
+ display_name?: string;
24
+ display_value?: string;
25
+ resistance?: number;
26
+ display_resistance?: string;
27
+ capacitance?: number;
28
+ display_capacitance?: string;
29
+ inductance?: number;
30
+ display_inductance?: string;
31
+ voltage?: number;
32
+ current?: number;
33
+ wave_shape?: 'dc' | 'sine' | 'square' | 'triangle' | 'sawtooth' | 'sinewave';
34
+ transistor_type?: 'npn' | 'pnp';
35
+ channel_type?: 'n' | 'p';
36
+ mosfet_mode?: 'enhancement' | 'depletion';
37
+ max_resistance?: number;
38
+ display_max_resistance?: string;
39
+ manufacturer_part_number?: string;
40
+ }>;
41
+ export type CircuitJsonSourcePort = Readonly<{
42
+ type: 'source_port';
43
+ source_port_id: string;
44
+ source_component_id: string;
45
+ name: string;
46
+ port_hints: string[];
47
+ provides_ground?: boolean;
48
+ requires_ground?: boolean;
49
+ provides_power?: boolean;
50
+ requires_power?: boolean;
51
+ provides_voltage?: number;
52
+ }>;
53
+ export type CircuitJsonSourceTrace = Readonly<{
54
+ type: 'source_trace';
55
+ source_trace_id: string;
56
+ connected_source_port_ids: string[];
57
+ connected_source_net_ids: string[];
58
+ display_name?: string;
59
+ }>;
60
+ export type CircuitJsonElement = AnyCircuitElement;
61
+ export type CircuitJson = OfficialCircuitJson;
62
+ export type { AnyCircuitElement, AnyCircuitElementInput };
63
+ export type CircuitJsonExport = Readonly<{
64
+ elements: CircuitJson;
65
+ warnings: readonly string[];
66
+ }>;
67
+ export type CircuitJsonSchemaValidationIssue = Readonly<{
68
+ code: 'circuit-json-schema-invalid';
69
+ message: string;
70
+ path?: string;
71
+ }>;
72
+ export type CircuitJsonSchemaValidationResult = Readonly<{
73
+ valid: true;
74
+ elements: CircuitJson;
75
+ errors: readonly [];
76
+ }> | Readonly<{
77
+ valid: false;
78
+ errors: readonly CircuitJsonSchemaValidationIssue[];
79
+ }>;
80
+ export type ParseCircuitJsonDocumentOptions = Readonly<{
81
+ filename?: string;
82
+ }>;
83
+ export declare function serializeCircuitJsonDocument(doc: CircuitDocument, _options?: CircuitJsonExportOptions): CircuitJsonExport;
84
+ export declare function validateCircuitJsonDocument(source: unknown): CircuitJsonSchemaValidationResult;
85
+ export declare function parseCircuitJsonDocument(source: unknown, options?: ParseCircuitJsonDocumentOptions): CircuitDocument;
86
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../../src/formats/circuit-json/serializer.ts"],"names":[],"mappings":"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"}