@tscircuit/props 0.0.61 → 0.0.63
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 +152 -50
- package/dist/index.js +54 -28
- package/dist/index.js.map +1 -1
- package/lib/components/constraint.ts +108 -44
- package/lib/index.ts +2 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -3685,103 +3685,199 @@ type InferredConstrainedLayoutProps = z.input<typeof constrainedLayoutProps>;
|
|
|
3685
3685
|
|
|
3686
3686
|
type PcbXDistConstraint = {
|
|
3687
3687
|
pcb?: true;
|
|
3688
|
-
|
|
3689
|
-
|
|
3688
|
+
xDist: Distance;
|
|
3689
|
+
/**
|
|
3690
|
+
* Selector for left component, e.g. ".U1" or ".R1", you can also specify the
|
|
3691
|
+
* edge or center of the component e.g. ".R1 leftedge", ".R1 center"
|
|
3692
|
+
*/
|
|
3690
3693
|
left: string;
|
|
3694
|
+
/**
|
|
3695
|
+
* Selector for right component, e.g. ".U1" or ".R1", you can also specify the
|
|
3696
|
+
* edge or center of the component e.g. ".R1 leftedge", ".R1 center"
|
|
3697
|
+
*/
|
|
3691
3698
|
right: string;
|
|
3699
|
+
/**
|
|
3700
|
+
* If true, the provided distance is the distance between the closest edges of
|
|
3701
|
+
* the left and right components
|
|
3702
|
+
*/
|
|
3692
3703
|
edgeToEdge?: true;
|
|
3704
|
+
/**
|
|
3705
|
+
* If true, the provided distance is the distance between the centers of the
|
|
3706
|
+
* left and right components
|
|
3707
|
+
*/
|
|
3693
3708
|
centerToCenter?: true;
|
|
3694
|
-
fromLeftEdge?: true;
|
|
3695
|
-
fromLeftCenter?: true;
|
|
3696
|
-
toRightEdge?: true;
|
|
3697
|
-
toRightCenter?: true;
|
|
3698
3709
|
};
|
|
3699
3710
|
type PcbYDistConstraint = {
|
|
3700
3711
|
pcb?: true;
|
|
3701
|
-
|
|
3702
|
-
|
|
3712
|
+
yDist: Distance;
|
|
3713
|
+
/**
|
|
3714
|
+
* Selector for top component, e.g. ".U1" or ".R1", you can also specify the
|
|
3715
|
+
* edge or center of the component e.g. ".R1 topedge", ".R1 center"
|
|
3716
|
+
*/
|
|
3703
3717
|
top: string;
|
|
3718
|
+
/**
|
|
3719
|
+
* Selector for bottom component, e.g. ".U1" or ".R1", you can also specify the
|
|
3720
|
+
* edge or center of the component e.g. ".R1 bottomedge", ".R1 center"
|
|
3721
|
+
*/
|
|
3704
3722
|
bottom: string;
|
|
3705
3723
|
edgeToEdge?: true;
|
|
3706
3724
|
centerToCenter?: true;
|
|
3707
|
-
fromTopEdge?: true;
|
|
3708
|
-
fromTopCenter?: true;
|
|
3709
|
-
toBottomEdge?: true;
|
|
3710
|
-
toBottomCenter?: true;
|
|
3711
3725
|
};
|
|
3712
|
-
type
|
|
3726
|
+
type PcbSameYConstraint = {
|
|
3727
|
+
pcb?: true;
|
|
3728
|
+
sameY?: true;
|
|
3729
|
+
/**
|
|
3730
|
+
* Selector for components, e.g. [".U1", ".R1"], you can also specify the
|
|
3731
|
+
* edge or center of the component e.g. [".R1 leftedge", ".U1 center"]
|
|
3732
|
+
*/
|
|
3733
|
+
for: string[];
|
|
3734
|
+
};
|
|
3735
|
+
type PcbSameXConstraint = {
|
|
3736
|
+
pcb?: true;
|
|
3737
|
+
sameX?: true;
|
|
3738
|
+
/**
|
|
3739
|
+
* Selector for components, e.g. [".U1", ".R1"], you can also specify the
|
|
3740
|
+
* edge or center of the component e.g. [".R1 leftedge", ".U1 center"]
|
|
3741
|
+
*/
|
|
3742
|
+
for: string[];
|
|
3743
|
+
};
|
|
3744
|
+
type ConstraintProps = PcbXDistConstraint | PcbYDistConstraint | PcbSameYConstraint | PcbSameXConstraint;
|
|
3745
|
+
declare const pcbXDistConstraintProps: z.ZodObject<{
|
|
3746
|
+
pcb: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3747
|
+
xDist: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
3748
|
+
left: z.ZodString;
|
|
3749
|
+
right: z.ZodString;
|
|
3750
|
+
edgeToEdge: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3751
|
+
centerToCenter: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3752
|
+
}, "strip", z.ZodTypeAny, {
|
|
3753
|
+
left: string;
|
|
3754
|
+
right: string;
|
|
3755
|
+
xDist: number;
|
|
3756
|
+
pcb?: true | undefined;
|
|
3757
|
+
edgeToEdge?: true | undefined;
|
|
3758
|
+
centerToCenter?: true | undefined;
|
|
3759
|
+
}, {
|
|
3760
|
+
left: string;
|
|
3761
|
+
right: string;
|
|
3762
|
+
xDist: string | number;
|
|
3763
|
+
pcb?: true | undefined;
|
|
3764
|
+
edgeToEdge?: true | undefined;
|
|
3765
|
+
centerToCenter?: true | undefined;
|
|
3766
|
+
}>;
|
|
3767
|
+
declare const pcbYDistConstraintProps: z.ZodObject<{
|
|
3768
|
+
pcb: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3769
|
+
yDist: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
3770
|
+
top: z.ZodString;
|
|
3771
|
+
bottom: z.ZodString;
|
|
3772
|
+
edgeToEdge: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3773
|
+
centerToCenter: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3774
|
+
}, "strip", z.ZodTypeAny, {
|
|
3775
|
+
top: string;
|
|
3776
|
+
bottom: string;
|
|
3777
|
+
yDist: number;
|
|
3778
|
+
pcb?: true | undefined;
|
|
3779
|
+
edgeToEdge?: true | undefined;
|
|
3780
|
+
centerToCenter?: true | undefined;
|
|
3781
|
+
}, {
|
|
3782
|
+
top: string;
|
|
3783
|
+
bottom: string;
|
|
3784
|
+
yDist: string | number;
|
|
3785
|
+
pcb?: true | undefined;
|
|
3786
|
+
edgeToEdge?: true | undefined;
|
|
3787
|
+
centerToCenter?: true | undefined;
|
|
3788
|
+
}>;
|
|
3789
|
+
declare const pcbSameYConstraintProps: z.ZodObject<{
|
|
3790
|
+
pcb: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3791
|
+
sameY: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3792
|
+
for: z.ZodArray<z.ZodString, "many">;
|
|
3793
|
+
}, "strip", z.ZodTypeAny, {
|
|
3794
|
+
for: string[];
|
|
3795
|
+
pcb?: true | undefined;
|
|
3796
|
+
sameY?: true | undefined;
|
|
3797
|
+
}, {
|
|
3798
|
+
for: string[];
|
|
3799
|
+
pcb?: true | undefined;
|
|
3800
|
+
sameY?: true | undefined;
|
|
3801
|
+
}>;
|
|
3802
|
+
declare const pcbSameXConstraintProps: z.ZodObject<{
|
|
3803
|
+
pcb: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3804
|
+
sameX: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3805
|
+
for: z.ZodArray<z.ZodString, "many">;
|
|
3806
|
+
}, "strip", z.ZodTypeAny, {
|
|
3807
|
+
for: string[];
|
|
3808
|
+
pcb?: true | undefined;
|
|
3809
|
+
sameX?: true | undefined;
|
|
3810
|
+
}, {
|
|
3811
|
+
for: string[];
|
|
3812
|
+
pcb?: true | undefined;
|
|
3813
|
+
sameX?: true | undefined;
|
|
3814
|
+
}>;
|
|
3713
3815
|
declare const constraintProps: z.ZodUnion<[z.ZodObject<{
|
|
3714
3816
|
pcb: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3715
|
-
|
|
3716
|
-
xdist: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
3817
|
+
xDist: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
3717
3818
|
left: z.ZodString;
|
|
3718
3819
|
right: z.ZodString;
|
|
3719
3820
|
edgeToEdge: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3720
3821
|
centerToCenter: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3721
|
-
fromLeftEdge: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3722
|
-
fromLeftCenter: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3723
|
-
toRightEdge: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3724
|
-
toRightCenter: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3725
3822
|
}, "strip", z.ZodTypeAny, {
|
|
3726
3823
|
left: string;
|
|
3727
3824
|
right: string;
|
|
3728
|
-
|
|
3729
|
-
type?: "xdist" | undefined;
|
|
3825
|
+
xDist: number;
|
|
3730
3826
|
pcb?: true | undefined;
|
|
3731
3827
|
edgeToEdge?: true | undefined;
|
|
3732
3828
|
centerToCenter?: true | undefined;
|
|
3733
|
-
fromLeftEdge?: true | undefined;
|
|
3734
|
-
fromLeftCenter?: true | undefined;
|
|
3735
|
-
toRightEdge?: true | undefined;
|
|
3736
|
-
toRightCenter?: true | undefined;
|
|
3737
3829
|
}, {
|
|
3738
3830
|
left: string;
|
|
3739
3831
|
right: string;
|
|
3740
|
-
|
|
3741
|
-
type?: "xdist" | undefined;
|
|
3832
|
+
xDist: string | number;
|
|
3742
3833
|
pcb?: true | undefined;
|
|
3743
3834
|
edgeToEdge?: true | undefined;
|
|
3744
3835
|
centerToCenter?: true | undefined;
|
|
3745
|
-
fromLeftEdge?: true | undefined;
|
|
3746
|
-
fromLeftCenter?: true | undefined;
|
|
3747
|
-
toRightEdge?: true | undefined;
|
|
3748
|
-
toRightCenter?: true | undefined;
|
|
3749
3836
|
}>, z.ZodObject<{
|
|
3750
3837
|
pcb: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3751
|
-
|
|
3752
|
-
ydist: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
3838
|
+
yDist: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
3753
3839
|
top: z.ZodString;
|
|
3754
3840
|
bottom: z.ZodString;
|
|
3755
3841
|
edgeToEdge: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3756
3842
|
centerToCenter: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3757
|
-
fromTopEdge: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3758
|
-
fromTopCenter: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3759
|
-
toBottomEdge: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3760
|
-
toBottomCenter: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3761
3843
|
}, "strip", z.ZodTypeAny, {
|
|
3762
3844
|
top: string;
|
|
3763
3845
|
bottom: string;
|
|
3764
|
-
|
|
3765
|
-
type?: "ydist" | undefined;
|
|
3846
|
+
yDist: number;
|
|
3766
3847
|
pcb?: true | undefined;
|
|
3767
3848
|
edgeToEdge?: true | undefined;
|
|
3768
3849
|
centerToCenter?: true | undefined;
|
|
3769
|
-
fromTopEdge?: true | undefined;
|
|
3770
|
-
fromTopCenter?: true | undefined;
|
|
3771
|
-
toBottomEdge?: true | undefined;
|
|
3772
|
-
toBottomCenter?: true | undefined;
|
|
3773
3850
|
}, {
|
|
3774
3851
|
top: string;
|
|
3775
3852
|
bottom: string;
|
|
3776
|
-
|
|
3777
|
-
type?: "ydist" | undefined;
|
|
3853
|
+
yDist: string | number;
|
|
3778
3854
|
pcb?: true | undefined;
|
|
3779
3855
|
edgeToEdge?: true | undefined;
|
|
3780
3856
|
centerToCenter?: true | undefined;
|
|
3781
|
-
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
3857
|
+
}>, z.ZodObject<{
|
|
3858
|
+
pcb: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3859
|
+
sameY: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3860
|
+
for: z.ZodArray<z.ZodString, "many">;
|
|
3861
|
+
}, "strip", z.ZodTypeAny, {
|
|
3862
|
+
for: string[];
|
|
3863
|
+
pcb?: true | undefined;
|
|
3864
|
+
sameY?: true | undefined;
|
|
3865
|
+
}, {
|
|
3866
|
+
for: string[];
|
|
3867
|
+
pcb?: true | undefined;
|
|
3868
|
+
sameY?: true | undefined;
|
|
3869
|
+
}>, z.ZodObject<{
|
|
3870
|
+
pcb: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3871
|
+
sameX: z.ZodOptional<z.ZodLiteral<true>>;
|
|
3872
|
+
for: z.ZodArray<z.ZodString, "many">;
|
|
3873
|
+
}, "strip", z.ZodTypeAny, {
|
|
3874
|
+
for: string[];
|
|
3875
|
+
pcb?: true | undefined;
|
|
3876
|
+
sameX?: true | undefined;
|
|
3877
|
+
}, {
|
|
3878
|
+
for: string[];
|
|
3879
|
+
pcb?: true | undefined;
|
|
3880
|
+
sameX?: true | undefined;
|
|
3785
3881
|
}>]>;
|
|
3786
3882
|
|
|
3787
3883
|
interface RectSmtPadProps extends Omit<PcbLayoutProps, "pcbRotation"> {
|
|
@@ -7441,6 +7537,7 @@ declare const fabricationNoteTextProps: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
7441
7537
|
anchorAlignment: z.ZodDefault<z.ZodEnum<["center", "top_left", "top_right", "bottom_left", "bottom_right"]>>;
|
|
7442
7538
|
font: z.ZodOptional<z.ZodEnum<["tscircuit2024"]>>;
|
|
7443
7539
|
fontSize: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
7540
|
+
color: z.ZodOptional<z.ZodString>;
|
|
7444
7541
|
}>, "strip", z.ZodTypeAny, {
|
|
7445
7542
|
text: string;
|
|
7446
7543
|
anchorAlignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
|
|
@@ -7448,6 +7545,7 @@ declare const fabricationNoteTextProps: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
7448
7545
|
pcbY?: number | undefined;
|
|
7449
7546
|
pcbRotation?: number | undefined;
|
|
7450
7547
|
layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
|
|
7548
|
+
color?: string | undefined;
|
|
7451
7549
|
font?: "tscircuit2024" | undefined;
|
|
7452
7550
|
fontSize?: number | undefined;
|
|
7453
7551
|
}, {
|
|
@@ -7458,6 +7556,7 @@ declare const fabricationNoteTextProps: z.ZodObject<z.objectUtil.extendShape<{
|
|
|
7458
7556
|
layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
|
|
7459
7557
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
|
|
7460
7558
|
} | undefined;
|
|
7559
|
+
color?: string | undefined;
|
|
7461
7560
|
anchorAlignment?: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | undefined;
|
|
7462
7561
|
font?: "tscircuit2024" | undefined;
|
|
7463
7562
|
fontSize?: string | number | undefined;
|
|
@@ -7507,6 +7606,7 @@ declare const fabricationNotePathProps: z.ZodObject<z.objectUtil.extendShape<Omi
|
|
|
7507
7606
|
} | undefined;
|
|
7508
7607
|
}>, "many">;
|
|
7509
7608
|
strokeWidth: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
7609
|
+
color: z.ZodOptional<z.ZodString>;
|
|
7510
7610
|
}>, "strip", z.ZodTypeAny, {
|
|
7511
7611
|
route: {
|
|
7512
7612
|
x: number;
|
|
@@ -7516,6 +7616,7 @@ declare const fabricationNotePathProps: z.ZodObject<z.objectUtil.extendShape<Omi
|
|
|
7516
7616
|
to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
|
|
7517
7617
|
}[];
|
|
7518
7618
|
layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
|
|
7619
|
+
color?: string | undefined;
|
|
7519
7620
|
strokeWidth?: number | undefined;
|
|
7520
7621
|
}, {
|
|
7521
7622
|
route: {
|
|
@@ -7530,8 +7631,9 @@ declare const fabricationNotePathProps: z.ZodObject<z.objectUtil.extendShape<Omi
|
|
|
7530
7631
|
layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
|
|
7531
7632
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
|
|
7532
7633
|
} | undefined;
|
|
7634
|
+
color?: string | undefined;
|
|
7533
7635
|
strokeWidth?: string | number | undefined;
|
|
7534
7636
|
}>;
|
|
7535
7637
|
type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>;
|
|
7536
7638
|
|
|
7537
|
-
export { type BaseGroupProps, type BoardProps, type CapacitorProps, type ChipProps, type CircleSmtPadProps, type CommonComponentProps, type CommonLayoutProps, type ComponentProps, type ConstrainedLayoutProps, type ConstraintProps, type DiodeProps, type Direction, type DirectionAlongEdge, type FabricationNotePathProps, type FabricationNoteTextProps, type Footprint, type FootprintProps, type FootprintSoupElements, type GroupProps, type HoleProps, type InductorProps, type InferredChipProps, type InferredConstrainedLayoutProps, type InferredHoleProps, type InferredSmtPadProps, type JumperProps, type LedProps, type NetAliasProps, type NetProps, type PcbKeepoutProps, type PcbLayoutProps, type PcbTraceProps, type PcbXDistConstraint, type PcbYDistConstraint, type PinSideDefinition, type PlatedHoleProps, type PortHints, type PortProps, type PowerSourceProps, type RectSmtPadProps, type ResistorProps, type SchematicBoxProps, type SchematicLineProps, type SchematicPathProps, type SchematicPinStyle, type SchematicPortArrangement, type SchematicPortArrangementWithPinCounts, type SchematicPortArrangementWithSides, type SchematicPortArrangementWithSizes, type SchematicTextProps, type SilkscreenCircleProps, type SilkscreenLineProps, type SilkscreenPathProps, type SilkscreenRectProps, type SilkscreenTextProps, type SmtPadProps, type SubcircuitGroupProps, type SupplierName, type SupplierProps, type SwitchProps, type TraceHintProps, type TraceProps, type ViaProps, baseGroupProps, boardProps, bugProps, capacitorPins, capacitorProps, chipProps, circleSmtPadProps, commonComponentProps, commonLayoutProps, componentProps, constrainedLayoutProps, constraintProps, diodePins, diodeProps, direction, directionAlongEdge, distanceOrMultiplier, explicitPinSideDefinition, fabricationNotePathProps, fabricationNoteTextProps, footprintProp, footprintProps, groupProps, holeProps, inductorPins, inductorProps, jumperProps, ledPins, ledProps, lrPins, lrPolarPins, netAliasProps, netProps, pcbKeepoutProps, pcbLayoutProps, pcbTraceProps, platedHoleProps, point3, portHints, portProps, portRef, powerSourceProps, rectSmtPadProps, resistorPins, resistorProps, routeHintPointProps, schematicBoxProps, schematicLineProps, schematicPathProps, schematicPinStyle, schematicPortArrangement, schematicTextProps, silkscreenCircleProps, silkscreenLineProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, smtPadProps, subcircuitGroupProps, supplierProps, switchProps, traceHintProps, traceProps, viaProps };
|
|
7639
|
+
export { type BaseGroupProps, type BoardProps, type CapacitorProps, type ChipProps, type CircleSmtPadProps, type CommonComponentProps, type CommonLayoutProps, type ComponentProps, type ConstrainedLayoutProps, type ConstraintProps, type DiodeProps, type Direction, type DirectionAlongEdge, type FabricationNotePathProps, type FabricationNoteTextProps, type Footprint, type FootprintProps, type FootprintSoupElements, type GroupProps, type HoleProps, type InductorProps, type InferredChipProps, type InferredConstrainedLayoutProps, type InferredHoleProps, type InferredSmtPadProps, type JumperProps, type LedProps, type NetAliasProps, type NetProps, type PcbKeepoutProps, type PcbLayoutProps, type PcbSameXConstraint, type PcbSameYConstraint, type PcbTraceProps, type PcbXDistConstraint, type PcbYDistConstraint, type PinSideDefinition, type PlatedHoleProps, type PortHints, type PortProps, type PowerSourceProps, type RectSmtPadProps, type ResistorProps, type SchematicBoxProps, type SchematicLineProps, type SchematicPathProps, type SchematicPinStyle, type SchematicPortArrangement, type SchematicPortArrangementWithPinCounts, type SchematicPortArrangementWithSides, type SchematicPortArrangementWithSizes, type SchematicTextProps, type SilkscreenCircleProps, type SilkscreenLineProps, type SilkscreenPathProps, type SilkscreenRectProps, type SilkscreenTextProps, type SmtPadProps, type SubcircuitGroupProps, type SupplierName, type SupplierProps, type SwitchProps, type TraceHintProps, type TraceProps, type ViaProps, baseGroupProps, boardProps, bugProps, capacitorPins, capacitorProps, chipProps, circleSmtPadProps, commonComponentProps, commonLayoutProps, componentProps, constrainedLayoutProps, constraintProps, diodePins, diodeProps, direction, directionAlongEdge, distanceOrMultiplier, explicitPinSideDefinition, fabricationNotePathProps, fabricationNoteTextProps, footprintProp, footprintProps, groupProps, holeProps, inductorPins, inductorProps, jumperProps, ledPins, ledProps, lrPins, lrPolarPins, netAliasProps, netProps, pcbKeepoutProps, pcbLayoutProps, pcbSameXConstraintProps, pcbSameYConstraintProps, pcbTraceProps, pcbXDistConstraintProps, pcbYDistConstraintProps, platedHoleProps, point3, portHints, portProps, portRef, powerSourceProps, rectSmtPadProps, resistorPins, resistorProps, routeHintPointProps, schematicBoxProps, schematicLineProps, schematicPathProps, schematicPinStyle, schematicPortArrangement, schematicTextProps, silkscreenCircleProps, silkscreenLineProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, smtPadProps, subcircuitGroupProps, supplierProps, switchProps, traceHintProps, traceProps, viaProps };
|
package/dist/index.js
CHANGED
|
@@ -55,7 +55,11 @@ __export(lib_exports, {
|
|
|
55
55
|
netProps: () => netProps,
|
|
56
56
|
pcbKeepoutProps: () => pcbKeepoutProps,
|
|
57
57
|
pcbLayoutProps: () => pcbLayoutProps,
|
|
58
|
+
pcbSameXConstraintProps: () => pcbSameXConstraintProps,
|
|
59
|
+
pcbSameYConstraintProps: () => pcbSameYConstraintProps,
|
|
58
60
|
pcbTraceProps: () => pcbTraceProps,
|
|
61
|
+
pcbXDistConstraintProps: () => pcbXDistConstraintProps,
|
|
62
|
+
pcbYDistConstraintProps: () => pcbYDistConstraintProps,
|
|
59
63
|
platedHoleProps: () => platedHoleProps,
|
|
60
64
|
point3: () => point3,
|
|
61
65
|
portHints: () => portHints,
|
|
@@ -366,33 +370,49 @@ var import_soup10 = require("@tscircuit/soup");
|
|
|
366
370
|
|
|
367
371
|
// lib/components/constraint.ts
|
|
368
372
|
var import_zod19 = require("zod");
|
|
373
|
+
var pcbXDistConstraintProps = import_zod19.z.object({
|
|
374
|
+
pcb: import_zod19.z.literal(true).optional(),
|
|
375
|
+
xDist: import_soup10.distance,
|
|
376
|
+
left: import_zod19.z.string(),
|
|
377
|
+
right: import_zod19.z.string(),
|
|
378
|
+
edgeToEdge: import_zod19.z.literal(true).optional(),
|
|
379
|
+
centerToCenter: import_zod19.z.literal(true).optional()
|
|
380
|
+
});
|
|
381
|
+
expectTypesMatch(
|
|
382
|
+
true
|
|
383
|
+
);
|
|
384
|
+
var pcbYDistConstraintProps = import_zod19.z.object({
|
|
385
|
+
pcb: import_zod19.z.literal(true).optional(),
|
|
386
|
+
yDist: import_soup10.distance,
|
|
387
|
+
top: import_zod19.z.string(),
|
|
388
|
+
bottom: import_zod19.z.string(),
|
|
389
|
+
edgeToEdge: import_zod19.z.literal(true).optional(),
|
|
390
|
+
centerToCenter: import_zod19.z.literal(true).optional()
|
|
391
|
+
});
|
|
392
|
+
expectTypesMatch(
|
|
393
|
+
true
|
|
394
|
+
);
|
|
395
|
+
var pcbSameYConstraintProps = import_zod19.z.object({
|
|
396
|
+
pcb: import_zod19.z.literal(true).optional(),
|
|
397
|
+
sameY: import_zod19.z.literal(true).optional(),
|
|
398
|
+
for: import_zod19.z.array(import_zod19.z.string())
|
|
399
|
+
});
|
|
400
|
+
expectTypesMatch(
|
|
401
|
+
true
|
|
402
|
+
);
|
|
403
|
+
var pcbSameXConstraintProps = import_zod19.z.object({
|
|
404
|
+
pcb: import_zod19.z.literal(true).optional(),
|
|
405
|
+
sameX: import_zod19.z.literal(true).optional(),
|
|
406
|
+
for: import_zod19.z.array(import_zod19.z.string())
|
|
407
|
+
});
|
|
408
|
+
expectTypesMatch(
|
|
409
|
+
true
|
|
410
|
+
);
|
|
369
411
|
var constraintProps = import_zod19.z.union([
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
left: import_zod19.z.string(),
|
|
375
|
-
right: import_zod19.z.string(),
|
|
376
|
-
edgeToEdge: import_zod19.z.literal(true).optional(),
|
|
377
|
-
centerToCenter: import_zod19.z.literal(true).optional(),
|
|
378
|
-
fromLeftEdge: import_zod19.z.literal(true).optional(),
|
|
379
|
-
fromLeftCenter: import_zod19.z.literal(true).optional(),
|
|
380
|
-
toRightEdge: import_zod19.z.literal(true).optional(),
|
|
381
|
-
toRightCenter: import_zod19.z.literal(true).optional()
|
|
382
|
-
}),
|
|
383
|
-
import_zod19.z.object({
|
|
384
|
-
pcb: import_zod19.z.literal(true).optional(),
|
|
385
|
-
type: import_zod19.z.literal("ydist").optional(),
|
|
386
|
-
ydist: import_soup10.distance,
|
|
387
|
-
top: import_zod19.z.string(),
|
|
388
|
-
bottom: import_zod19.z.string(),
|
|
389
|
-
edgeToEdge: import_zod19.z.literal(true).optional(),
|
|
390
|
-
centerToCenter: import_zod19.z.literal(true).optional(),
|
|
391
|
-
fromTopEdge: import_zod19.z.literal(true).optional(),
|
|
392
|
-
fromTopCenter: import_zod19.z.literal(true).optional(),
|
|
393
|
-
toBottomEdge: import_zod19.z.literal(true).optional(),
|
|
394
|
-
toBottomCenter: import_zod19.z.literal(true).optional()
|
|
395
|
-
})
|
|
412
|
+
pcbXDistConstraintProps,
|
|
413
|
+
pcbYDistConstraintProps,
|
|
414
|
+
pcbSameYConstraintProps,
|
|
415
|
+
pcbSameXConstraintProps
|
|
396
416
|
]);
|
|
397
417
|
expectTypesMatch(true);
|
|
398
418
|
|
|
@@ -589,11 +609,13 @@ var fabricationNoteTextProps = pcbLayoutProps.extend({
|
|
|
589
609
|
text: import_zod22.z.string(),
|
|
590
610
|
anchorAlignment: import_zod22.z.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
|
|
591
611
|
font: import_zod22.z.enum(["tscircuit2024"]).optional(),
|
|
592
|
-
fontSize: import_soup11.length.optional()
|
|
612
|
+
fontSize: import_soup11.length.optional(),
|
|
613
|
+
color: import_zod22.z.string().optional()
|
|
593
614
|
});
|
|
594
615
|
var fabricationNotePathProps = pcbLayoutProps.omit({ pcbX: true, pcbY: true, pcbRotation: true }).extend({
|
|
595
616
|
route: import_zod22.z.array(import_soup11.route_hint_point),
|
|
596
|
-
strokeWidth: import_soup11.length.optional()
|
|
617
|
+
strokeWidth: import_soup11.length.optional(),
|
|
618
|
+
color: import_zod22.z.string().optional()
|
|
597
619
|
});
|
|
598
620
|
// Annotate the CommonJS export names for ESM import in node:
|
|
599
621
|
0 && (module.exports = {
|
|
@@ -632,7 +654,11 @@ var fabricationNotePathProps = pcbLayoutProps.omit({ pcbX: true, pcbY: true, pcb
|
|
|
632
654
|
netProps,
|
|
633
655
|
pcbKeepoutProps,
|
|
634
656
|
pcbLayoutProps,
|
|
657
|
+
pcbSameXConstraintProps,
|
|
658
|
+
pcbSameYConstraintProps,
|
|
635
659
|
pcbTraceProps,
|
|
660
|
+
pcbXDistConstraintProps,
|
|
661
|
+
pcbYDistConstraintProps,
|
|
636
662
|
platedHoleProps,
|
|
637
663
|
point3,
|
|
638
664
|
portHints,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/index.ts","../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/point3.ts","../lib/common/cadModel.ts","../lib/common/footprintProp.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/components/board.ts","../lib/common/point.ts","../lib/components/chip.ts","../lib/components/jumper.ts","../lib/components/resistor.ts","../lib/components/capacitor.ts","../lib/components/group.ts","../lib/components/net.ts","../lib/components/constrainedlayout.ts","../lib/common/distance.ts","../lib/components/constraint.ts","../lib/components/smtpad.ts","../lib/components/hole.ts"],"sourcesContent":["/**\n * THINKING ABOUT ADDING SOMETHING TO THIS FILE?\n *\n * THINK AGAIN!\n *\n * This file is TOO BIG! Create files using the pattern in the surrounding\n * directories, then export from this file.\n */\nimport type { LayoutBuilder } from \"@tscircuit/layout\"\nimport {\n type AnySoupElementInput,\n capacitance,\n distance,\n inductance,\n layer_ref,\n length,\n type PCBPlatedHoleInput,\n type PCBSMTPadInput,\n point,\n resistance,\n rotation,\n route_hint_point,\n supplier_name,\n voltage,\n} from \"@tscircuit/soup\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\nimport { direction } from \"./common/direction\"\nimport { portHints } from \"./common/portHints\"\nimport {\n commonComponentProps,\n commonLayoutProps,\n lrPins,\n lrPolarPins,\n pcbLayoutProps,\n} from \"./common/layout\"\nimport { explicitPinSideDefinition } from \"./common/schematicPinDefinitions\"\n\nexport * from \"./common/direction\"\nexport * from \"./common/portHints\"\nexport * from \"./common/layout\"\nexport * from \"./common/point3\"\nexport * from \"./common/portHints\"\nexport * from \"./common/footprintProp\"\nexport * from \"./common/schematicPinDefinitions\"\nexport * from \"./common/schematicPinStyle\"\n\nexport * from \"./components/board\"\nexport * from \"./components/chip\"\nexport * from \"./components/jumper\"\n\nexport * from \"./components/resistor\"\nexport * from \"./components/capacitor\"\nexport * from \"./components/group\"\nexport * from \"./components/net\"\nexport * from \"./components/constrainedlayout\"\nexport * from \"./components/constraint\"\nexport * from \"./components/smtpad\"\nexport * from \"./components/hole\"\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n})\nexport const inductorPins = lrPins\nexport type InductorProps = z.input<typeof inductorProps>\n\nexport const diodeProps = commonComponentProps.extend({})\nexport const diodePins = lrPolarPins\nexport type DiodeProps = z.input<typeof diodeProps>\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n\nexport const switchProps = commonComponentProps.extend({\n ftype: z.literal(\"switch\"),\n switchType: z.enum([\"spst\"]).default(\"spst\"),\n isNormallyClosed: z.boolean().default(false),\n})\nexport type SwitchProps = z.input<typeof switchProps>\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n\nexport const viaProps = commonLayoutProps.extend({\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n})\nexport type ViaProps = z.input<typeof viaProps>\n\nexport const netAliasProps = commonLayoutProps.extend({\n net: z.string().optional(),\n})\nexport type NetAliasProps = z.input<typeof netAliasProps>\n\nexport const portRef = z.union([\n z.string(),\n z.custom<{ getPortSelector: () => string }>((v) =>\n Boolean(v.getPortSelector),\n ),\n])\n\nexport const traceProps = z\n .object({\n path: z.array(portRef),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n })\n .or(\n z.object({\n from: portRef,\n to: portRef,\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n }),\n )\nexport type TraceProps = z.input<typeof traceProps>\n\nexport const platedHoleProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n innerWidth: distance,\n innerHeight: distance,\n portHints: portHints.optional(),\n }),\n])\nexport type PlatedHoleProps = z.input<typeof platedHoleProps>\n\nexport const pcbKeepoutProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n }),\n pcbLayoutProps.extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n }),\n])\nexport type PcbKeepoutProps = z.input<typeof pcbKeepoutProps>\n\nexport const schematicBoxProps = z.object({\n schX: distance,\n schY: distance,\n width: distance,\n height: distance,\n})\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n\nexport const schematicTextProps = z.object({\n schX: distance,\n schY: distance,\n text: z.string(),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n})\nexport type SchematicLineProps = z.input<typeof schematicLineProps>\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\nexport type SchematicPathProps = z.input<typeof schematicPathProps>\n\nexport const footprintProps = z.object({})\nexport type FootprintProps = z.input<typeof footprintProps>\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n})\nexport type PortProps = z.input<typeof portProps>\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n\nexport const routeHintPointProps = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n toLayer: layer_ref.optional(),\n})\n\nexport const traceHintProps = z.object({\n for: z\n .string()\n .optional()\n .describe(\n \"Selector for the port you're targeting, not required if you're inside a trace\",\n ),\n order: z.number().optional(),\n offset: route_hint_point.or(routeHintPointProps).optional(),\n offsets: z\n .array(route_hint_point)\n .or(z.array(routeHintPointProps))\n .optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n","import type { TypeEqual } from \"ts-expect\"\n\nexport const expectTypesMatch = <const T1, const T2>(\n shouldBe: TypeEqual<T1, T2>,\n): void => {}\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nexport const direction = z.enum([\"up\", \"down\", \"left\", \"right\"])\nexport type Direction = \"up\" | \"down\" | \"left\" | \"right\"\n\nexport type DirectionAlongEdge =\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n\nexport const directionAlongEdge = z.enum([\n \"top-to-bottom\",\n \"left-to-right\",\n \"bottom-to-top\",\n \"right-to-left\",\n])\n\nexpectTypesMatch<Direction, z.infer<typeof direction>>(true)\nexpectTypesMatch<DirectionAlongEdge, z.infer<typeof directionAlongEdge>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const portHints = z.array(z.string().or(z.number()))\nexport type PortHints = (string | number)[]\n\nexpectTypesMatch<PortHints, z.infer<typeof portHints>>(true)\n","import { z } from \"zod\"\nimport {\n type AnySoupElementInput,\n distance,\n layer_ref,\n type LayerRef,\n type LayerRefInput,\n rotation,\n supplier_name,\n} from \"@tscircuit/soup\"\nimport { point3 } from \"./point3\"\nimport {\n cadModelJscad,\n cadModelObj,\n cadModelProp,\n cadModelStl,\n type CadModelJscad,\n type CadModelObj,\n type CadModelProp,\n type CadModelStl,\n} from \"./cadModel\"\nimport { footprintProp, type Footprint } from \"./footprintProp\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface PcbLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n pcbRotation?: string | number\n layer?: LayerRefInput\n}\n\nexport interface CommonLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n pcbRotation?: string | number\n\n schX?: string | number\n schY?: string | number\n schRotation?: string | number\n\n layer?: LayerRefInput\n footprint?: Footprint\n}\n\nexport const pcbLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n layer: layer_ref.optional(),\n})\ntype InferredPcbLayoutProps = z.input<typeof pcbLayoutProps>\nexpectTypesMatch<PcbLayoutProps, InferredPcbLayoutProps>(true)\n\nexport const commonLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n footprint: footprintProp.optional(),\n})\n\ntype InferredCommonLayoutProps = z.input<typeof commonLayoutProps>\nexpectTypesMatch<CommonLayoutProps, InferredCommonLayoutProps>(true)\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\nexport interface SupplierProps {\n supplierPartNumbers?: { [k in SupplierName]?: string[] }\n}\nexport const supplierProps = z.object({\n supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexpectTypesMatch<SupplierProps, z.input<typeof supplierProps>>(true)\n\nexport interface CommonComponentProps extends CommonLayoutProps {\n name: string\n supplierPartNumbers?: SupplierProps[\"supplierPartNumbers\"]\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\n}\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n name: z.string(),\n cadModel: cadModelProp.optional(),\n children: z.any().optional(),\n symbolName: z.string().optional(),\n })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n","import { distance } from \"@tscircuit/soup\"\nimport { z } from \"zod\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n","import { z } from \"zod\"\nimport { point3 } from \"./point3\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const rotationPoint3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport interface CadModelBase {\n rotationOffset?:\n | number\n | { x: number | string; y: number | string; z: number | string }\n positionOffset?: {\n x: number | string\n y: number | string\n z: number | string\n }\n size?: { x: number | string; y: number | string; z: number | string }\n}\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(rotationPoint3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n})\n\nexpectTypesMatch<CadModelBase, z.input<typeof cadModelBase>>(true)\n\nexport interface CadModelStl extends CadModelBase {\n stlUrl: string\n}\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport interface CadModelObj extends CadModelBase {\n objUrl: string\n mtlUrl?: string\n}\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport interface CadModelJscad extends CadModelBase {\n jscad: Record<string, any>\n}\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.record(z.any()),\n})\n\nexport type CadModelProp = string | CadModelStl | CadModelObj | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.string(),\n cadModelStl,\n cadModelObj,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import type { LayerRef } from \"@tscircuit/soup\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\n\n/**\n * This is an abbreviated definition of the soup elements that you can find here:\n * https://docs.tscircuit.com/api-reference/advanced/soup#pcb-smtpad\n */\nexport type FootprintSoupElements = {\n type: \"pcb_smtpad\" | \"pcb_plated_hole\"\n x: string | number\n y: string | number\n layer?: LayerRef\n holeDiameter?: string | number\n outerDiameter?: string | number\n shape?: \"circle\" | \"rect\"\n width?: string | number\n height?: string | number\n portHints?: string[]\n}\n\nexport type Footprint = string | ReactElement | FootprintSoupElements[]\nexport const footprintProp = z.custom<Footprint>((v) => true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use SchematicPortArrangementWithPinCounts instead.\n */\nexport interface SchematicPortArrangementWithSizes {\n leftSize?: number\n topSize?: number\n rightSize?: number\n bottomSize?: number\n}\n\n/**\n * Specifies the number of pins on each side of the schematic box component.\n */\nexport interface SchematicPortArrangementWithPinCounts {\n leftPinCount?: number\n topPinCount?: number\n rightPinCount?: number\n bottomPinCount?: number\n}\n\nexport interface PinSideDefinition {\n pins: number[]\n direction:\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n}\n\nexport interface SchematicPortArrangementWithSides {\n leftSide?: PinSideDefinition\n topSide?: PinSideDefinition\n rightSide?: PinSideDefinition\n bottomSide?: PinSideDefinition\n}\n\nexport type SchematicPortArrangement =\n | SchematicPortArrangementWithSizes\n | SchematicPortArrangementWithSides\n | SchematicPortArrangementWithPinCounts\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.number()),\n direction: z.union([\n z.literal(\"top-to-bottom\"),\n z.literal(\"left-to-right\"),\n z.literal(\"bottom-to-top\"),\n z.literal(\"right-to-left\"),\n ]),\n})\n\nexport const schematicPortArrangement = z\n .object({\n leftSize: z.number().optional().describe(\"@deprecated, use leftPinCount\"),\n topSize: z.number().optional().describe(\"@deprecated, use topPinCount\"),\n rightSize: z.number().optional().describe(\"@deprecated, use rightPinCount\"),\n bottomSize: z\n .number()\n .optional()\n .describe(\"@deprecated, use bottomPinCount\"),\n })\n .or(\n z.object({\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n }),\n )\n .or(\n z.object({\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n }),\n )\n\nexpectTypesMatch<\n SchematicPortArrangement,\n z.input<typeof schematicPortArrangement>\n>(true)\n","import { z } from \"zod\"\nimport { distance } from \"@tscircuit/soup\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type SchematicPinStyle = Record<\n string,\n {\n leftMargin?: number | string\n rightMargin?: number | string\n topMargin?: number | string\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n leftMargin: distance.optional(),\n rightMargin: distance.optional(),\n topMargin: distance.optional(),\n bottomMargin: distance.optional(),\n }),\n)\n\nexpectTypesMatch<SchematicPinStyle, z.input<typeof schematicPinStyle>>(true)\n","import { z } from \"zod\"\nimport { distance } from \"@tscircuit/soup\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface BoardProps {\n width?: number | string\n height?: number | string\n outline?: Point[]\n pcbX?: number | string\n pcbY?: number | string\n layout?: any\n routingDisabled?: boolean\n children?: any\n}\n\nexport const boardProps = z.object({\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\n pcbX: distance.optional().default(0),\n pcbY: distance.optional().default(0),\n layout: z.any().optional(),\n routingDisabled: z.boolean().optional(),\n children: z.any(),\n})\n\nexpectTypesMatch<BoardProps, z.input<typeof boardProps>>(true)\n","import { distance } from \"@tscircuit/soup\"\nimport { z } from \"zod\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport type Point = { x: number | string; y: number | string }\n","import { z } from \"zod\"\nimport { distance } from \"@tscircuit/soup\"\nimport {\n commonComponentProps,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPortArrangement,\n type SchematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n schematicPinStyle,\n type SchematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport type { Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface ChipProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string>\n schPortArrangement?: SchematicPortArrangement\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n}\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z.record(z.number().or(z.string()), z.string()).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\nexpectTypesMatch<InferredChipProps, ChipProps>(true)\n","import { z } from \"zod\"\nimport {\n commonComponentProps,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinStyle,\n type SchematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { distance } from \"@tscircuit/soup\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport {\n schematicPortArrangement,\n type SchematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\n\nexport interface JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string>\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z.record(z.number().or(z.string()), z.string()).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { z } from \"zod\"\nimport { resistance } from \"@tscircuit/soup\"\nimport {\n commonComponentProps,\n lrPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface ResistorProps extends CommonComponentProps {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n}\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n\n pullupFor: z.string().optional(),\n pullupTo: z.string().optional(),\n\n pulldownFor: z.string().optional(),\n pulldownTo: z.string().optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { z } from \"zod\"\nimport { capacitance } from \"@tscircuit/soup\"\nimport {\n commonComponentProps,\n lrPins,\n lrPolarPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface CapacitorProps extends CommonComponentProps {\n capacitance: number | string\n\n decouplingFor?: string\n decouplingTo?: string\n\n bypassFor?: string\n bypassTo?: string\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { commonLayoutProps, type CommonLayoutProps } from \"lib/common/layout\"\nimport type { LayoutBuilder } from \"@tscircuit/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface BaseGroupProps extends CommonLayoutProps {\n name?: string\n children?: any\n}\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n subcircuit: true\n layout?: LayoutBuilder\n routingDisabled?: boolean\n}\n\nexport type GroupProps = SubcircuitGroupProps | BaseGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n})\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n subcircuit: z.literal(true),\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n routingDisabled: z.boolean().optional(),\n})\n\nexport const groupProps = z.union([baseGroupProps, subcircuitGroupProps])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupProps = z.input<typeof subcircuitGroupProps>\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<SubcircuitGroupProps, InferredSubcircuitGroupProps>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n}\n\nexport const netProps = z.object({\n name: z.string(),\n})\n\ntype InferredNetProps = z.input<typeof netProps>\nexpectTypesMatch<NetProps, InferredNetProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConstrainedLayoutProps {\n name?: string\n pcbOnly?: boolean\n schOnly?: boolean\n}\n\nexport const constrainedLayoutProps = z.object({\n name: z.string().optional(),\n pcbOnly: z.boolean().optional(),\n schOnly: z.boolean().optional(),\n})\n\nexport type InferredConstrainedLayoutProps = z.input<\n typeof constrainedLayoutProps\n>\n\nexpectTypesMatch<InferredConstrainedLayoutProps, ConstrainedLayoutProps>(true)\n","import { z } from \"zod\"\n\nexport type Distance = number | string\n\nexport { distance } from \"@tscircuit/soup\"\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\nimport { distance } from \"lib/common/distance\"\nimport { z } from \"zod\"\n\nexport type PcbXDistConstraint = {\n pcb?: true\n type?: \"xdist\"\n xdist: Distance\n left: string\n right: string\n\n edgeToEdge?: true\n centerToCenter?: true\n\n fromLeftEdge?: true\n fromLeftCenter?: true\n toRightEdge?: true\n toRightCenter?: true\n}\n\nexport type PcbYDistConstraint = {\n pcb?: true\n type?: \"ydist\"\n ydist: Distance\n top: string\n bottom: string\n\n edgeToEdge?: true\n centerToCenter?: true\n\n fromTopEdge?: true\n fromTopCenter?: true\n toBottomEdge?: true\n toBottomCenter?: true\n}\n\nexport type ConstraintProps = PcbXDistConstraint | PcbYDistConstraint\n\nexport const constraintProps = z.union([\n z.object({\n pcb: z.literal(true).optional(),\n type: z.literal(\"xdist\").optional(),\n xdist: distance,\n left: z.string(),\n right: z.string(),\n\n edgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n\n fromLeftEdge: z.literal(true).optional(),\n fromLeftCenter: z.literal(true).optional(),\n toRightEdge: z.literal(true).optional(),\n toRightCenter: z.literal(true).optional(),\n }),\n z.object({\n pcb: z.literal(true).optional(),\n type: z.literal(\"ydist\").optional(),\n ydist: distance,\n top: z.string(),\n bottom: z.string(),\n\n edgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n\n fromTopEdge: z.literal(true).optional(),\n fromTopCenter: z.literal(true).optional(),\n toBottomEdge: z.literal(true).optional(),\n toBottomCenter: z.literal(true).optional(),\n }),\n])\n\nexpectTypesMatch<ConstraintProps, z.input<typeof constraintProps>>(true)\n","import {\n pcbLayoutProps,\n type CommonLayoutProps,\n type PcbLayoutProps,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { portHints, type PortHints } from \"lib/common/portHints\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n portHints?: PortHints\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n}\n\nexport type SmtPadProps = RectSmtPadProps | CircleSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n portHints: portHints.optional(),\n })\ntype InferredRectSmtPadProps = z.input<typeof rectSmtPadProps>\nexpectTypesMatch<InferredRectSmtPadProps, RectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredCircleSmtPadProps = z.input<typeof circleSmtPadProps>\nexpectTypesMatch<InferredCircleSmtPadProps, CircleSmtPadProps>(true)\n\nexport const smtPadProps = z.union([circleSmtPadProps, rectSmtPadProps])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface HoleProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n diameter?: Distance\n radius?: Distance\n}\n\nexport const holeProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n diameter: distance.optional(),\n radius: distance.optional(),\n })\n .transform((d) => ({\n ...d,\n diameter: d.diameter ?? 2 * d.radius!,\n radius: d.radius ?? d.diameter! / 2,\n }))\n\nexport type InferredHoleProps = z.input<typeof holeProps>\n\nexpectTypesMatch<HoleProps, InferredHoleProps>(true)\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,IAAAC,gBAeO;AAEP,IAAAC,eAAkB;;;ACxBX,IAAM,mBAAmB,CAC9B,aACS;AAAC;;;ACHZ,iBAAkB;AACX,IAAM,YAAY,aAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC;AASxD,IAAM,qBAAqB,aAAE,KAAK;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,iBAAuD,IAAI;AAC3D,iBAAyE,IAAI;;;ACnB7E,IAAAC,cAAkB;AAGX,IAAM,YAAY,cAAE,MAAM,cAAE,OAAO,EAAE,GAAG,cAAE,OAAO,CAAC,CAAC;AAG1D,iBAAuD,IAAI;;;ACN3D,IAAAC,cAAkB;AAClB,IAAAC,eAQO;;;ACTP,kBAAyB;AACzB,IAAAC,cAAkB;AAEX,IAAM,SAAS,cAAE,OAAO;AAAA,EAC7B,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,CAAC;;;ACPD,IAAAC,cAAkB;AAIX,IAAM,iBAAiB,cAAE,OAAO;AAAA,EACrC,GAAG,cAAE,MAAM,CAAC,cAAE,OAAO,GAAG,cAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAG,cAAE,MAAM,CAAC,cAAE,OAAO,GAAG,cAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAG,cAAE,MAAM,CAAC,cAAE,OAAO,GAAG,cAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAcM,IAAM,eAAe,cAAE,OAAO;AAAA,EACnC,gBAAgB,cAAE,OAAO,EAAE,GAAG,cAAc,EAAE,SAAS;AAAA,EACvD,gBAAgB,OAAO,SAAS;AAAA,EAChC,MAAM,OAAO,SAAS;AACxB,CAAC;AAED,iBAA6D,IAAI;AAK1D,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQ,cAAE,OAAO;AACnB,CAAC;AAMM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQ,cAAE,OAAO;AAAA,EACjB,QAAQ,cAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAKM,IAAM,gBAAgB,aAAa,OAAO;AAAA,EAC/C,OAAO,cAAE,OAAO,cAAE,IAAI,CAAC;AACzB,CAAC;AAIM,IAAM,eAAe,cAAE,MAAM;AAAA,EAClC,cAAE,OAAO;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,iBAAqD,IAAI;;;AC7DzD,IAAAC,cAAkB;AAoBX,IAAM,gBAAgB,cAAE,OAAkB,CAAC,MAAM,IAAI;;;AHsBrD,IAAM,iBAAiB,cAAE,OAAO;AAAA,EACrC,MAAM,sBAAS,SAAS;AAAA,EACxB,MAAM,sBAAS,SAAS;AAAA,EACxB,aAAa,sBAAS,SAAS;AAAA,EAC/B,OAAO,uBAAU,SAAS;AAC5B,CAAC;AAED,iBAAyD,IAAI;AAEtD,IAAM,oBAAoB,cAAE,OAAO;AAAA,EACxC,MAAM,sBAAS,SAAS;AAAA,EACxB,MAAM,sBAAS,SAAS;AAAA,EACxB,aAAa,sBAAS,SAAS;AAAA,EAC/B,MAAM,sBAAS,SAAS;AAAA,EACxB,MAAM,sBAAS,SAAS;AAAA,EACxB,aAAa,sBAAS,SAAS;AAAA,EAC/B,OAAO,uBAAU,SAAS;AAAA,EAC1B,WAAW,cAAc,SAAS;AACpC,CAAC;AAGD,iBAA+D,IAAI;AAY5D,IAAM,gBAAgB,cAAE,OAAO;AAAA,EACpC,qBAAqB,cAAE,OAAO,4BAAe,cAAE,MAAM,cAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC7E,CAAC;AAED,iBAA+D,IAAI;AAU5D,IAAM,uBAAuB,kBACjC,MAAM,aAAa,EACnB,OAAO;AAAA,EACN,MAAM,cAAE,OAAO;AAAA,EACf,UAAU,aAAa,SAAS;AAAA,EAChC,UAAU,cAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,YAAY,cAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAGH,iBAAqE,IAAI;AAElE,IAAM,SAAS,CAAC,QAAQ,QAAQ,QAAQ,OAAO;AAC/C,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,uBAAuB,sBAAS,GAAG,cAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC;;;AIlH1E,IAAAC,cAAkB;AA2CX,IAAM,4BAA4B,cAAE,OAAO;AAAA,EAChD,MAAM,cAAE,MAAM,cAAE,OAAO,CAAC;AAAA,EACxB,WAAW,cAAE,MAAM;AAAA,IACjB,cAAE,QAAQ,eAAe;AAAA,IACzB,cAAE,QAAQ,eAAe;AAAA,IACzB,cAAE,QAAQ,eAAe;AAAA,IACzB,cAAE,QAAQ,eAAe;AAAA,EAC3B,CAAC;AACH,CAAC;AAEM,IAAM,2BAA2B,cACrC,OAAO;AAAA,EACN,UAAU,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS,+BAA+B;AAAA,EACxE,SAAS,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS,8BAA8B;AAAA,EACtE,WAAW,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,EAC1E,YAAY,cACT,OAAO,EACP,SAAS,EACT,SAAS,iCAAiC;AAC/C,CAAC,EACA;AAAA,EACC,cAAE,OAAO;AAAA,IACP,cAAc,cAAE,OAAO,EAAE,SAAS;AAAA,IAClC,eAAe,cAAE,OAAO,EAAE,SAAS;AAAA,IACnC,aAAa,cAAE,OAAO,EAAE,SAAS;AAAA,IACjC,gBAAgB,cAAE,OAAO,EAAE,SAAS;AAAA,EACtC,CAAC;AACH,EACC;AAAA,EACC,cAAE,OAAO;AAAA,IACP,UAAU,0BAA0B,SAAS;AAAA,IAC7C,WAAW,0BAA0B,SAAS;AAAA,IAC9C,SAAS,0BAA0B,SAAS;AAAA,IAC5C,YAAY,0BAA0B,SAAS;AAAA,EACjD,CAAC;AACH;AAEF,iBAGE,IAAI;;;ACpFN,IAAAC,cAAkB;AAClB,IAAAC,eAAyB;AAalB,IAAM,oBAAoB,cAAE;AAAA,EACjC,cAAE,OAAO;AAAA,IACP,YAAY,sBAAS,SAAS;AAAA,IAC9B,aAAa,sBAAS,SAAS;AAAA,IAC/B,WAAW,sBAAS,SAAS;AAAA,IAC7B,cAAc,sBAAS,SAAS;AAAA,EAClC,CAAC;AACH;AAEA,iBAAuE,IAAI;;;ACvB3E,IAAAC,eAAkB;AAClB,IAAAC,eAAyB;;;ACDzB,IAAAC,eAAyB;AACzB,IAAAC,cAAkB;AAEX,IAAM,QAAQ,cAAE,OAAO;AAAA,EAC5B,GAAG;AAAA,EACH,GAAG;AACL,CAAC;;;ADUM,IAAM,aAAa,eAAE,OAAO;AAAA,EACjC,OAAO,sBAAS,SAAS;AAAA,EACzB,QAAQ,sBAAS,SAAS;AAAA,EAC1B,SAAS,eAAE,MAAM,KAAK,EAAE,SAAS;AAAA,EACjC,MAAM,sBAAS,SAAS,EAAE,QAAQ,CAAC;AAAA,EACnC,MAAM,sBAAS,SAAS,EAAE,QAAQ,CAAC;AAAA,EACnC,QAAQ,eAAE,IAAI,EAAE,SAAS;AAAA,EACzB,iBAAiB,eAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,UAAU,eAAE,IAAI;AAClB,CAAC;AAED,iBAAyD,IAAI;;;AE3B7D,IAAAC,eAAkB;AAClB,IAAAC,eAAyB;AA0BlB,IAAM,YAAY,qBAAqB,OAAO;AAAA,EACnD,wBAAwB,eAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAW,eAAE,OAAO,eAAE,OAAO,EAAE,GAAG,eAAE,OAAO,CAAC,GAAG,eAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACpE,oBAAoB,yBAAyB,SAAS;AAAA,EACtD,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAe,sBAAS,SAAS;AAAA,EACjC,UAAU,sBAAS,SAAS;AAAA,EAC5B,WAAW,sBAAS,SAAS;AAC/B,CAAC;AAKM,IAAM,WAAW;AAGxB,iBAA+C,IAAI;;;AC3CnD,IAAAC,eAAkB;AASlB,IAAAC,eAAyB;AAkBlB,IAAM,cAAc,qBAAqB,OAAO;AAAA,EACrD,wBAAwB,eAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAW,eAAE,OAAO,eAAE,OAAO,EAAE,GAAG,eAAE,OAAO,CAAC,GAAG,eAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACpE,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAe,sBAAS,SAAS;AAAA,EACjC,UAAU,sBAAS,SAAS;AAAA,EAC5B,WAAW,sBAAS,SAAS;AAAA,EAC7B,cAAc,eAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACjD,oBAAoB,yBAAyB,SAAS;AACxD,CAAC;AAGD,iBAAmD,IAAI;;;ACvCvD,IAAAC,eAAkB;AAClB,IAAAC,eAA2B;AAgBpB,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AAAA,EAEA,WAAW,eAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAU,eAAE,OAAO,EAAE,SAAS;AAAA,EAE9B,aAAa,eAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAY,eAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AACM,IAAM,eAAe;AAG5B,iBAAuD,IAAI;;;AC7B3D,IAAAC,eAAkB;AAClB,IAAAC,eAA4B;AAmBrB,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD;AAAA,EAEA,eAAe,eAAE,OAAO,EAAE,SAAS;AAAA,EACnC,cAAc,eAAE,OAAO,EAAE,SAAS;AAAA,EAElC,WAAW,eAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAU,eAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AACM,IAAM,gBAAgB;AAE7B,iBAAiE,IAAI;;;AC/BrE,IAAAC,eAAkB;AAkBX,IAAM,iBAAiB,kBAAkB,OAAO;AAAA,EACrD,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAU,eAAE,IAAI,EAAE,SAAS;AAC7B,CAAC;AAEM,IAAM,uBAAuB,eAAe,OAAO;AAAA,EACxD,YAAY,eAAE,QAAQ,IAAI;AAAA,EAC1B,QAAQ,eAAE,OAAsB,CAAC,MAAM,IAAI,EAAE,SAAS;AAAA,EACtD,iBAAiB,eAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAEM,IAAM,aAAa,eAAE,MAAM,CAAC,gBAAgB,oBAAoB,CAAC;AAKxE,iBAAyD,IAAI;AAC7D,iBAAqE,IAAI;AAGzE,iBAAiD,IAAI;;;ACtCrD,IAAAC,eAAkB;AAOX,IAAM,WAAW,eAAE,OAAO;AAAA,EAC/B,MAAM,eAAE,OAAO;AACjB,CAAC;AAGD,iBAA6C,IAAI;;;ACXjD,IAAAC,eAAkB;AAQX,IAAM,yBAAyB,eAAE,OAAO;AAAA,EAC7C,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAAS,eAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,SAAS,eAAE,QAAQ,EAAE,SAAS;AAChC,CAAC;AAMD,iBAAyE,IAAI;;;ACnB7E,IAAAC,eAAkB;AAIlB,IAAAC,gBAAyB;;;ACDzB,IAAAC,eAAkB;AAoCX,IAAM,kBAAkB,eAAE,MAAM;AAAA,EACrC,eAAE,OAAO;AAAA,IACP,KAAK,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IAC9B,MAAM,eAAE,QAAQ,OAAO,EAAE,SAAS;AAAA,IAClC,OAAO;AAAA,IACP,MAAM,eAAE,OAAO;AAAA,IACf,OAAO,eAAE,OAAO;AAAA,IAEhB,YAAY,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IACrC,gBAAgB,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IAEzC,cAAc,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IACvC,gBAAgB,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IACzC,aAAa,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IACtC,eAAe,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC1C,CAAC;AAAA,EACD,eAAE,OAAO;AAAA,IACP,KAAK,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IAC9B,MAAM,eAAE,QAAQ,OAAO,EAAE,SAAS;AAAA,IAClC,OAAO;AAAA,IACP,KAAK,eAAE,OAAO;AAAA,IACd,QAAQ,eAAE,OAAO;AAAA,IAEjB,YAAY,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IACrC,gBAAgB,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IAEzC,aAAa,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IACtC,eAAe,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IACxC,cAAc,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,IACvC,gBAAgB,eAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC3C,CAAC;AACH,CAAC;AAED,iBAAmE,IAAI;;;ACnEvE,IAAAC,eAAkB;AAwBX,IAAM,kBAAkB,eAC5B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAO,eAAE,QAAQ,MAAM;AAAA,EACvB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,WAAW,UAAU,SAAS;AAChC,CAAC;AAEH,iBAA2D,IAAI;AAExD,IAAM,oBAAoB,eAC9B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAO,eAAE,QAAQ,QAAQ;AAAA,EACzB,QAAQ;AAAA,EACR,WAAW,UAAU,SAAS;AAChC,CAAC;AAEH,iBAA+D,IAAI;AAE5D,IAAM,cAAc,eAAE,MAAM,CAAC,mBAAmB,eAAe,CAAC;AAGvE,iBAAmD,IAAI;;;ACrDvD,IAAAC,eAAkB;AAWX,IAAM,YAAY,eACtB,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAU,uBAAS,SAAS;AAAA,EAC5B,QAAQ,uBAAS,SAAS;AAC5B,CAAC,EACA,UAAU,CAAC,OAAO;AAAA,EACjB,GAAG;AAAA,EACH,UAAU,EAAE,YAAY,IAAI,EAAE;AAAA,EAC9B,QAAQ,EAAE,UAAU,EAAE,WAAY;AACpC,EAAE;AAIJ,iBAA+C,IAAI;;;AtBkC5C,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AACF,CAAC;AACM,IAAM,eAAe;AAGrB,IAAM,aAAa,qBAAqB,OAAO,CAAC,CAAC;AACjD,IAAM,YAAY;AAGlB,IAAM,WAAW,qBAAqB,OAAO;AAAA,EAClD,OAAO,eAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AACM,IAAM,UAAU;AAGhB,IAAM,cAAc,qBAAqB,OAAO;AAAA,EACrD,OAAO,eAAE,QAAQ,QAAQ;AAAA,EACzB,YAAY,eAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,MAAM;AAAA,EAC3C,kBAAkB,eAAE,QAAQ,EAAE,QAAQ,KAAK;AAC7C,CAAC;AAGM,IAAMC,wBAAuB,uBAAS,GAAG,eAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC;AAEnE,IAAM,WAAW,kBAAkB,OAAO;AAAA,EAC/C,WAAW;AAAA,EACX,SAAS;AAAA,EACT,cAAc;AAAA,EACd,eAAe;AACjB,CAAC;AAGM,IAAM,gBAAgB,kBAAkB,OAAO;AAAA,EACpD,KAAK,eAAE,OAAO,EAAE,SAAS;AAC3B,CAAC;AAGM,IAAM,UAAU,eAAE,MAAM;AAAA,EAC7B,eAAE,OAAO;AAAA,EACT,eAAE;AAAA,IAA0C,CAAC,MAC3C,QAAQ,EAAE,eAAe;AAAA,EAC3B;AACF,CAAC;AAEM,IAAM,aAAa,eACvB,OAAO;AAAA,EACN,MAAM,eAAE,MAAM,OAAO;AAAA,EACrB,WAAW,uBAAS,SAAS;AAAA,EAC7B,qBAAqB,eAAE,MAAM,mBAAK,EAAE,SAAS;AAAA,EAC7C,eAAe,eAAE,MAAM,8BAAgB,EAAE,SAAS;AACpD,CAAC,EACA;AAAA,EACC,eAAE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,WAAW,uBAAS,SAAS;AAAA,IAC7B,qBAAqB,eAAE,MAAM,mBAAK,EAAE,SAAS;AAAA,IAC7C,eAAe,eAAE,MAAM,8BAAgB,EAAE,SAAS;AAAA,EACpD,CAAC;AACH;AAGK,IAAM,kBAAkB,eAAE,MAAM;AAAA,EACrC,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,OAAO,eAAE,QAAQ,QAAQ;AAAA,IACzB,cAAc;AAAA,IACd,eAAe;AAAA,IACf,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAM,eAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,OAAO,eAAE,QAAQ,MAAM;AAAA,IACvB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AACH,CAAC;AAGM,IAAM,kBAAkB,eAAE,MAAM;AAAA,EACrC,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChD,OAAO,eAAE,QAAQ,QAAQ;AAAA,IACzB,QAAQ;AAAA,EACV,CAAC;AAAA,EACD,eAAe,OAAO;AAAA,IACpB,OAAO,eAAE,QAAQ,MAAM;AAAA,IACvB,OAAO;AAAA,IACP,QAAQ;AAAA,EACV,CAAC;AACH,CAAC;AAGM,IAAM,oBAAoB,eAAE,OAAO;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AAGM,IAAM,qBAAqB,eAAE,OAAO;AAAA,EACzC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM,eAAE,OAAO;AACjB,CAAC;AAGM,IAAM,qBAAqB,eAAE,OAAO;AAAA,EACzC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,CAAC;AAGM,IAAM,qBAAqB,eAAE,OAAO;AAAA,EACzC,QAAQ,eAAE,MAAM,mBAAK;AAAA,EACrB,UAAU,eAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC9C,WAAW,eAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS;AAC9C,CAAC;AAGM,IAAM,iBAAiB,eAAE,OAAO,CAAC,CAAC;AAGlC,IAAM,iBAAiB;AAGvB,IAAM,mBAAmB,qBAAqB,OAAO;AAAA,EAC1D;AACF,CAAC;AAGM,IAAM,YAAY,kBAAkB,OAAO;AAAA,EAChD,MAAM,eAAE,OAAO;AAAA,EACf,WAAW,eAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,SAAS,eAAE,MAAM,eAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC;AACF,CAAC;AAGM,IAAM,sBAAsB,eAAe,OAAO;AAAA,EACvD,MAAM,eAAE,OAAO;AAAA,EACf,iBAAiB,eACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAM,eAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAU,qBAAO,SAAS;AAC5B,CAAC;AAGM,IAAM,sBAAsB,eAChC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,OAAO,eAAE,MAAM,8BAAgB;AAAA,EAC/B,aAAa,qBAAO,SAAS;AAC/B,CAAC;AAGI,IAAM,sBAAsB,eAChC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,aAAa;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,CAAC;AAGI,IAAM,sBAAsB,eAChC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAU,eAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAW,eAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAa,uBAAS,SAAS;AAAA,EAC/B,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AAGI,IAAM,wBAAwB,eAClC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAU,eAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAW,eAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAa,uBAAS,SAAS;AAAA,EAC/B,QAAQ;AACV,CAAC;AAGI,IAAM,sBAAsB,eAAE,OAAO;AAAA,EAC1C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,KAAK,eAAE,QAAQ,EAAE,SAAS;AAAA,EAC1B,SAAS,wBAAU,SAAS;AAC9B,CAAC;AAEM,IAAM,iBAAiB,eAAE,OAAO;AAAA,EACrC,KAAK,eACF,OAAO,EACP,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,OAAO,eAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQ,+BAAiB,GAAG,mBAAmB,EAAE,SAAS;AAAA,EAC1D,SAAS,eACN,MAAM,8BAAgB,EACtB,GAAG,eAAE,MAAM,mBAAmB,CAAC,EAC/B,SAAS;AAAA,EACZ,YAAY,eAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAIM,IAAM,gBAAgB,eAAE,OAAO;AAAA,EACpC,OAAO,eAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAW,uBAAS,SAAS;AAAA,EAC7B,OAAO,eAAE,MAAM,8BAAgB;AACjC,CAAC;AAGM,IAAM,2BAA2B,eAAe,OAAO;AAAA,EAC5D,MAAM,eAAE,OAAO;AAAA,EACf,iBAAiB,eACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAM,eAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAU,qBAAO,SAAS;AAC5B,CAAC;AAGM,IAAM,2BAA2B,eACrC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,OAAO,eAAE,MAAM,8BAAgB;AAAA,EAC/B,aAAa,qBAAO,SAAS;AAC/B,CAAC;","names":["distanceOrMultiplier","import_soup","import_zod","import_zod","import_zod","import_soup","import_zod","import_zod","import_zod","import_zod","import_zod","import_soup","import_zod","import_soup","import_soup","import_zod","import_zod","import_soup","import_zod","import_soup","import_zod","import_soup","import_zod","import_soup","import_zod","import_zod","import_zod","import_zod","import_soup","import_zod","import_zod","import_zod","distanceOrMultiplier"]}
|
|
1
|
+
{"version":3,"sources":["../lib/index.ts","../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/point3.ts","../lib/common/cadModel.ts","../lib/common/footprintProp.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/components/board.ts","../lib/common/point.ts","../lib/components/chip.ts","../lib/components/jumper.ts","../lib/components/resistor.ts","../lib/components/capacitor.ts","../lib/components/group.ts","../lib/components/net.ts","../lib/components/constrainedlayout.ts","../lib/common/distance.ts","../lib/components/constraint.ts","../lib/components/smtpad.ts","../lib/components/hole.ts"],"sourcesContent":["/**\n * THINKING ABOUT ADDING SOMETHING TO THIS FILE?\n *\n * THINK AGAIN!\n *\n * This file is TOO BIG! Create files using the pattern in the surrounding\n * directories, then export from this file.\n */\nimport type { LayoutBuilder } from \"@tscircuit/layout\"\nimport {\n type AnySoupElementInput,\n capacitance,\n distance,\n inductance,\n layer_ref,\n length,\n type PCBPlatedHoleInput,\n type PCBSMTPadInput,\n point,\n resistance,\n rotation,\n route_hint_point,\n supplier_name,\n voltage,\n} from \"@tscircuit/soup\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\nimport { direction } from \"./common/direction\"\nimport { portHints } from \"./common/portHints\"\nimport {\n commonComponentProps,\n commonLayoutProps,\n lrPins,\n lrPolarPins,\n pcbLayoutProps,\n} from \"./common/layout\"\nimport { explicitPinSideDefinition } from \"./common/schematicPinDefinitions\"\n\nexport * from \"./common/direction\"\nexport * from \"./common/portHints\"\nexport * from \"./common/layout\"\nexport * from \"./common/point3\"\nexport * from \"./common/portHints\"\nexport * from \"./common/footprintProp\"\nexport * from \"./common/schematicPinDefinitions\"\nexport * from \"./common/schematicPinStyle\"\n\nexport * from \"./components/board\"\nexport * from \"./components/chip\"\nexport * from \"./components/jumper\"\n\nexport * from \"./components/resistor\"\nexport * from \"./components/capacitor\"\nexport * from \"./components/group\"\nexport * from \"./components/net\"\nexport * from \"./components/constrainedlayout\"\nexport * from \"./components/constraint\"\nexport * from \"./components/smtpad\"\nexport * from \"./components/hole\"\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n})\nexport const inductorPins = lrPins\nexport type InductorProps = z.input<typeof inductorProps>\n\nexport const diodeProps = commonComponentProps.extend({})\nexport const diodePins = lrPolarPins\nexport type DiodeProps = z.input<typeof diodeProps>\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n\nexport const switchProps = commonComponentProps.extend({\n ftype: z.literal(\"switch\"),\n switchType: z.enum([\"spst\"]).default(\"spst\"),\n isNormallyClosed: z.boolean().default(false),\n})\nexport type SwitchProps = z.input<typeof switchProps>\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n\nexport const viaProps = commonLayoutProps.extend({\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n})\nexport type ViaProps = z.input<typeof viaProps>\n\nexport const netAliasProps = commonLayoutProps.extend({\n net: z.string().optional(),\n})\nexport type NetAliasProps = z.input<typeof netAliasProps>\n\nexport const portRef = z.union([\n z.string(),\n z.custom<{ getPortSelector: () => string }>((v) =>\n Boolean(v.getPortSelector),\n ),\n])\n\nexport const traceProps = z\n .object({\n path: z.array(portRef),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n })\n .or(\n z.object({\n from: portRef,\n to: portRef,\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n }),\n )\nexport type TraceProps = z.input<typeof traceProps>\n\nexport const platedHoleProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n innerWidth: distance,\n innerHeight: distance,\n portHints: portHints.optional(),\n }),\n])\nexport type PlatedHoleProps = z.input<typeof platedHoleProps>\n\nexport const pcbKeepoutProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n }),\n pcbLayoutProps.extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n }),\n])\nexport type PcbKeepoutProps = z.input<typeof pcbKeepoutProps>\n\nexport const schematicBoxProps = z.object({\n schX: distance,\n schY: distance,\n width: distance,\n height: distance,\n})\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n\nexport const schematicTextProps = z.object({\n schX: distance,\n schY: distance,\n text: z.string(),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n})\nexport type SchematicLineProps = z.input<typeof schematicLineProps>\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\nexport type SchematicPathProps = z.input<typeof schematicPathProps>\n\nexport const footprintProps = z.object({})\nexport type FootprintProps = z.input<typeof footprintProps>\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n})\nexport type PortProps = z.input<typeof portProps>\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n\nexport const routeHintPointProps = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n toLayer: layer_ref.optional(),\n})\n\nexport const traceHintProps = z.object({\n for: z\n .string()\n .optional()\n .describe(\n \"Selector for the port you're targeting, not required if you're inside a trace\",\n ),\n order: z.number().optional(),\n offset: route_hint_point.or(routeHintPointProps).optional(),\n offsets: z\n .array(route_hint_point)\n .or(z.array(routeHintPointProps))\n .optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\nexport type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n","import type { TypeEqual } from \"ts-expect\"\n\nexport const expectTypesMatch = <const T1, const T2>(\n shouldBe: TypeEqual<T1, T2>,\n): void => {}\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nexport const direction = z.enum([\"up\", \"down\", \"left\", \"right\"])\nexport type Direction = \"up\" | \"down\" | \"left\" | \"right\"\n\nexport type DirectionAlongEdge =\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n\nexport const directionAlongEdge = z.enum([\n \"top-to-bottom\",\n \"left-to-right\",\n \"bottom-to-top\",\n \"right-to-left\",\n])\n\nexpectTypesMatch<Direction, z.infer<typeof direction>>(true)\nexpectTypesMatch<DirectionAlongEdge, z.infer<typeof directionAlongEdge>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const portHints = z.array(z.string().or(z.number()))\nexport type PortHints = (string | number)[]\n\nexpectTypesMatch<PortHints, z.infer<typeof portHints>>(true)\n","import { z } from \"zod\"\nimport {\n type AnySoupElementInput,\n distance,\n layer_ref,\n type LayerRef,\n type LayerRefInput,\n rotation,\n supplier_name,\n} from \"@tscircuit/soup\"\nimport { point3 } from \"./point3\"\nimport {\n cadModelJscad,\n cadModelObj,\n cadModelProp,\n cadModelStl,\n type CadModelJscad,\n type CadModelObj,\n type CadModelProp,\n type CadModelStl,\n} from \"./cadModel\"\nimport { footprintProp, type Footprint } from \"./footprintProp\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface PcbLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n pcbRotation?: string | number\n layer?: LayerRefInput\n}\n\nexport interface CommonLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n pcbRotation?: string | number\n\n schX?: string | number\n schY?: string | number\n schRotation?: string | number\n\n layer?: LayerRefInput\n footprint?: Footprint\n}\n\nexport const pcbLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n layer: layer_ref.optional(),\n})\ntype InferredPcbLayoutProps = z.input<typeof pcbLayoutProps>\nexpectTypesMatch<PcbLayoutProps, InferredPcbLayoutProps>(true)\n\nexport const commonLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n footprint: footprintProp.optional(),\n})\n\ntype InferredCommonLayoutProps = z.input<typeof commonLayoutProps>\nexpectTypesMatch<CommonLayoutProps, InferredCommonLayoutProps>(true)\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\nexport interface SupplierProps {\n supplierPartNumbers?: { [k in SupplierName]?: string[] }\n}\nexport const supplierProps = z.object({\n supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexpectTypesMatch<SupplierProps, z.input<typeof supplierProps>>(true)\n\nexport interface CommonComponentProps extends CommonLayoutProps {\n name: string\n supplierPartNumbers?: SupplierProps[\"supplierPartNumbers\"]\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\n}\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n name: z.string(),\n cadModel: cadModelProp.optional(),\n children: z.any().optional(),\n symbolName: z.string().optional(),\n })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n","import { distance } from \"@tscircuit/soup\"\nimport { z } from \"zod\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n","import { z } from \"zod\"\nimport { point3 } from \"./point3\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const rotationPoint3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport interface CadModelBase {\n rotationOffset?:\n | number\n | { x: number | string; y: number | string; z: number | string }\n positionOffset?: {\n x: number | string\n y: number | string\n z: number | string\n }\n size?: { x: number | string; y: number | string; z: number | string }\n}\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(rotationPoint3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n})\n\nexpectTypesMatch<CadModelBase, z.input<typeof cadModelBase>>(true)\n\nexport interface CadModelStl extends CadModelBase {\n stlUrl: string\n}\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport interface CadModelObj extends CadModelBase {\n objUrl: string\n mtlUrl?: string\n}\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport interface CadModelJscad extends CadModelBase {\n jscad: Record<string, any>\n}\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.record(z.any()),\n})\n\nexport type CadModelProp = string | CadModelStl | CadModelObj | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.string(),\n cadModelStl,\n cadModelObj,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import type { LayerRef } from \"@tscircuit/soup\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\n\n/**\n * This is an abbreviated definition of the soup elements that you can find here:\n * https://docs.tscircuit.com/api-reference/advanced/soup#pcb-smtpad\n */\nexport type FootprintSoupElements = {\n type: \"pcb_smtpad\" | \"pcb_plated_hole\"\n x: string | number\n y: string | number\n layer?: LayerRef\n holeDiameter?: string | number\n outerDiameter?: string | number\n shape?: \"circle\" | \"rect\"\n width?: string | number\n height?: string | number\n portHints?: string[]\n}\n\nexport type Footprint = string | ReactElement | FootprintSoupElements[]\nexport const footprintProp = z.custom<Footprint>((v) => true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use SchematicPortArrangementWithPinCounts instead.\n */\nexport interface SchematicPortArrangementWithSizes {\n leftSize?: number\n topSize?: number\n rightSize?: number\n bottomSize?: number\n}\n\n/**\n * Specifies the number of pins on each side of the schematic box component.\n */\nexport interface SchematicPortArrangementWithPinCounts {\n leftPinCount?: number\n topPinCount?: number\n rightPinCount?: number\n bottomPinCount?: number\n}\n\nexport interface PinSideDefinition {\n pins: number[]\n direction:\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n}\n\nexport interface SchematicPortArrangementWithSides {\n leftSide?: PinSideDefinition\n topSide?: PinSideDefinition\n rightSide?: PinSideDefinition\n bottomSide?: PinSideDefinition\n}\n\nexport type SchematicPortArrangement =\n | SchematicPortArrangementWithSizes\n | SchematicPortArrangementWithSides\n | SchematicPortArrangementWithPinCounts\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.number()),\n direction: z.union([\n z.literal(\"top-to-bottom\"),\n z.literal(\"left-to-right\"),\n z.literal(\"bottom-to-top\"),\n z.literal(\"right-to-left\"),\n ]),\n})\n\nexport const schematicPortArrangement = z\n .object({\n leftSize: z.number().optional().describe(\"@deprecated, use leftPinCount\"),\n topSize: z.number().optional().describe(\"@deprecated, use topPinCount\"),\n rightSize: z.number().optional().describe(\"@deprecated, use rightPinCount\"),\n bottomSize: z\n .number()\n .optional()\n .describe(\"@deprecated, use bottomPinCount\"),\n })\n .or(\n z.object({\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n }),\n )\n .or(\n z.object({\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n }),\n )\n\nexpectTypesMatch<\n SchematicPortArrangement,\n z.input<typeof schematicPortArrangement>\n>(true)\n","import { z } from \"zod\"\nimport { distance } from \"@tscircuit/soup\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type SchematicPinStyle = Record<\n string,\n {\n leftMargin?: number | string\n rightMargin?: number | string\n topMargin?: number | string\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n leftMargin: distance.optional(),\n rightMargin: distance.optional(),\n topMargin: distance.optional(),\n bottomMargin: distance.optional(),\n }),\n)\n\nexpectTypesMatch<SchematicPinStyle, z.input<typeof schematicPinStyle>>(true)\n","import { z } from \"zod\"\nimport { distance } from \"@tscircuit/soup\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface BoardProps {\n width?: number | string\n height?: number | string\n outline?: Point[]\n pcbX?: number | string\n pcbY?: number | string\n layout?: any\n routingDisabled?: boolean\n children?: any\n}\n\nexport const boardProps = z.object({\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\n pcbX: distance.optional().default(0),\n pcbY: distance.optional().default(0),\n layout: z.any().optional(),\n routingDisabled: z.boolean().optional(),\n children: z.any(),\n})\n\nexpectTypesMatch<BoardProps, z.input<typeof boardProps>>(true)\n","import { distance } from \"@tscircuit/soup\"\nimport { z } from \"zod\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport type Point = { x: number | string; y: number | string }\n","import { z } from \"zod\"\nimport { distance } from \"@tscircuit/soup\"\nimport {\n commonComponentProps,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPortArrangement,\n type SchematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n schematicPinStyle,\n type SchematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport type { Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface ChipProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string>\n schPortArrangement?: SchematicPortArrangement\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n}\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z.record(z.number().or(z.string()), z.string()).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\nexpectTypesMatch<InferredChipProps, ChipProps>(true)\n","import { z } from \"zod\"\nimport {\n commonComponentProps,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinStyle,\n type SchematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { distance } from \"@tscircuit/soup\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport {\n schematicPortArrangement,\n type SchematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\n\nexport interface JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string>\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z.record(z.number().or(z.string()), z.string()).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { z } from \"zod\"\nimport { resistance } from \"@tscircuit/soup\"\nimport {\n commonComponentProps,\n lrPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface ResistorProps extends CommonComponentProps {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n}\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n\n pullupFor: z.string().optional(),\n pullupTo: z.string().optional(),\n\n pulldownFor: z.string().optional(),\n pulldownTo: z.string().optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { z } from \"zod\"\nimport { capacitance } from \"@tscircuit/soup\"\nimport {\n commonComponentProps,\n lrPins,\n lrPolarPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface CapacitorProps extends CommonComponentProps {\n capacitance: number | string\n\n decouplingFor?: string\n decouplingTo?: string\n\n bypassFor?: string\n bypassTo?: string\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { commonLayoutProps, type CommonLayoutProps } from \"lib/common/layout\"\nimport type { LayoutBuilder } from \"@tscircuit/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface BaseGroupProps extends CommonLayoutProps {\n name?: string\n children?: any\n}\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n subcircuit: true\n layout?: LayoutBuilder\n routingDisabled?: boolean\n}\n\nexport type GroupProps = SubcircuitGroupProps | BaseGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n})\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n subcircuit: z.literal(true),\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n routingDisabled: z.boolean().optional(),\n})\n\nexport const groupProps = z.union([baseGroupProps, subcircuitGroupProps])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupProps = z.input<typeof subcircuitGroupProps>\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<SubcircuitGroupProps, InferredSubcircuitGroupProps>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n}\n\nexport const netProps = z.object({\n name: z.string(),\n})\n\ntype InferredNetProps = z.input<typeof netProps>\nexpectTypesMatch<NetProps, InferredNetProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConstrainedLayoutProps {\n name?: string\n pcbOnly?: boolean\n schOnly?: boolean\n}\n\nexport const constrainedLayoutProps = z.object({\n name: z.string().optional(),\n pcbOnly: z.boolean().optional(),\n schOnly: z.boolean().optional(),\n})\n\nexport type InferredConstrainedLayoutProps = z.input<\n typeof constrainedLayoutProps\n>\n\nexpectTypesMatch<InferredConstrainedLayoutProps, ConstrainedLayoutProps>(true)\n","import { z } from \"zod\"\n\nexport type Distance = number | string\n\nexport { distance } from \"@tscircuit/soup\"\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport type { Distance } from \"lib/common/distance\"\nimport { distance } from \"lib/common/distance\"\nimport { z } from \"zod\"\n\nexport type PcbXDistConstraint = {\n pcb?: true\n xDist: Distance\n\n /**\n * Selector for left component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 leftedge\", \".R1 center\"\n */\n left: string\n\n /**\n * Selector for right component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 leftedge\", \".R1 center\"\n */\n right: string\n\n /**\n * If true, the provided distance is the distance between the closest edges of\n * the left and right components\n */\n edgeToEdge?: true\n\n /**\n * If true, the provided distance is the distance between the centers of the\n * left and right components\n */\n centerToCenter?: true\n}\n\nexport type PcbYDistConstraint = {\n pcb?: true\n yDist: Distance\n\n /**\n * Selector for top component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 topedge\", \".R1 center\"\n */\n top: string\n\n /**\n * Selector for bottom component, e.g. \".U1\" or \".R1\", you can also specify the\n * edge or center of the component e.g. \".R1 bottomedge\", \".R1 center\"\n */\n bottom: string\n\n edgeToEdge?: true\n centerToCenter?: true\n}\n\nexport type PcbSameYConstraint = {\n pcb?: true\n sameY?: true\n\n /**\n * Selector for components, e.g. [\".U1\", \".R1\"], you can also specify the\n * edge or center of the component e.g. [\".R1 leftedge\", \".U1 center\"]\n */\n for: string[]\n}\n\nexport type PcbSameXConstraint = {\n pcb?: true\n sameX?: true\n /**\n * Selector for components, e.g. [\".U1\", \".R1\"], you can also specify the\n * edge or center of the component e.g. [\".R1 leftedge\", \".U1 center\"]\n */\n for: string[]\n}\n\nexport type ConstraintProps =\n | PcbXDistConstraint\n | PcbYDistConstraint\n | PcbSameYConstraint\n | PcbSameXConstraint\n\n// -----------------------------------------------------------------------------\n// Zod\n// -----------------------------------------------------------------------------\n\nexport const pcbXDistConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n xDist: distance,\n left: z.string(),\n right: z.string(),\n\n edgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n})\nexpectTypesMatch<PcbXDistConstraint, z.input<typeof pcbXDistConstraintProps>>(\n true,\n)\n\nexport const pcbYDistConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n yDist: distance,\n top: z.string(),\n bottom: z.string(),\n\n edgeToEdge: z.literal(true).optional(),\n centerToCenter: z.literal(true).optional(),\n})\nexpectTypesMatch<PcbYDistConstraint, z.input<typeof pcbYDistConstraintProps>>(\n true,\n)\n\nexport const pcbSameYConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n sameY: z.literal(true).optional(),\n for: z.array(z.string()),\n})\nexpectTypesMatch<PcbSameYConstraint, z.input<typeof pcbSameYConstraintProps>>(\n true,\n)\n\nexport const pcbSameXConstraintProps = z.object({\n pcb: z.literal(true).optional(),\n sameX: z.literal(true).optional(),\n for: z.array(z.string()),\n})\nexpectTypesMatch<PcbSameXConstraint, z.input<typeof pcbSameXConstraintProps>>(\n true,\n)\n\nexport const constraintProps = z.union([\n pcbXDistConstraintProps,\n pcbYDistConstraintProps,\n pcbSameYConstraintProps,\n pcbSameXConstraintProps,\n])\n\nexpectTypesMatch<ConstraintProps, z.input<typeof constraintProps>>(true)\n","import {\n pcbLayoutProps,\n type CommonLayoutProps,\n type PcbLayoutProps,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { portHints, type PortHints } from \"lib/common/portHints\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n portHints?: PortHints\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n}\n\nexport type SmtPadProps = RectSmtPadProps | CircleSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n portHints: portHints.optional(),\n })\ntype InferredRectSmtPadProps = z.input<typeof rectSmtPadProps>\nexpectTypesMatch<InferredRectSmtPadProps, RectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredCircleSmtPadProps = z.input<typeof circleSmtPadProps>\nexpectTypesMatch<InferredCircleSmtPadProps, CircleSmtPadProps>(true)\n\nexport const smtPadProps = z.union([circleSmtPadProps, rectSmtPadProps])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface HoleProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n diameter?: Distance\n radius?: Distance\n}\n\nexport const holeProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n diameter: distance.optional(),\n radius: distance.optional(),\n })\n .transform((d) => ({\n ...d,\n diameter: d.diameter ?? 2 * d.radius!,\n radius: d.radius ?? d.diameter! / 2,\n }))\n\nexport type InferredHoleProps = z.input<typeof holeProps>\n\nexpectTypesMatch<HoleProps, InferredHoleProps>(true)\n"],"mappings":"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","names":["distanceOrMultiplier","import_soup","import_zod","import_zod","import_zod","import_soup","import_zod","import_zod","import_zod","import_zod","import_zod","import_soup","import_zod","import_soup","import_soup","import_zod","import_zod","import_soup","import_zod","import_soup","import_zod","import_soup","import_zod","import_soup","import_zod","import_zod","import_zod","import_zod","import_soup","import_zod","import_zod","import_zod","distanceOrMultiplier"]}
|
|
@@ -5,69 +5,133 @@ import { z } from "zod"
|
|
|
5
5
|
|
|
6
6
|
export type PcbXDistConstraint = {
|
|
7
7
|
pcb?: true
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
xDist: Distance
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Selector for left component, e.g. ".U1" or ".R1", you can also specify the
|
|
12
|
+
* edge or center of the component e.g. ".R1 leftedge", ".R1 center"
|
|
13
|
+
*/
|
|
10
14
|
left: string
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Selector for right component, e.g. ".U1" or ".R1", you can also specify the
|
|
18
|
+
* edge or center of the component e.g. ".R1 leftedge", ".R1 center"
|
|
19
|
+
*/
|
|
11
20
|
right: string
|
|
12
21
|
|
|
22
|
+
/**
|
|
23
|
+
* If true, the provided distance is the distance between the closest edges of
|
|
24
|
+
* the left and right components
|
|
25
|
+
*/
|
|
13
26
|
edgeToEdge?: true
|
|
14
|
-
centerToCenter?: true
|
|
15
27
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
28
|
+
/**
|
|
29
|
+
* If true, the provided distance is the distance between the centers of the
|
|
30
|
+
* left and right components
|
|
31
|
+
*/
|
|
32
|
+
centerToCenter?: true
|
|
20
33
|
}
|
|
21
34
|
|
|
22
35
|
export type PcbYDistConstraint = {
|
|
23
36
|
pcb?: true
|
|
24
|
-
|
|
25
|
-
|
|
37
|
+
yDist: Distance
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Selector for top component, e.g. ".U1" or ".R1", you can also specify the
|
|
41
|
+
* edge or center of the component e.g. ".R1 topedge", ".R1 center"
|
|
42
|
+
*/
|
|
26
43
|
top: string
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Selector for bottom component, e.g. ".U1" or ".R1", you can also specify the
|
|
47
|
+
* edge or center of the component e.g. ".R1 bottomedge", ".R1 center"
|
|
48
|
+
*/
|
|
27
49
|
bottom: string
|
|
28
50
|
|
|
29
51
|
edgeToEdge?: true
|
|
30
52
|
centerToCenter?: true
|
|
53
|
+
}
|
|
31
54
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
55
|
+
export type PcbSameYConstraint = {
|
|
56
|
+
pcb?: true
|
|
57
|
+
sameY?: true
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Selector for components, e.g. [".U1", ".R1"], you can also specify the
|
|
61
|
+
* edge or center of the component e.g. [".R1 leftedge", ".U1 center"]
|
|
62
|
+
*/
|
|
63
|
+
for: string[]
|
|
36
64
|
}
|
|
37
65
|
|
|
38
|
-
export type
|
|
66
|
+
export type PcbSameXConstraint = {
|
|
67
|
+
pcb?: true
|
|
68
|
+
sameX?: true
|
|
69
|
+
/**
|
|
70
|
+
* Selector for components, e.g. [".U1", ".R1"], you can also specify the
|
|
71
|
+
* edge or center of the component e.g. [".R1 leftedge", ".U1 center"]
|
|
72
|
+
*/
|
|
73
|
+
for: string[]
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export type ConstraintProps =
|
|
77
|
+
| PcbXDistConstraint
|
|
78
|
+
| PcbYDistConstraint
|
|
79
|
+
| PcbSameYConstraint
|
|
80
|
+
| PcbSameXConstraint
|
|
81
|
+
|
|
82
|
+
// -----------------------------------------------------------------------------
|
|
83
|
+
// Zod
|
|
84
|
+
// -----------------------------------------------------------------------------
|
|
85
|
+
|
|
86
|
+
export const pcbXDistConstraintProps = z.object({
|
|
87
|
+
pcb: z.literal(true).optional(),
|
|
88
|
+
xDist: distance,
|
|
89
|
+
left: z.string(),
|
|
90
|
+
right: z.string(),
|
|
91
|
+
|
|
92
|
+
edgeToEdge: z.literal(true).optional(),
|
|
93
|
+
centerToCenter: z.literal(true).optional(),
|
|
94
|
+
})
|
|
95
|
+
expectTypesMatch<PcbXDistConstraint, z.input<typeof pcbXDistConstraintProps>>(
|
|
96
|
+
true,
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
export const pcbYDistConstraintProps = z.object({
|
|
100
|
+
pcb: z.literal(true).optional(),
|
|
101
|
+
yDist: distance,
|
|
102
|
+
top: z.string(),
|
|
103
|
+
bottom: z.string(),
|
|
104
|
+
|
|
105
|
+
edgeToEdge: z.literal(true).optional(),
|
|
106
|
+
centerToCenter: z.literal(true).optional(),
|
|
107
|
+
})
|
|
108
|
+
expectTypesMatch<PcbYDistConstraint, z.input<typeof pcbYDistConstraintProps>>(
|
|
109
|
+
true,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
export const pcbSameYConstraintProps = z.object({
|
|
113
|
+
pcb: z.literal(true).optional(),
|
|
114
|
+
sameY: z.literal(true).optional(),
|
|
115
|
+
for: z.array(z.string()),
|
|
116
|
+
})
|
|
117
|
+
expectTypesMatch<PcbSameYConstraint, z.input<typeof pcbSameYConstraintProps>>(
|
|
118
|
+
true,
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
export const pcbSameXConstraintProps = z.object({
|
|
122
|
+
pcb: z.literal(true).optional(),
|
|
123
|
+
sameX: z.literal(true).optional(),
|
|
124
|
+
for: z.array(z.string()),
|
|
125
|
+
})
|
|
126
|
+
expectTypesMatch<PcbSameXConstraint, z.input<typeof pcbSameXConstraintProps>>(
|
|
127
|
+
true,
|
|
128
|
+
)
|
|
39
129
|
|
|
40
130
|
export const constraintProps = z.union([
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
left: z.string(),
|
|
46
|
-
right: z.string(),
|
|
47
|
-
|
|
48
|
-
edgeToEdge: z.literal(true).optional(),
|
|
49
|
-
centerToCenter: z.literal(true).optional(),
|
|
50
|
-
|
|
51
|
-
fromLeftEdge: z.literal(true).optional(),
|
|
52
|
-
fromLeftCenter: z.literal(true).optional(),
|
|
53
|
-
toRightEdge: z.literal(true).optional(),
|
|
54
|
-
toRightCenter: z.literal(true).optional(),
|
|
55
|
-
}),
|
|
56
|
-
z.object({
|
|
57
|
-
pcb: z.literal(true).optional(),
|
|
58
|
-
type: z.literal("ydist").optional(),
|
|
59
|
-
ydist: distance,
|
|
60
|
-
top: z.string(),
|
|
61
|
-
bottom: z.string(),
|
|
62
|
-
|
|
63
|
-
edgeToEdge: z.literal(true).optional(),
|
|
64
|
-
centerToCenter: z.literal(true).optional(),
|
|
65
|
-
|
|
66
|
-
fromTopEdge: z.literal(true).optional(),
|
|
67
|
-
fromTopCenter: z.literal(true).optional(),
|
|
68
|
-
toBottomEdge: z.literal(true).optional(),
|
|
69
|
-
toBottomCenter: z.literal(true).optional(),
|
|
70
|
-
}),
|
|
131
|
+
pcbXDistConstraintProps,
|
|
132
|
+
pcbYDistConstraintProps,
|
|
133
|
+
pcbSameYConstraintProps,
|
|
134
|
+
pcbSameXConstraintProps,
|
|
71
135
|
])
|
|
72
136
|
|
|
73
137
|
expectTypesMatch<ConstraintProps, z.input<typeof constraintProps>>(true)
|
package/lib/index.ts
CHANGED
|
@@ -292,6 +292,7 @@ export const fabricationNoteTextProps = pcbLayoutProps.extend({
|
|
|
292
292
|
.default("center"),
|
|
293
293
|
font: z.enum(["tscircuit2024"]).optional(),
|
|
294
294
|
fontSize: length.optional(),
|
|
295
|
+
color: z.string().optional(),
|
|
295
296
|
})
|
|
296
297
|
export type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>
|
|
297
298
|
|
|
@@ -300,5 +301,6 @@ export const fabricationNotePathProps = pcbLayoutProps
|
|
|
300
301
|
.extend({
|
|
301
302
|
route: z.array(route_hint_point),
|
|
302
303
|
strokeWidth: length.optional(),
|
|
304
|
+
color: z.string().optional(),
|
|
303
305
|
})
|
|
304
306
|
export type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscircuit/props",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.63",
|
|
4
4
|
"description": "Props for tscircuit builtin component types",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@biomejs/biome": "^1.8.3",
|
|
21
21
|
"@tscircuit/layout": "^0.0.11",
|
|
22
|
-
"@tscircuit/soup": "^0.0.
|
|
22
|
+
"@tscircuit/soup": "^0.0.69",
|
|
23
23
|
"@types/bun": "^1.1.8",
|
|
24
24
|
"@types/node": "^20.12.11",
|
|
25
25
|
"@types/react": "^18.3.2",
|