@tscircuit/core 0.0.1360 → 0.0.1362
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/dist/index.d.ts +156 -52
- package/dist/index.js +123 -43
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -4206,6 +4206,32 @@ var jlcMinTolerances = {
|
|
|
4206
4206
|
min_via_pad_diameter: 0.3
|
|
4207
4207
|
};
|
|
4208
4208
|
|
|
4209
|
+
// lib/utils/getViaSpanLayers.ts
|
|
4210
|
+
var getViaSpanLayers = ({
|
|
4211
|
+
fromLayer,
|
|
4212
|
+
toLayer,
|
|
4213
|
+
layerCount
|
|
4214
|
+
}) => {
|
|
4215
|
+
if (fromLayer === toLayer) return [fromLayer];
|
|
4216
|
+
const stack = ["top"];
|
|
4217
|
+
for (let i = 1; i <= layerCount - 2; i++) {
|
|
4218
|
+
stack.push(`inner${i}`);
|
|
4219
|
+
}
|
|
4220
|
+
stack.push("bottom");
|
|
4221
|
+
const fromIndex = stack.indexOf(fromLayer);
|
|
4222
|
+
const toIndex = stack.indexOf(toLayer);
|
|
4223
|
+
if (fromIndex === -1 || toIndex === -1) return [fromLayer, toLayer];
|
|
4224
|
+
return fromIndex <= toIndex ? stack.slice(fromIndex, toIndex + 1) : stack.slice(toIndex, fromIndex + 1).reverse();
|
|
4225
|
+
};
|
|
4226
|
+
var getViaBoardLayers = (layerCount) => {
|
|
4227
|
+
if (layerCount <= 1) return ["top"];
|
|
4228
|
+
return getViaSpanLayers({
|
|
4229
|
+
fromLayer: "top",
|
|
4230
|
+
toLayer: "bottom",
|
|
4231
|
+
layerCount
|
|
4232
|
+
});
|
|
4233
|
+
};
|
|
4234
|
+
|
|
4209
4235
|
// lib/components/primitive-components/Trace/Trace_doInitialPcbTraceRender.ts
|
|
4210
4236
|
var portToObjective = (port) => {
|
|
4211
4237
|
const portPosition = port._getGlobalPcbPositionAfterLayout();
|
|
@@ -4513,19 +4539,29 @@ function Trace_doInitialPcbTraceRender(trace) {
|
|
|
4513
4539
|
subcircuit_id: trace.getSubcircuit()?.subcircuit_id,
|
|
4514
4540
|
trace_length: traceLength
|
|
4515
4541
|
});
|
|
4542
|
+
const subcircuitConnectivityMapKey = trace.subcircuit_connectivity_map_key ?? db.source_trace.get(trace.source_trace_id)?.subcircuit_connectivity_map_key;
|
|
4516
4543
|
trace._portsRoutedOnPcb = ports;
|
|
4517
4544
|
trace.pcb_trace_id = pcb_trace.pcb_trace_id;
|
|
4518
4545
|
for (const point6 of mergedRoute) {
|
|
4519
4546
|
if (point6.route_type === "via") {
|
|
4547
|
+
const fromLayer = point6.from_layer;
|
|
4548
|
+
const toLayer = point6.to_layer;
|
|
4520
4549
|
db.pcb_via.insert({
|
|
4521
4550
|
pcb_trace_id: pcb_trace.pcb_trace_id,
|
|
4522
4551
|
x: point6.x,
|
|
4523
4552
|
y: point6.y,
|
|
4524
4553
|
hole_diameter: holeDiameter,
|
|
4525
4554
|
outer_diameter: padDiameter,
|
|
4526
|
-
layers:
|
|
4527
|
-
|
|
4528
|
-
|
|
4555
|
+
layers: getViaSpanLayers({
|
|
4556
|
+
fromLayer,
|
|
4557
|
+
toLayer,
|
|
4558
|
+
layerCount: subcircuit._getSubcircuitLayerCount()
|
|
4559
|
+
}),
|
|
4560
|
+
from_layer: fromLayer,
|
|
4561
|
+
to_layer: toLayer,
|
|
4562
|
+
subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
|
|
4563
|
+
pcb_group_id: trace.getGroup()?.pcb_group_id ?? void 0,
|
|
4564
|
+
subcircuit_connectivity_map_key: subcircuitConnectivityMapKey
|
|
4529
4565
|
});
|
|
4530
4566
|
}
|
|
4531
4567
|
}
|
|
@@ -4756,6 +4792,7 @@ function Trace_doInitialPcbManualTraceRender(trace) {
|
|
|
4756
4792
|
const { maybeFlipLayer } = trace._getPcbPrimitiveFlippedHelpers();
|
|
4757
4793
|
const transform2 = trace._computePcbGlobalTransformBeforeLayout();
|
|
4758
4794
|
const insertedRoutes = [];
|
|
4795
|
+
const subcircuitConnectivityMapKey2 = trace.subcircuit_connectivity_map_key ?? db.source_trace.get(trace.source_trace_id)?.subcircuit_connectivity_map_key;
|
|
4759
4796
|
for (const inflatedPcbTrace of inflatedPcbTraces) {
|
|
4760
4797
|
const transformedRoute = inflatedPcbTrace.route.map((point6) => {
|
|
4761
4798
|
if (point6.route_type === "wire") {
|
|
@@ -4809,10 +4846,11 @@ function Trace_doInitialPcbManualTraceRender(trace) {
|
|
|
4809
4846
|
const toLayer = maybeFlipLayer(
|
|
4810
4847
|
inflatedPcbVia?.to_layer ?? point6.to_layer
|
|
4811
4848
|
);
|
|
4812
|
-
const layers = (inflatedPcbVia?.layers ??
|
|
4813
|
-
point6.from_layer,
|
|
4814
|
-
point6.to_layer
|
|
4815
|
-
|
|
4849
|
+
const layers = (inflatedPcbVia?.layers ?? getViaSpanLayers({
|
|
4850
|
+
fromLayer: point6.from_layer,
|
|
4851
|
+
toLayer: point6.to_layer,
|
|
4852
|
+
layerCount: subcircuit._getSubcircuitLayerCount()
|
|
4853
|
+
})).map((layer2) => maybeFlipLayer(layer2));
|
|
4816
4854
|
db.pcb_via.insert({
|
|
4817
4855
|
pcb_trace_id: pcb_trace2.pcb_trace_id,
|
|
4818
4856
|
x: point6.x,
|
|
@@ -4824,7 +4862,7 @@ function Trace_doInitialPcbManualTraceRender(trace) {
|
|
|
4824
4862
|
to_layer: toLayer,
|
|
4825
4863
|
subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
|
|
4826
4864
|
pcb_group_id: trace.getGroup()?.pcb_group_id ?? void 0,
|
|
4827
|
-
subcircuit_connectivity_map_key: inflatedPcbVia?.subcircuit_connectivity_map_key,
|
|
4865
|
+
subcircuit_connectivity_map_key: inflatedPcbVia?.subcircuit_connectivity_map_key ?? subcircuitConnectivityMapKey2,
|
|
4828
4866
|
net_is_assignable: inflatedPcbVia?.net_is_assignable,
|
|
4829
4867
|
net_assigned: inflatedPcbVia?.net_assigned,
|
|
4830
4868
|
is_tented: inflatedPcbVia?.is_tented
|
|
@@ -5008,19 +5046,29 @@ function Trace_doInitialPcbManualTraceRender(trace) {
|
|
|
5008
5046
|
pcb_group_id: trace.getGroup()?.pcb_group_id ?? void 0,
|
|
5009
5047
|
trace_length: traceLength
|
|
5010
5048
|
});
|
|
5049
|
+
const subcircuitConnectivityMapKey = trace.subcircuit_connectivity_map_key ?? db.source_trace.get(trace.source_trace_id)?.subcircuit_connectivity_map_key;
|
|
5011
5050
|
const pcbStyle = trace.getInheritedMergedProperty("pcbStyle");
|
|
5012
5051
|
const { holeDiameter, padDiameter } = getViaDiameterDefaults(pcbStyle);
|
|
5013
5052
|
for (const point6 of route) {
|
|
5014
5053
|
if (point6.route_type === "via") {
|
|
5054
|
+
const fromLayer = point6.from_layer;
|
|
5055
|
+
const toLayer = point6.to_layer;
|
|
5015
5056
|
db.pcb_via.insert({
|
|
5016
5057
|
pcb_trace_id: pcb_trace.pcb_trace_id,
|
|
5017
5058
|
x: point6.x,
|
|
5018
5059
|
y: point6.y,
|
|
5019
5060
|
hole_diameter: holeDiameter,
|
|
5020
5061
|
outer_diameter: padDiameter,
|
|
5021
|
-
layers:
|
|
5022
|
-
|
|
5023
|
-
|
|
5062
|
+
layers: getViaSpanLayers({
|
|
5063
|
+
fromLayer,
|
|
5064
|
+
toLayer,
|
|
5065
|
+
layerCount: subcircuit._getSubcircuitLayerCount()
|
|
5066
|
+
}),
|
|
5067
|
+
from_layer: fromLayer,
|
|
5068
|
+
to_layer: toLayer,
|
|
5069
|
+
subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
|
|
5070
|
+
pcb_group_id: trace.getGroup()?.pcb_group_id ?? void 0,
|
|
5071
|
+
subcircuit_connectivity_map_key: subcircuitConnectivityMapKey
|
|
5024
5072
|
});
|
|
5025
5073
|
}
|
|
5026
5074
|
}
|
|
@@ -7241,26 +7289,6 @@ import { viaProps } from "@tscircuit/props";
|
|
|
7241
7289
|
import {
|
|
7242
7290
|
layer_ref
|
|
7243
7291
|
} from "circuit-json";
|
|
7244
|
-
|
|
7245
|
-
// lib/utils/getViaSpanLayers.ts
|
|
7246
|
-
var getViaSpanLayers = ({
|
|
7247
|
-
fromLayer,
|
|
7248
|
-
toLayer,
|
|
7249
|
-
layerCount
|
|
7250
|
-
}) => {
|
|
7251
|
-
if (fromLayer === toLayer) return [fromLayer];
|
|
7252
|
-
const stack = ["top"];
|
|
7253
|
-
for (let i = 1; i <= layerCount - 2; i++) {
|
|
7254
|
-
stack.push(`inner${i}`);
|
|
7255
|
-
}
|
|
7256
|
-
stack.push("bottom");
|
|
7257
|
-
const fromIndex = stack.indexOf(fromLayer);
|
|
7258
|
-
const toIndex = stack.indexOf(toLayer);
|
|
7259
|
-
if (fromIndex === -1 || toIndex === -1) return [fromLayer, toLayer];
|
|
7260
|
-
return fromIndex <= toIndex ? stack.slice(fromIndex, toIndex + 1) : stack.slice(toIndex, fromIndex + 1).reverse();
|
|
7261
|
-
};
|
|
7262
|
-
|
|
7263
|
-
// lib/components/primitive-components/PcbVia.ts
|
|
7264
7292
|
import { z as z6 } from "zod";
|
|
7265
7293
|
var pcbViaProps = viaProps.extend({
|
|
7266
7294
|
layers: z6.array(layer_ref).optional(),
|
|
@@ -18445,8 +18473,8 @@ function convertTreeToMatchPackInputProblem(tree, db, group) {
|
|
|
18445
18473
|
problem.chipPinMap[pinId] = {
|
|
18446
18474
|
pinId,
|
|
18447
18475
|
offset: {
|
|
18448
|
-
x: (port.center?.x || 0) - (schematicComponent.center.x || 0)
|
|
18449
|
-
y: (port.center?.y || 0) - (schematicComponent.center.y || 0)
|
|
18476
|
+
x: (port.center?.x || 0) - (schematicComponent.center.x || 0),
|
|
18477
|
+
y: (port.center?.y || 0) - (schematicComponent.center.y || 0)
|
|
18450
18478
|
},
|
|
18451
18479
|
side
|
|
18452
18480
|
};
|
|
@@ -22803,21 +22831,39 @@ var Group5 = class extends NormalComponent3 {
|
|
|
22803
22831
|
continue;
|
|
22804
22832
|
}
|
|
22805
22833
|
if (pcb_trace.type === "pcb_trace") {
|
|
22834
|
+
const sourceTraceId = getSourceTraceIdForRoutedTrace({
|
|
22835
|
+
db,
|
|
22836
|
+
trace: pcb_trace,
|
|
22837
|
+
subcircuit_id: this.subcircuit_id
|
|
22838
|
+
});
|
|
22839
|
+
const { connection_name: inputConnectionName } = pcb_trace;
|
|
22840
|
+
let subcircuitConnectivityMapKey;
|
|
22841
|
+
if (sourceTraceId) {
|
|
22842
|
+
subcircuitConnectivityMapKey = db.source_trace.get(sourceTraceId)?.subcircuit_connectivity_map_key;
|
|
22843
|
+
}
|
|
22844
|
+
if (!subcircuitConnectivityMapKey && inputConnectionName) {
|
|
22845
|
+
const sourceNet = db.source_net.get(inputConnectionName);
|
|
22846
|
+
if (sourceNet) {
|
|
22847
|
+
subcircuitConnectivityMapKey = sourceNet.subcircuit_connectivity_map_key;
|
|
22848
|
+
}
|
|
22849
|
+
}
|
|
22806
22850
|
for (const point6 of pcb_trace.route) {
|
|
22807
22851
|
if (point6.route_type === "via") {
|
|
22808
22852
|
const routedViaPoint = point6;
|
|
22853
|
+
const fromLayer = point6.from_layer;
|
|
22854
|
+
const toLayer = point6.to_layer;
|
|
22809
22855
|
db.pcb_via.insert({
|
|
22810
22856
|
pcb_trace_id: pcb_trace.pcb_trace_id,
|
|
22811
22857
|
x: point6.x,
|
|
22812
22858
|
y: point6.y,
|
|
22813
22859
|
hole_diameter: routedViaPoint.via_hole_diameter ?? routedViaPoint.hole_diameter ?? routedViaHoleDiameter,
|
|
22814
22860
|
outer_diameter: routedViaPoint.via_diameter ?? routedViaPoint.outer_diameter ?? routedViaPadDiameter,
|
|
22815
|
-
layers:
|
|
22816
|
-
|
|
22817
|
-
|
|
22818
|
-
|
|
22819
|
-
|
|
22820
|
-
|
|
22861
|
+
layers: getViaBoardLayers(this._getSubcircuitLayerCount()),
|
|
22862
|
+
from_layer: fromLayer,
|
|
22863
|
+
to_layer: toLayer,
|
|
22864
|
+
subcircuit_id: this.subcircuit_id,
|
|
22865
|
+
pcb_group_id: this.pcb_group_id ?? void 0,
|
|
22866
|
+
subcircuit_connectivity_map_key: subcircuitConnectivityMapKey
|
|
22821
22867
|
});
|
|
22822
22868
|
}
|
|
22823
22869
|
}
|
|
@@ -24240,7 +24286,7 @@ import { identity as identity5 } from "transformation-matrix";
|
|
|
24240
24286
|
var package_default = {
|
|
24241
24287
|
name: "@tscircuit/core",
|
|
24242
24288
|
type: "module",
|
|
24243
|
-
version: "0.0.
|
|
24289
|
+
version: "0.0.1361",
|
|
24244
24290
|
types: "dist/index.d.ts",
|
|
24245
24291
|
main: "dist/index.js",
|
|
24246
24292
|
module: "dist/index.js",
|
|
@@ -24277,7 +24323,7 @@ var package_default = {
|
|
|
24277
24323
|
"@tscircuit/checks": "0.0.138",
|
|
24278
24324
|
"@tscircuit/circuit-json-util": "^0.0.96",
|
|
24279
24325
|
"@tscircuit/common": "^0.0.20",
|
|
24280
|
-
"@tscircuit/copper-pour-solver": "
|
|
24326
|
+
"@tscircuit/copper-pour-solver": "0.0.35",
|
|
24281
24327
|
"@tscircuit/footprinter": "^0.0.357",
|
|
24282
24328
|
"@tscircuit/image-utils": "^0.0.8",
|
|
24283
24329
|
"@tscircuit/infer-cable-insertion-point": "^0.0.2",
|
|
@@ -24288,11 +24334,11 @@ var package_default = {
|
|
|
24288
24334
|
"@tscircuit/matchpack": "^0.0.29",
|
|
24289
24335
|
"@tscircuit/math-utils": "^0.0.36",
|
|
24290
24336
|
"@tscircuit/miniflex": "^0.0.4",
|
|
24291
|
-
"@tscircuit/props": "^0.0.555",
|
|
24292
24337
|
"@tscircuit/ngspice-spice-engine": "^0.0.18",
|
|
24338
|
+
"@tscircuit/props": "^0.0.557",
|
|
24293
24339
|
"@tscircuit/schematic-match-adapt": "^0.0.18",
|
|
24294
|
-
"@tscircuit/solver-utils": "^0.0.16",
|
|
24295
24340
|
"@tscircuit/schematic-trace-solver": "^0.0.72",
|
|
24341
|
+
"@tscircuit/solver-utils": "^0.0.16",
|
|
24296
24342
|
"@tscircuit/soup-util": "^0.0.41",
|
|
24297
24343
|
"@types/bun": "^1.2.16",
|
|
24298
24344
|
"@types/debug": "^4.1.12",
|
|
@@ -25333,6 +25379,38 @@ var Subcircuit = class extends Group5 {
|
|
|
25333
25379
|
doInitialRenderIsolatedSubcircuits() {
|
|
25334
25380
|
Subcircuit_doInitialRenderIsolatedSubcircuits(this);
|
|
25335
25381
|
}
|
|
25382
|
+
doInitialCreateNetsFromProps() {
|
|
25383
|
+
super.doInitialCreateNetsFromProps();
|
|
25384
|
+
this._createTracesForExposedNets();
|
|
25385
|
+
}
|
|
25386
|
+
_createTracesForExposedNets() {
|
|
25387
|
+
const exposedNets = this._parsedProps.exposedNets;
|
|
25388
|
+
if (!exposedNets?.length) return;
|
|
25389
|
+
const parentSubcircuit = this.parent?.getSubcircuit?.();
|
|
25390
|
+
if (!parentSubcircuit) return;
|
|
25391
|
+
if (!this.name) return;
|
|
25392
|
+
for (const exposedNetName of exposedNets) {
|
|
25393
|
+
const netName = normalizeExposedNetName(exposedNetName);
|
|
25394
|
+
const parentNetSelector = `net.${netName}`;
|
|
25395
|
+
const childNetSelector = `.${this.name} > net.${netName}`;
|
|
25396
|
+
const traceName = `exposed_net.${netName}`;
|
|
25397
|
+
if (!parentSubcircuit.selectOne(parentNetSelector, { type: "net" })) {
|
|
25398
|
+
parentSubcircuit.add(new Net({ name: netName }));
|
|
25399
|
+
}
|
|
25400
|
+
const existingTrace = parentSubcircuit.children.find(
|
|
25401
|
+
(child) => child instanceof Trace3 && child._parsedProps.name === traceName
|
|
25402
|
+
);
|
|
25403
|
+
if (existingTrace) continue;
|
|
25404
|
+
parentSubcircuit.add(
|
|
25405
|
+
new Trace3({
|
|
25406
|
+
name: traceName,
|
|
25407
|
+
from: childNetSelector,
|
|
25408
|
+
to: parentNetSelector,
|
|
25409
|
+
displayName: netName
|
|
25410
|
+
})
|
|
25411
|
+
);
|
|
25412
|
+
}
|
|
25413
|
+
}
|
|
25336
25414
|
/**
|
|
25337
25415
|
* During this phase, we inflate the subcircuit circuit json into class
|
|
25338
25416
|
* instances
|
|
@@ -25361,6 +25439,7 @@ var Subcircuit = class extends Group5 {
|
|
|
25361
25439
|
inflateCircuitJson(this, circuitJson, children);
|
|
25362
25440
|
}
|
|
25363
25441
|
};
|
|
25442
|
+
var normalizeExposedNetName = (netName) => netName.startsWith("net.") ? netName.slice("net.".length) : netName;
|
|
25364
25443
|
|
|
25365
25444
|
// lib/components/normal-components/MountedBoard.ts
|
|
25366
25445
|
var MountedBoard = class extends Subcircuit {
|
|
@@ -29153,6 +29232,7 @@ var CopperPour = class extends PrimitiveComponent2 {
|
|
|
29153
29232
|
const clearance = props.clearance ?? 0.2;
|
|
29154
29233
|
const inputProblem = convertCircuitJsonToInputProblem(circuitJson, {
|
|
29155
29234
|
layer: props.layer,
|
|
29235
|
+
subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
|
|
29156
29236
|
source_net_id: net.source_net_id,
|
|
29157
29237
|
pad_margin: props.padMargin ?? clearance,
|
|
29158
29238
|
trace_margin: props.traceMargin ?? clearance,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscircuit/core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.1362",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@tscircuit/checks": "0.0.138",
|
|
39
39
|
"@tscircuit/circuit-json-util": "^0.0.96",
|
|
40
40
|
"@tscircuit/common": "^0.0.20",
|
|
41
|
-
"@tscircuit/copper-pour-solver": "
|
|
41
|
+
"@tscircuit/copper-pour-solver": "0.0.35",
|
|
42
42
|
"@tscircuit/footprinter": "^0.0.357",
|
|
43
43
|
"@tscircuit/image-utils": "^0.0.8",
|
|
44
44
|
"@tscircuit/infer-cable-insertion-point": "^0.0.2",
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"@tscircuit/matchpack": "^0.0.29",
|
|
50
50
|
"@tscircuit/math-utils": "^0.0.36",
|
|
51
51
|
"@tscircuit/miniflex": "^0.0.4",
|
|
52
|
-
"@tscircuit/props": "^0.0.555",
|
|
53
52
|
"@tscircuit/ngspice-spice-engine": "^0.0.18",
|
|
53
|
+
"@tscircuit/props": "^0.0.557",
|
|
54
54
|
"@tscircuit/schematic-match-adapt": "^0.0.18",
|
|
55
|
-
"@tscircuit/solver-utils": "^0.0.16",
|
|
56
55
|
"@tscircuit/schematic-trace-solver": "^0.0.72",
|
|
56
|
+
"@tscircuit/solver-utils": "^0.0.16",
|
|
57
57
|
"@tscircuit/soup-util": "^0.0.41",
|
|
58
58
|
"@types/bun": "^1.2.16",
|
|
59
59
|
"@types/debug": "^4.1.12",
|