@tscircuit/core 0.0.1971 → 0.0.1972
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 +69 -40
- package/dist/index.js +271 -31
- package/package.json +4 -3
package/dist/index.d.ts
CHANGED
|
@@ -504,7 +504,34 @@ interface SchematicBoxComponentDimensions {
|
|
|
504
504
|
schHeight: number;
|
|
505
505
|
}
|
|
506
506
|
|
|
507
|
+
interface Point3 {
|
|
508
|
+
x: number;
|
|
509
|
+
y: number;
|
|
510
|
+
z: number;
|
|
511
|
+
}
|
|
512
|
+
interface Bend {
|
|
513
|
+
id: string;
|
|
514
|
+
nx: number;
|
|
515
|
+
ny: number;
|
|
516
|
+
start: number;
|
|
517
|
+
end: number;
|
|
518
|
+
angle: number;
|
|
519
|
+
radius: number;
|
|
520
|
+
axisMin: number;
|
|
521
|
+
axisMax: number;
|
|
522
|
+
}
|
|
523
|
+
/** Points/directions in board-local Circuit JSON: +Z up, mm. */
|
|
524
|
+
interface PcbFold {
|
|
525
|
+
bends: Bend[];
|
|
526
|
+
point(point: Point3, flatAnchor?: Point3): Point3;
|
|
527
|
+
inversePoint(point: Point3, flatAnchor: Point3): Point3;
|
|
528
|
+
inverseDirection(direction: Point3, flatAnchor: Point3): Point3;
|
|
529
|
+
direction(direction: Point3, flatAnchor: Point3): Point3;
|
|
530
|
+
assertRigid(points: Point3[], label: string): void;
|
|
531
|
+
}
|
|
532
|
+
|
|
507
533
|
interface BoardI {
|
|
534
|
+
pcbFold?: PcbFold;
|
|
508
535
|
componentName: string;
|
|
509
536
|
boardThickness: number;
|
|
510
537
|
_connectedSchematicPortPairs: Set<string>;
|
|
@@ -4672,6 +4699,7 @@ declare class BoardCastellatedHole extends PlatedHole {
|
|
|
4672
4699
|
}
|
|
4673
4700
|
|
|
4674
4701
|
declare class Board extends Group<typeof boardProps> implements BoardI, SubcircuitI {
|
|
4702
|
+
pcbFold: PcbFold | undefined;
|
|
4675
4703
|
pcb_board_id: string | null;
|
|
4676
4704
|
source_board_id: string | null;
|
|
4677
4705
|
_drcChecksComplete: boolean;
|
|
@@ -4683,6 +4711,7 @@ declare class Board extends Group<typeof boardProps> implements BoardI, Subcircu
|
|
|
4683
4711
|
} | null;
|
|
4684
4712
|
readonly _castellatedHoles: BoardCastellatedHole[];
|
|
4685
4713
|
constructor(props: z.input<typeof boardProps>);
|
|
4714
|
+
doInitialPcbFlexRender(): void;
|
|
4686
4715
|
get isSubcircuit(): boolean;
|
|
4687
4716
|
get isGroup(): boolean;
|
|
4688
4717
|
get config(): {
|
|
@@ -95013,7 +95042,7 @@ declare class FabricationNotePath extends PrimitiveComponent<typeof fabricationN
|
|
|
95013
95042
|
pcbSx: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbSx, zod.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
95014
95043
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
95015
95044
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
95016
|
-
}, "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"
|
|
95045
|
+
}, "pcbRotation" | "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"> & {
|
|
95017
95046
|
route: zod.ZodArray<zod.ZodObject<{
|
|
95018
95047
|
x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
95019
95048
|
y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
@@ -95365,7 +95394,7 @@ declare class FabricationNoteDimension extends PrimitiveComponent<typeof fabrica
|
|
|
95365
95394
|
pcbSx: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbSx, zod.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
95366
95395
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
95367
95396
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
95368
|
-
}, "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"
|
|
95397
|
+
}, "pcbRotation" | "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"> & {
|
|
95369
95398
|
from: zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
|
|
95370
95399
|
x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
95371
95400
|
y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
@@ -95567,7 +95596,7 @@ declare class PcbNoteLine extends PrimitiveComponent<typeof pcbNoteLineProps> {
|
|
|
95567
95596
|
pcbSx: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbSx, zod.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
95568
95597
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
95569
95598
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
95570
|
-
}, "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"
|
|
95599
|
+
}, "pcbRotation" | "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"> & {
|
|
95571
95600
|
x1: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
95572
95601
|
y1: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
95573
95602
|
x2: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
@@ -96063,7 +96092,7 @@ declare class PcbNotePath extends PrimitiveComponent<typeof pcbNotePathProps> {
|
|
|
96063
96092
|
pcbSx: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbSx, zod.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
96064
96093
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
96065
96094
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
96066
|
-
}, "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"
|
|
96095
|
+
}, "pcbRotation" | "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"> & {
|
|
96067
96096
|
route: zod.ZodArray<zod.ZodObject<{
|
|
96068
96097
|
x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
96069
96098
|
y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
@@ -96248,7 +96277,7 @@ declare class PcbNoteDimension extends PrimitiveComponent<typeof pcbNoteDimensio
|
|
|
96248
96277
|
pcbSx: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbSx, zod.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
96249
96278
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
96250
96279
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
96251
|
-
}, "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"
|
|
96280
|
+
}, "pcbRotation" | "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"> & {
|
|
96252
96281
|
from: zod.ZodUnion<[zod.ZodString, zod.ZodObject<{
|
|
96253
96282
|
x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
96254
96283
|
y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
@@ -98194,7 +98223,6 @@ declare const baseBreakoutPointProps: zod.ZodObject<Omit<{
|
|
|
98194
98223
|
pcbRightEdgeX?: string | number | undefined;
|
|
98195
98224
|
pcbTopEdgeY?: string | number | undefined;
|
|
98196
98225
|
pcbBottomEdgeY?: string | number | undefined;
|
|
98197
|
-
relative?: boolean | undefined;
|
|
98198
98226
|
pcbOffsetX?: number | undefined;
|
|
98199
98227
|
pcbOffsetY?: number | undefined;
|
|
98200
98228
|
pcbPositionAnchor?: string | undefined;
|
|
@@ -98218,6 +98246,7 @@ declare const baseBreakoutPointProps: zod.ZodObject<Omit<{
|
|
|
98218
98246
|
} | undefined;
|
|
98219
98247
|
pcbSx?: _tscircuit_props.PcbSx | undefined;
|
|
98220
98248
|
pcbRelative?: boolean | undefined;
|
|
98249
|
+
relative?: boolean | undefined;
|
|
98221
98250
|
}, {
|
|
98222
98251
|
pcbX?: string | number | undefined;
|
|
98223
98252
|
pcbY?: string | number | undefined;
|
|
@@ -98225,7 +98254,6 @@ declare const baseBreakoutPointProps: zod.ZodObject<Omit<{
|
|
|
98225
98254
|
pcbRightEdgeX?: string | number | undefined;
|
|
98226
98255
|
pcbTopEdgeY?: string | number | undefined;
|
|
98227
98256
|
pcbBottomEdgeY?: string | number | undefined;
|
|
98228
|
-
relative?: boolean | undefined;
|
|
98229
98257
|
pcbOffsetX?: string | number | undefined;
|
|
98230
98258
|
pcbOffsetY?: string | number | undefined;
|
|
98231
98259
|
pcbPositionAnchor?: string | undefined;
|
|
@@ -98249,6 +98277,7 @@ declare const baseBreakoutPointProps: zod.ZodObject<Omit<{
|
|
|
98249
98277
|
} | undefined;
|
|
98250
98278
|
pcbSx?: _tscircuit_props.PcbSx | undefined;
|
|
98251
98279
|
pcbRelative?: boolean | undefined;
|
|
98280
|
+
relative?: boolean | undefined;
|
|
98252
98281
|
}>;
|
|
98253
98282
|
/**
|
|
98254
98283
|
* Base class for both user-facing `BreakoutPoint` (which requires a
|
|
@@ -100032,7 +100061,7 @@ declare class CourtyardOutline extends PrimitiveComponent<typeof courtyardOutlin
|
|
|
100032
100061
|
pcbSx: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbSx, zod.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
100033
100062
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
100034
100063
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
100035
|
-
}, "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"
|
|
100064
|
+
}, "pcbRotation" | "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"> & {
|
|
100036
100065
|
outline: zod.ZodArray<zod.ZodObject<{
|
|
100037
100066
|
x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
100038
100067
|
y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
@@ -100535,7 +100564,7 @@ declare class SilkscreenPath extends PrimitiveComponent<typeof silkscreenPathPro
|
|
|
100535
100564
|
pcbSx: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbSx, zod.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
100536
100565
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
100537
100566
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
100538
|
-
}, "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"
|
|
100567
|
+
}, "pcbRotation" | "pcbX" | "pcbY" | "pcbLeftEdgeX" | "pcbRightEdgeX" | "pcbTopEdgeY" | "pcbBottomEdgeY" | "pcbOffsetX" | "pcbOffsetY"> & {
|
|
100539
100568
|
route: zod.ZodArray<zod.ZodObject<{
|
|
100540
100569
|
x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
100541
100570
|
y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
@@ -101090,7 +101119,7 @@ declare class SilkscreenLine extends PrimitiveComponent<typeof silkscreenLinePro
|
|
|
101090
101119
|
pcbSx: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbSx, zod.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
101091
101120
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
101092
101121
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
101093
|
-
}, "
|
|
101122
|
+
}, "pcbRotation" | "pcbX" | "pcbY" | "pcbOffsetX" | "pcbOffsetY"> & {
|
|
101094
101123
|
strokeWidth: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
101095
101124
|
x1: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
101096
101125
|
y1: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
@@ -108209,6 +108238,7 @@ declare class PcbTrace extends PrimitiveComponent<typeof pcbTraceProps> {
|
|
|
108209
108238
|
|
|
108210
108239
|
declare const pcbViaProps: z.ZodObject<{
|
|
108211
108240
|
symbol: z.ZodOptional<z.ZodType<_tscircuit_props.SymbolProp, z.ZodTypeDef, _tscircuit_props.SymbolProp>>;
|
|
108241
|
+
name: z.ZodOptional<z.ZodString>;
|
|
108212
108242
|
fromLayer: z.ZodOptional<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6", "inner7", "inner8"]>, z.ZodObject<{
|
|
108213
108243
|
name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6", "inner7", "inner8"]>;
|
|
108214
108244
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -108246,21 +108276,20 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108246
108276
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8";
|
|
108247
108277
|
}>>;
|
|
108248
108278
|
connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
108249
|
-
name: z.ZodOptional<z.ZodString>;
|
|
108250
108279
|
holeDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108251
108280
|
footprint: z.ZodOptional<z.ZodType<_tscircuit_props.FootprintProp, z.ZodTypeDef, _tscircuit_props.FootprintProp>>;
|
|
108252
108281
|
schX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108253
108282
|
schY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108283
|
+
tented: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["both_sides", "top_and_bottom_tented", "top_tented", "bottom_tented", "exposed"]>]>, "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed", boolean | "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | "both_sides">>;
|
|
108284
|
+
pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108254
108285
|
pcbX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108255
108286
|
pcbY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108256
108287
|
pcbLeftEdgeX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108257
108288
|
pcbRightEdgeX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108258
108289
|
pcbTopEdgeY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108259
108290
|
pcbBottomEdgeY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108260
|
-
relative: z.ZodOptional<z.ZodBoolean>;
|
|
108261
108291
|
pcbOffsetX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108262
108292
|
pcbOffsetY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108263
|
-
pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108264
108293
|
pcbPositionAnchor: z.ZodOptional<z.ZodString>;
|
|
108265
108294
|
pcbPositionMode: z.ZodOptional<z.ZodEnum<["relative_to_group_anchor", "auto", "relative_to_board_anchor", "relative_to_component_anchor"]>>;
|
|
108266
108295
|
shouldBeOnEdgeOfBoard: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -108305,6 +108334,8 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108305
108334
|
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
108306
108335
|
}>>;
|
|
108307
108336
|
pcbSx: z.ZodOptional<z.ZodType<_tscircuit_props.PcbSx, z.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
108337
|
+
pcbRelative: z.ZodOptional<z.ZodBoolean>;
|
|
108338
|
+
relative: z.ZodOptional<z.ZodBoolean>;
|
|
108308
108339
|
schMarginTop: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108309
108340
|
schMarginRight: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108310
108341
|
schMarginBottom: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
@@ -108323,8 +108354,6 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108323
108354
|
defaultCapacitorOrientation?: "none" | "vertical" | undefined;
|
|
108324
108355
|
}>>;
|
|
108325
108356
|
schRelative: z.ZodOptional<z.ZodBoolean>;
|
|
108326
|
-
pcbRelative: z.ZodOptional<z.ZodBoolean>;
|
|
108327
|
-
tented: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["both_sides", "top_and_bottom_tented", "top_tented", "bottom_tented", "exposed"]>]>, "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed", boolean | "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | "both_sides">>;
|
|
108328
108357
|
isTented: z.ZodOptional<z.ZodBoolean>;
|
|
108329
108358
|
tentedOnTop: z.ZodOptional<z.ZodBoolean>;
|
|
108330
108359
|
tentedOnBottom: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -108332,26 +108361,26 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108332
108361
|
netIsAssignable: z.ZodOptional<z.ZodBoolean>;
|
|
108333
108362
|
}, "strip", z.ZodTypeAny, {
|
|
108334
108363
|
symbol?: _tscircuit_props.SymbolProp | undefined;
|
|
108364
|
+
name?: string | undefined;
|
|
108335
108365
|
fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8" | undefined;
|
|
108336
108366
|
toLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8" | undefined;
|
|
108337
108367
|
layers?: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8")[] | undefined;
|
|
108338
108368
|
layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8" | undefined;
|
|
108339
108369
|
connectsTo?: string | string[] | undefined;
|
|
108340
|
-
name?: string | undefined;
|
|
108341
108370
|
holeDiameter?: number | undefined;
|
|
108342
108371
|
footprint?: _tscircuit_props.FootprintProp | undefined;
|
|
108343
108372
|
schX?: number | undefined;
|
|
108344
108373
|
schY?: number | undefined;
|
|
108374
|
+
tented?: "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | undefined;
|
|
108375
|
+
pcbRotation?: number | undefined;
|
|
108345
108376
|
pcbX?: string | number | undefined;
|
|
108346
108377
|
pcbY?: string | number | undefined;
|
|
108347
108378
|
pcbLeftEdgeX?: string | number | undefined;
|
|
108348
108379
|
pcbRightEdgeX?: string | number | undefined;
|
|
108349
108380
|
pcbTopEdgeY?: string | number | undefined;
|
|
108350
108381
|
pcbBottomEdgeY?: string | number | undefined;
|
|
108351
|
-
relative?: boolean | undefined;
|
|
108352
108382
|
pcbOffsetX?: number | undefined;
|
|
108353
108383
|
pcbOffsetY?: number | undefined;
|
|
108354
|
-
pcbRotation?: number | undefined;
|
|
108355
108384
|
pcbPositionAnchor?: string | undefined;
|
|
108356
108385
|
pcbPositionMode?: "auto" | "relative_to_group_anchor" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
|
|
108357
108386
|
shouldBeOnEdgeOfBoard?: boolean | undefined;
|
|
@@ -108372,6 +108401,8 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108372
108401
|
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
108373
108402
|
} | undefined;
|
|
108374
108403
|
pcbSx?: _tscircuit_props.PcbSx | undefined;
|
|
108404
|
+
pcbRelative?: boolean | undefined;
|
|
108405
|
+
relative?: boolean | undefined;
|
|
108375
108406
|
schMarginTop?: number | undefined;
|
|
108376
108407
|
schMarginRight?: number | undefined;
|
|
108377
108408
|
schMarginBottom?: number | undefined;
|
|
@@ -108384,8 +108415,6 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108384
108415
|
defaultCapacitorOrientation?: "none" | "vertical" | undefined;
|
|
108385
108416
|
} | undefined;
|
|
108386
108417
|
schRelative?: boolean | undefined;
|
|
108387
|
-
pcbRelative?: boolean | undefined;
|
|
108388
|
-
tented?: "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | undefined;
|
|
108389
108418
|
isTented?: boolean | undefined;
|
|
108390
108419
|
tentedOnTop?: boolean | undefined;
|
|
108391
108420
|
tentedOnBottom?: boolean | undefined;
|
|
@@ -108393,6 +108422,7 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108393
108422
|
netIsAssignable?: boolean | undefined;
|
|
108394
108423
|
}, {
|
|
108395
108424
|
symbol?: _tscircuit_props.SymbolProp | undefined;
|
|
108425
|
+
name?: string | undefined;
|
|
108396
108426
|
fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8" | {
|
|
108397
108427
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8";
|
|
108398
108428
|
} | undefined;
|
|
@@ -108406,21 +108436,20 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108406
108436
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8";
|
|
108407
108437
|
} | undefined;
|
|
108408
108438
|
connectsTo?: string | string[] | undefined;
|
|
108409
|
-
name?: string | undefined;
|
|
108410
108439
|
holeDiameter?: string | number | undefined;
|
|
108411
108440
|
footprint?: _tscircuit_props.FootprintProp | undefined;
|
|
108412
108441
|
schX?: string | number | undefined;
|
|
108413
108442
|
schY?: string | number | undefined;
|
|
108443
|
+
tented?: boolean | "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | "both_sides" | undefined;
|
|
108444
|
+
pcbRotation?: string | number | undefined;
|
|
108414
108445
|
pcbX?: string | number | undefined;
|
|
108415
108446
|
pcbY?: string | number | undefined;
|
|
108416
108447
|
pcbLeftEdgeX?: string | number | undefined;
|
|
108417
108448
|
pcbRightEdgeX?: string | number | undefined;
|
|
108418
108449
|
pcbTopEdgeY?: string | number | undefined;
|
|
108419
108450
|
pcbBottomEdgeY?: string | number | undefined;
|
|
108420
|
-
relative?: boolean | undefined;
|
|
108421
108451
|
pcbOffsetX?: string | number | undefined;
|
|
108422
108452
|
pcbOffsetY?: string | number | undefined;
|
|
108423
|
-
pcbRotation?: string | number | undefined;
|
|
108424
108453
|
pcbPositionAnchor?: string | undefined;
|
|
108425
108454
|
pcbPositionMode?: "auto" | "relative_to_group_anchor" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
|
|
108426
108455
|
shouldBeOnEdgeOfBoard?: boolean | undefined;
|
|
@@ -108441,6 +108470,8 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108441
108470
|
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
108442
108471
|
} | undefined;
|
|
108443
108472
|
pcbSx?: _tscircuit_props.PcbSx | undefined;
|
|
108473
|
+
pcbRelative?: boolean | undefined;
|
|
108474
|
+
relative?: boolean | undefined;
|
|
108444
108475
|
schMarginTop?: string | number | undefined;
|
|
108445
108476
|
schMarginRight?: string | number | undefined;
|
|
108446
108477
|
schMarginBottom?: string | number | undefined;
|
|
@@ -108453,8 +108484,6 @@ declare const pcbViaProps: z.ZodObject<{
|
|
|
108453
108484
|
defaultCapacitorOrientation?: "none" | "vertical" | undefined;
|
|
108454
108485
|
} | undefined;
|
|
108455
108486
|
schRelative?: boolean | undefined;
|
|
108456
|
-
pcbRelative?: boolean | undefined;
|
|
108457
|
-
tented?: boolean | "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | "both_sides" | undefined;
|
|
108458
108487
|
isTented?: boolean | undefined;
|
|
108459
108488
|
tentedOnTop?: boolean | undefined;
|
|
108460
108489
|
tentedOnBottom?: boolean | undefined;
|
|
@@ -108469,6 +108498,7 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108469
108498
|
componentName: string;
|
|
108470
108499
|
zodProps: z.ZodObject<{
|
|
108471
108500
|
symbol: z.ZodOptional<z.ZodType<_tscircuit_props.SymbolProp, z.ZodTypeDef, _tscircuit_props.SymbolProp>>;
|
|
108501
|
+
name: z.ZodOptional<z.ZodString>;
|
|
108472
108502
|
fromLayer: z.ZodOptional<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6", "inner7", "inner8"]>, z.ZodObject<{
|
|
108473
108503
|
name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6", "inner7", "inner8"]>;
|
|
108474
108504
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -108506,21 +108536,20 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108506
108536
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8";
|
|
108507
108537
|
}>>;
|
|
108508
108538
|
connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
108509
|
-
name: z.ZodOptional<z.ZodString>;
|
|
108510
108539
|
holeDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108511
108540
|
footprint: z.ZodOptional<z.ZodType<_tscircuit_props.FootprintProp, z.ZodTypeDef, _tscircuit_props.FootprintProp>>;
|
|
108512
108541
|
schX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108513
108542
|
schY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108543
|
+
tented: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["both_sides", "top_and_bottom_tented", "top_tented", "bottom_tented", "exposed"]>]>, "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed", boolean | "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | "both_sides">>;
|
|
108544
|
+
pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108514
108545
|
pcbX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108515
108546
|
pcbY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108516
108547
|
pcbLeftEdgeX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108517
108548
|
pcbRightEdgeX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108518
108549
|
pcbTopEdgeY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108519
108550
|
pcbBottomEdgeY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
|
|
108520
|
-
relative: z.ZodOptional<z.ZodBoolean>;
|
|
108521
108551
|
pcbOffsetX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108522
108552
|
pcbOffsetY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108523
|
-
pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108524
108553
|
pcbPositionAnchor: z.ZodOptional<z.ZodString>;
|
|
108525
108554
|
pcbPositionMode: z.ZodOptional<z.ZodEnum<["relative_to_group_anchor", "auto", "relative_to_board_anchor", "relative_to_component_anchor"]>>;
|
|
108526
108555
|
shouldBeOnEdgeOfBoard: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -108565,6 +108594,8 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108565
108594
|
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
108566
108595
|
}>>;
|
|
108567
108596
|
pcbSx: z.ZodOptional<z.ZodType<_tscircuit_props.PcbSx, z.ZodTypeDef, _tscircuit_props.PcbSx>>;
|
|
108597
|
+
pcbRelative: z.ZodOptional<z.ZodBoolean>;
|
|
108598
|
+
relative: z.ZodOptional<z.ZodBoolean>;
|
|
108568
108599
|
schMarginTop: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108569
108600
|
schMarginRight: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
108570
108601
|
schMarginBottom: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
@@ -108583,8 +108614,6 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108583
108614
|
defaultCapacitorOrientation?: "none" | "vertical" | undefined;
|
|
108584
108615
|
}>>;
|
|
108585
108616
|
schRelative: z.ZodOptional<z.ZodBoolean>;
|
|
108586
|
-
pcbRelative: z.ZodOptional<z.ZodBoolean>;
|
|
108587
|
-
tented: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["both_sides", "top_and_bottom_tented", "top_tented", "bottom_tented", "exposed"]>]>, "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed", boolean | "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | "both_sides">>;
|
|
108588
108617
|
isTented: z.ZodOptional<z.ZodBoolean>;
|
|
108589
108618
|
tentedOnTop: z.ZodOptional<z.ZodBoolean>;
|
|
108590
108619
|
tentedOnBottom: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -108592,26 +108621,26 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108592
108621
|
netIsAssignable: z.ZodOptional<z.ZodBoolean>;
|
|
108593
108622
|
}, "strip", z.ZodTypeAny, {
|
|
108594
108623
|
symbol?: _tscircuit_props.SymbolProp | undefined;
|
|
108624
|
+
name?: string | undefined;
|
|
108595
108625
|
fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8" | undefined;
|
|
108596
108626
|
toLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8" | undefined;
|
|
108597
108627
|
layers?: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8")[] | undefined;
|
|
108598
108628
|
layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8" | undefined;
|
|
108599
108629
|
connectsTo?: string | string[] | undefined;
|
|
108600
|
-
name?: string | undefined;
|
|
108601
108630
|
holeDiameter?: number | undefined;
|
|
108602
108631
|
footprint?: _tscircuit_props.FootprintProp | undefined;
|
|
108603
108632
|
schX?: number | undefined;
|
|
108604
108633
|
schY?: number | undefined;
|
|
108634
|
+
tented?: "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | undefined;
|
|
108635
|
+
pcbRotation?: number | undefined;
|
|
108605
108636
|
pcbX?: string | number | undefined;
|
|
108606
108637
|
pcbY?: string | number | undefined;
|
|
108607
108638
|
pcbLeftEdgeX?: string | number | undefined;
|
|
108608
108639
|
pcbRightEdgeX?: string | number | undefined;
|
|
108609
108640
|
pcbTopEdgeY?: string | number | undefined;
|
|
108610
108641
|
pcbBottomEdgeY?: string | number | undefined;
|
|
108611
|
-
relative?: boolean | undefined;
|
|
108612
108642
|
pcbOffsetX?: number | undefined;
|
|
108613
108643
|
pcbOffsetY?: number | undefined;
|
|
108614
|
-
pcbRotation?: number | undefined;
|
|
108615
108644
|
pcbPositionAnchor?: string | undefined;
|
|
108616
108645
|
pcbPositionMode?: "auto" | "relative_to_group_anchor" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
|
|
108617
108646
|
shouldBeOnEdgeOfBoard?: boolean | undefined;
|
|
@@ -108632,6 +108661,8 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108632
108661
|
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
108633
108662
|
} | undefined;
|
|
108634
108663
|
pcbSx?: _tscircuit_props.PcbSx | undefined;
|
|
108664
|
+
pcbRelative?: boolean | undefined;
|
|
108665
|
+
relative?: boolean | undefined;
|
|
108635
108666
|
schMarginTop?: number | undefined;
|
|
108636
108667
|
schMarginRight?: number | undefined;
|
|
108637
108668
|
schMarginBottom?: number | undefined;
|
|
@@ -108644,8 +108675,6 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108644
108675
|
defaultCapacitorOrientation?: "none" | "vertical" | undefined;
|
|
108645
108676
|
} | undefined;
|
|
108646
108677
|
schRelative?: boolean | undefined;
|
|
108647
|
-
pcbRelative?: boolean | undefined;
|
|
108648
|
-
tented?: "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | undefined;
|
|
108649
108678
|
isTented?: boolean | undefined;
|
|
108650
108679
|
tentedOnTop?: boolean | undefined;
|
|
108651
108680
|
tentedOnBottom?: boolean | undefined;
|
|
@@ -108653,6 +108682,7 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108653
108682
|
netIsAssignable?: boolean | undefined;
|
|
108654
108683
|
}, {
|
|
108655
108684
|
symbol?: _tscircuit_props.SymbolProp | undefined;
|
|
108685
|
+
name?: string | undefined;
|
|
108656
108686
|
fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8" | {
|
|
108657
108687
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8";
|
|
108658
108688
|
} | undefined;
|
|
@@ -108666,21 +108696,20 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108666
108696
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | "inner7" | "inner8";
|
|
108667
108697
|
} | undefined;
|
|
108668
108698
|
connectsTo?: string | string[] | undefined;
|
|
108669
|
-
name?: string | undefined;
|
|
108670
108699
|
holeDiameter?: string | number | undefined;
|
|
108671
108700
|
footprint?: _tscircuit_props.FootprintProp | undefined;
|
|
108672
108701
|
schX?: string | number | undefined;
|
|
108673
108702
|
schY?: string | number | undefined;
|
|
108703
|
+
tented?: boolean | "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | "both_sides" | undefined;
|
|
108704
|
+
pcbRotation?: string | number | undefined;
|
|
108674
108705
|
pcbX?: string | number | undefined;
|
|
108675
108706
|
pcbY?: string | number | undefined;
|
|
108676
108707
|
pcbLeftEdgeX?: string | number | undefined;
|
|
108677
108708
|
pcbRightEdgeX?: string | number | undefined;
|
|
108678
108709
|
pcbTopEdgeY?: string | number | undefined;
|
|
108679
108710
|
pcbBottomEdgeY?: string | number | undefined;
|
|
108680
|
-
relative?: boolean | undefined;
|
|
108681
108711
|
pcbOffsetX?: string | number | undefined;
|
|
108682
108712
|
pcbOffsetY?: string | number | undefined;
|
|
108683
|
-
pcbRotation?: string | number | undefined;
|
|
108684
108713
|
pcbPositionAnchor?: string | undefined;
|
|
108685
108714
|
pcbPositionMode?: "auto" | "relative_to_group_anchor" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
|
|
108686
108715
|
shouldBeOnEdgeOfBoard?: boolean | undefined;
|
|
@@ -108701,6 +108730,8 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108701
108730
|
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
108702
108731
|
} | undefined;
|
|
108703
108732
|
pcbSx?: _tscircuit_props.PcbSx | undefined;
|
|
108733
|
+
pcbRelative?: boolean | undefined;
|
|
108734
|
+
relative?: boolean | undefined;
|
|
108704
108735
|
schMarginTop?: string | number | undefined;
|
|
108705
108736
|
schMarginRight?: string | number | undefined;
|
|
108706
108737
|
schMarginBottom?: string | number | undefined;
|
|
@@ -108713,8 +108744,6 @@ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
|
|
|
108713
108744
|
defaultCapacitorOrientation?: "none" | "vertical" | undefined;
|
|
108714
108745
|
} | undefined;
|
|
108715
108746
|
schRelative?: boolean | undefined;
|
|
108716
|
-
pcbRelative?: boolean | undefined;
|
|
108717
|
-
tented?: boolean | "top_and_bottom_tented" | "top_tented" | "bottom_tented" | "exposed" | "both_sides" | undefined;
|
|
108718
108747
|
isTented?: boolean | undefined;
|
|
108719
108748
|
tentedOnTop?: boolean | undefined;
|
|
108720
108749
|
tentedOnBottom?: boolean | undefined;
|
package/dist/index.js
CHANGED
|
@@ -123,6 +123,207 @@ __export(components_exports, {
|
|
|
123
123
|
VoltageSource: () => VoltageSource
|
|
124
124
|
});
|
|
125
125
|
|
|
126
|
+
// lib/utils/cad/get-board-fold-context.ts
|
|
127
|
+
function getBoardFoldContext(pcbComponentOwner) {
|
|
128
|
+
const board = pcbComponentOwner._getBoard();
|
|
129
|
+
if (!board?.pcbFold || !board.pcb_board_id || !pcbComponentOwner.pcb_component_id)
|
|
130
|
+
return void 0;
|
|
131
|
+
const { db } = pcbComponentOwner.root;
|
|
132
|
+
const pcbBoard = db.pcb_board.get(board.pcb_board_id);
|
|
133
|
+
const pcbComponent = db.pcb_component.get(pcbComponentOwner.pcb_component_id);
|
|
134
|
+
return {
|
|
135
|
+
fold: board.pcbFold,
|
|
136
|
+
boardCenter: pcbBoard.center,
|
|
137
|
+
flatMount: pcbComponent.center
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// node_modules/@tscircuit/flex-utils/dist/index.js
|
|
142
|
+
import earcut from "earcut";
|
|
143
|
+
var EPS = 1e-7;
|
|
144
|
+
function createPcbFold(records, thickness) {
|
|
145
|
+
if (!Number.isFinite(thickness) || thickness < 0)
|
|
146
|
+
throw new Error("Board thickness must be finite and nonnegative");
|
|
147
|
+
const bends = records.map((b) => {
|
|
148
|
+
const { start, end, bend_angle: degrees, bend_radius: radius } = b;
|
|
149
|
+
const values = [start?.x, start?.y, end?.x, end?.y, degrees, radius];
|
|
150
|
+
if (values.some((v) => !Number.isFinite(v)) || radius <= thickness / 2 || !["left", "right"].includes(b.bend_side)) {
|
|
151
|
+
throw new Error(
|
|
152
|
+
`Invalid PCB bend ${b.pcb_bend_id}: finite geometry and radius greater than half the board thickness are required`
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
const length8 = Math.hypot(end.x - start.x, end.y - start.y);
|
|
156
|
+
if (length8 < EPS || Math.abs(degrees) > 180)
|
|
157
|
+
throw new Error(
|
|
158
|
+
`Unsupported PCB bend ${b.pcb_bend_id}: distinct endpoints and angles within \xB1180 degrees are required`
|
|
159
|
+
);
|
|
160
|
+
const sign = b.bend_side === "right" ? 1 : -1;
|
|
161
|
+
const nx = sign * (end.y - start.y) / length8;
|
|
162
|
+
const ny = -sign * (end.x - start.x) / length8;
|
|
163
|
+
const angle = degrees * Math.PI / 180;
|
|
164
|
+
const width = radius * Math.abs(angle);
|
|
165
|
+
const center = start.x * nx + start.y * ny;
|
|
166
|
+
return {
|
|
167
|
+
id: b.pcb_bend_id,
|
|
168
|
+
nx,
|
|
169
|
+
ny,
|
|
170
|
+
start: center - width / 2,
|
|
171
|
+
end: center + width / 2,
|
|
172
|
+
angle,
|
|
173
|
+
radius,
|
|
174
|
+
axisMin: Math.min(
|
|
175
|
+
-ny * start.x + nx * start.y,
|
|
176
|
+
-ny * end.x + nx * end.y
|
|
177
|
+
),
|
|
178
|
+
axisMax: Math.max(
|
|
179
|
+
-ny * start.x + nx * start.y,
|
|
180
|
+
-ny * end.x + nx * end.y
|
|
181
|
+
)
|
|
182
|
+
};
|
|
183
|
+
}).filter((b) => Math.abs(b.angle) > EPS);
|
|
184
|
+
const first = bends[0];
|
|
185
|
+
if (first && bends.some(
|
|
186
|
+
(b) => Math.abs(b.nx - first.nx) > EPS || Math.abs(b.ny - first.ny) > EPS
|
|
187
|
+
)) {
|
|
188
|
+
throw new Error(
|
|
189
|
+
"Folded PCB rendering currently requires parallel bends with the same moving direction"
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
bends.sort((a, b) => a.start - b.start);
|
|
193
|
+
for (let i = 1; i < bends.length; i++) {
|
|
194
|
+
if (bends[i].start < bends[i - 1].end - EPS)
|
|
195
|
+
throw new Error("Overlapping PCB bend zones are not supported");
|
|
196
|
+
}
|
|
197
|
+
const distalFirst = [...bends].reverse();
|
|
198
|
+
const transform = ({
|
|
199
|
+
p,
|
|
200
|
+
anchor,
|
|
201
|
+
direction
|
|
202
|
+
}) => {
|
|
203
|
+
let result = { ...p };
|
|
204
|
+
for (const b of distalFirst) {
|
|
205
|
+
const width = b.end - b.start;
|
|
206
|
+
const s = anchor.x * b.nx + anchor.y * b.ny - b.start;
|
|
207
|
+
const q = Math.max(0, Math.min(width, s));
|
|
208
|
+
const theta = b.angle * q / width;
|
|
209
|
+
const cos = Math.cos(theta), sin = Math.sin(theta);
|
|
210
|
+
const projected = result.x * b.nx + result.y * b.ny - (direction ? 0 : b.start);
|
|
211
|
+
const tangentX = result.x - (projected + (direction ? 0 : b.start)) * b.nx;
|
|
212
|
+
const tangentY = result.y - (projected + (direction ? 0 : b.start)) * b.ny;
|
|
213
|
+
const signedRadius = Math.sign(b.angle) * b.radius;
|
|
214
|
+
const tx = direction ? 0 : signedRadius * sin - q * cos;
|
|
215
|
+
const tz = direction ? 0 : signedRadius * (1 - cos) - q * sin;
|
|
216
|
+
const folded = projected * cos - result.z * sin + tx;
|
|
217
|
+
result = {
|
|
218
|
+
x: tangentX + (folded + (direction ? 0 : b.start)) * b.nx,
|
|
219
|
+
y: tangentY + (folded + (direction ? 0 : b.start)) * b.ny,
|
|
220
|
+
z: projected * sin + result.z * cos + tz
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return result;
|
|
224
|
+
};
|
|
225
|
+
const inverse2 = ({
|
|
226
|
+
p,
|
|
227
|
+
anchor,
|
|
228
|
+
direction
|
|
229
|
+
}) => {
|
|
230
|
+
const origin = direction ? { x: 0, y: 0, z: 0 } : transform({
|
|
231
|
+
p: { x: 0, y: 0, z: 0 },
|
|
232
|
+
anchor,
|
|
233
|
+
direction: false
|
|
234
|
+
});
|
|
235
|
+
const d = { x: p.x - origin.x, y: p.y - origin.y, z: p.z - origin.z };
|
|
236
|
+
const axes2 = [
|
|
237
|
+
{ x: 1, y: 0, z: 0 },
|
|
238
|
+
{ x: 0, y: 1, z: 0 },
|
|
239
|
+
{ x: 0, y: 0, z: 1 }
|
|
240
|
+
].map((v) => transform({ p: v, anchor, direction: true }));
|
|
241
|
+
const dot = (v) => v.x * d.x + v.y * d.y + v.z * d.z;
|
|
242
|
+
return { x: dot(axes2[0]), y: dot(axes2[1]), z: dot(axes2[2]) };
|
|
243
|
+
};
|
|
244
|
+
return {
|
|
245
|
+
bends,
|
|
246
|
+
inversePoint: (p, anchor) => inverse2({ p, anchor, direction: false }),
|
|
247
|
+
inverseDirection: (p, anchor) => inverse2({ p, anchor, direction: true }),
|
|
248
|
+
point: (p, anchor = p) => transform({ p, anchor, direction: false }),
|
|
249
|
+
direction: (p, anchor) => transform({ p, anchor, direction: true }),
|
|
250
|
+
assertRigid(points, label) {
|
|
251
|
+
for (const b of bends) {
|
|
252
|
+
const ds = points.map((p) => p.x * b.nx + p.y * b.ny);
|
|
253
|
+
if (Math.max(...ds) > b.start + EPS && Math.min(...ds) < b.end - EPS)
|
|
254
|
+
throw new Error(`${label} intersects PCB bend zone ${b.id}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
var axes = [
|
|
260
|
+
{ x: 1, y: 0, z: 0 },
|
|
261
|
+
{ x: 0, y: 1, z: 0 },
|
|
262
|
+
{ x: 0, y: 0, z: 1 }
|
|
263
|
+
];
|
|
264
|
+
function rotateVector(v, degrees) {
|
|
265
|
+
const [x, y, z18] = [degrees.x, degrees.y, degrees.z].map(
|
|
266
|
+
(a2) => a2 * Math.PI / 180
|
|
267
|
+
);
|
|
268
|
+
const a = {
|
|
269
|
+
x: Math.cos(z18) * v.x - Math.sin(z18) * v.y,
|
|
270
|
+
y: Math.sin(z18) * v.x + Math.cos(z18) * v.y,
|
|
271
|
+
z: v.z
|
|
272
|
+
};
|
|
273
|
+
const b = {
|
|
274
|
+
x: Math.cos(y) * a.x + Math.sin(y) * a.z,
|
|
275
|
+
y: a.y,
|
|
276
|
+
z: -Math.sin(y) * a.x + Math.cos(y) * a.z
|
|
277
|
+
};
|
|
278
|
+
return {
|
|
279
|
+
x: b.x,
|
|
280
|
+
y: Math.cos(x) * b.y - Math.sin(x) * b.z,
|
|
281
|
+
z: Math.sin(x) * b.y + Math.cos(x) * b.z
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
function rotationFromAxes([a, b, c]) {
|
|
285
|
+
const y = Math.asin(Math.max(-1, Math.min(1, c.x)));
|
|
286
|
+
const regular = Math.abs(c.x) < 1 - 1e-12;
|
|
287
|
+
return {
|
|
288
|
+
x: (regular ? Math.atan2(-c.y, c.z) : Math.atan2(b.z, b.y)) * 180 / Math.PI,
|
|
289
|
+
y: y * 180 / Math.PI,
|
|
290
|
+
z: (regular ? Math.atan2(-b.x, a.x) : 0) * 180 / Math.PI
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
function transformCadComponentPlacement({
|
|
294
|
+
cadComponentPlacement,
|
|
295
|
+
foldPcbs
|
|
296
|
+
}, context) {
|
|
297
|
+
if (cadComponentPlacement.is_on_folded_board === true === foldPcbs)
|
|
298
|
+
return cadComponentPlacement;
|
|
299
|
+
const { fold, boardCenter, flatMount } = context;
|
|
300
|
+
const anchor = {
|
|
301
|
+
x: flatMount.x - boardCenter.x,
|
|
302
|
+
y: flatMount.y - boardCenter.y,
|
|
303
|
+
z: 0
|
|
304
|
+
};
|
|
305
|
+
fold.assertRigid([anchor], "CAD mount");
|
|
306
|
+
const point6 = {
|
|
307
|
+
x: cadComponentPlacement.position.x - boardCenter.x,
|
|
308
|
+
y: cadComponentPlacement.position.y - boardCenter.y,
|
|
309
|
+
z: cadComponentPlacement.position.z
|
|
310
|
+
};
|
|
311
|
+
const direction = foldPcbs ? fold.direction : fold.inverseDirection;
|
|
312
|
+
const transformed = foldPcbs ? fold.point(point6, anchor) : fold.inversePoint(point6, anchor);
|
|
313
|
+
const rotation5 = cadComponentPlacement.rotation ?? context.defaultRotation ?? { x: 0, y: 0, z: 0 };
|
|
314
|
+
const basis = axes.map((v) => direction(rotateVector(v, rotation5), anchor));
|
|
315
|
+
return {
|
|
316
|
+
...cadComponentPlacement,
|
|
317
|
+
position: {
|
|
318
|
+
x: transformed.x + boardCenter.x,
|
|
319
|
+
y: transformed.y + boardCenter.y,
|
|
320
|
+
z: transformed.z
|
|
321
|
+
},
|
|
322
|
+
rotation: rotationFromAxes(basis),
|
|
323
|
+
is_on_folded_board: foldPcbs
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
|
|
126
327
|
// lib/components/base-components/NormalComponent/NormalComponent.ts
|
|
127
328
|
import { fp } from "@tscircuit/footprinter";
|
|
128
329
|
import { normalizeDegrees as normalizeDegrees5 } from "@tscircuit/math-utils";
|
|
@@ -13546,7 +13747,7 @@ var CadModel = class extends PrimitiveComponent2 {
|
|
|
13546
13747
|
const transformed = this._addCachebustToModelUrl(props.stepUrl);
|
|
13547
13748
|
if (transformed) urlProps.model_step_url = transformed;
|
|
13548
13749
|
}
|
|
13549
|
-
|
|
13750
|
+
let cadComponentPlacement = {
|
|
13550
13751
|
position: {
|
|
13551
13752
|
x: bounds.center.x + Number(positionOffset.x),
|
|
13552
13753
|
y: bounds.center.y + Number(positionOffset.y),
|
|
@@ -13558,7 +13759,17 @@ var CadModel = class extends PrimitiveComponent2 {
|
|
|
13558
13759
|
z: normalizeDegrees4(
|
|
13559
13760
|
layer === "bottom" ? -(accumulatedRotation + Number(rotationOffset.z)) : accumulatedRotation + Number(rotationOffset.z)
|
|
13560
13761
|
)
|
|
13561
|
-
}
|
|
13762
|
+
}
|
|
13763
|
+
};
|
|
13764
|
+
const boardFoldContext = getBoardFoldContext(parent);
|
|
13765
|
+
if (boardFoldContext) {
|
|
13766
|
+
cadComponentPlacement = transformCadComponentPlacement(
|
|
13767
|
+
{ cadComponentPlacement, foldPcbs: true },
|
|
13768
|
+
boardFoldContext
|
|
13769
|
+
);
|
|
13770
|
+
}
|
|
13771
|
+
const cadComponent = db.cad_component.insert({
|
|
13772
|
+
...cadComponentPlacement,
|
|
13562
13773
|
pcb_component_id: parent.pcb_component_id,
|
|
13563
13774
|
model_board_normal_direction: props.modelBoardNormalDirection,
|
|
13564
13775
|
model_origin_alignment: "center_of_component_on_board_surface",
|
|
@@ -13570,7 +13781,7 @@ var CadModel = class extends PrimitiveComponent2 {
|
|
|
13570
13781
|
show_as_translucent_model: props.showAsTranslucentModel ?? parent._parsedProps.showAsTranslucentModel,
|
|
13571
13782
|
...urlProps
|
|
13572
13783
|
});
|
|
13573
|
-
this.cad_component_id =
|
|
13784
|
+
this.cad_component_id = cadComponent.cad_component_id;
|
|
13574
13785
|
}
|
|
13575
13786
|
_findParentWithPcbComponent() {
|
|
13576
13787
|
let p = this.parent;
|
|
@@ -16654,7 +16865,7 @@ var NormalComponent = class extends PrimitiveComponent2 {
|
|
|
16654
16865
|
const totalRotation = pcbComponent?.position_mode === "packed" ? pcbComponent.rotation ?? preLayoutRotation : preLayoutRotation;
|
|
16655
16866
|
const isBottomLayer = computedLayer === "bottom";
|
|
16656
16867
|
if (!cadModel && !footprintIsFootprinterString) {
|
|
16657
|
-
|
|
16868
|
+
let cadComponentPlacement2 = {
|
|
16658
16869
|
position: {
|
|
16659
16870
|
x: bounds.center.x,
|
|
16660
16871
|
y: bounds.center.y,
|
|
@@ -16664,7 +16875,17 @@ var NormalComponent = class extends PrimitiveComponent2 {
|
|
|
16664
16875
|
x: 0,
|
|
16665
16876
|
y: isBottomLayer ? 180 : 0,
|
|
16666
16877
|
z: normalizeDegrees5(isBottomLayer ? -totalRotation : totalRotation)
|
|
16667
|
-
}
|
|
16878
|
+
}
|
|
16879
|
+
};
|
|
16880
|
+
const boardFoldContext2 = getBoardFoldContext(this);
|
|
16881
|
+
if (boardFoldContext2) {
|
|
16882
|
+
cadComponentPlacement2 = transformCadComponentPlacement(
|
|
16883
|
+
{ cadComponentPlacement: cadComponentPlacement2, foldPcbs: true },
|
|
16884
|
+
boardFoldContext2
|
|
16885
|
+
);
|
|
16886
|
+
}
|
|
16887
|
+
const cadComponent2 = db.cad_component.insert({
|
|
16888
|
+
...cadComponentPlacement2,
|
|
16668
16889
|
pcb_component_id: this.pcb_component_id,
|
|
16669
16890
|
source_component_id: this.source_component_id,
|
|
16670
16891
|
model_origin_alignment: "center_of_component_on_board_surface",
|
|
@@ -16672,7 +16893,7 @@ var NormalComponent = class extends PrimitiveComponent2 {
|
|
|
16672
16893
|
show_as_bounding_box: true,
|
|
16673
16894
|
show_as_translucent_model: this._parsedProps.showAsTranslucentModel
|
|
16674
16895
|
});
|
|
16675
|
-
this.cad_component_id =
|
|
16896
|
+
this.cad_component_id = cadComponent2.cad_component_id;
|
|
16676
16897
|
return;
|
|
16677
16898
|
}
|
|
16678
16899
|
const rotationWithOffset = totalRotation + (rotationOffset.z ?? 0);
|
|
@@ -16681,8 +16902,7 @@ var NormalComponent = class extends PrimitiveComponent2 {
|
|
|
16681
16902
|
if (!cadModel && footprintIsFootprinterString) {
|
|
16682
16903
|
footprinterStringForCadComponent = footprintString;
|
|
16683
16904
|
}
|
|
16684
|
-
|
|
16685
|
-
// TODO z maybe depends on layer
|
|
16905
|
+
let cadComponentPlacement = {
|
|
16686
16906
|
position: {
|
|
16687
16907
|
x: bounds.center.x + positionOffset.x,
|
|
16688
16908
|
y: bounds.center.y + positionOffset.y,
|
|
@@ -16692,7 +16912,18 @@ var NormalComponent = class extends PrimitiveComponent2 {
|
|
|
16692
16912
|
x: rotationOffset.x,
|
|
16693
16913
|
y: rotationOffset.y + (isBottomLayer ? 180 : 0),
|
|
16694
16914
|
z: normalizeDegrees5(isBottomLayer ? -cadRotationZ : cadRotationZ)
|
|
16695
|
-
}
|
|
16915
|
+
}
|
|
16916
|
+
};
|
|
16917
|
+
const boardFoldContext = getBoardFoldContext(this);
|
|
16918
|
+
if (boardFoldContext) {
|
|
16919
|
+
cadComponentPlacement = transformCadComponentPlacement(
|
|
16920
|
+
{ cadComponentPlacement, foldPcbs: true },
|
|
16921
|
+
boardFoldContext
|
|
16922
|
+
);
|
|
16923
|
+
}
|
|
16924
|
+
const cadComponent = db.cad_component.insert({
|
|
16925
|
+
// TODO z maybe depends on layer
|
|
16926
|
+
...cadComponentPlacement,
|
|
16696
16927
|
pcb_component_id: this.pcb_component_id,
|
|
16697
16928
|
source_component_id: this.source_component_id,
|
|
16698
16929
|
model_stl_url: "stlUrl" in (cadModel ?? {}) ? this._addCachebustToModelUrl(cadModel.stlUrl) : void 0,
|
|
@@ -16715,7 +16946,7 @@ var NormalComponent = class extends PrimitiveComponent2 {
|
|
|
16715
16946
|
footprinter_string: footprinterStringForCadComponent,
|
|
16716
16947
|
show_as_translucent_model: this._parsedProps.showAsTranslucentModel
|
|
16717
16948
|
});
|
|
16718
|
-
this.cad_component_id =
|
|
16949
|
+
this.cad_component_id = cadComponent.cad_component_id;
|
|
16719
16950
|
}
|
|
16720
16951
|
_addCachebustToModelUrl(url) {
|
|
16721
16952
|
if (!url || !url.includes("modelcdn.tscircuit.com")) return url;
|
|
@@ -40875,7 +41106,7 @@ function* repairPeripheralBusLengthsSteps(params) {
|
|
|
40875
41106
|
}
|
|
40876
41107
|
|
|
40877
41108
|
// node_modules/@tscircuit/fanout-solver/lib/route-split-perimeter-source-escapes.ts
|
|
40878
|
-
var
|
|
41109
|
+
var EPS2 = 1e-7;
|
|
40879
41110
|
function chamferSplitPerimeter(points, width) {
|
|
40880
41111
|
const ps = points.filter((p, i) => !i || distance9(p, points[i - 1]) > 1e-9);
|
|
40881
41112
|
return ps.flatMap((p, i) => {
|
|
@@ -40911,8 +41142,8 @@ function orderedPhysicalSubset(paths, params, center) {
|
|
|
40911
41142
|
let mask = 0;
|
|
40912
41143
|
paths.forEach((p, i) => {
|
|
40913
41144
|
if (p.connectionIndex === connection.connectionIndex) return;
|
|
40914
|
-
if (distance9(v.point, p.exitPoint) < d + c -
|
|
40915
|
-
(t) => distancePointToSegment(v.point, t.start, t.end) < d / 2 + w / 2 + c -
|
|
41145
|
+
if (distance9(v.point, p.exitPoint) < d + c - EPS2 || distancePointToSegment(p.exitPoint, s.start, s.end) < d / 2 + w / 2 + c - EPS2 || p.segments.some(
|
|
41146
|
+
(t) => distancePointToSegment(v.point, t.start, t.end) < d / 2 + w / 2 + c - EPS2 || !segmentsAreClear(s, t, c)
|
|
40916
41147
|
))
|
|
40917
41148
|
mask |= 1 << i;
|
|
40918
41149
|
});
|
|
@@ -41044,23 +41275,23 @@ function* routeSplitPerimeterSourceEscapesSteps(params) {
|
|
|
41044
41275
|
const conn = byIndex.get(p.connectionIndex).connection;
|
|
41045
41276
|
if (p.segments.some(
|
|
41046
41277
|
(s) => [s.start, s.end].some(
|
|
41047
|
-
(q) => q.x < bus.sharedBoundary.minX -
|
|
41278
|
+
(q) => q.x < bus.sharedBoundary.minX - EPS2 || q.x > bus.sharedBoundary.maxX + EPS2 || q.y < bus.sharedBoundary.minY - EPS2 || q.y > bus.sharedBoundary.maxY + EPS2
|
|
41048
41279
|
)
|
|
41049
41280
|
))
|
|
41050
41281
|
return false;
|
|
41051
41282
|
for (const o of srj.obstacles) {
|
|
41052
|
-
if (o.layers.some((l) => p.via.spanLayers.includes(l)) && distancePointToObstacle(p.via.center, o) < d / 2 + c -
|
|
41283
|
+
if (o.layers.some((l) => p.via.spanLayers.includes(l)) && distancePointToObstacle(p.via.center, o) < d / 2 + c - EPS2)
|
|
41053
41284
|
return false;
|
|
41054
41285
|
if (o !== conn.sourceObstacle && p.segments.some(
|
|
41055
|
-
(s) => o.layers.includes(s.layer) && distanceSegmentToObstacle(s, o) < w / 2 + c -
|
|
41286
|
+
(s) => o.layers.includes(s.layer) && distanceSegmentToObstacle(s, o) < w / 2 + c - EPS2
|
|
41056
41287
|
))
|
|
41057
41288
|
return false;
|
|
41058
41289
|
}
|
|
41059
41290
|
return others.every(
|
|
41060
|
-
(q) => q.connectionIndex === p.connectionIndex || distance9(p.via.center, q.via.center) >= d + c -
|
|
41061
|
-
(s) => distancePointToSegment(q.via.center, s.start, s.end) >= d / 2 + w / 2 + c -
|
|
41291
|
+
(q) => q.connectionIndex === p.connectionIndex || distance9(p.via.center, q.via.center) >= d + c - EPS2 && p.segments.every(
|
|
41292
|
+
(s) => distancePointToSegment(q.via.center, s.start, s.end) >= d / 2 + w / 2 + c - EPS2 && q.segments.every((t) => segmentsAreClear(s, t, c))
|
|
41062
41293
|
) && q.segments.every(
|
|
41063
|
-
(s) => distancePointToSegment(p.via.center, s.start, s.end) >= d / 2 + w / 2 + c -
|
|
41294
|
+
(s) => distancePointToSegment(p.via.center, s.start, s.end) >= d / 2 + w / 2 + c - EPS2
|
|
41064
41295
|
)
|
|
41065
41296
|
);
|
|
41066
41297
|
};
|
|
@@ -41111,7 +41342,7 @@ function* routeSplitPerimeterSourceEscapesSteps(params) {
|
|
|
41111
41342
|
const suffix = [p];
|
|
41112
41343
|
let last = p.exitPoint.x;
|
|
41113
41344
|
for (const q of byTarget.slice(byTarget.indexOf(p) + 1))
|
|
41114
|
-
if (q.exitPoint.x > last + pitch -
|
|
41345
|
+
if (q.exitPoint.x > last + pitch - EPS2) {
|
|
41115
41346
|
suffix.push(q);
|
|
41116
41347
|
last = q.exitPoint.x;
|
|
41117
41348
|
}
|
|
@@ -41160,7 +41391,7 @@ function* routeSplitPerimeterSourceEscapesSteps(params) {
|
|
|
41160
41391
|
x: conn.sourcePoint.x + sx * padPitch / 2,
|
|
41161
41392
|
y: conn.sourcePoint.y + padPitch / 2
|
|
41162
41393
|
};
|
|
41163
|
-
if (point6.x < before + pitch -
|
|
41394
|
+
if (point6.x < before + pitch - EPS2 || point6.x > after - pitch + EPS2)
|
|
41164
41395
|
continue;
|
|
41165
41396
|
const ps = [
|
|
41166
41397
|
conn.sourcePoint,
|
|
@@ -41180,7 +41411,7 @@ function* routeSplitPerimeterSourceEscapesSteps(params) {
|
|
|
41180
41411
|
...fixed.map((p) => target(byIndex.get(p.connectionIndex).connection).y)
|
|
41181
41412
|
);
|
|
41182
41413
|
for (const p of paths.filter(
|
|
41183
|
-
(p2) => Math.abs(p2.exitPoint.x - sourceBoundary.minX) <
|
|
41414
|
+
(p2) => Math.abs(p2.exitPoint.x - sourceBoundary.minX) < EPS2 && target(byIndex.get(p2.connectionIndex).connection).y < firstTarget
|
|
41184
41415
|
).sort(
|
|
41185
41416
|
(a, b) => target(byIndex.get(b.connectionIndex).connection).y - target(byIndex.get(a.connectionIndex).connection).y
|
|
41186
41417
|
)) {
|
|
@@ -41518,7 +41749,7 @@ function* routeSplitPerimeterBusSteps(params) {
|
|
|
41518
41749
|
const plans = [...remote, separator, inner, ...tops];
|
|
41519
41750
|
if (plans.length !== bus.connections.length) return null;
|
|
41520
41751
|
const lengths = plans.map((p) => p.length);
|
|
41521
|
-
if (bus.maxLengthSkew !== void 0 && Math.max(...lengths) - Math.min(...lengths) > bus.maxLengthSkew +
|
|
41752
|
+
if (bus.maxLengthSkew !== void 0 && Math.max(...lengths) - Math.min(...lengths) > bus.maxLengthSkew + EPS3)
|
|
41522
41753
|
return null;
|
|
41523
41754
|
if (!fanoutPlansAreClear({
|
|
41524
41755
|
plans,
|
|
@@ -41533,16 +41764,16 @@ function* routeSplitPerimeterBusSteps(params) {
|
|
|
41533
41764
|
for (const other of sourceEscapes) {
|
|
41534
41765
|
if (p.connectionIndex === other.connectionIndex) continue;
|
|
41535
41766
|
for (const s of p.segments) {
|
|
41536
|
-
if (other.via.spanLayers.includes(s.layer) && distancePointToSegment(other.via.center, s.start, s.end) < other.via.diameter / 2 + s.width / 2 + c -
|
|
41767
|
+
if (other.via.spanLayers.includes(s.layer) && distancePointToSegment(other.via.center, s.start, s.end) < other.via.diameter / 2 + s.width / 2 + c - EPS3)
|
|
41537
41768
|
return null;
|
|
41538
41769
|
for (const t of other.segments)
|
|
41539
|
-
if (s.layer === t.layer && distanceSegmentToSegment(s.start, s.end, t.start, t.end) < (s.width + t.width) / 2 + c -
|
|
41770
|
+
if (s.layer === t.layer && distanceSegmentToSegment(s.start, s.end, t.start, t.end) < (s.width + t.width) / 2 + c - EPS3)
|
|
41540
41771
|
return null;
|
|
41541
41772
|
}
|
|
41542
41773
|
}
|
|
41543
41774
|
return plans;
|
|
41544
41775
|
}
|
|
41545
|
-
var
|
|
41776
|
+
var EPS3 = 1e-7;
|
|
41546
41777
|
|
|
41547
41778
|
// node_modules/@tscircuit/fanout-solver/lib/route-shallow-split-perimeter-bus.ts
|
|
41548
41779
|
var EPSILON22 = 1e-7;
|
|
@@ -63788,7 +64019,7 @@ function Group_getRoutingPhasePlans(group) {
|
|
|
63788
64019
|
var package_default = {
|
|
63789
64020
|
name: "@tscircuit/core",
|
|
63790
64021
|
type: "module",
|
|
63791
|
-
version: "0.0.
|
|
64022
|
+
version: "0.0.1971",
|
|
63792
64023
|
types: "dist/index.d.ts",
|
|
63793
64024
|
main: "dist/index.js",
|
|
63794
64025
|
module: "dist/index.js",
|
|
@@ -63830,6 +64061,7 @@ var package_default = {
|
|
|
63830
64061
|
"@tscircuit/copper-pour-solver": "^0.0.57",
|
|
63831
64062
|
"@tscircuit/create-fdm-enclosure": "0.0.4",
|
|
63832
64063
|
"@tscircuit/fanout-solver": "0.0.78",
|
|
64064
|
+
"@tscircuit/flex-utils": "https://jscdn.tscircuit.com/@tscircuit/flex-utils/0.0.5.tgz",
|
|
63833
64065
|
"@tscircuit/footprinter": "^0.0.426",
|
|
63834
64066
|
"@tscircuit/image-utils": "^0.0.8",
|
|
63835
64067
|
"@tscircuit/implicit-copper-pour-solver": "github:tscircuit/implicit-copper-pour-solver#a5cbbda0cd65fd4707c5c1af25779837c25aba92",
|
|
@@ -63858,7 +64090,7 @@ var package_default = {
|
|
|
63858
64090
|
"bun-match-svg": "0.0.12",
|
|
63859
64091
|
"calculate-elbow": "^0.0.12",
|
|
63860
64092
|
"chokidar-cli": "^3.0.0",
|
|
63861
|
-
"circuit-json": "^0.0.
|
|
64093
|
+
"circuit-json": "^0.0.500",
|
|
63862
64094
|
"circuit-json-to-bpc": "^0.0.13",
|
|
63863
64095
|
"circuit-json-to-connectivity-map": "^0.0.30",
|
|
63864
64096
|
"circuit-json-to-gltf": "^0.0.133",
|
|
@@ -63922,7 +64154,7 @@ var package_default = {
|
|
|
63922
64154
|
overrides: {
|
|
63923
64155
|
"@tscircuit/circuit-json-util": "^0.0.116",
|
|
63924
64156
|
"@tscircuit/props": "^0.0.666",
|
|
63925
|
-
"circuit-json": "^0.0.
|
|
64157
|
+
"circuit-json": "^0.0.500"
|
|
63926
64158
|
}
|
|
63927
64159
|
};
|
|
63928
64160
|
|
|
@@ -69362,6 +69594,7 @@ var getRoundedRectOutline = (width, height, radius) => {
|
|
|
69362
69594
|
return outline;
|
|
69363
69595
|
};
|
|
69364
69596
|
var Board = class extends Group5 {
|
|
69597
|
+
pcbFold;
|
|
69365
69598
|
pcb_board_id = null;
|
|
69366
69599
|
source_board_id = null;
|
|
69367
69600
|
_drcChecksComplete = false;
|
|
@@ -69380,6 +69613,13 @@ var Board = class extends Group5 {
|
|
|
69380
69613
|
if (castellatedHole.trace) this.add(castellatedHole.trace);
|
|
69381
69614
|
}
|
|
69382
69615
|
}
|
|
69616
|
+
doInitialPcbFlexRender() {
|
|
69617
|
+
if (!this.pcb_board_id) return;
|
|
69618
|
+
const bends = this.root.db.pcb_bend.list().filter(
|
|
69619
|
+
(bend) => bend.pcb_board_id === this.pcb_board_id
|
|
69620
|
+
);
|
|
69621
|
+
this.pcbFold = bends.length ? createPcbFold(bends, this.boardThickness) : void 0;
|
|
69622
|
+
}
|
|
69383
69623
|
get isSubcircuit() {
|
|
69384
69624
|
return true;
|
|
69385
69625
|
}
|
|
@@ -73358,7 +73598,7 @@ var placeBreakoutGates = ({
|
|
|
73358
73598
|
).length
|
|
73359
73599
|
)
|
|
73360
73600
|
);
|
|
73361
|
-
const { vertical, axes } = makeGateAxes({
|
|
73601
|
+
const { vertical, axes: axes2 } = makeGateAxes({
|
|
73362
73602
|
regions,
|
|
73363
73603
|
connections,
|
|
73364
73604
|
spacing: boundaryPointSpacing,
|
|
@@ -73373,7 +73613,7 @@ var placeBreakoutGates = ({
|
|
|
73373
73613
|
layer,
|
|
73374
73614
|
...pointOnEdge(
|
|
73375
73615
|
region,
|
|
73376
|
-
|
|
73616
|
+
axes2[slotIndex] + layerOffsets[layer],
|
|
73377
73617
|
vertical
|
|
73378
73618
|
)
|
|
73379
73619
|
}))
|
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.1972",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"@tscircuit/copper-pour-solver": "^0.0.57",
|
|
44
44
|
"@tscircuit/create-fdm-enclosure": "0.0.4",
|
|
45
45
|
"@tscircuit/fanout-solver": "0.0.78",
|
|
46
|
+
"@tscircuit/flex-utils": "https://jscdn.tscircuit.com/@tscircuit/flex-utils/0.0.5.tgz",
|
|
46
47
|
"@tscircuit/footprinter": "^0.0.426",
|
|
47
48
|
"@tscircuit/image-utils": "^0.0.8",
|
|
48
49
|
"@tscircuit/implicit-copper-pour-solver": "github:tscircuit/implicit-copper-pour-solver#a5cbbda0cd65fd4707c5c1af25779837c25aba92",
|
|
@@ -71,7 +72,7 @@
|
|
|
71
72
|
"bun-match-svg": "0.0.12",
|
|
72
73
|
"calculate-elbow": "^0.0.12",
|
|
73
74
|
"chokidar-cli": "^3.0.0",
|
|
74
|
-
"circuit-json": "^0.0.
|
|
75
|
+
"circuit-json": "^0.0.500",
|
|
75
76
|
"circuit-json-to-bpc": "^0.0.13",
|
|
76
77
|
"circuit-json-to-connectivity-map": "^0.0.30",
|
|
77
78
|
"circuit-json-to-gltf": "^0.0.133",
|
|
@@ -135,6 +136,6 @@
|
|
|
135
136
|
"overrides": {
|
|
136
137
|
"@tscircuit/circuit-json-util": "^0.0.116",
|
|
137
138
|
"@tscircuit/props": "^0.0.666",
|
|
138
|
-
"circuit-json": "^0.0.
|
|
139
|
+
"circuit-json": "^0.0.500"
|
|
139
140
|
}
|
|
140
141
|
}
|