@tscircuit/core 0.0.1029 → 0.0.1031
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.js +207 -25
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9996,13 +9996,31 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
|
|
|
9996
9996
|
if (!this.pcb_component_id) return;
|
|
9997
9997
|
const { db } = this.root;
|
|
9998
9998
|
const props = this._parsedProps;
|
|
9999
|
-
const
|
|
9999
|
+
const rawProps = this.props;
|
|
10000
|
+
const pcbLeftEdgeX = props.pcbLeftEdgeX ?? rawProps.pcbLeftEdgeX;
|
|
10001
|
+
const pcbRightEdgeX = props.pcbRightEdgeX ?? rawProps.pcbRightEdgeX;
|
|
10002
|
+
const pcbTopEdgeY = props.pcbTopEdgeY ?? rawProps.pcbTopEdgeY;
|
|
10003
|
+
const pcbBottomEdgeY = props.pcbBottomEdgeY ?? rawProps.pcbBottomEdgeY;
|
|
10004
|
+
const hasExplicitPcbPosition = props.pcbX !== void 0 || props.pcbY !== void 0 || pcbLeftEdgeX !== void 0 || pcbRightEdgeX !== void 0 || pcbTopEdgeY !== void 0 || pcbBottomEdgeY !== void 0;
|
|
10000
10005
|
if (!hasExplicitPcbPosition) return;
|
|
10006
|
+
if (pcbLeftEdgeX !== void 0 && pcbRightEdgeX !== void 0) {
|
|
10007
|
+
throw new Error(
|
|
10008
|
+
`${this.componentName} cannot set both pcbLeftEdgeX and pcbRightEdgeX`
|
|
10009
|
+
);
|
|
10010
|
+
}
|
|
10011
|
+
if (pcbTopEdgeY !== void 0 && pcbBottomEdgeY !== void 0) {
|
|
10012
|
+
throw new Error(
|
|
10013
|
+
`${this.componentName} cannot set both pcbTopEdgeY and pcbBottomEdgeY`
|
|
10014
|
+
);
|
|
10015
|
+
}
|
|
10016
|
+
const pcbComponent = db.pcb_component.get(this.pcb_component_id);
|
|
10017
|
+
const componentWidth = pcbComponent?.width ?? 0;
|
|
10018
|
+
const componentHeight = pcbComponent?.height ?? 0;
|
|
10001
10019
|
const parentGroup = this.getGroup();
|
|
10002
10020
|
const positionedRelativeToGroupId = parentGroup?.pcb_group_id ?? void 0;
|
|
10003
10021
|
const positionedRelativeToBoardId = positionedRelativeToGroupId ? void 0 : this._getBoard()?.pcb_board_id ?? void 0;
|
|
10004
|
-
const resolvedPcbX = this._resolvedPcbCalcOffsetX ?? (props.pcbX !== void 0 ? this._resolvePcbCoordinate(props.pcbX, "pcbX") : void 0);
|
|
10005
|
-
const resolvedPcbY = this._resolvedPcbCalcOffsetY ?? (props.pcbY !== void 0 ? this._resolvePcbCoordinate(props.pcbY, "pcbY") : void 0);
|
|
10022
|
+
const resolvedPcbX = this._resolvedPcbCalcOffsetX ?? (props.pcbX !== void 0 ? this._resolvePcbCoordinate(props.pcbX, "pcbX") : pcbLeftEdgeX !== void 0 ? this._resolvePcbCoordinate(pcbLeftEdgeX, "pcbX") + componentWidth / 2 : pcbRightEdgeX !== void 0 ? this._resolvePcbCoordinate(pcbRightEdgeX, "pcbX") - componentWidth / 2 : void 0);
|
|
10023
|
+
const resolvedPcbY = this._resolvedPcbCalcOffsetY ?? (props.pcbY !== void 0 ? this._resolvePcbCoordinate(props.pcbY, "pcbY") : pcbTopEdgeY !== void 0 ? this._resolvePcbCoordinate(pcbTopEdgeY, "pcbY") - componentHeight / 2 : pcbBottomEdgeY !== void 0 ? this._resolvePcbCoordinate(pcbBottomEdgeY, "pcbY") + componentHeight / 2 : void 0);
|
|
10006
10024
|
db.pcb_component.update(this.pcb_component_id, {
|
|
10007
10025
|
position_mode: "relative_to_group_anchor",
|
|
10008
10026
|
positioned_relative_to_pcb_group_id: positionedRelativeToGroupId,
|
|
@@ -10031,7 +10049,8 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
|
|
|
10031
10049
|
* and should not be moved by automatic packing/layout algorithms
|
|
10032
10050
|
*/
|
|
10033
10051
|
isRelativelyPositioned() {
|
|
10034
|
-
|
|
10052
|
+
const rawProps = this.props;
|
|
10053
|
+
return this._parsedProps.pcbX !== void 0 || this._parsedProps.pcbY !== void 0 || this._parsedProps.pcbLeftEdgeX !== void 0 || this._parsedProps.pcbRightEdgeX !== void 0 || this._parsedProps.pcbTopEdgeY !== void 0 || this._parsedProps.pcbBottomEdgeY !== void 0 || rawProps.pcbLeftEdgeX !== void 0 || rawProps.pcbRightEdgeX !== void 0 || rawProps.pcbTopEdgeY !== void 0 || rawProps.pcbBottomEdgeY !== void 0;
|
|
10035
10054
|
}
|
|
10036
10055
|
};
|
|
10037
10056
|
|
|
@@ -11185,6 +11204,7 @@ var TraceHint = class extends PrimitiveComponent2 {
|
|
|
11185
11204
|
};
|
|
11186
11205
|
|
|
11187
11206
|
// lib/components/primitive-components/Group/Group_doInitialPcbCalcPlacementResolution.ts
|
|
11207
|
+
import { getBoundsOfPcbElements } from "@tscircuit/circuit-json-util";
|
|
11188
11208
|
var SUPPORTED_COMPONENT_FIELDS = /* @__PURE__ */ new Set([
|
|
11189
11209
|
"x",
|
|
11190
11210
|
"y",
|
|
@@ -11209,8 +11229,8 @@ function Group_doInitialPcbCalcPlacementResolution(group) {
|
|
|
11209
11229
|
const inDegree = /* @__PURE__ */ new Map();
|
|
11210
11230
|
const dependents = /* @__PURE__ */ new Map();
|
|
11211
11231
|
for (const component of allNormalComponents) {
|
|
11232
|
+
if (!shouldResolvePlacementInCalcPhase(component)) continue;
|
|
11212
11233
|
const refs = getComponentRefsForCalcPlacement(component);
|
|
11213
|
-
if (refs.size === 0) continue;
|
|
11214
11234
|
if (!component.name) {
|
|
11215
11235
|
throw new Error(
|
|
11216
11236
|
`Invalid pcb position expression for ${component.getString()}: component-relative calc requires the component to have a name`
|
|
@@ -11221,29 +11241,24 @@ function Group_doInitialPcbCalcPlacementResolution(group) {
|
|
|
11221
11241
|
}
|
|
11222
11242
|
for (const [candidateName, candidate] of candidatesByName.entries()) {
|
|
11223
11243
|
for (const token of candidate.refs) {
|
|
11224
|
-
const {
|
|
11244
|
+
const { referencePath, field } = parseComponentReferenceToken(token);
|
|
11225
11245
|
if (!SUPPORTED_COMPONENT_FIELDS.has(field)) {
|
|
11226
11246
|
throw new Error(
|
|
11227
11247
|
`Invalid pcb position expression for ${candidate.component.getString()}: unsupported component field "${field}" in "${token}"`
|
|
11228
11248
|
);
|
|
11229
11249
|
}
|
|
11230
|
-
const
|
|
11231
|
-
|
|
11232
|
-
|
|
11233
|
-
|
|
11234
|
-
|
|
11235
|
-
}
|
|
11236
|
-
if (
|
|
11237
|
-
throw new Error(
|
|
11238
|
-
`Invalid pcb position expression for ${candidate.component.getString()}: ambiguous component reference "${componentName}" in "${token}"`
|
|
11239
|
-
);
|
|
11240
|
-
}
|
|
11241
|
-
if (candidatesByName.has(componentName) && componentName !== candidateName) {
|
|
11250
|
+
const referencedComponentName = resolveReferencedComponentName({
|
|
11251
|
+
token,
|
|
11252
|
+
referencePath,
|
|
11253
|
+
candidate,
|
|
11254
|
+
normalComponentNameMap
|
|
11255
|
+
});
|
|
11256
|
+
if (candidatesByName.has(referencedComponentName) && referencedComponentName !== candidateName) {
|
|
11242
11257
|
inDegree.set(candidateName, (inDegree.get(candidateName) ?? 0) + 1);
|
|
11243
|
-
if (!dependents.has(
|
|
11244
|
-
dependents.set(
|
|
11258
|
+
if (!dependents.has(referencedComponentName)) {
|
|
11259
|
+
dependents.set(referencedComponentName, /* @__PURE__ */ new Set());
|
|
11245
11260
|
}
|
|
11246
|
-
dependents.get(
|
|
11261
|
+
dependents.get(referencedComponentName).add(candidateName);
|
|
11247
11262
|
}
|
|
11248
11263
|
}
|
|
11249
11264
|
}
|
|
@@ -11275,6 +11290,23 @@ function Group_doInitialPcbCalcPlacementResolution(group) {
|
|
|
11275
11290
|
if (!pcbComponent) return;
|
|
11276
11291
|
const rawPcbX = component._parsedProps.pcbX;
|
|
11277
11292
|
const rawPcbY = component._parsedProps.pcbY;
|
|
11293
|
+
const rawComponentProps = component.props;
|
|
11294
|
+
const rawPcbLeftEdgeX = component._parsedProps.pcbLeftEdgeX ?? rawComponentProps.pcbLeftEdgeX;
|
|
11295
|
+
const rawPcbRightEdgeX = component._parsedProps.pcbRightEdgeX ?? rawComponentProps.pcbRightEdgeX;
|
|
11296
|
+
const rawPcbTopEdgeY = component._parsedProps.pcbTopEdgeY ?? rawComponentProps.pcbTopEdgeY;
|
|
11297
|
+
const rawPcbBottomEdgeY = component._parsedProps.pcbBottomEdgeY ?? rawComponentProps.pcbBottomEdgeY;
|
|
11298
|
+
if (rawPcbLeftEdgeX !== void 0 && rawPcbRightEdgeX !== void 0) {
|
|
11299
|
+
throw new Error(
|
|
11300
|
+
`${component.componentName} cannot set both pcbLeftEdgeX and pcbRightEdgeX`
|
|
11301
|
+
);
|
|
11302
|
+
}
|
|
11303
|
+
if (rawPcbTopEdgeY !== void 0 && rawPcbBottomEdgeY !== void 0) {
|
|
11304
|
+
throw new Error(
|
|
11305
|
+
`${component.componentName} cannot set both pcbTopEdgeY and pcbBottomEdgeY`
|
|
11306
|
+
);
|
|
11307
|
+
}
|
|
11308
|
+
const componentWidth = pcbComponent.width ?? 0;
|
|
11309
|
+
const componentHeight = pcbComponent.height ?? 0;
|
|
11278
11310
|
const nextCenter = {
|
|
11279
11311
|
x: pcbComponent.center.x,
|
|
11280
11312
|
y: pcbComponent.center.y
|
|
@@ -11286,6 +11318,30 @@ function Group_doInitialPcbCalcPlacementResolution(group) {
|
|
|
11286
11318
|
});
|
|
11287
11319
|
component._resolvedPcbCalcOffsetX = resolvedPcbX;
|
|
11288
11320
|
nextCenter.x = resolvedPcbX;
|
|
11321
|
+
} else if (rawPcbLeftEdgeX !== void 0) {
|
|
11322
|
+
const resolvedPcbLeftEdgeX = component.resolvePcbCoordinate(
|
|
11323
|
+
rawPcbLeftEdgeX,
|
|
11324
|
+
"pcbX",
|
|
11325
|
+
{
|
|
11326
|
+
allowComponentVariables: true,
|
|
11327
|
+
componentVariables: componentVars
|
|
11328
|
+
}
|
|
11329
|
+
);
|
|
11330
|
+
const resolvedPcbX = resolvedPcbLeftEdgeX + componentWidth / 2;
|
|
11331
|
+
component._resolvedPcbCalcOffsetX = resolvedPcbX;
|
|
11332
|
+
nextCenter.x = resolvedPcbX;
|
|
11333
|
+
} else if (rawPcbRightEdgeX !== void 0) {
|
|
11334
|
+
const resolvedPcbRightEdgeX = component.resolvePcbCoordinate(
|
|
11335
|
+
rawPcbRightEdgeX,
|
|
11336
|
+
"pcbX",
|
|
11337
|
+
{
|
|
11338
|
+
allowComponentVariables: true,
|
|
11339
|
+
componentVariables: componentVars
|
|
11340
|
+
}
|
|
11341
|
+
);
|
|
11342
|
+
const resolvedPcbX = resolvedPcbRightEdgeX - componentWidth / 2;
|
|
11343
|
+
component._resolvedPcbCalcOffsetX = resolvedPcbX;
|
|
11344
|
+
nextCenter.x = resolvedPcbX;
|
|
11289
11345
|
}
|
|
11290
11346
|
if (rawPcbY !== void 0) {
|
|
11291
11347
|
const resolvedPcbY = component.resolvePcbCoordinate(rawPcbY, "pcbY", {
|
|
@@ -11294,11 +11350,49 @@ function Group_doInitialPcbCalcPlacementResolution(group) {
|
|
|
11294
11350
|
});
|
|
11295
11351
|
component._resolvedPcbCalcOffsetY = resolvedPcbY;
|
|
11296
11352
|
nextCenter.y = resolvedPcbY;
|
|
11353
|
+
} else if (rawPcbTopEdgeY !== void 0) {
|
|
11354
|
+
const resolvedPcbTopEdgeY = component.resolvePcbCoordinate(
|
|
11355
|
+
rawPcbTopEdgeY,
|
|
11356
|
+
"pcbY",
|
|
11357
|
+
{
|
|
11358
|
+
allowComponentVariables: true,
|
|
11359
|
+
componentVariables: componentVars
|
|
11360
|
+
}
|
|
11361
|
+
);
|
|
11362
|
+
const resolvedPcbY = resolvedPcbTopEdgeY - componentHeight / 2;
|
|
11363
|
+
component._resolvedPcbCalcOffsetY = resolvedPcbY;
|
|
11364
|
+
nextCenter.y = resolvedPcbY;
|
|
11365
|
+
} else if (rawPcbBottomEdgeY !== void 0) {
|
|
11366
|
+
const resolvedPcbBottomEdgeY = component.resolvePcbCoordinate(
|
|
11367
|
+
rawPcbBottomEdgeY,
|
|
11368
|
+
"pcbY",
|
|
11369
|
+
{
|
|
11370
|
+
allowComponentVariables: true,
|
|
11371
|
+
componentVariables: componentVars
|
|
11372
|
+
}
|
|
11373
|
+
);
|
|
11374
|
+
const resolvedPcbY = resolvedPcbBottomEdgeY + componentHeight / 2;
|
|
11375
|
+
component._resolvedPcbCalcOffsetY = resolvedPcbY;
|
|
11376
|
+
nextCenter.y = resolvedPcbY;
|
|
11297
11377
|
}
|
|
11298
11378
|
component._repositionOnPcb(nextCenter);
|
|
11299
11379
|
updateVarsForNamedComponent(component, componentVars);
|
|
11300
11380
|
}
|
|
11301
11381
|
}
|
|
11382
|
+
function shouldResolvePlacementInCalcPhase(component) {
|
|
11383
|
+
const parsedProps = component._parsedProps;
|
|
11384
|
+
const rawProps = component.props;
|
|
11385
|
+
const pcbX = parsedProps.pcbX;
|
|
11386
|
+
const pcbY = parsedProps.pcbY;
|
|
11387
|
+
const pcbLeftEdgeX = parsedProps.pcbLeftEdgeX ?? rawProps.pcbLeftEdgeX;
|
|
11388
|
+
const pcbRightEdgeX = parsedProps.pcbRightEdgeX ?? rawProps.pcbRightEdgeX;
|
|
11389
|
+
const pcbTopEdgeY = parsedProps.pcbTopEdgeY ?? rawProps.pcbTopEdgeY;
|
|
11390
|
+
const pcbBottomEdgeY = parsedProps.pcbBottomEdgeY ?? rawProps.pcbBottomEdgeY;
|
|
11391
|
+
if (pcbLeftEdgeX !== void 0 || pcbRightEdgeX !== void 0 || pcbTopEdgeY !== void 0 || pcbBottomEdgeY !== void 0) {
|
|
11392
|
+
return true;
|
|
11393
|
+
}
|
|
11394
|
+
return typeof pcbX === "string" || typeof pcbY === "string";
|
|
11395
|
+
}
|
|
11302
11396
|
function collectNormalComponentsInSubcircuit(group) {
|
|
11303
11397
|
const components = [];
|
|
11304
11398
|
const walk = (node) => {
|
|
@@ -11318,6 +11412,11 @@ function getComponentRefsForCalcPlacement(component) {
|
|
|
11318
11412
|
const refs = /* @__PURE__ */ new Set();
|
|
11319
11413
|
const rawPcbX = component._parsedProps.pcbX;
|
|
11320
11414
|
const rawPcbY = component._parsedProps.pcbY;
|
|
11415
|
+
const rawComponentProps = component.props;
|
|
11416
|
+
const rawPcbLeftEdgeX = component._parsedProps.pcbLeftEdgeX ?? rawComponentProps.pcbLeftEdgeX;
|
|
11417
|
+
const rawPcbRightEdgeX = component._parsedProps.pcbRightEdgeX ?? rawComponentProps.pcbRightEdgeX;
|
|
11418
|
+
const rawPcbTopEdgeY = component._parsedProps.pcbTopEdgeY ?? rawComponentProps.pcbTopEdgeY;
|
|
11419
|
+
const rawPcbBottomEdgeY = component._parsedProps.pcbBottomEdgeY ?? rawComponentProps.pcbBottomEdgeY;
|
|
11321
11420
|
const addRefs = (rawValue) => {
|
|
11322
11421
|
if (typeof rawValue !== "string") return;
|
|
11323
11422
|
const identifiers = extractCalcIdentifiers(rawValue);
|
|
@@ -11329,6 +11428,10 @@ function getComponentRefsForCalcPlacement(component) {
|
|
|
11329
11428
|
};
|
|
11330
11429
|
addRefs(rawPcbX);
|
|
11331
11430
|
addRefs(rawPcbY);
|
|
11431
|
+
addRefs(rawPcbLeftEdgeX);
|
|
11432
|
+
addRefs(rawPcbRightEdgeX);
|
|
11433
|
+
addRefs(rawPcbTopEdgeY);
|
|
11434
|
+
addRefs(rawPcbBottomEdgeY);
|
|
11332
11435
|
return refs;
|
|
11333
11436
|
}
|
|
11334
11437
|
function parseComponentReferenceToken(token) {
|
|
@@ -11337,10 +11440,35 @@ function parseComponentReferenceToken(token) {
|
|
|
11337
11440
|
throw new Error(`Invalid component reference token: "${token}"`);
|
|
11338
11441
|
}
|
|
11339
11442
|
return {
|
|
11340
|
-
|
|
11443
|
+
referencePath: token.slice(0, dotIndex),
|
|
11341
11444
|
field: token.slice(dotIndex + 1).toLowerCase()
|
|
11342
11445
|
};
|
|
11343
11446
|
}
|
|
11447
|
+
function resolveReferencedComponentName(params) {
|
|
11448
|
+
const { token, referencePath, candidate, normalComponentNameMap } = params;
|
|
11449
|
+
const directComponents = normalComponentNameMap.get(referencePath);
|
|
11450
|
+
if (directComponents && directComponents.length > 0) {
|
|
11451
|
+
if (directComponents.length > 1) {
|
|
11452
|
+
throw new Error(
|
|
11453
|
+
`Invalid pcb position expression for ${candidate.component.getString()}: ambiguous component reference "${referencePath}" in "${token}"`
|
|
11454
|
+
);
|
|
11455
|
+
}
|
|
11456
|
+
return referencePath;
|
|
11457
|
+
}
|
|
11458
|
+
let bestMatch = null;
|
|
11459
|
+
for (const componentName of normalComponentNameMap.keys()) {
|
|
11460
|
+
if (!referencePath.startsWith(`${componentName}.`)) continue;
|
|
11461
|
+
if (!bestMatch || componentName.length > bestMatch.length) {
|
|
11462
|
+
bestMatch = componentName;
|
|
11463
|
+
}
|
|
11464
|
+
}
|
|
11465
|
+
if (!bestMatch) {
|
|
11466
|
+
throw new Error(
|
|
11467
|
+
`Invalid pcb position expression for ${candidate.component.getString()}: unknown component reference "${referencePath}" in "${token}"`
|
|
11468
|
+
);
|
|
11469
|
+
}
|
|
11470
|
+
return bestMatch;
|
|
11471
|
+
}
|
|
11344
11472
|
function updateVarsForNamedComponent(component, vars) {
|
|
11345
11473
|
if (!component.name || !component.pcb_component_id || !component.root) return;
|
|
11346
11474
|
const pcbComponent = component.root.db.pcb_component.get(
|
|
@@ -11359,6 +11487,58 @@ function updateVarsForNamedComponent(component, vars) {
|
|
|
11359
11487
|
vars[`${component.name}.maxx`] = x + width / 2;
|
|
11360
11488
|
vars[`${component.name}.miny`] = y - height / 2;
|
|
11361
11489
|
vars[`${component.name}.maxy`] = y + height / 2;
|
|
11490
|
+
const padElementsByReference = collectPadElementsByReference(component);
|
|
11491
|
+
for (const [referencePath, elements] of padElementsByReference.entries()) {
|
|
11492
|
+
const bounds = getBoundsOfPcbElements(elements);
|
|
11493
|
+
const minX = bounds.minX;
|
|
11494
|
+
const maxX = bounds.maxX;
|
|
11495
|
+
const minY = bounds.minY;
|
|
11496
|
+
const maxY = bounds.maxY;
|
|
11497
|
+
vars[`${referencePath}.x`] = (minX + maxX) / 2;
|
|
11498
|
+
vars[`${referencePath}.y`] = (minY + maxY) / 2;
|
|
11499
|
+
vars[`${referencePath}.width`] = maxX - minX;
|
|
11500
|
+
vars[`${referencePath}.height`] = maxY - minY;
|
|
11501
|
+
vars[`${referencePath}.minx`] = minX;
|
|
11502
|
+
vars[`${referencePath}.maxx`] = maxX;
|
|
11503
|
+
vars[`${referencePath}.miny`] = minY;
|
|
11504
|
+
vars[`${referencePath}.maxy`] = maxY;
|
|
11505
|
+
}
|
|
11506
|
+
}
|
|
11507
|
+
function collectPadElementsByReference(component) {
|
|
11508
|
+
const refsToElements = /* @__PURE__ */ new Map();
|
|
11509
|
+
if (!component.name || !component.pcb_component_id || !component.root) {
|
|
11510
|
+
return refsToElements;
|
|
11511
|
+
}
|
|
11512
|
+
const { db } = component.root;
|
|
11513
|
+
const padElements = [
|
|
11514
|
+
...db.pcb_smtpad.list({ pcb_component_id: component.pcb_component_id }),
|
|
11515
|
+
...db.pcb_plated_hole.list({
|
|
11516
|
+
pcb_component_id: component.pcb_component_id
|
|
11517
|
+
})
|
|
11518
|
+
];
|
|
11519
|
+
for (const pad of padElements) {
|
|
11520
|
+
const aliases = /* @__PURE__ */ new Set();
|
|
11521
|
+
for (const hint of pad.port_hints ?? []) {
|
|
11522
|
+
if (typeof hint === "string" && hint.length > 0) aliases.add(hint);
|
|
11523
|
+
}
|
|
11524
|
+
const pcbPortId = pad.pcb_port_id;
|
|
11525
|
+
if (pcbPortId) {
|
|
11526
|
+
const pcbPort = db.pcb_port.get(pcbPortId);
|
|
11527
|
+
const sourcePort = pcbPort?.source_port_id ? db.source_port.get(pcbPort.source_port_id) : null;
|
|
11528
|
+
if (sourcePort?.name) aliases.add(sourcePort.name);
|
|
11529
|
+
if (sourcePort?.pin_number != null) {
|
|
11530
|
+
aliases.add(`pin${sourcePort.pin_number}`);
|
|
11531
|
+
}
|
|
11532
|
+
}
|
|
11533
|
+
for (const alias of aliases) {
|
|
11534
|
+
const referencePath = `${component.name}.${alias}`;
|
|
11535
|
+
if (!refsToElements.has(referencePath)) {
|
|
11536
|
+
refsToElements.set(referencePath, []);
|
|
11537
|
+
}
|
|
11538
|
+
refsToElements.get(referencePath).push(pad);
|
|
11539
|
+
}
|
|
11540
|
+
}
|
|
11541
|
+
return refsToElements;
|
|
11362
11542
|
}
|
|
11363
11543
|
|
|
11364
11544
|
// lib/components/primitive-components/Group/Group_doInitialPcbComponentAnchorAlignment.ts
|
|
@@ -12351,7 +12531,7 @@ import { identity as identity4 } from "transformation-matrix";
|
|
|
12351
12531
|
var package_default = {
|
|
12352
12532
|
name: "@tscircuit/core",
|
|
12353
12533
|
type: "module",
|
|
12354
|
-
version: "0.0.
|
|
12534
|
+
version: "0.0.1030",
|
|
12355
12535
|
types: "dist/index.d.ts",
|
|
12356
12536
|
main: "dist/index.js",
|
|
12357
12537
|
module: "dist/index.js",
|
|
@@ -15963,6 +16143,7 @@ var Group = class extends NormalComponent3 {
|
|
|
15963
16143
|
}
|
|
15964
16144
|
_getPcbLayoutMode() {
|
|
15965
16145
|
const props = this._parsedProps;
|
|
16146
|
+
const rawProps = this.props;
|
|
15966
16147
|
if (this._isInflatedFromCircuitJson) return "none";
|
|
15967
16148
|
if (props.pcbRelative) return "none";
|
|
15968
16149
|
if (props.pcbLayout?.matchAdapt) return "match-adapt";
|
|
@@ -15976,7 +16157,7 @@ var Group = class extends NormalComponent3 {
|
|
|
15976
16157
|
if (props.matchAdapt) return "match-adapt";
|
|
15977
16158
|
if (props.flex) return "flex";
|
|
15978
16159
|
if (props.grid) return "grid";
|
|
15979
|
-
const groupHasCoords = props.pcbX !== void 0 || props.pcbY !== void 0;
|
|
16160
|
+
const groupHasCoords = props.pcbX !== void 0 || props.pcbY !== void 0 || props.pcbLeftEdgeX !== void 0 || props.pcbRightEdgeX !== void 0 || props.pcbTopEdgeY !== void 0 || props.pcbBottomEdgeY !== void 0 || rawProps.pcbLeftEdgeX !== void 0 || rawProps.pcbRightEdgeX !== void 0 || rawProps.pcbTopEdgeY !== void 0 || rawProps.pcbBottomEdgeY !== void 0;
|
|
15980
16161
|
const hasManualEdits = (props.manualEdits?.pcb_placements?.length ?? 0) > 0;
|
|
15981
16162
|
const unpositionedDirectChildrenCount = this.children.reduce(
|
|
15982
16163
|
(count, child) => {
|
|
@@ -15984,7 +16165,8 @@ var Group = class extends NormalComponent3 {
|
|
|
15984
16165
|
return count;
|
|
15985
16166
|
}
|
|
15986
16167
|
const childProps = child._parsedProps;
|
|
15987
|
-
const
|
|
16168
|
+
const rawChildProps = child.props;
|
|
16169
|
+
const hasCoords = childProps?.pcbX !== void 0 || childProps?.pcbY !== void 0 || childProps?.pcbLeftEdgeX !== void 0 || childProps?.pcbRightEdgeX !== void 0 || childProps?.pcbTopEdgeY !== void 0 || childProps?.pcbBottomEdgeY !== void 0 || rawChildProps?.pcbLeftEdgeX !== void 0 || rawChildProps?.pcbRightEdgeX !== void 0 || rawChildProps?.pcbTopEdgeY !== void 0 || rawChildProps?.pcbBottomEdgeY !== void 0;
|
|
15988
16170
|
return count + (hasCoords ? 0 : 1);
|
|
15989
16171
|
},
|
|
15990
16172
|
0
|