@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.
- package/README.md +10 -0
- package/dist/editor/commands.d.ts +48 -0
- package/dist/editor/commands.d.ts.map +1 -0
- package/{src/editor/commands.ts → dist/editor/commands.js} +44 -91
- package/dist/editor/commands.js.map +1 -0
- package/dist/editor/factory.d.ts +10 -0
- package/dist/editor/factory.d.ts.map +1 -0
- package/{src/editor/factory.ts → dist/editor/factory.js} +11 -27
- package/dist/editor/factory.js.map +1 -0
- package/dist/editor/history.d.ts +29 -0
- package/dist/editor/history.d.ts.map +1 -0
- package/{src/editor/history.ts → dist/editor/history.js} +12 -42
- package/dist/editor/history.js.map +1 -0
- package/{src/editor/index.ts → dist/editor/index.d.ts} +1 -3
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +5 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/layout.d.ts +8 -0
- package/dist/editor/layout.d.ts.map +1 -0
- package/{src/editor/layout.ts → dist/editor/layout.js} +36 -90
- package/dist/editor/layout.js.map +1 -0
- package/dist/formats/circuit-json/serializer.d.ts +86 -0
- package/dist/formats/circuit-json/serializer.d.ts.map +1 -0
- package/{src/formats/circuit-json/serializer.ts → dist/formats/circuit-json/serializer.js} +114 -414
- package/dist/formats/circuit-json/serializer.js.map +1 -0
- package/dist/formats/document.d.ts +64 -0
- package/dist/formats/document.d.ts.map +1 -0
- package/dist/formats/document.js +300 -0
- package/dist/formats/document.js.map +1 -0
- package/dist/formats/interchange/parser.d.ts +3 -0
- package/dist/formats/interchange/parser.d.ts.map +1 -0
- package/{src/formats/interchange/parser.ts → dist/formats/interchange/parser.js} +651 -299
- package/dist/formats/interchange/parser.js.map +1 -0
- package/dist/formats/interchange/serializer.d.ts +9 -0
- package/dist/formats/interchange/serializer.d.ts.map +1 -0
- package/{src/formats/interchange/serializer.ts → dist/formats/interchange/serializer.js} +151 -158
- package/dist/formats/interchange/serializer.js.map +1 -0
- package/dist/formats/ltspice/catalog.d.ts +19 -0
- package/dist/formats/ltspice/catalog.d.ts.map +1 -0
- package/{src/formats/ltspice/catalog.ts → dist/formats/ltspice/catalog.js} +18 -52
- package/dist/formats/ltspice/catalog.js.map +1 -0
- package/dist/formats/ltspice/encoding.d.ts +2 -0
- package/dist/formats/ltspice/encoding.d.ts.map +1 -0
- package/{src/formats/ltspice/encoding.ts → dist/formats/ltspice/encoding.js} +17 -41
- package/dist/formats/ltspice/encoding.js.map +1 -0
- package/dist/formats/ltspice/parser.d.ts +3 -0
- package/dist/formats/ltspice/parser.d.ts.map +1 -0
- package/{src/formats/ltspice/parser.ts → dist/formats/ltspice/parser.js} +39 -141
- package/dist/formats/ltspice/parser.js.map +1 -0
- package/dist/formats/ltspice/serializer.d.ts +7 -0
- package/dist/formats/ltspice/serializer.d.ts.map +1 -0
- package/{src/formats/ltspice/serializer.ts → dist/formats/ltspice/serializer.js} +18 -45
- package/dist/formats/ltspice/serializer.js.map +1 -0
- package/dist/formats/schx/catalog.d.ts +19 -0
- package/dist/formats/schx/catalog.d.ts.map +1 -0
- package/{src/formats/schx/catalog.ts → dist/formats/schx/catalog.js} +48 -101
- package/dist/formats/schx/catalog.js.map +1 -0
- package/dist/formats/schx/parser.d.ts +3 -0
- package/dist/formats/schx/parser.d.ts.map +1 -0
- package/{src/formats/schx/parser.ts → dist/formats/schx/parser.js} +31 -86
- package/dist/formats/schx/parser.js.map +1 -0
- package/dist/formats/schx/runtime-descriptors.d.ts +3 -0
- package/dist/formats/schx/runtime-descriptors.d.ts.map +1 -0
- package/{src/formats/schx/runtime-descriptors.ts → dist/formats/schx/runtime-descriptors.js} +36 -123
- package/dist/formats/schx/runtime-descriptors.js.map +1 -0
- package/dist/formats/schx/serializer.d.ts +5 -0
- package/dist/formats/schx/serializer.d.ts.map +1 -0
- package/{src/formats/schx/serializer.ts → dist/formats/schx/serializer.js} +17 -42
- package/dist/formats/schx/serializer.js.map +1 -0
- package/dist/formats/schx/transforms.d.ts +4 -0
- package/dist/formats/schx/transforms.d.ts.map +1 -0
- package/{src/formats/schx/transforms.ts → dist/formats/schx/transforms.js} +6 -10
- package/dist/formats/schx/transforms.js.map +1 -0
- package/dist/formats/spice/parser.d.ts +3 -0
- package/dist/formats/spice/parser.d.ts.map +1 -0
- package/{src/formats/spice/parser.ts → dist/formats/spice/parser.js} +50 -96
- package/dist/formats/spice/parser.js.map +1 -0
- package/dist/formats/spice/serializer.d.ts +3 -0
- package/dist/formats/spice/serializer.d.ts.map +1 -0
- package/{src/formats/spice/serializer.ts → dist/formats/spice/serializer.js} +8 -13
- package/dist/formats/spice/serializer.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/model/connectivity.d.ts +16 -0
- package/dist/model/connectivity.d.ts.map +1 -0
- package/{src/model/connectivity.ts → dist/model/connectivity.js} +28 -63
- package/dist/model/connectivity.js.map +1 -0
- package/dist/model/netlist.d.ts +24 -0
- package/dist/model/netlist.d.ts.map +1 -0
- package/{src/model/netlist.ts → dist/model/netlist.js} +42 -110
- package/dist/model/netlist.js.map +1 -0
- package/dist/model/properties.d.ts +9 -0
- package/dist/model/properties.d.ts.map +1 -0
- package/{src/model/properties.ts → dist/model/properties.js} +10 -18
- package/dist/model/properties.js.map +1 -0
- package/dist/model/quantity.d.ts +3 -0
- package/dist/model/quantity.d.ts.map +1 -0
- package/{src/model/quantity.ts → dist/model/quantity.js} +7 -30
- package/dist/model/quantity.js.map +1 -0
- package/dist/model/types.d.ts +431 -0
- package/dist/model/types.d.ts.map +1 -0
- package/dist/model/types.js +10 -0
- package/dist/model/types.js.map +1 -0
- package/dist/model/validation.d.ts +32 -0
- package/dist/model/validation.d.ts.map +1 -0
- package/{src/model/validation.ts → dist/model/validation.js} +420 -323
- package/dist/model/validation.js.map +1 -0
- package/dist/model/wires.d.ts +3 -0
- package/dist/model/wires.d.ts.map +1 -0
- package/{src/model/wires.ts → dist/model/wires.js} +10 -16
- package/dist/model/wires.js.map +1 -0
- package/dist/panel/extract.d.ts +5 -0
- package/dist/panel/extract.d.ts.map +1 -0
- package/{src/panel/extract.ts → dist/panel/extract.js} +146 -235
- package/dist/panel/extract.js.map +1 -0
- package/dist/panel/index.d.ts +6 -0
- package/dist/panel/index.d.ts.map +1 -0
- package/dist/panel/index.js +5 -0
- package/dist/panel/index.js.map +1 -0
- package/dist/panel/knobs.d.ts +7 -0
- package/dist/panel/knobs.d.ts.map +1 -0
- package/{src/panel/knobs.ts → dist/panel/knobs.js} +7 -18
- package/dist/panel/knobs.js.map +1 -0
- package/dist/panel/protocol.d.ts +9 -0
- package/dist/panel/protocol.d.ts.map +1 -0
- package/{src/panel/protocol.ts → dist/panel/protocol.js} +10 -26
- package/dist/panel/protocol.js.map +1 -0
- package/{src/panel/types.ts → dist/panel/types.d.ts} +50 -89
- package/dist/panel/types.d.ts.map +1 -0
- package/dist/panel/types.js +2 -0
- package/dist/panel/types.js.map +1 -0
- package/dist/preview/bounds.d.ts +12 -0
- package/dist/preview/bounds.d.ts.map +1 -0
- package/{src/preview/bounds.ts → dist/preview/bounds.js} +15 -29
- package/dist/preview/bounds.js.map +1 -0
- package/dist/preview/box-layout.d.ts +4 -0
- package/dist/preview/box-layout.d.ts.map +1 -0
- package/{src/preview/box-layout.ts → dist/preview/box-layout.js} +2 -6
- package/dist/preview/box-layout.js.map +1 -0
- package/dist/preview/colors.d.ts +3 -0
- package/dist/preview/colors.d.ts.map +1 -0
- package/{src/preview/colors.ts → dist/preview/colors.js} +3 -5
- package/dist/preview/colors.js.map +1 -0
- package/dist/preview/hanging.d.ts +8 -0
- package/dist/preview/hanging.d.ts.map +1 -0
- package/{src/preview/hanging.ts → dist/preview/hanging.js} +9 -28
- package/dist/preview/hanging.js.map +1 -0
- package/dist/preview/junctions.d.ts +3 -0
- package/dist/preview/junctions.d.ts.map +1 -0
- package/{src/preview/junctions.ts → dist/preview/junctions.js} +9 -24
- package/dist/preview/junctions.js.map +1 -0
- package/dist/preview/label-layout.d.ts +12 -0
- package/dist/preview/label-layout.d.ts.map +1 -0
- package/{src/preview/label-layout.ts → dist/preview/label-layout.js} +15 -36
- package/dist/preview/label-layout.js.map +1 -0
- package/dist/preview/ports.d.ts +17 -0
- package/dist/preview/ports.d.ts.map +1 -0
- package/{src/preview/ports.ts → dist/preview/ports.js} +10 -37
- package/dist/preview/ports.js.map +1 -0
- package/dist/preview/renderable-wires.d.ts +3 -0
- package/dist/preview/renderable-wires.d.ts.map +1 -0
- package/{src/preview/renderable-wires.ts → dist/preview/renderable-wires.js} +12 -29
- package/dist/preview/renderable-wires.js.map +1 -0
- package/dist/preview/routing.d.ts +4 -0
- package/dist/preview/routing.d.ts.map +1 -0
- package/dist/preview/routing.js +13 -0
- package/dist/preview/routing.js.map +1 -0
- package/dist/preview/snap.d.ts +9 -0
- package/dist/preview/snap.d.ts.map +1 -0
- package/{src/preview/snap.ts → dist/preview/snap.js} +9 -31
- package/dist/preview/snap.js.map +1 -0
- package/dist/preview/symbols/svg-content.d.ts +7 -0
- package/dist/preview/symbols/svg-content.d.ts.map +1 -0
- package/{src/preview/symbols/svg-content.ts → dist/preview/symbols/svg-content.js} +3 -6
- package/dist/preview/symbols/svg-content.js.map +1 -0
- package/dist/preview/symbols.d.ts +7 -0
- package/dist/preview/symbols.d.ts.map +1 -0
- package/{src/preview/symbols.ts → dist/preview/symbols.js} +18 -43
- package/dist/preview/symbols.js.map +1 -0
- package/dist/preview/wire-chains.d.ts +4 -0
- package/dist/preview/wire-chains.d.ts.map +1 -0
- package/{src/preview/wire-chains.ts → dist/preview/wire-chains.js} +37 -37
- package/dist/preview/wire-chains.js.map +1 -0
- package/package.json +3 -3
- package/src/formats/document.ts +0 -274
- package/src/index.ts +0 -205
- package/src/model/types.ts +0 -309
- package/src/panel/index.ts +0 -39
- package/src/preview/routing.ts +0 -15
- package/src/preview/symbols/analog-switch.svg +0 -17
- package/src/preview/symbols/battery.svg +0 -16
- package/src/preview/symbols/bbd.svg +0 -21
- package/src/preview/symbols/bjt-npn.svg +0 -16
- package/src/preview/symbols/bjt-pnp.svg +0 -17
- package/src/preview/symbols/capacitor-electrolytic.svg +0 -13
- package/src/preview/symbols/capacitor.svg +0 -12
- package/src/preview/symbols/current-source.svg +0 -14
- package/src/preview/symbols/delay-ic.svg +0 -22
- package/src/preview/symbols/diode-schottky.svg +0 -12
- package/src/preview/symbols/diode-zener.svg +0 -12
- package/src/preview/symbols/diode.svg +0 -13
- package/src/preview/symbols/flipflop.svg +0 -20
- package/src/preview/symbols/ground.svg +0 -12
- package/src/preview/symbols/ic-block.svg +0 -20
- package/src/preview/symbols/ic.svg +0 -19
- package/src/preview/symbols/inductor.svg +0 -11
- package/src/preview/symbols/jack-input.svg +0 -16
- package/src/preview/symbols/jack-output.svg +0 -16
- package/src/preview/symbols/jfet-junction-n.svg +0 -17
- package/src/preview/symbols/jfet-n.svg +0 -17
- package/src/preview/symbols/jfet-p.svg +0 -17
- package/src/preview/symbols/label.svg +0 -8
- package/src/preview/symbols/led.svg +0 -18
- package/src/preview/symbols/mosfet-n.svg +0 -21
- package/src/preview/symbols/mosfet-p.svg +0 -21
- package/src/preview/symbols/named-wire.svg +0 -11
- package/src/preview/symbols/opamp.svg +0 -21
- package/src/preview/symbols/optocoupler.svg +0 -30
- package/src/preview/symbols/ota.svg +0 -20
- package/src/preview/symbols/pentode.svg +0 -25
- package/src/preview/symbols/photoresistor.svg +0 -19
- package/src/preview/symbols/port.svg +0 -8
- package/src/preview/symbols/potentiometer.svg +0 -15
- package/src/preview/symbols/power-amp.svg +0 -20
- package/src/preview/symbols/rail.svg +0 -11
- package/src/preview/symbols/regulator.svg +0 -13
- package/src/preview/symbols/relay.svg +0 -20
- package/src/preview/symbols/resistor.svg +0 -11
- package/src/preview/symbols/switch-3pdt.svg +0 -32
- package/src/preview/symbols/switch-rotary.svg +0 -23
- package/src/preview/symbols/switch-spdt.svg +0 -16
- package/src/preview/symbols/switch-spst.svg +0 -14
- package/src/preview/symbols/switch-toggle.svg +0 -14
- package/src/preview/symbols/transformer.svg +0 -17
- package/src/preview/symbols/triode.svg +0 -17
- package/src/preview/symbols/tube-diode.svg +0 -13
- package/src/preview/symbols/unsupported.svg +0 -8
- package/src/preview/symbols/variable-resistor.svg +0 -13
- 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
|
-
|
|
35
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
if (point.x === 0 && point.y > 0)
|
|
114
|
-
|
|
115
|
-
if (point.
|
|
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
|
-
|
|
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
|
|
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":"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"}
|
|
@@ -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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"}
|